diff options
author | Andrew Kurushin | 2010-10-22 23:13:17 +0000 |
---|---|---|
committer | Andrew Kurushin | 2010-10-22 23:13:17 +0000 |
commit | f24394b85f5d34815659c50cd956c262f4b79d68 (patch) | |
tree | 8c93e3f052133b154b1686e00b4066b3967f0c02 /engines/saga/scene.cpp | |
parent | b8ff3eb4913dd22bc75ae360baadadd95151077f (diff) | |
download | scummvm-rg350-f24394b85f5d34815659c50cd956c262f4b79d68.tar.gz scummvm-rg350-f24394b85f5d34815659c50cd956c262f4b79d68.tar.bz2 scummvm-rg350-f24394b85f5d34815659c50cd956c262f4b79d68.zip |
SAGA: replace Actor::_pathCell, Anim::*, Converse::text, IsoMap::*, Music::_songTable, ObjectMap::*, PalAnim::*, Scene::sceneLut, SndRes::_fxTable* malloc based arrays with Common::Array implementation
add ByteArray type
fix debug Tile Hittest frame drawing
debug 0x%x => 0x%X
svn-id: r53719
Diffstat (limited to 'engines/saga/scene.cpp')
-rw-r--r-- | engines/saga/scene.cpp | 56 |
1 files changed, 23 insertions, 33 deletions
diff --git a/engines/saga/scene.cpp b/engines/saga/scene.cpp index 9750cf308a..f745fbddcc 100644 --- a/engines/saga/scene.cpp +++ b/engines/saga/scene.cpp @@ -140,7 +140,7 @@ Scene::Scene(SagaEngine *vm) : _vm(vm) { byte *sceneLUTPointer; size_t sceneLUTLength; uint32 resourceId; - int i; + uint i; // Do nothing for SAGA2 games for now if (_vm->isSaga2()) { @@ -162,15 +162,11 @@ Scene::Scene(SagaEngine *vm) : _vm(vm) { if (sceneLUTLength == 0) { error("Scene::Scene() sceneLUTLength == 0"); } - _sceneCount = sceneLUTLength / 2; - _sceneLUT = (int *)malloc(_sceneCount * sizeof(*_sceneLUT)); - if (_sceneLUT == NULL) { - memoryError("Scene::Scene()"); - } + _sceneLUT.resize(sceneLUTLength / 2); MemoryReadStreamEndian readS(sceneLUTPointer, sceneLUTLength, _sceneContext->isBigEndian()); - for (i = 0; i < _sceneCount; i++) { + for (i = 0; i < _sceneLUT.size(); i++) { _sceneLUT[i] = readS.readUint16(); debug(8, "sceneNumber %i has resourceId %i", i, _sceneLUT[i]); } @@ -190,7 +186,7 @@ Scene::Scene(SagaEngine *vm) : _vm(vm) { getResourceTypes(types, typesCount); - for (i = 0; i < _sceneCount; i++) { + for (i = 0; i < _sceneLUT.size(); i++) { gDebugLevel = -1; loadSceneDescriptor(_sceneLUT[i]); loadSceneResourceList(_sceneDescription.resourceListResourceId); @@ -210,7 +206,7 @@ Scene::Scene(SagaEngine *vm) : _vm(vm) { } #endif - debug(3, "LUT has %d entries.", _sceneCount); + debug(3, "LUT has %d entries.", _sceneLUT.size()); _sceneLoaded = false; _sceneNumber = 0; @@ -236,7 +232,6 @@ Scene::~Scene() { delete _actionMap; delete _objectMap; - free(_sceneLUT); } void Scene::getResourceTypes(SAGAResourceTypes *&types, int &typesCount) { @@ -623,7 +618,7 @@ void Scene::loadScene(LoadSceneParams &loadSceneParams) { if (loadSceneParams.chapter == 6 || loadSceneParams.chapter == 8) _vm->_interface->setLeftPortrait(0); - _vm->_anim->freeCutawayList(); + _vm->_anim->clearCutawayList(); _vm->_script->clearModules(); // deleteAllScenes(); @@ -1244,15 +1239,15 @@ void Scene::endScene() { // Free animation info list _vm->_anim->reset(); - _vm->_palanim->freePalAnim(); + _vm->_palanim->clear(); - _objectMap->freeMem(); - _actionMap->freeMem(); - _entryList.freeMem(); + _objectMap->clear(); + _actionMap->clear(); + _entryList.clear(); _sceneStrings.clear(); if (_vm->getGameId() == GID_ITE) - _vm->_isoMap->freeMem(); + _vm->_isoMap->clear(); _vm->_events->clearList(); _textList.clear(); @@ -1285,7 +1280,7 @@ void Scene::cmdSceneChange(int argc, const char **argv) { scene_num = atoi(argv[1]); - if ((scene_num < 1) || (scene_num >= _sceneCount)) { + if ((scene_num < 1) || (uint(scene_num) >= _sceneLUT.size())) { _vm->_console->DebugPrintf("Invalid scene number.\n"); return; } @@ -1304,26 +1299,21 @@ void Scene::cmdObjectMapInfo() { } void Scene::loadSceneEntryList(const byte* resourcePointer, size_t resourceLength) { - int i; - - _entryList.entryListCount = resourceLength / 8; - - MemoryReadStreamEndian readS(resourcePointer, resourceLength, _sceneContext->isBigEndian()); + uint i; + if (!_entryList.empty()) { + error("Scene::loadSceneEntryList entryList not empty"); + } - if (_entryList.entryList) - error("Scene::loadSceneEntryList entryList != NULL"); + _entryList.resize(resourceLength / 8); - _entryList.entryList = (SceneEntry *) malloc(_entryList.entryListCount * sizeof(*_entryList.entryList)); - if (_entryList.entryList == NULL) { - memoryError("Scene::loadSceneEntryList"); - } + MemoryReadStreamEndian readS(resourcePointer, resourceLength, _sceneContext->isBigEndian()); - for (i = 0; i < _entryList.entryListCount; i++) { - _entryList.entryList[i].location.x = readS.readSint16(); - _entryList.entryList[i].location.y = readS.readSint16(); - _entryList.entryList[i].location.z = readS.readSint16(); - _entryList.entryList[i].facing = readS.readUint16(); + for (i = 0; i < _entryList.size(); i++) { + _entryList[i].location.x = readS.readSint16(); + _entryList[i].location.y = readS.readSint16(); + _entryList[i].location.z = readS.readSint16(); + _entryList[i].facing = readS.readUint16(); } } |