diff options
author | Gregory Montoir | 2003-12-30 21:06:22 +0000 |
---|---|---|
committer | Gregory Montoir | 2003-12-30 21:06:22 +0000 |
commit | 42c5524a02a61a13fcefdc5a7d3f187c5b048bee (patch) | |
tree | e89893ebe0527df2f258ee4fa0434ab55927bf1a /queen/command.cpp | |
parent | 5593a635db1d82a1c75258809854f966dbb9ad31 (diff) | |
download | scummvm-rg350-42c5524a02a61a13fcefdc5a7d3f187c5b048bee.tar.gz scummvm-rg350-42c5524a02a61a13fcefdc5a7d3f187c5b048bee.tar.bz2 scummvm-rg350-42c5524a02a61a13fcefdc5a7d3f187c5b048bee.zip |
interview mini-game support
svn-id: r12037
Diffstat (limited to 'queen/command.cpp')
-rw-r--r-- | queen/command.cpp | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/queen/command.cpp b/queen/command.cpp index 09b55651ef..494941259f 100644 --- a/queen/command.cpp +++ b/queen/command.cpp @@ -267,30 +267,46 @@ void Command::readCommandsFrom(byte *&ptr) { _numCmdArea = READ_BE_UINT16(ptr); ptr += 2; _cmdArea = new CmdArea[_numCmdArea + 1]; - memset(&_cmdArea[0], 0, sizeof(CmdArea)); - for (i = 1; i <= _numCmdArea; i++) { - _cmdArea[i].readFromBE(ptr); + if (_numCmdArea == 0) { + _cmdArea[0].readFromBE(ptr); + } else { + memset(&_cmdArea[0], 0, sizeof(CmdArea)); + for (i = 1; i <= _numCmdArea; i++) { + _cmdArea[i].readFromBE(ptr); + } } _numCmdObject = READ_BE_UINT16(ptr); ptr += 2; _cmdObject = new CmdObject[_numCmdObject + 1]; - memset(&_cmdObject[0], 0, sizeof(CmdObject)); - for (i = 1; i <= _numCmdObject; i++) { - _cmdObject[i].readFromBE(ptr); + if (_numCmdObject == 0) { + _cmdObject[0].readFromBE(ptr); + } else { + memset(&_cmdObject[0], 0, sizeof(CmdObject)); + for (i = 1; i <= _numCmdObject; i++) { + _cmdObject[i].readFromBE(ptr); + } } _numCmdInventory = READ_BE_UINT16(ptr); ptr += 2; _cmdInventory = new CmdInventory[_numCmdInventory + 1]; - memset(&_cmdInventory[0], 0, sizeof(CmdInventory)); - for (i = 1; i <= _numCmdInventory; i++) { - _cmdInventory[i].readFromBE(ptr); + if (_numCmdInventory == 0) { + _cmdInventory[0].readFromBE(ptr); + } else { + memset(&_cmdInventory[0], 0, sizeof(CmdInventory)); + for (i = 1; i <= _numCmdInventory; i++) { + _cmdInventory[i].readFromBE(ptr); + } } _numCmdGameState = READ_BE_UINT16(ptr); ptr += 2; _cmdGameState = new CmdGameState[_numCmdGameState + 1]; - memset(&_cmdGameState[0], 0, sizeof(CmdGameState)); - for (i = 1; i <= _numCmdGameState; i++) { - _cmdGameState[i].readFromBE(ptr); + if (_numCmdGameState == 0) { + _cmdGameState[0].readFromBE(ptr); + } else { + memset(&_cmdGameState[0], 0, sizeof(CmdGameState)); + for (i = 1; i <= _numCmdGameState; i++) { + _cmdGameState[i].readFromBE(ptr); + } } } |