diff options
author | Strangerke | 2011-07-30 15:43:49 +0200 |
---|---|---|
committer | Strangerke | 2011-07-30 15:43:49 +0200 |
commit | b53ffa8f2c31d27ac5a7b3fd48143102be6ff4ff (patch) | |
tree | 3ab435761eb439dd0381bc96eea429792f641852 /engines/cge/cge_main.cpp | |
parent | 8b53899ca7d5ab1599f6bf3e1d4e49746876674b (diff) | |
download | scummvm-rg350-b53ffa8f2c31d27ac5a7b3fd48143102be6ff4ff.tar.gz scummvm-rg350-b53ffa8f2c31d27ac5a7b3fd48143102be6ff4ff.tar.bz2 scummvm-rg350-b53ffa8f2c31d27ac5a7b3fd48143102be6ff4ff.zip |
CGE: Move some conditional defines to variables
Diffstat (limited to 'engines/cge/cge_main.cpp')
-rw-r--r-- | engines/cge/cge_main.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/engines/cge/cge_main.cpp b/engines/cge/cge_main.cpp index dc573b8b2f..123501047a 100644 --- a/engines/cge/cge_main.cpp +++ b/engines/cge/cge_main.cpp @@ -99,9 +99,6 @@ static bool _finis = false; int _offUseCount; uint16 *_intStackPtr = false; -Hxy _heroXY[CAVE_MAX] = {{0, 0}}; -Bar _barriers[1 + CAVE_MAX] = { { 0xFF, 0xFF } }; - extern Dac _stdPal[58]; void CGEEngine::syncHeader(Common::Serializer &s) { @@ -120,6 +117,13 @@ void CGEEngine::syncHeader(Common::Serializer &s) { for (i = 0; i < 4; ++i) s.syncAsUint16LE(_flag[i]); + initCaveValues(); + if (s.isLoading()) { + //TODO: Fix the memory leak when the game is already running + _heroXY = (Hxy *) malloc (sizeof(Hxy) * CAVE_MAX); + _barriers = (Bar *) malloc (sizeof(Bar) * (1 + CAVE_MAX)); + } + for (i = 0; i < CAVE_MAX; ++i) { s.syncAsSint16LE(_heroXY[i]._x); s.syncAsUint16LE(_heroXY[i]._y); @@ -145,7 +149,7 @@ void CGEEngine::syncHeader(Common::Serializer &s) { } bool CGEEngine::loadGame(int slotNumber, SavegameHeader *header, bool tiny) { - debugC(1, kCGEDebugEngine, "CGEEngine::loadgame(file, %s)", tiny ? "true" : "false"); + debugC(1, kCGEDebugEngine, "CGEEngine::loadgame(%d, header, %s)", slotNumber, tiny ? "true" : "false"); Common::MemoryReadStream *readStream; SavegameHeader saveHeader; @@ -833,9 +837,9 @@ void System::touch(uint16 mask, int x, int y) { _infoLine->update(NULL); if (y >= kWorldHeight ) { if (x < kButtonX) { // select cave? - if (y >= CAVE_Y && y < CAVE_Y + CAVE_NY * CAVE_DY && - x >= CAVE_X && x < CAVE_X + CAVE_NX * CAVE_DX && !_vm->_game) { - cav = ((y - CAVE_Y) / CAVE_DY) * CAVE_NX + (x - CAVE_X) / CAVE_DX + 1; + if (y >= CAVE_Y && y < CAVE_Y + _vm->CAVE_NY * _vm->CAVE_DY && + x >= CAVE_X && x < CAVE_X + _vm->CAVE_NX * _vm->CAVE_DX && !_vm->_game) { + cav = ((y - CAVE_Y) / _vm->CAVE_DY) * _vm->CAVE_NX + (x - CAVE_X) / _vm->CAVE_DX + 1; if (cav > _vm->_maxCave) cav = 0; } else { |