diff options
-rw-r--r-- | engines/sherlock/objects.cpp | 11 | ||||
-rw-r--r-- | engines/sherlock/tattoo/tattoo_scene.cpp | 14 | ||||
-rw-r--r-- | engines/sherlock/tattoo/tattoo_user_interface.cpp | 3 |
3 files changed, 11 insertions, 17 deletions
diff --git a/engines/sherlock/objects.cpp b/engines/sherlock/objects.cpp index 1d2cb1b725..a42fce5ea9 100644 --- a/engines/sherlock/objects.cpp +++ b/engines/sherlock/objects.cpp @@ -39,6 +39,12 @@ namespace Sherlock { #define CLEAR_DIST_X 5 #define CLEAR_DIST_Y 0 +#define ADJUST_COORD(COORD) \ + if (COORD.x != -1) \ + COORD.x *= FIXED_INT_MULTIPLIER; \ + if (COORD.y != -1) \ + COORD.y *= FIXED_INT_MULTIPLIER + SherlockEngine *BaseObject::_vm; bool BaseObject::_countCAnimFrames; @@ -1430,28 +1436,31 @@ void CAnim::load(Common::SeekableReadStream &s, bool isRoseTattoo, uint32 dataOf _goto[0].x = s.readSint16LE(); _goto[0].y = s.readSint16LE(); _goto[0]._facing = s.readSint16LE(); + ADJUST_COORD(_goto[0]); if (isRoseTattoo) { // Get Goto position and facing for second NPC _goto[1].x = s.readSint16LE(); _goto[1].y = s.readSint16LE(); _goto[1]._facing = s.readSint16LE(); + ADJUST_COORD(_goto[1]); } else { // For Serrated Scalpel, adjust the loaded co-ordinates _goto[0].x = _goto[0].x * FIXED_INT_MULTIPLIER / 100; _goto[0].y = _goto[0].y * FIXED_INT_MULTIPLIER / 100; - } _teleport[0].x = s.readSint16LE(); _teleport[0].y = s.readSint16LE(); _teleport[0]._facing = s.readSint16LE(); + ADJUST_COORD(_teleport[0]); if (isRoseTattoo) { // Get Teleport position and facing for second NPC _teleport[1].x = s.readSint16LE(); _teleport[1].y = s.readSint16LE(); _teleport[1]._facing = s.readSint16LE(); + ADJUST_COORD(_teleport[1]); } else { // For Serrated Scalpel, adjust the loaded co-ordinates _teleport[0].x = _teleport[0].x * FIXED_INT_MULTIPLIER / 100; diff --git a/engines/sherlock/tattoo/tattoo_scene.cpp b/engines/sherlock/tattoo/tattoo_scene.cpp index d41df5e275..0f02f3e872 100644 --- a/engines/sherlock/tattoo/tattoo_scene.cpp +++ b/engines/sherlock/tattoo/tattoo_scene.cpp @@ -569,12 +569,6 @@ int TattooScene::getScaleVal(const Point32 &pt) { return result; } -#define ADJUST_COORD(COORD) \ - if (COORD.x != -1) \ - COORD.x *= FIXED_INT_MULTIPLIER; \ - if (COORD.y != -1) \ - COORD.y *= FIXED_INT_MULTIPLIER - int TattooScene::startCAnim(int cAnimNum, int playRate) { TattooEngine &vm = *(TattooEngine *)_vm; Events &events = *_vm->_events; @@ -595,12 +589,6 @@ int TattooScene::startCAnim(int cAnimNum, int playRate) { PositionFacing teleport1 = cAnim._teleport[0]; PositionFacing teleport2 = cAnim._teleport[1]; - // If the co-ordinates are valid (not -1), adjust them by the fixed int multiplier - ADJUST_COORD(goto1); - ADJUST_COORD(goto2); - ADJUST_COORD(teleport1); - ADJUST_COORD(teleport2); - // See if the Player must walk to a position before the animation starts SpriteType savedPlayerType = people[HOLMES]._type; if (goto1.x != -1 && people[HOLMES]._type == CHARACTER) { @@ -700,8 +688,6 @@ int TattooScene::startCAnim(int cAnimNum, int playRate) { return 1; } -#undef ADJUST_COORD - void TattooScene::setNPCPath(int npc) { TattooPeople &people = *(TattooPeople *)_vm->_people; Talk &talk = *_vm->_talk; diff --git a/engines/sherlock/tattoo/tattoo_user_interface.cpp b/engines/sherlock/tattoo/tattoo_user_interface.cpp index 107eeba0d0..8942d4e511 100644 --- a/engines/sherlock/tattoo/tattoo_user_interface.cpp +++ b/engines/sherlock/tattoo/tattoo_user_interface.cpp @@ -86,8 +86,7 @@ void TattooUserInterface::lookAtObject() { scene.startCAnim(cNum); } else if (_bgShape->_lookPosition.y != 0) { // Need to walk to object before looking at it - people[HOLMES].walkToCoords(Common::Point(_bgShape->_lookPosition.x * FIXED_INT_MULTIPLIER, - _bgShape->_lookPosition.y * FIXED_INT_MULTIPLIER), _bgShape->_lookPosition._facing); + people[HOLMES].walkToCoords(_bgShape->_lookPosition, _bgShape->_lookPosition._facing); } if (!talk._talkToAbort) { |