diff options
author | DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> | 2022-06-02 19:14:51 +0200 |
---|---|---|
committer | DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> | 2022-06-02 19:14:51 +0200 |
commit | 0ad0457dc608ade2cd8ff7e325c009c2847fb711 (patch) | |
tree | a8761d2aef3684de9c10c5345f7e11a3cde245da /src/main/java/cc/polyfrost/oneconfig/gui/pages | |
parent | 4945b1bf585a0a53917917b29f3450002d4e3553 (diff) | |
download | OneConfig-0ad0457dc608ade2cd8ff7e325c009c2847fb711.tar.gz OneConfig-0ad0457dc608ade2cd8ff7e325c009c2847fb711.tar.bz2 OneConfig-0ad0457dc608ade2cd8ff7e325c009c2847fb711.zip |
animations
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/gui/pages')
-rw-r--r-- | src/main/java/cc/polyfrost/oneconfig/gui/pages/Page.java | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/pages/Page.java b/src/main/java/cc/polyfrost/oneconfig/gui/pages/Page.java index fdb5292..4a3cfa6 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/pages/Page.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/pages/Page.java @@ -1,5 +1,8 @@ package cc.polyfrost.oneconfig.gui.pages; +import cc.polyfrost.oneconfig.gui.animations.Animation; +import cc.polyfrost.oneconfig.gui.animations.EaseInOutQuad; +import cc.polyfrost.oneconfig.gui.animations.EaseOutQuad; import cc.polyfrost.oneconfig.lwjgl.scissor.Scissor; import cc.polyfrost.oneconfig.lwjgl.scissor.ScissorManager; import cc.polyfrost.oneconfig.utils.MathUtils; @@ -9,7 +12,7 @@ import org.lwjgl.input.Mouse; * A page is a 1056x728 rectangle of the GUI. It is the main content of the gui, and can be switched back and forwards easily. All the content of OneConfig is in a page. */ public abstract class Page { - private float currentScroll = 0f; + private Animation scrollAnimation; private float scrollTarget; protected final String title; @@ -35,20 +38,24 @@ public abstract class Page { public void scrollWithDraw(long vg, int x, int y) { // TODO scroll bar int maxScroll = getMaxScrollHeight(); int scissorOffset = drawStatic(vg, x, y); + float scroll = scrollAnimation == null ? scrollTarget : scrollAnimation.get(); Scissor scissor = ScissorManager.scissor(vg, x, y + scissorOffset, x + 1056, y + 728 - scissorOffset); + int dWheel = Mouse.getDWheel(); + if (dWheel != 0) { + scrollTarget += dWheel; + + if (scrollTarget > 0f) scrollTarget = 0f; + else if (scrollTarget < -maxScroll + 728) scrollTarget = -maxScroll + 728; + + scrollAnimation = new EaseOutQuad(150, scroll, scrollTarget, false); + } else if (scrollAnimation != null && scrollAnimation.isFinished()) scrollAnimation = null; if (maxScroll <= 728) { draw(vg, x, y); ScissorManager.resetScissor(vg, scissor); return; } - draw(vg, x, (int) (y + currentScroll)); - int dWheel = Mouse.getDWheel(); - scrollTarget += dWheel; - - if (scrollTarget > 0f) scrollTarget = 0f; - else if (scrollTarget < -maxScroll + 728) scrollTarget = -maxScroll + 728; + draw(vg, x, (int) (y + scroll)); - currentScroll = MathUtils.easeOut(currentScroll, scrollTarget, 50f); ScissorManager.resetScissor(vg, scissor); } |