aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2018-04-28 16:33:10 -0400
committerPaul Gilbert2018-04-28 16:33:10 -0400
commit730de448db0193526a4b8692191374b707f78ff5 (patch)
treef7864bdaa5c3d38c11799f79855634f5c419d781 /engines
parentbd5d097286fd316fd2067ad5681dcccadafb8219 (diff)
downloadscummvm-rg350-730de448db0193526a4b8692191374b707f78ff5.tar.gz
scummvm-rg350-730de448db0193526a4b8692191374b707f78ff5.tar.bz2
scummvm-rg350-730de448db0193526a4b8692191374b707f78ff5.zip
XEEN: Revert removal of movement check code; it was necessary after all
Diffstat (limited to 'engines')
-rw-r--r--engines/xeen/interface.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/engines/xeen/interface.cpp b/engines/xeen/interface.cpp
index 390328aa21..fbb91aa7e5 100644
--- a/engines/xeen/interface.cpp
+++ b/engines/xeen/interface.cpp
@@ -901,7 +901,25 @@ bool Interface::checkMoveDirection(int key) {
Map &map = *_vm->_map;
Party &party = *_vm->_party;
Sound &sound = *_vm->_sound;
+
+ // For strafing or moving backwards, temporarily move to face the direction being checked,
+ // since the call to getCell will the adjacent cell details in the direction being faced
Direction dir = party._mazeDirection;
+ switch (key) {
+ case (Common::KBD_CTRL << 16) | Common::KEYCODE_LEFT:
+ party._mazeDirection = (party._mazeDirection == DIR_NORTH) ? DIR_WEST :
+ (Direction)(party._mazeDirection - 1);
+ break;
+ case (Common::KBD_CTRL << 16) | Common::KEYCODE_RIGHT:
+ party._mazeDirection = (party._mazeDirection == DIR_WEST) ? DIR_NORTH :
+ (Direction)(party._mazeDirection + 1);
+ break;
+ case Common::KEYCODE_DOWN:
+ party._mazeDirection = (Direction)((int)party._mazeDirection ^ 2);
+ break;
+ default:
+ break;
+ }
map.getCell(7);
int startSurfaceId = map._currentSurfaceId;