aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/cc/polyfrost/oneconfig/gui/animations/Animation.java
diff options
context:
space:
mode:
authorDeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com>2022-06-01 18:40:47 +0200
committerDeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com>2022-06-01 18:40:47 +0200
commitb72b3dca39631a995b422e0b3495e8d3618e91d8 (patch)
treeda3f0655c57c66b94922e10f59792ea6ebfb4648 /src/main/java/cc/polyfrost/oneconfig/gui/animations/Animation.java
parentd109fac644fb9be7424f35fa24eb0ad32331e799 (diff)
downloadOneConfig-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.java49
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);
+}