| 12 | namespace Abyss::DataTypes { |
| 13 | |
| 14 | class DC6 { |
| 15 | uint32_t _version; |
| 16 | uint32_t _flags; |
| 17 | uint32_t _encoding; |
| 18 | std::array<uint8_t, DC6TerminationSize> _termination{}; |
| 19 | uint32_t _directions; |
| 20 | uint32_t _framesPerDirection; |
| 21 | std::vector<uint32_t> _framePointers; |
| 22 | std::vector<DC6Frame> _frames{}; |
| 23 | std::unique_ptr<SDL_Texture, decltype(&SDL_DestroyTexture)> _texture; |
| 24 | std::vector<SDL_Rect> _frameRects; |
| 25 | Enums::BlendMode _blendMode{}; |
| 26 | |
| 27 | public: |
| 28 | explicit DC6(std::string_view path); |
| 29 | DC6(std::string_view path, const Palette &palette); |
| 30 | [[nodiscard]] uint32_t getVersion() const; |
| 31 | [[nodiscard]] uint32_t getFlags() const; |
| 32 | [[nodiscard]] uint32_t getEncoding() const; |
| 33 | [[nodiscard]] std::array<uint8_t, DC6TerminationSize> getTermination() const; |
| 34 | [[nodiscard]] uint32_t getDirections() const; |
| 35 | [[nodiscard]] uint32_t getFramesPerDirection() const; |
| 36 | [[nodiscard]] std::vector<uint32_t> getFramePointers() const; |
| 37 | [[nodiscard]] uint32_t getFrameCount() const; |
| 38 | void setPalette(const Palette &palette); |
| 39 | void draw(uint32_t frameIdx, int x, int y) const; |
| 40 | void draw(uint32_t frameIdx, int x, int y, int framesX, int framesY) const; |
| 41 | void setBlendMode(Enums::BlendMode blendMode); |
| 42 | void getFrameSize(uint32_t frameIdx, int &frameWidth, int &frameHeight) const; |
| 43 | void getFrameOffset(uint32_t frameIdx, int &offsetX, int &offsetY) const; |
| 44 | }; |
| 45 | |
| 46 | typedef Common::Animation<DC6> DC6Animation; |
| 47 | |