From b72b3dca39631a995b422e0b3495e8d3618e91d8 Mon Sep 17 00:00:00 2001 From: DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> Date: Wed, 1 Jun 2022 18:40:47 +0200 Subject: temp --- .../oneconfig/gui/animations/Animation.java | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/main/java/cc/polyfrost/oneconfig/gui/animations/Animation.java (limited to 'src/main/java/cc/polyfrost/oneconfig/gui/animations/Animation.java') diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/animations/Animation.java b/src/main/java/cc/polyfrost/oneconfig/gui/animations/Animation.java new file mode 100644 index 0000000..894be2a --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/gui/animations/Animation.java @@ -0,0 +1,49 @@ +package cc.polyfrost.oneconfig.gui.animations; + +import cc.polyfrost.oneconfig.gui.OneConfigGui; + +public abstract class Animation { + private final int duration; + private final float start; + private final float change; + private long timePassed = 0; + + /** + * @param duration The duration of the animation + * @param start The start of the animation + * @param end The end of the animation + * @param reverse Reverse the animation + */ + public Animation(int duration, float start, float end, boolean reverse) { + this.duration = duration; + this.start = start; + if (!reverse) this.change = end - start; + else this.change = start - end; + } + + /** + * @param deltaTime The time since the last frame + * @return The new value + */ + public float get(long deltaTime) { + timePassed += deltaTime; + if (timePassed >= duration) return start + change; + return animate(timePassed, duration, start, change); + } + + /** + * @return The new value + */ + public float get() { + return get(OneConfigGui.getDeltaTimeNullSafe()); + } + + /** + * @return If the animation is finished or not + */ + public boolean isFinished() { + return timePassed >= duration; + } + + protected abstract float animate(long timePassed, int duration, float start, float change); +} -- cgit