mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-24 11:36:22 +00:00
Bugfix for frequent freezes when doing actions - the main movement state switch statement was actually relying on falling through case statements to work properly
svn-id: r39066
This commit is contained in:
parent
f1044e85b2
commit
2d9705311e
@ -40,7 +40,7 @@ bool isAnimFinished(int overlayIdx, int idx, actorStruct *pStartEntry, int objTy
|
||||
while (pCurrentEntry) {
|
||||
if ((pCurrentEntry->overlayNumber == overlayIdx || overlayIdx == -1) &&
|
||||
(pCurrentEntry->idx == idx || idx == -1) &&
|
||||
(pCurrentEntry->type == objType || objType == ANIM_WAIT)) {
|
||||
(pCurrentEntry->type == objType || objType == -1)) {
|
||||
if (pCurrentEntry->pathId != ANIM_FINISH) {
|
||||
return false;
|
||||
}
|
||||
@ -730,10 +730,11 @@ void processAnimation(void) {
|
||||
while (currentActor) {
|
||||
nextActor = currentActor->next;
|
||||
|
||||
if (!currentActor->freeze && ((currentActor->type == 0) || (currentActor->type == 1))) {
|
||||
if (!currentActor->freeze && ((currentActor->type == ATP_MOUSE) || (currentActor->type == 1))) {
|
||||
getMultipleObjectParam(currentActor->overlayNumber, currentActor->idx, ¶ms);
|
||||
|
||||
if (((animationStart && !currentActor->flag) || (!animationStart && currentActor->x_dest != -1 && currentActor->y_dest != -1)) && (currentActor->type == 0)) {
|
||||
if (((animationStart && !currentActor->flag) || (!animationStart && currentActor->x_dest != -1
|
||||
&& currentActor->y_dest != -1)) && (currentActor->type == ATP_MOUSE)) {
|
||||
// mouse animation
|
||||
if (!animationStart) {
|
||||
aniX = currentActor->x_dest;
|
||||
@ -868,7 +869,6 @@ void processAnimation(void) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// Walk animations
|
||||
@ -907,8 +907,6 @@ void processAnimation(void) {
|
||||
currentActor->x, currentActor->y, newA, currentActor->poly);
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case ANIM_PHASE_END:
|
||||
{
|
||||
|
@ -36,6 +36,11 @@ enum animPhase {
|
||||
ANIM_PHASE_END = 4
|
||||
};
|
||||
|
||||
enum ATP {
|
||||
ATP_MOUSE = 0,
|
||||
ATP_TRACK = 1
|
||||
};
|
||||
|
||||
struct actorStruct {
|
||||
struct actorStruct *next;
|
||||
struct actorStruct *prev;
|
||||
|
Loading…
x
Reference in New Issue
Block a user