diff options
author | Paul Gilbert | 2015-01-02 13:30:00 -1000 |
---|---|---|
committer | Paul Gilbert | 2015-01-02 13:30:00 -1000 |
commit | e1404f127d376225d0c15c43b12f59749689c731 (patch) | |
tree | 6667f7f02abe3ed2b5f7bedcd7615834a2d99bf6 /engines/xeen/sprites.cpp | |
parent | 21d981f8e86bf214daa2e203acc2fb20c82ec8a0 (diff) | |
download | scummvm-rg350-e1404f127d376225d0c15c43b12f59749689c731.tar.gz scummvm-rg350-e1404f127d376225d0c15c43b12f59749689c731.tar.bz2 scummvm-rg350-e1404f127d376225d0c15c43b12f59749689c731.zip |
XEEN: Simplified SpriteResource class, char faces loading in main engine
Diffstat (limited to 'engines/xeen/sprites.cpp')
-rw-r--r-- | engines/xeen/sprites.cpp | 69 |
1 files changed, 26 insertions, 43 deletions
diff --git a/engines/xeen/sprites.cpp b/engines/xeen/sprites.cpp index 1b18e98dfd..9485bd28b8 100644 --- a/engines/xeen/sprites.cpp +++ b/engines/xeen/sprites.cpp @@ -29,26 +29,46 @@ namespace Xeen { -GraphicResource::GraphicResource(const Common::String &filename) { +SpriteResource::SpriteResource() { + _filesize = 0; + _data = nullptr; +} + +SpriteResource::SpriteResource(const Common::String &filename) { + _data = nullptr; + load(filename); +} + +void SpriteResource::load(const Common::String &filename) { // Open the resource File f(filename); // Read in a copy of the file _filesize = f.size(); + delete[] _data; _data = new byte[_filesize]; - f.seek(0); f.read(_data, _filesize); + + // Read in the index + f.seek(0); + int count = f.readUint16LE(); + _index.resize(count); + + for (int i = 0; i < count; ++i) { + _index[i]._offset1 = f.readUint16LE(); + _index[i]._offset2 = f.readUint16LE(); + } } -GraphicResource::~GraphicResource() { +SpriteResource::~SpriteResource() { delete[] _data; } -int GraphicResource::size() const { - return READ_LE_UINT16(_data); +int SpriteResource::size() const { + return _index.size(); } -void GraphicResource::drawOffset(XSurface &dest, uint16 offset, const Common::Point &destPos) const { +void SpriteResource::drawOffset(XSurface &dest, uint16 offset, const Common::Point &destPos) const { // Get cell header Common::MemoryReadStream f(_data, _filesize); f.seek(offset); @@ -151,43 +171,6 @@ void GraphicResource::drawOffset(XSurface &dest, uint16 offset, const Common::Po destPos.x + xOffset + width, destPos.y + yOffset + height)); } -/*------------------------------------------------------------------------*/ - -FramesResource::FramesResource(const Common::String &filename) : - GraphicResource(filename) { - // Read in the index - Common::MemoryReadStream f(_data, _filesize); - int count = f.readUint16LE(); - _index.resize(count); - - for (int i = 0; i < count; ++i) { - _index[i] = f.readUint32LE(); - } -} - -void FramesResource::draw(XSurface &dest, int frame, const Common::Point &destPos) const { - drawOffset(dest, _index[frame], destPos); -} - -void FramesResource::draw(XSurface &dest, int frame) const { - draw(dest, frame, Common::Point()); -} - -/*------------------------------------------------------------------------*/ - -SpriteResource::SpriteResource(const Common::String &filename) : - GraphicResource(filename) { - // Read in the index - Common::MemoryReadStream f(_data, _filesize); - int count = f.readUint16LE(); - _index.resize(count); - - for (int i = 0; i < count; ++i) { - _index[i]._offset1 = f.readUint16LE(); - _index[i]._offset2 = f.readUint16LE(); - } -} - void SpriteResource::draw(XSurface &dest, int frame, const Common::Point &destPos) const { drawOffset(dest, _index[frame]._offset1, destPos); if (_index[frame]._offset2) |