diff options
author | Jaromir Wysoglad | 2019-06-10 09:55:10 +0200 |
---|---|---|
committer | Thierry Crozat | 2019-07-28 15:09:14 +0100 |
commit | 14aeaf9c92354c58a54f15fc0d6cb4072433111f (patch) | |
tree | 8132f0764dd2b6b745d759e8ebc65fd43440afac /engines/supernova2 | |
parent | be27f9aa3e178b2a94ce76c9c84d897a2749bcd0 (diff) | |
download | scummvm-rg350-14aeaf9c92354c58a54f15fc0d6cb4072433111f.tar.gz scummvm-rg350-14aeaf9c92354c58a54f15fc0d6cb4072433111f.tar.bz2 scummvm-rg350-14aeaf9c92354c58a54f15fc0d6cb4072433111f.zip |
SUPERNOVA2: Add LCorridor1 room
Diffstat (limited to 'engines/supernova2')
-rw-r--r-- | engines/supernova2/ms2_def.h | 2 | ||||
-rw-r--r-- | engines/supernova2/rooms.cpp | 42 | ||||
-rw-r--r-- | engines/supernova2/rooms.h | 4 | ||||
-rw-r--r-- | engines/supernova2/state.cpp | 4 |
4 files changed, 37 insertions, 15 deletions
diff --git a/engines/supernova2/ms2_def.h b/engines/supernova2/ms2_def.h index 20f2036a3a..1485013b38 100644 --- a/engines/supernova2/ms2_def.h +++ b/engines/supernova2/ms2_def.h @@ -88,7 +88,7 @@ enum RoomId { UPPER_DOOR,PUZZLE_FRONT,PUZZLE_BEHIND, FORMULA1_F,FORMULA1_N,FORMULA2_F,FORMULA2_N,TOMATO_F,TOMATO_N, MONSTER_F,MONSTER1_N,MONSTER2_N,UPSTAIRS3,DOWNSTAIRS3, - LGANG1,LGANG2,HOLE_ROOM,IN_HOLE,FLOORDOOR,FLOORDOOR_U, + LCORRIDOR1,LGANG2,HOLE_ROOM,IN_HOLE,FLOORDOOR,FLOORDOOR_U, BST_DOOR,HALL,COFFIN_ROOM,MASK, MUSEUM,MUS_EING,MUS1,MUS2,MUS3,MUS4,MUS5,MUS6,MUS7,MUS8, diff --git a/engines/supernova2/rooms.cpp b/engines/supernova2/rooms.cpp index e9fdae9f4d..46c391bf94 100644 --- a/engines/supernova2/rooms.cpp +++ b/engines/supernova2/rooms.cpp @@ -2370,7 +2370,7 @@ bool PyrEntrance::interact(Action verb, Object &obj1, Object &obj2) { {1, 10, 7, 0, MONSTER2_N}, {0, 2, 4, 2, DOWNSTAIRS3}, {1, 2, 5, 0, UPSTAIRS3}, - {1, 2, 5, 3, LGANG1}, + {1, 2, 5, 3, LCORRIDOR1}, {1, 1, 5, 1, LGANG2}, {1, 1, 5, 3, HOLE_ROOM}, {0, 7, 4, 0, BST_DOOR} @@ -2878,6 +2878,8 @@ bool Formula1F::interact(Action verb, Object &obj1, Object &obj2) { return false; if (obj1._id == CORRIDOR) _gm->changeRoom(FORMULA1_N); + else + _gm->passageConstruction(); _gm->_newRoom = true; return true; } @@ -2939,6 +2941,8 @@ bool Formula2F::interact(Action verb, Object &obj1, Object &obj2) { return false; if (obj1._id == CORRIDOR) _gm->changeRoom(FORMULA2_N); + else + _gm->passageConstruction(); _gm->_newRoom = true; return true; } @@ -2999,6 +3003,8 @@ bool TomatoF::interact(Action verb, Object &obj1, Object &obj2) { return false; if (obj1._id == CORRIDOR) _gm->changeRoom(TOMATO_N); + else + _gm->passageConstruction(); _gm->_newRoom = true; return true; } @@ -3068,7 +3074,8 @@ bool MonsterF::interact(Action verb, Object &obj1, Object &obj2) { _gm->changeRoom(MONSTER1_N); else _gm->changeRoom(MONSTER2_N); - } + } else + _gm->passageConstruction(); _gm->_newRoom = true; return true; } @@ -3228,7 +3235,7 @@ bool Upstairs3::interact(Action verb, Object &obj1, Object &obj2) { _gm->_state._pyraE = 1; } if (obj1._id == G_LEFT) - _gm->changeRoom(LGANG1); + _gm->changeRoom(LCORRIDOR1); else _gm->passageConstruction(); _gm->_newRoom = true; @@ -3247,7 +3254,7 @@ Downstairs3::Downstairs3(Supernova2Engine *vm, GameManager *gm) { _objectState[0] = Object(_id, kStringRight, kStringDefaultDescription, G_RIGHT, EXIT, 1, 1, 0, PYR_ENTRANCE, 14); _objectState[1] = Object(_id, kStringLeft, kStringDefaultDescription, G_LEFT, EXIT, 2, 2, 0, PYR_ENTRANCE, 10); - _objectState[2] = Object(_id, kStringCorridor, kStringDefaultDescription, CORRIDOR, EXIT, 0, 0, 0, PYR_ENTRANCE, 2); + _objectState[2] = Object(_id, kStringCorridor, kStringDefaultDescription, CORRIDOR, EXIT, 3, 3, 0, PYR_ENTRANCE, 2); } void Downstairs3::onEntrance() { @@ -3271,23 +3278,38 @@ bool Downstairs3::interact(Action verb, Object &obj1, Object &obj2) { return true; } -LGang1::LGang1(Supernova2Engine *vm, GameManager *gm) { +LCorridor1::LCorridor1(Supernova2Engine *vm, GameManager *gm) { _vm = vm; _gm = gm; - _fileNumber = 6; - _id = LGANG1; + _fileNumber = 9; + _id = LCORRIDOR1; _shown[0] = kShownTrue; + _shown[2] = kShownTrue; + _shown[17] = kShownTrue; + + _objectState[0] = Object(_id, kStringRight, kStringDefaultDescription, G_RIGHT, EXIT, 1, 1, 0, PYR_ENTRANCE, 14); + _objectState[1] = Object(_id, kStringLeft, kStringDefaultDescription, G_LEFT, EXIT, 2, 2, 0, PYR_ENTRANCE, 10); + _objectState[2] = Object(_id, kStringCorridor, kStringDefaultDescription, CORRIDOR, EXIT, 6, 6, 0, PYR_ENTRANCE, 2); } -void LGang1::onEntrance() { +void LCorridor1::onEntrance() { setRoomSeen(true); } -void LGang1::animation() { +void LCorridor1::animation() { } -bool LGang1::interact(Action verb, Object &obj1, Object &obj2) { +bool LCorridor1::interact(Action verb, Object &obj1, Object &obj2) { + if (!_gm->move(verb, obj1)) + return false; + if (obj1._id == G_RIGHT) + _gm->changeRoom(UPSTAIRS3); + else if (obj1._id == CORRIDOR) + _gm->changeRoom(HOLE_ROOM); + else + _gm->passageConstruction(); + _gm->_newRoom = true; return true; } diff --git a/engines/supernova2/rooms.h b/engines/supernova2/rooms.h index 1f3faaced3..8bb95aafd7 100644 --- a/engines/supernova2/rooms.h +++ b/engines/supernova2/rooms.h @@ -453,9 +453,9 @@ public: private: }; -class LGang1 : public Room { +class LCorridor1 : public Room { public: - LGang1(Supernova2Engine *vm, GameManager *gm); + LCorridor1(Supernova2Engine *vm, GameManager *gm); virtual void onEntrance(); virtual void animation(); virtual bool interact(Action verb, Object &obj1, Object &obj2); diff --git a/engines/supernova2/state.cpp b/engines/supernova2/state.cpp index d0e918f1d7..bc341403e4 100644 --- a/engines/supernova2/state.cpp +++ b/engines/supernova2/state.cpp @@ -288,7 +288,7 @@ void GameManager::destroyRooms() { delete _rooms[MONSTER2_N]; delete _rooms[UPSTAIRS3]; delete _rooms[DOWNSTAIRS3]; - delete _rooms[LGANG1]; + delete _rooms[LCORRIDOR1]; delete _rooms[LGANG2]; delete _rooms[HOLE_ROOM]; delete _rooms[IN_HOLE]; @@ -417,7 +417,7 @@ void GameManager::initRooms() { _rooms[MONSTER2_N] = new Monster2N(_vm, this); _rooms[UPSTAIRS3] = new Upstairs3(_vm, this); _rooms[DOWNSTAIRS3] = new Downstairs3(_vm, this); - _rooms[LGANG1] = new LGang1(_vm, this); + _rooms[LCORRIDOR1] = new LCorridor1(_vm, this); _rooms[LGANG2] = new LGang2(_vm, this); _rooms[HOLE_ROOM] = new HoleRoom(_vm, this); _rooms[IN_HOLE] = new InHole(_vm, this); |