aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaromir Wysoglad2019-06-10 09:55:10 +0200
committerThierry Crozat2019-07-28 15:09:14 +0100
commit14aeaf9c92354c58a54f15fc0d6cb4072433111f (patch)
tree8132f0764dd2b6b745d759e8ebc65fd43440afac
parentbe27f9aa3e178b2a94ce76c9c84d897a2749bcd0 (diff)
downloadscummvm-rg350-14aeaf9c92354c58a54f15fc0d6cb4072433111f.tar.gz
scummvm-rg350-14aeaf9c92354c58a54f15fc0d6cb4072433111f.tar.bz2
scummvm-rg350-14aeaf9c92354c58a54f15fc0d6cb4072433111f.zip
SUPERNOVA2: Add LCorridor1 room
-rw-r--r--engines/supernova2/ms2_def.h2
-rw-r--r--engines/supernova2/rooms.cpp42
-rw-r--r--engines/supernova2/rooms.h4
-rw-r--r--engines/supernova2/state.cpp4
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);