diff options
Diffstat (limited to 'engines/cine/anim.h')
-rw-r--r-- | engines/cine/anim.h | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/engines/cine/anim.h b/engines/cine/anim.h index 92dbb2aaea..c15ab2eabd 100644 --- a/engines/cine/anim.h +++ b/engines/cine/anim.h @@ -54,11 +54,54 @@ struct AnimDataEntry { byte color; }; +#define ANIM_RAW 0 // memcpy +#define ANIM_MASK 1 // convertMask +#define ANIM_SPRITE 2 // gfxConvertSpriteToRaw +#define ANIM_MASKSPRITE 3 // gfxConvertSpriteToRaw + generateMask +#define ANIM_PALSPRITE 5 // convert8BBP +#define ANIM_FULLSPRITE 8 // convert8BBP2 + +class AnimData { +private: + byte *_data; ///< Image data + byte *_mask; ///< Image mask (may be NULL) + int16 _fileIdx; ///< Source file index in bundle + int16 _frameIdx; ///< Frame number in animation + char _name[10]; ///< Part filename + int _size; ///< _data/_mask size, internal only + +public: + uint16 _width; ///< Image width (ussually twice the real size) + uint16 _height; ///< Image height + uint16 _bpp; ///< Bit depth/type information + uint16 _var1; ///< Something related to width + int _realWidth; ///< Real image width in bytes + + AnimData(); + AnimData(const AnimData &src); + ~AnimData(); + + AnimData &operator=(const AnimData &src); + + const byte *data() const { return _data; } ///< Image data + const byte *mask() const { return _mask; } ///< Image mask (may be NULL) + byte getColor(int x, int y); + + void load(byte *d, int type, uint16 w, uint16 h, int16 file, int16 frame, const char *n, byte transparent = 0); + void clear(); + + void save(Common::OutSaveFile &fHandle) const; +}; + +#define NUM_MAX_ANIMDATA 255 + +extern AnimData animDataTable[NUM_MAX_ANIMDATA]; + void freeAnimDataTable(void); void freeAnimDataRange(byte startIdx, byte numIdx); void loadResource(const char *animName); void loadAbs(const char *resourceName, uint16 idx); -void loadResourcesFromSave(); +void loadResourcesFromSave(Common::InSaveFile &fHandle, bool broken); } // End of namespace Cine |