mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-01-21 19:08:30 +01:00
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:
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user