diff options
author | DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> | 2022-08-24 22:51:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-24 22:51:58 +0200 |
commit | daed9569a0f1d2231c4f824f6cffd72d5f8ae8bd (patch) | |
tree | 6efee702c616d96e40a3e69ce89425f0936a7598 /src/main/java/cc/polyfrost/oneconfig/gui | |
parent | a76b49be6dbeb0be3f88870e33d3e10e0e7f8e1c (diff) | |
download | OneConfig-daed9569a0f1d2231c4f824f6cffd72d5f8ae8bd.tar.gz OneConfig-daed9569a0f1d2231c4f824f6cffd72d5f8ae8bd.tar.bz2 OneConfig-daed9569a0f1d2231c4f824f6cffd72d5f8ae8bd.zip |
Notifs (#111)
* Start on notifications
* Finish notifications (pog)
* oop
* internalizing
* misc: set default duration to 4000ms
* Scaling notifs stuff
Co-authored-by: Wyvest <45589059+Wyvest@users.noreply.github.com>
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/gui')
4 files changed, 121 insertions, 14 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/OneConfigGui.java b/src/main/java/cc/polyfrost/oneconfig/gui/OneConfigGui.java index 9017230..db2ea8b 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/OneConfigGui.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/OneConfigGui.java @@ -66,7 +66,6 @@ public class OneConfigGui extends OneUIScreen { public boolean allowClose = true; protected Page currentPage; protected Page prevPage; - private float scale = 1f; private Animation animation; public OneConfigGui() { @@ -93,10 +92,7 @@ public class OneConfigGui extends OneUIScreen { NanoVG.nvgTranslate(vg, UResolution.getWindowWidth(), UResolution.getWindowHeight()); NanoVG.nvgRotate(vg, (float) Math.toRadians(180)); } - scale = Preferences.enableCustomScale ? Preferences.customScale : Math.min(UResolution.getWindowWidth() / 1920f, UResolution.getWindowHeight() / 1080f); - if (scale < 1 && !Preferences.enableCustomScale) - scale = Math.min(Math.min(1f, UResolution.getWindowWidth() / 1280f), Math.min(1f, UResolution.getWindowHeight() / 800f)); - scale = (float) (Math.floor(scale / 0.05f) * 0.05f); + float scale = getScaleFactor(); int x = (int) ((UResolution.getWindowWidth() - 1280 * scale) / 2f / scale); int y = (int) ((UResolution.getWindowHeight() - 800 * scale) / 2f / scale); RenderManager.scale(vg, scale, scale); @@ -198,6 +194,7 @@ public class OneConfigGui extends OneUIScreen { if (currentColorSelector != null) { currentColorSelector.draw(vg); } + RenderManager.resetTransform(vg); } @Override @@ -280,8 +277,11 @@ public class OneConfigGui extends OneUIScreen { return currentColorSelector.getColor(); } - public float getScaleFactor() { - return scale; + public static float getScaleFactor() { + float scale = Preferences.enableCustomScale ? Preferences.customScale : Math.min(UResolution.getWindowWidth() / 1920f, UResolution.getWindowHeight() / 1080f); + if (scale < 1 && !Preferences.enableCustomScale) + scale = Math.min(Math.min(1f, UResolution.getWindowWidth() / 1280f), Math.min(1f, UResolution.getWindowHeight() / 800f)); + return (float) (Math.floor(scale / 0.05f) * 0.05f); } public String getSearchValue() { @@ -303,4 +303,8 @@ public class OneConfigGui extends OneUIScreen { public boolean hasBackgroundBlur() { return Preferences.enableBlur; } + + public static boolean isOpen() { + return Platform.getGuiPlatform().getCurrentScreen() instanceof OneConfigGui; + } } diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/animations/Animation.java b/src/main/java/cc/polyfrost/oneconfig/gui/animations/Animation.java index 4040164..f85132b 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/animations/Animation.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/animations/Animation.java @@ -29,11 +29,11 @@ package cc.polyfrost.oneconfig.gui.animations; import cc.polyfrost.oneconfig.utils.gui.GuiUtils; public abstract class Animation { - private final boolean reverse; - private final float duration; - private final float start; - private final float change; - private float timePassed = 0; + protected final boolean reverse; + protected final float duration; + protected final float start; + protected final float change; + protected float timePassed = 0; /** * @param duration The duration of the animation @@ -84,5 +84,19 @@ public abstract class Animation { return reverse; } + /** + * @return The start position of the animation + */ + public float getStart() { + return start; + } + + /** + * @return The end position of the animation + */ + public float getEnd() { + return start + change; + } + protected abstract float animate(float x); } diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/animations/ChainedAnimation.java b/src/main/java/cc/polyfrost/oneconfig/gui/animations/ChainedAnimation.java new file mode 100644 index 0000000..63be4a0 --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/gui/animations/ChainedAnimation.java @@ -0,0 +1,56 @@ +/* + * This file is part of OneConfig. + * OneConfig - Next Generation Config Library for Minecraft: Java Edition + * Copyright (C) 2021, 2022 Polyfrost. + * <https://polyfrost.cc> <https://github.com/Polyfrost/> + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * OneConfig is licensed under the terms of version 3 of the GNU Lesser + * General Public License as published by the Free Software Foundation, AND + * under the Additional Terms Applicable to OneConfig, as published by Polyfrost, + * either version 1.0 of the Additional Terms, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License. If not, see <https://www.gnu.org/licenses/>. You should + * have also received a copy of the Additional Terms Applicable + * to OneConfig, as published by Polyfrost. If not, see + * <https://polyfrost.cc/legal/oneconfig/additional-terms> + */ + +package cc.polyfrost.oneconfig.gui.animations; + +public class ChainedAnimation extends Animation { + private final Animation[] animations; + private int currentAnimation = 0; + private float value; + + public ChainedAnimation(Animation... animations) { + super(1, 0, 0, false); + this.animations = animations; + } + + @Override + public float get(float deltaTime) { + if (currentAnimation >= animations.length) return value; + value = animations[currentAnimation].get(deltaTime); + if (animations[currentAnimation].isFinished()) currentAnimation++; + return value; + } + + @Override + public boolean isFinished() { + return currentAnimation >= animations.length; + } + + @Override + protected float animate(float x) { + return 0; + } +} diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/animations/DummyAnimation.java b/src/main/java/cc/polyfrost/oneconfig/gui/animations/DummyAnimation.java index ca9bc17..62cbed7 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/animations/DummyAnimation.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/animations/DummyAnimation.java @@ -26,23 +26,56 @@ package cc.polyfrost.oneconfig.gui.animations; +import java.util.concurrent.Callable; + public class DummyAnimation extends Animation { protected final float value; + protected Callable<Boolean> done = null; /** * @param value The value that is returned + * @param done A callable that returns if the animation is finished */ - public DummyAnimation(float value) { - super(value, value, value, false); + public DummyAnimation(float value, Callable<Boolean> done) { + super(0, value, value, false); + this.value = value; + this.done = done; + } + + /** + * @param value The value that is returned + * @param duration The duration of the animation + */ + public DummyAnimation(float value, float duration) { + super(duration, value, value, false); this.value = value; } + /** + * @param value The value that is returned + */ + public DummyAnimation(float value) { + this(value, 0); + } + @Override public float get(float deltaTime) { + timePassed += deltaTime; return value; } @Override + public boolean isFinished() { + if (done != null) { + try { + return done.call(); + } catch (Exception ignored) { + } + } + return super.isFinished(); + } + + @Override protected float animate(float x) { return x; } |