From 730de448db0193526a4b8692191374b707f78ff5 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 28 Apr 2018 16:33:10 -0400 Subject: XEEN: Revert removal of movement check code; it was necessary after all --- engines/xeen/interface.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'engines') 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; -- cgit v1.2.3