diff options
Diffstat (limited to 'engines/agos/res.cpp')
-rw-r--r-- | engines/agos/res.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/engines/agos/res.cpp b/engines/agos/res.cpp index d74563226f..4aca390f3b 100644 --- a/engines/agos/res.cpp +++ b/engines/agos/res.cpp @@ -221,14 +221,17 @@ void AGOSEngine::loadGamePcFile() { _numRoomStates = in.size() / 8; - _stateList = (byte *)malloc(_numRoomStates * 6); - if (_stateList == NULL) + _roomStates = (RoomState *)calloc(_numRoomStates, sizeof(RoomState)); + if (_roomStates == NULL) error("loadGamePcFile: Out of memory for room state list"); - _numRoomStates *= 3; - - // TODO Load room state resources + for (uint s = 0; s < _numRoomStates; s++) { + uint16 num = in.readUint16BE() - (_itemArrayInited - 2); + _roomStates[num].state = in.readUint16BE(); + _roomStates[num].classFlags = in.readUint16BE(); + _roomStates[num].roomExitStates = in.readUint16BE(); + } in.close(); } |