aboutsummaryrefslogtreecommitdiff
path: root/saga/sprite.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'saga/sprite.cpp')
-rw-r--r--saga/sprite.cpp36
1 files changed, 11 insertions, 25 deletions
diff --git a/saga/sprite.cpp b/saga/sprite.cpp
index 58ed711493..26843ae486 100644
--- a/saga/sprite.cpp
+++ b/saga/sprite.cpp
@@ -26,7 +26,7 @@
#include "saga/gfx.h"
#include "saga/scene.h"
-#include "saga/rscfile_mod.h"
+#include "saga/rscfile.h"
#include "saga/font.h"
@@ -35,38 +35,32 @@
namespace Saga {
-Sprite::Sprite(SagaEngine *vm) : _vm(vm), _initialized(false) {
+Sprite::Sprite(SagaEngine *vm) : _vm(vm) {
debug(8, "Initializing sprite subsystem...");
// Load sprite module resource context
- _spriteContext = _vm->getFileContext(GAME_RESOURCEFILE, 0);
+ _spriteContext = _vm->_resource->getContext(GAME_RESOURCEFILE);
if (_spriteContext == NULL) {
- return;
+ error("Sprite::Sprite resource context not found");
}
_decodeBufLen = DECODE_BUF_LEN;
_decodeBuf = (byte *)malloc(_decodeBufLen);
if (_decodeBuf == NULL) {
- return;
+ memoryError("Sprite::Sprite");
}
loadList(_vm->getResourceDescription()->mainSpritesResourceId, _mainSprites);
-
- _initialized = true;
}
Sprite::~Sprite(void) {
- if (!_initialized) {
- return;
- }
-
debug(8, "Shutting down sprite subsystem...");
_mainSprites.freeMem();
free(_decodeBuf);
}
-int Sprite::loadList(int resourceId, SpriteList &spriteList) {
+void Sprite::loadList(int resourceId, SpriteList &spriteList) {
SpriteInfo *spriteInfo;
byte *spriteListData;
size_t spriteListLength;
@@ -79,17 +73,13 @@ int Sprite::loadList(int resourceId, SpriteList &spriteList) {
const byte *spritePointer;
const byte *spriteDataPointer;
- if (RSC_LoadResource(_spriteContext, resourceId, &spriteListData, &spriteListLength) != SUCCESS) {
- warning("Sprite::loadList RSC_LoadResource FAILURE");
- return FAILURE;
- }
+ _vm->_resource->loadResource(_spriteContext, resourceId, spriteListData, spriteListLength);
if (spriteListLength == 0) {
- warning("Sprite::loadList spriteListLength == 0");
- return FAILURE;
+ return;
}
- MemoryReadStreamEndian readS(spriteListData, spriteListLength, IS_BIG_ENDIAN);
+ MemoryReadStreamEndian readS(spriteListData, spriteListLength, _spriteContext->isBigEndian);
spriteCount = readS.readUint16();
@@ -105,7 +95,7 @@ int Sprite::loadList(int resourceId, SpriteList &spriteList) {
for (i = oldSpriteCount; i < spriteList.spriteCount; i++) {
spriteInfo = &spriteList.infoList[i];
- if (_vm->getFeatures() & GF_MAC_RESOURCES)
+ if (_vm->isMacResources())
offset = readS.readUint32();
else
offset = readS.readUint16();
@@ -142,9 +132,7 @@ int Sprite::loadList(int resourceId, SpriteList &spriteList) {
memcpy(spriteInfo->decodedBuffer, _decodeBuf, outputLength);
}
- RSC_FreeResource(spriteListData);
-
- return SUCCESS;
+ free(spriteListData);
}
void Sprite::getScaledSpriteBuffer(SpriteList &spriteList, int spriteNumber, int scale, int &width, int &height, int &xAlign, int &yAlign, const byte *&buffer) {
@@ -307,8 +295,6 @@ void Sprite::drawOccluded(Surface *ds, const Rect &clipRect, SpriteList &spriteL
int maskZ;
- assert(_initialized);
-
if (!_vm->_scene->isBGMaskPresent()) {
draw(ds, clipRect, spriteList, spriteNumber, screenCoord, scale);
return;