diff options
author | DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> | 2022-06-01 18:40:47 +0200 |
---|---|---|
committer | DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> | 2022-06-01 18:40:47 +0200 |
commit | b72b3dca39631a995b422e0b3495e8d3618e91d8 (patch) | |
tree | da3f0655c57c66b94922e10f59792ea6ebfb4648 /src/main/java/cc/polyfrost/oneconfig/gui/animations/Animation.java | |
parent | d109fac644fb9be7424f35fa24eb0ad32331e799 (diff) | |
download | OneConfig-b72b3dca39631a995b422e0b3495e8d3618e91d8.tar.gz OneConfig-b72b3dca39631a995b422e0b3495e8d3618e91d8.tar.bz2 OneConfig-b72b3dca39631a995b422e0b3495e8d3618e91d8.zip |
temp
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/gui/animations/Animation.java')
-rw-r--r-- | src/main/java/cc/polyfrost/oneconfig/gui/animations/Animation.java | 49 |
1 files changed, 49 insertions, 0 deletions
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); +} |