aboutsummaryrefslogtreecommitdiff
path: root/engines/adl/adl_v2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/adl/adl_v2.cpp')
-rw-r--r--engines/adl/adl_v2.cpp50
1 files changed, 12 insertions, 38 deletions
diff --git a/engines/adl/adl_v2.cpp b/engines/adl/adl_v2.cpp
index 3383a6307a..1a07d0e9ab 100644
--- a/engines/adl/adl_v2.cpp
+++ b/engines/adl/adl_v2.cpp
@@ -48,7 +48,7 @@ void AdlEngine_v2::setupOpcodeTables() {
OpcodeUnImpl();
Opcode(o2_isFirstTime);
Opcode(o2_isRandomGT);
- Opcode(o2_isItemInRoom);
+ Opcode(o1_isItemInRoom);
// 0x04
Opcode(o2_isNounNotInRoom);
Opcode(o1_isMovesGT);
@@ -104,6 +104,12 @@ bool AdlEngine_v2::matchesCurrentPic(byte pic) const {
return pic == getCurRoom().curPicture || pic == IDI_ANY;
}
+byte AdlEngine_v2::roomArg(byte room) const {
+ if (room == IDI_CUR_ROOM)
+ return _state.room;
+ return room;
+}
+
int AdlEngine_v2::o2_isFirstTime(ScriptEnv &e) {
bool oldFlag = getCurRoom().isFirstTime;
@@ -124,28 +130,11 @@ int AdlEngine_v2::o2_isRandomGT(ScriptEnv &e) {
return -1;
}
-int AdlEngine_v2::o2_isItemInRoom(ScriptEnv &e) {
- byte room = e.arg(2);
-
- if (room == IDI_CUR_ROOM)
- room = _state.room;
-
- if (getItem(e.arg(1)).room == room)
- return 2;
-
- return -1;
-}
-
int AdlEngine_v2::o2_isNounNotInRoom(ScriptEnv &e) {
Common::Array<Item>::const_iterator item;
- byte room = e.arg(1);
-
- if (room == IDI_CUR_ROOM)
- room = _state.room;
-
for (item = _state.items.begin(); item != _state.items.end(); ++item)
- if (item->noun == e.getNoun() && (item->room == room))
+ if (item->noun == e.getNoun() && (item->room == roomArg(e.arg(1))))
return -1;
return 1;
@@ -161,10 +150,7 @@ int AdlEngine_v2::o2_isCarryingSomething(ScriptEnv &e) {
}
int AdlEngine_v2::o2_moveItem(ScriptEnv &e) {
- byte room = e.arg(2);
-
- if (room == IDI_CUR_ROOM)
- room = _state.room;
+ byte room = roomArg(e.arg(2));
Item &item = getItem(e.arg(1));
@@ -177,15 +163,8 @@ int AdlEngine_v2::o2_moveItem(ScriptEnv &e) {
}
int AdlEngine_v2::o2_moveAllItems(ScriptEnv &e) {
- byte room1 = e.arg(1);
-
- if (room1 == IDI_CUR_ROOM)
- room1 = _state.room;
-
- byte room2 = e.arg(2);
-
- if (room2 == IDI_CUR_ROOM)
- room2 = _state.room;
+ byte room1 = roomArg(e.arg(1));
+ byte room2 = roomArg(e.arg(2));
Common::Array<Item>::iterator item;
@@ -200,14 +179,9 @@ int AdlEngine_v2::o2_moveAllItems(ScriptEnv &e) {
}
int AdlEngine_v2::o2_placeItem(ScriptEnv &e) {
- byte room = e.arg(2);
-
- if (room == IDI_CUR_ROOM)
- room = _state.room;
-
Item &item = getItem(e.arg(1));
- item.room = room;
+ item.room = roomArg(e.arg(2));
item.position.x = e.arg(3);
item.position.y = e.arg(4);
item.state = IDI_ITEM_NOT_MOVED;