#ifndef WC3RE_MVEDECODER_HH__ #define WC3RE_MVEDECODER_HH__ #include #include #include "IffFile.hh" class MveDecoder { public: MveDecoder(char const* base, size_t length); size_t numBranches() const { return branches_.size(); } void play(unsigned branch) const; private: IffFile iff_; using Palette = std::array; struct Frame { std::vector pixels; }; struct Shot { Palette const& palt; std::vector AUDIs; std::vector VGAs; }; unsigned width_, height_; //std::vector shots_; std::vector palts_; std::vector > branches_; Frame parseVGA(IffFile::Object const& vga, Frame const* prev) const; friend struct AudioCBData; }; #endif