From 5ac7370d7a6a9832532a1b1042d6b9e532d9b154 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Sun, 21 Mar 2021 11:14:49 +0100 Subject: [PATCH] Fix SimpleAnimationRunner and RandomAnimationsRunner --- .../animation/RandomAnimationsRunner.java | 18 ++++++------ .../game/animation/SimpleAnimationRunner.java | 28 +++++++++++++++++-- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/RandomAnimationsRunner.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/RandomAnimationsRunner.java index c3234502..e5844587 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/RandomAnimationsRunner.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/RandomAnimationsRunner.java @@ -28,8 +28,8 @@ public class RandomAnimationsRunner implements AnimationRunner { private float delay = 0f; private RealDistribution delayDistribution; - private float speed = 0.05f; - private RealDistribution speedDistribution; + private float animationSpeed = 0.05f; + private RealDistribution animationSpeedDistribution; private float rotation = 0f; private RealDistribution rotationDistribution; @@ -74,18 +74,18 @@ public class RandomAnimationsRunner implements AnimationRunner { return this; } - public RandomAnimationsRunner speed(float speed) { - this.speed = speed; + public RandomAnimationsRunner animationSpeed(float speed) { + this.animationSpeed = speed; return this; } - public RandomAnimationsRunner uSpeed(float min, float max) { - this.speedDistribution = new UniformRealDistribution(min, max); + public RandomAnimationsRunner uAnimationSpeed(float min, float max) { + this.animationSpeedDistribution = new UniformRealDistribution(min, max); return this; } - public RandomAnimationsRunner nSpeed(float mean, float sd) { - this.speedDistribution = new NormalDistribution(mean, sd); + public RandomAnimationsRunner nAnimationSpeed(float mean, float sd) { + this.animationSpeedDistribution = new NormalDistribution(mean, sd); return this; } @@ -131,7 +131,7 @@ public class RandomAnimationsRunner implements AnimationRunner { } animation.setScale(scaleDistribution != null ? (float) scaleDistribution.sample() : scale); - animation.setAnimationSpeed(speedDistribution != null ? (float) speedDistribution.sample() : speed); + animation.setAnimationSpeed(animationSpeedDistribution != null ? (float) animationSpeedDistribution.sample() : animationSpeed); animation.setRotation(rotationDistribution != null ? (float) rotationDistribution.sample() : rotation); layer.pushAnimation(new DelayedAnimation(animation, (int) (delayDistribution != null ? delayDistribution.sample() : delay))); diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/SimpleAnimationRunner.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/SimpleAnimationRunner.java index 625cfcb0..822d1c57 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/SimpleAnimationRunner.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/animation/SimpleAnimationRunner.java @@ -2,6 +2,7 @@ package com.bartlomiejpluta.base.api.game.animation; import com.bartlomiejpluta.base.api.game.context.Context; import com.bartlomiejpluta.base.api.game.map.layer.base.Layer; +import com.bartlomiejpluta.base.api.util.path.Path; import org.joml.Vector2fc; public class SimpleAnimationRunner implements AnimationRunner { @@ -10,8 +11,13 @@ public class SimpleAnimationRunner implements AnimationRunner { private Integer repeat = 1; private float scale = 1.0f; private int delay = 0; + private float animationSpeed = 0.05f; private float speed = 0.05f; private float rotation = 0f; + private Path path; + private Integer pathRepeat; + private boolean finishOnPathEnd; + private boolean finishOnPathFail; public SimpleAnimationRunner(String animationUid) { this.animationUid = animationUid; @@ -37,8 +43,8 @@ public class SimpleAnimationRunner implements AnimationRunner { return this; } - public SimpleAnimationRunner speed(float speed) { - this.speed = speed; + public SimpleAnimationRunner animationSpeed(float speed) { + this.animationSpeed = speed; return this; } @@ -47,10 +53,28 @@ public class SimpleAnimationRunner implements AnimationRunner { return this; } + public SimpleAnimationRunner path(Path path, Integer repeat, boolean finishOnEnd, boolean finishOnFail) { + this.path = path; + this.pathRepeat = repeat; + this.finishOnPathEnd = finishOnEnd; + this.finishOnPathFail = finishOnFail; + return this; + } + @Override public void run(Context context, Layer layer, Vector2fc origin) { var animation = new DelayedAnimation(context.createAnimation(animationUid), delay); animation.setPosition(origin); + animation.setScale(scale); + animation.setAnimationSpeed(animationSpeed); + animation.setSpeed(speed); + animation.setRotation(rotation); + animation.setRepeat(repeat); + + if (path != null) { + animation.followPath(path, pathRepeat, finishOnPathEnd, finishOnPathFail); + } + layer.pushAnimation(animation); } }