aboutsummaryrefslogtreecommitdiff
path: root/queen/command.cpp
diff options
context:
space:
mode:
authorGregory Montoir2004-01-16 20:26:30 +0000
committerGregory Montoir2004-01-16 20:26:30 +0000
commit99500a0112e05ad73a67dc51e6fdfb59b1bf4f1f (patch)
tree75517eccd7b6359248ad61ee0d91c56e72f6ed47 /queen/command.cpp
parent19ad2d0120def7bd22ee8e37630c4d1e5fc1c65c (diff)
downloadscummvm-rg350-99500a0112e05ad73a67dc51e6fdfb59b1bf4f1f.tar.gz
scummvm-rg350-99500a0112e05ad73a67dc51e6fdfb59b1bf4f1f.tar.bz2
scummvm-rg350-99500a0112e05ad73a67dc51e6fdfb59b1bf4f1f.zip
- removed noisy warning in talk code
- set _entryObj only if verb is WALK_TO - changed setConditions code in Command::openOrCloseAssociatedObject to be consistent with Command::setConditions ; this isn't like the original, but more logical to me. svn-id: r12441
Diffstat (limited to 'queen/command.cpp')
-rw-r--r--queen/command.cpp37
1 files changed, 17 insertions, 20 deletions
diff --git a/queen/command.cpp b/queen/command.cpp
index b2811d7161..d1c7db7300 100644
--- a/queen/command.cpp
+++ b/queen/command.cpp
@@ -432,22 +432,20 @@ int16 Command::makeJoeWalkTo(int16 x, int16 y, int16 objNum, Verb v, bool mustWa
x = objData->x;
y = objData->y;
}
-
if (v == VERB_WALK_TO) {
_vm->logic()->entryObj(objData->entryObj);
- } else {
- _vm->logic()->entryObj(0);
- }
- if (objData->entryObj > 0 && v != VERB_CLOSE) {
- _vm->logic()->newRoom(_vm->logic()->objectData(objData->entryObj)->room);
- // because this is an exit object, see if there is
- // a walk off point and set (x,y) accordingly
- WalkOffData *wod = _vm->logic()->walkOffPointForObject(objNum);
- if (wod != NULL) {
- x = wod->x;
- y = wod->y;
+ if (objData->entryObj > 0 && v != VERB_CLOSE) {
+ _vm->logic()->newRoom(_vm->logic()->objectData(objData->entryObj)->room);
+ // because this is an exit object, see if there is
+ // a walk off point and set (x,y) accordingly
+ WalkOffData *wod = _vm->logic()->walkOffPointForObject(objNum);
+ if (wod != NULL) {
+ x = wod->x;
+ y = wod->y;
+ }
}
} else {
+ _vm->logic()->entryObj(0);
_vm->logic()->newRoom(0);
}
@@ -915,16 +913,15 @@ void Command::openOrCloseAssociatedObject(Verb action, int16 otherObj) {
CmdListData *cmdList = &_cmdList[1];
uint16 com = 0;
uint16 i;
- for (i = 1; i <= _numCmdList; ++i, ++cmdList) {
+ for (i = 1; i <= _numCmdList && com == 0; ++i, ++cmdList) {
if (cmdList->match(action, otherObj, 0)) {
if (cmdList->setConditions) {
- warning("using Command::openOrCloseAssociatedObject() with setConditions");
CmdGameState *cmdGs = _cmdGameState;
+ warning("Command::openOrCloseAssociatedObject() setConditions slot=%d", cmdGs[i].gameStateSlot);
uint16 j;
for (j = 1; j <= _numCmdGameState; ++j) {
- // FIXME: weird, why using cmdGs[i] instead of cmdGs[j] ?
- if (cmdGs[j].id == i && cmdGs[i].gameStateSlot > 0) {
- if (_vm->logic()->gameState(cmdGs[i].gameStateSlot) == cmdGs[i].gameStateValue) {
+ if (cmdGs[j].id == i && cmdGs[j].gameStateSlot > 0) {
+ if (_vm->logic()->gameState(cmdGs[j].gameStateSlot) == cmdGs[j].gameStateValue) {
com = i;
break;
}
@@ -935,12 +932,12 @@ void Command::openOrCloseAssociatedObject(Verb action, int16 otherObj) {
break;
}
}
- }
-
- debug(6, "Command::openOrCloseAssociatedObject() - com=%X", com);
+ }
if (com != 0) {
+ debug(6, "Command::openOrCloseAssociatedObject() com=%X", com);
+
cmdList = &_cmdList[com];
ObjectData *objData = _vm->logic()->objectData(otherObj);