aboutsummaryrefslogtreecommitdiff
path: root/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2020-11-15 18:50:59 +0800
committershedaniel <daniel@shedaniel.me>2020-11-15 18:50:59 +0800
commitb7cb9e2a7dd9ea67201b25788a0cd67a63cebb45 (patch)
treee92bc6ec9951109589347ac52ae97362fc9ac914 /RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java
parent0bbf75bd1f6efa793a0afa569fb258677d14596e (diff)
downloadRoughlyEnoughItems-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.java31
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();
}