diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/Animation.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/Animation.java index dedc9492..024c9de1 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/Animation.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/Animation.java @@ -30,6 +30,8 @@ public interface Animation extends Placeable, Movable, Renderable, Updatable { void onAdd(Layer layer); + void onFinish(Layer layer); + void finish(); boolean finished(); diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/AnimationDelegate.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/AnimationDelegate.java index f2b9cbe8..f4ae7c50 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/AnimationDelegate.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/AnimationDelegate.java @@ -174,6 +174,11 @@ public abstract class AnimationDelegate implements Animation { animation.onAdd(layer); } + @Override + public void onFinish(Layer layer) { + animation.onFinish(layer); + } + @Override public void finish() { animation.finish(); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/animation/model/DefaultAnimation.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/animation/model/DefaultAnimation.java index b8d71e99..1d953092 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/animation/model/DefaultAnimation.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/animation/model/DefaultAnimation.java @@ -99,6 +99,11 @@ public class DefaultAnimation extends MovableSprite implements Animation { this.isObjectLayer = layer instanceof ObjectLayer; } + @Override + public void onFinish(Layer layer) { + // do nothing + } + @Override public void finish() { this.forcedFinish = true; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/base/BaseLayer.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/base/BaseLayer.java index 5ebdc4f3..349e3cd7 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/base/BaseLayer.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/base/BaseLayer.java @@ -48,6 +48,7 @@ public abstract class BaseLayer implements Layer, Updatable { if (animation.finished()) { iterator.remove(); + animation.onFinish(this); } } }