diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java index 3f6342080..94e02d81a 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java @@ -145,6 +145,9 @@ public final class Config implements Cloneable, Observable { @SerializedName("_version") private IntegerProperty configVersion = new SimpleIntegerProperty(0); + @SerializedName("uiVersion") + private IntegerProperty uiVersion = new SimpleIntegerProperty(0); + private transient ObservableHelper helper = new ObservableHelper(this); public Config() { @@ -440,4 +443,27 @@ public final class Config implements Cloneable, Observable { this.updateChannel.set(updateChannel); } + public int getConfigVersion() { + return configVersion.get(); + } + + public IntegerProperty configVersionProperty() { + return configVersion; + } + + public void setConfigVersion(int configVersion) { + this.configVersion.set(configVersion); + } + + public int getUiVersion() { + return uiVersion.get(); + } + + public IntegerProperty uiVersionProperty() { + return uiVersion; + } + + public void setUiVersion(int uiVersion) { + this.uiVersion.set(uiVersion); + } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigUpgrader.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigUpgrader.java index c220e73dc..d1d987cb7 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigUpgrader.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigUpgrader.java @@ -29,6 +29,8 @@ import java.util.Map; import static org.jackhuang.hmcl.util.Lang.tryCast; final class ConfigUpgrader { + private static final int VERSION = 0; + private ConfigUpgrader() { } @@ -37,10 +39,22 @@ final class ConfigUpgrader { * * @param deserialized deserialized config settings * @param rawJson raw json structure of the config settings without modification + * @return true if config version is upgraded */ - static void upgradeConfig(Config deserialized, Map rawJson) { + static boolean upgradeConfig(Config deserialized, Map rawJson) { + boolean upgraded; + if (deserialized.getConfigVersion() < VERSION) { + deserialized.setConfigVersion(VERSION); + // TODO: Add upgrade code here. + upgraded = true; + } else { + upgraded = false; + } + upgradeV2(deserialized, rawJson); upgradeV3(deserialized, rawJson); + + return upgraded; } /** diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java index f1341c17e..c31db30ca 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java @@ -59,6 +59,7 @@ import static org.jackhuang.hmcl.setting.ConfigHolder.config; import static org.jackhuang.hmcl.util.i18n.I18n.i18n; public final class Controllers { + public static final int UI_VERSION = 1; private static Scene scene; private static Stage stage; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorController.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorController.java index 5e4eb1404..ce032de89 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorController.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorController.java @@ -106,8 +106,11 @@ public class DecoratorController { ); nowAnimation.play(); }); - if (ConfigHolder.isNewlyCreated() && config().getLocalization().getLocale() == Locale.CHINA) + + if (ConfigHolder.config().getUiVersion() < Controllers.UI_VERSION && config().getLocalization().getLocale() == Locale.CHINA) { + ConfigHolder.config().setUiVersion(Controllers.UI_VERSION); decorator.getContainer().setAll(welcomeView); + } setupBackground(); diff --git a/HMCL/src/main/resources/assets/img/welcome.png b/HMCL/src/main/resources/assets/img/welcome.png index 9587274b7..545a3da64 100644 Binary files a/HMCL/src/main/resources/assets/img/welcome.png and b/HMCL/src/main/resources/assets/img/welcome.png differ diff --git a/HMCL/welcome_page.png b/HMCL/welcome_page.png index 885278fa9..69ccf18b4 100644 Binary files a/HMCL/welcome_page.png and b/HMCL/welcome_page.png differ