diff options
Diffstat (limited to 'engines/adl/adl_v4.cpp')
-rw-r--r-- | engines/adl/adl_v4.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/engines/adl/adl_v4.cpp b/engines/adl/adl_v4.cpp index 8370bead6f..e8ee798199 100644 --- a/engines/adl/adl_v4.cpp +++ b/engines/adl/adl_v4.cpp @@ -127,7 +127,7 @@ void AdlEngine_v4::loadState(Common::ReadStream &stream) { if (size != expectedSize) error("Variable count mismatch (expected %i; found %i)", expectedSize, size); - for (uint i = getRegion(1).vars.size(); i < size; ++i) + for (uint i = getRegion(1).vars.size(); i < _state.vars.size(); ++i) _state.vars[i] = stream.readByte(); if (stream.err() || stream.eos()) @@ -238,6 +238,11 @@ void AdlEngine_v4::loadRegionInitDataOffsets(Common::ReadStream &stream, uint re } } +void AdlEngine_v4::initRoomState(RoomState &roomState) const { + roomState.picture = 1; + roomState.isFirstTime = 1; +} + void AdlEngine_v4::initRegions(const byte *roomsPerRegion, uint regions) { _state.regions.resize(regions); @@ -247,12 +252,8 @@ void AdlEngine_v4::initRegions(const byte *roomsPerRegion, uint regions) { regn.vars.resize(24); regn.rooms.resize(roomsPerRegion[r]); - for (uint rm = 0; rm < roomsPerRegion[r]; ++rm) { - // TODO: hires6 uses 0xff and has slightly different - // code working on these values - regn.rooms[rm].picture = 1; - regn.rooms[rm].isFirstTime = 1; - } + for (uint rm = 0; rm < roomsPerRegion[r]; ++rm) + initRoomState(regn.rooms[rm]); } } @@ -395,13 +396,16 @@ void AdlEngine_v4::backupRoomState(byte room) { backup.picture = getRoom(room).picture; } -void AdlEngine_v4::restoreRoomState(byte room) { +byte AdlEngine_v4::restoreRoomState(byte room) { const RoomState &backup = getCurRegion().rooms[room - 1]; if (backup.isFirstTime != 1) { getRoom(room).curPicture = getRoom(room).picture = backup.picture; getRoom(room).isFirstTime = false; + return 0; } + + return 1; } void AdlEngine_v4::backupVars() { |