mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-15 22:28:10 +00:00
Do not immediately clear the path when it has just 1 vertex.
This fixes the previous bugfix, which causes that I could not re-run the same program (e.g., by repeatedly clicking on the hollow tree) if the hero did not move at least one pixel. svn-id: r45747
This commit is contained in:
parent
5c8aa6ee91
commit
a4393d46b2
@ -443,7 +443,7 @@ void Game::advanceAnimationsAndTestLoopExit() {
|
||||
// proper timing.
|
||||
bool walkingFinished = false;
|
||||
if (_walkingState.isActive()) {
|
||||
walkingFinished = !_walkingState.continueWalking();
|
||||
walkingFinished = !_walkingState.continueWalkingOrClearPath();
|
||||
}
|
||||
|
||||
// Advance animations (this may also call setExitLoop(true) in the
|
||||
|
@ -493,6 +493,14 @@ void WalkingState::callback() {
|
||||
_vm->_mouse->cursorOn();
|
||||
}
|
||||
|
||||
bool WalkingState::continueWalkingOrClearPath() {
|
||||
const bool stillWalking = continueWalking();
|
||||
if (!stillWalking) {
|
||||
_path.clear();
|
||||
}
|
||||
return stillWalking;
|
||||
}
|
||||
|
||||
bool WalkingState::continueWalking() {
|
||||
const GameObject *dragon = _vm->_game->getObject(kDragonObject);
|
||||
const Movement movement = static_cast<Movement> (_vm->_game->playingObjectAnimation(dragon));
|
||||
@ -513,7 +521,6 @@ bool WalkingState::continueWalking() {
|
||||
// has just 1 vertex and startWalking() leaves the path open.
|
||||
// Finishing and nontrivial path will get caught earlier.
|
||||
if (_segment >= _path.size()) {
|
||||
_path.clear();
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -650,7 +657,6 @@ bool WalkingState::walkOnNextEdge() {
|
||||
} else {
|
||||
// Otherwise we are done. continueWalking() will return false next time.
|
||||
debugC(2, kDraciWalkingDebugLevel, "We have walked the whole path");
|
||||
_path.clear();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -120,9 +120,11 @@ public:
|
||||
|
||||
// Advances the hero along the path and changes animation accordingly.
|
||||
// Walking MUST be active when calling this method. When the hero has
|
||||
// arrived to the target, clears the path and returns false, but leaves
|
||||
// the callback untouched (the caller must call it).
|
||||
// arrived to the target, returns false, but leaves the callback
|
||||
// untouched (the caller must call it).
|
||||
// The second variant also clears the path when returning false.
|
||||
bool continueWalking();
|
||||
bool continueWalkingOrClearPath();
|
||||
|
||||
// Called when the hero's turning animation has finished.
|
||||
void heroAnimationFinished();
|
||||
|
Loading…
Reference in New Issue
Block a user