mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
SHERLOCK: RT: Move ADJUST_CORD usage to initial anim loading
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user