diff options
| author | shedaniel <daniel@shedaniel.me> | 2020-11-15 18:50:59 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2020-11-15 18:50:59 +0800 |
| commit | b7cb9e2a7dd9ea67201b25788a0cd67a63cebb45 (patch) | |
| tree | e92bc6ec9951109589347ac52ae97362fc9ac914 /RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java | |
| parent | 0bbf75bd1f6efa793a0afa569fb258677d14596e (diff) | |
| download | RoughlyEnoughItems-b7cb9e2a7dd9ea67201b25788a0cd67a63cebb45.tar.gz RoughlyEnoughItems-b7cb9e2a7dd9ea67201b25788a0cd67a63cebb45.tar.bz2 RoughlyEnoughItems-b7cb9e2a7dd9ea67201b25788a0cd67a63cebb45.zip | |
Fix #440 and brings better animations to the config menu.
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java')
| -rw-r--r-- | RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java | 31 |
1 files changed, 25 insertions, 6 deletions
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<ConfigObjectImpl> provider = (ConfigScreenProvider<ConfigObjectImpl>) 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<ConfigObjectImpl> provider = (ConfigScreenProvider<ConfigObjectImpl>) 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(); } |
