Fixed issue with animation tracking.

This issue prevented the smooth movement rendering from being properly
done when the map is not scrolling and the previous map was left during
a monster's movement animation.
This commit is contained in:
Zukero
2019-01-05 23:00:14 +01:00
parent 53c9a6f9ed
commit 2786421ce1
4 changed files with 9 additions and 5 deletions

View File

@@ -174,7 +174,7 @@ public final class MonsterMovementController implements EvaluateWalkable {
final CoordRect previousPosition = new CoordRect(new Coord(m.position), m.rectPosition.size);
m.lastPosition.set(previousPosition.topLeft);
m.position.set(m.nextPosition.topLeft);
controllers.effectController.startActorMoveEffect(m, previousPosition.topLeft, m.position, duration, new VisualEffectController.VisualEffectCompletedCallback() {
controllers.effectController.startActorMoveEffect(m, map, previousPosition.topLeft, m.position, duration, new VisualEffectController.VisualEffectCompletedCallback() {
@Override
public void onVisualEffectCompleted(int callbackValue) {

View File

@@ -241,7 +241,7 @@ public final class MovementController implements TimedMessageTask.Callback {
player.position.set(newPosition);
controllers.combatController.setCombatSelection(null, null);
controllers.effectController.startActorMoveEffect(player, player.lastPosition, newPosition, (int) (Constants.MINIMUM_INPUT_INTERVAL / 2), new VisualEffectController.VisualEffectCompletedCallback() {
controllers.effectController.startActorMoveEffect(player, currentMap, player.lastPosition, newPosition, (int) (Constants.MINIMUM_INPUT_INTERVAL / 2), new VisualEffectController.VisualEffectCompletedCallback() {
@Override
public void onVisualEffectCompleted(int callbackValue) {

View File

@@ -59,9 +59,9 @@ public final class VisualEffectController {
enqueuedEffectValue = 0;
}
public void startActorMoveEffect(Actor actor, Coord origin, Coord destination, int duration, VisualEffectCompletedCallback callback, int callbackValue) {
public void startActorMoveEffect(Actor actor, PredefinedMap map, Coord origin, Coord destination, int duration, VisualEffectCompletedCallback callback, int callbackValue) {
++effectCount;
(new SpriteMoveAnimation(origin, destination, duration, actor, callback, callbackValue))
(new SpriteMoveAnimation(origin, destination, duration, actor, map, callback, callbackValue))
.start();
}
@@ -74,6 +74,7 @@ public final class VisualEffectController {
public final int duration;
public final Actor actor;
public final PredefinedMap map;
public final Coord origin;
public final Coord destination;
@@ -88,11 +89,12 @@ public final class VisualEffectController {
// }
}
public SpriteMoveAnimation(Coord origin, Coord destination, int duration, Actor actor, VisualEffectCompletedCallback callback, int callbackValue) {
public SpriteMoveAnimation(Coord origin, Coord destination, int duration, Actor actor, PredefinedMap map, VisualEffectCompletedCallback callback, int callbackValue) {
this.callback = callback;
this.callbackValue = callbackValue;
this.duration = duration;
this.actor = actor;
this.map = map;
this.origin = origin;
this.destination = destination;

View File

@@ -787,6 +787,7 @@ public final class MainView extends SurfaceView
@Override
public void onSpriteMoveStarted(SpriteMoveAnimation animation) {
if (animation.map != currentMap) return;
synchronized (movingSpritesRedrawTick) {
movingSprites++;
movingSpritesRedrawTick.start();
@@ -800,6 +801,7 @@ public final class MainView extends SurfaceView
@Override
public void onSpriteMoveCompleted(SpriteMoveAnimation animation) {
if (animation.map != currentMap) return;
movingSprites--;
redrawArea(CoordRect.getBoundingRect(animation.origin, animation.destination, animation.actor.tileSize), RedrawAreaDebugReason.EffectCompleted);
}