aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/sprites.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2015-01-02 13:30:00 -1000
committerPaul Gilbert2015-01-02 13:30:00 -1000
commite1404f127d376225d0c15c43b12f59749689c731 (patch)
tree6667f7f02abe3ed2b5f7bedcd7615834a2d99bf6 /engines/xeen/sprites.cpp
parent21d981f8e86bf214daa2e203acc2fb20c82ec8a0 (diff)
downloadscummvm-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.cpp69
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)