From b7cb9e2a7dd9ea67201b25788a0cd67a63cebb45 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sun, 15 Nov 2020 18:50:59 +0800 Subject: Fix #440 and brings better animations to the config menu. Signed-off-by: shedaniel --- .../me/shedaniel/rei/impl/ConfigManagerImpl.java | 31 +++++++++++++++++----- 1 file changed, 25 insertions(+), 6 deletions(-) (limited to 'RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java') diff --git a/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java b/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java index a38da1d4a..27e9d44c7 100644 --- a/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java +++ b/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java @@ -221,7 +221,16 @@ public class ConfigManagerImpl implements ConfigManager { screen.setParent(parent); return screen; } - ConfigScreenProvider provider = (ConfigScreenProvider) AutoConfig.getConfigScreen(ConfigObjectImpl.class, parent); + TransformingScreen parentTranslated; + { + MutableLong current = new MutableLong(0); + parentTranslated = new TransformingScreen(true, null, + null, + () -> current.setValue(current.getValue() == 0 ? Util.getMillis() + (getConfig().isReducedMotion() ? -3000 : 0) : current.getValue()), + () -> 0, () -> (EasingMethod.EasingMethodImpl.EXPO.apply(Mth.clamp((Util.getMillis() - current.getValue()) / 750.0, 0, 1))) + * Minecraft.getInstance().getWindow().getGuiScaledHeight(), () -> Util.getMillis() - current.getValue() > 800); + } + ConfigScreenProvider provider = (ConfigScreenProvider) AutoConfig.getConfigScreen(ConfigObjectImpl.class, parentTranslated); provider.setI13nFunction(manager -> "config.roughlyenoughitems"); provider.setOptionFunction((baseI13n, field) -> field.isAnnotationPresent(ConfigObjectImpl.DontApplyFieldName.class) ? baseI13n : String.format("%s.%s", baseI13n, field.getName())); provider.setCategoryFunction((baseI13n, categoryName) -> String.format("%s.%s", baseI13n, categoryName)); @@ -233,7 +242,15 @@ public class ConfigManagerImpl implements ConfigManager { } return builder.setAfterInitConsumer(screen -> { ((ScreenHooks) screen).cloth$addButtonWidget(new Button(screen.width - 104, 4, 100, 20, new TranslatableComponent("text.rei.credits"), button -> { - Minecraft.getInstance().setScreen(new CreditsScreen(screen)); + MutableLong current = new MutableLong(0); + CreditsScreen creditsScreen = new CreditsScreen(screen); + Minecraft.getInstance().setScreen(new TransformingScreen(false, creditsScreen, + screen, + () -> current.setValue(current.getValue() == 0 ? Util.getMillis() + (getConfig().isReducedMotion() ? -3000 : 0) : current.getValue()), + () -> (1 - EasingMethod.EasingMethodImpl.EXPO.apply(Mth.clamp((Util.getMillis() - current.getValue()) / 750.0, 0, 1))) + * Minecraft.getInstance().getWindow().getGuiScaledWidth() * 1.3, + () -> 0, + () -> Util.getMillis() - current.getValue() > 800)); })); }).setSavingRunnable(() -> { saveConfig(); @@ -242,12 +259,14 @@ public class ConfigManagerImpl implements ConfigManager { ContainerScreenOverlay.getEntryListWidget().updateSearch(ScreenHelper.getSearchField().getText(), true); }).build(); }); - MutableLong current = new MutableLong(); - return new TransformingScreen(provider.get(), + Screen configScreen = provider.get(); + parentTranslated.setLastScreen(configScreen); + MutableLong current = new MutableLong(0); + return new TransformingScreen(false, configScreen, parent, - () -> current.setValue(Util.getMillis() + (getConfig().isReducedMotion() ? -3000 : 0)), + () -> current.setValue(current.getValue() == 0 ? Util.getMillis() + (getConfig().isReducedMotion() ? -3000 : 0) : current.getValue()), () -> 0, () -> (1 - EasingMethod.EasingMethodImpl.EXPO.apply(Mth.clamp((Util.getMillis() - current.getValue()) / 750.0, 0, 1))) - * Minecraft.getInstance().getWindow().getGuiScaledHeight() * 1.3); + * Minecraft.getInstance().getWindow().getGuiScaledHeight() * 1.3, () -> Util.getMillis() - current.getValue() > 800); } catch (Exception e) { e.printStackTrace(); } -- cgit