mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-13 04:28:37 +00:00
SHERLOCK: RT: Fix missing code in setWalking
This commit is contained in:
parent
710aeb380b
commit
704dd8140b
@ -420,6 +420,8 @@ void TattooPerson::setWalking() {
|
|||||||
if (_sequenceNumber == WALK_LEFT || _sequenceNumber == WALK_RIGHT) {
|
if (_sequenceNumber == WALK_LEFT || _sequenceNumber == WALK_RIGHT) {
|
||||||
_delta.x = _delta.x / speed.x * diagSpeed.x;
|
_delta.x = _delta.x / speed.x * diagSpeed.x;
|
||||||
_delta.y = (delta.y * FIXED_INT_MULTIPLIER) / (delta.x * 10 / diagSpeed.x);
|
_delta.y = (delta.y * FIXED_INT_MULTIPLIER) / (delta.x * 10 / diagSpeed.x);
|
||||||
|
|
||||||
|
_walkCount = delta.x * 10 / diagSpeed.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_sequenceNumber) {
|
switch (_sequenceNumber) {
|
||||||
@ -434,6 +436,7 @@ void TattooPerson::setWalking() {
|
|||||||
if (_sequenceNumber == WALK_LEFT || _sequenceNumber == WALK_RIGHT) {
|
if (_sequenceNumber == WALK_LEFT || _sequenceNumber == WALK_RIGHT) {
|
||||||
_delta.x = _delta.x / speed.x * diagSpeed.x;
|
_delta.x = _delta.x / speed.x * diagSpeed.x;
|
||||||
_delta.y = -1 * (delta.y * FIXED_INT_MULTIPLIER) / (delta.x * 10 / diagSpeed.x);
|
_delta.y = -1 * (delta.y * FIXED_INT_MULTIPLIER) / (delta.x * 10 / diagSpeed.x);
|
||||||
|
|
||||||
_walkCount = (delta.x * 10) / diagSpeed.x;
|
_walkCount = (delta.x * 10) / diagSpeed.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -453,16 +456,25 @@ void TattooPerson::setWalking() {
|
|||||||
_sequenceNumber = WALK_UP;
|
_sequenceNumber = WALK_UP;
|
||||||
_delta.y = speed.y * -FIXED_INT_MULTIPLIER;
|
_delta.y = speed.y * -FIXED_INT_MULTIPLIER;
|
||||||
} else {
|
} else {
|
||||||
|
speed.y = diagSpeed.y;
|
||||||
_sequenceNumber = WALK_DOWN;
|
_sequenceNumber = WALK_DOWN;
|
||||||
_delta.y = speed.y * FIXED_INT_MULTIPLIER;
|
_delta.y = speed.y * FIXED_INT_MULTIPLIER;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the delta x
|
// Set the delta x
|
||||||
_delta.x = (delta.x * FIXED_INT_MULTIPLIER) / (delta.y / speed.y);
|
if (delta.y * 10 / speed.y)
|
||||||
if (_walkDest.x < (_position.x / FIXED_INT_MULTIPLIER))
|
_delta.x = (delta.x * FIXED_INT_MULTIPLIER) / (delta.y * 10 / speed.y);
|
||||||
|
else
|
||||||
|
_delta.x = (delta.x * FIXED_INT_MULTIPLIER) / delta.y;
|
||||||
|
|
||||||
|
if (_walkDest.x < _position.y / FIXED_INT_MULTIPLIER)
|
||||||
_delta.x = -_delta.x;
|
_delta.x = -_delta.x;
|
||||||
|
|
||||||
_walkCount = delta.y / speed.y;
|
// Set how many times we should add the delta's to the players position
|
||||||
|
if (delta.y * 10 / speed.y)
|
||||||
|
_walkCount = delta.y * 10 / speed.y;
|
||||||
|
else
|
||||||
|
_walkCount = delta.y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -501,7 +513,7 @@ void TattooPerson::walkToCoords(const Point32 &destPos, int destDir) {
|
|||||||
CursorId oldCursor = events.getCursor();
|
CursorId oldCursor = events.getCursor();
|
||||||
events.setCursor(WAIT);
|
events.setCursor(WAIT);
|
||||||
|
|
||||||
_walkDest = Common::Point(_position.x / FIXED_INT_MULTIPLIER, _position.y / FIXED_INT_MULTIPLIER);
|
_walkDest = Common::Point(destPos.x / FIXED_INT_MULTIPLIER, destPos.y / FIXED_INT_MULTIPLIER);
|
||||||
|
|
||||||
bool isHolmes = this == &people[HOLMES];
|
bool isHolmes = this == &people[HOLMES];
|
||||||
if (isHolmes) {
|
if (isHolmes) {
|
||||||
|
Loading…
Reference in New Issue
Block a user