Procházet zdrojové kódy

apply button

Signed-off-by: shedaniel <daniel@shedaniel.me>
shedaniel před 5 roky
rodič
revize
0bcf3deaa2

+ 1 - 1
gradle.properties

@@ -2,6 +2,6 @@ minecraft_version=20w10a
 yarn_mappings=20w10a+build.2
 loader_version=0.7.8+build.186
 fabric_version=0.4.34+build.303-1.16
-mod_version=3.0.1-unstable
+mod_version=3.0.2-unstable
 modmenu_version=1.10.1+build.30
 nec_version=1.2.3+1.15.1

+ 21 - 6
src/main/java/me/shedaniel/clothconfig2/gui/ClothConfigScreen.java

@@ -56,7 +56,7 @@ public abstract class ClothConfigScreen extends Screen {
     private boolean edited;
     private boolean requiresRestart;
     private final boolean confirmSave;
-    private AbstractButtonWidget buttonQuit, buttonSave, buttonLeftTab, buttonRightTab;
+    private AbstractButtonWidget quitButton, saveButton, applyButton, buttonLeftTab, buttonRightTab;
     private Rectangle tabsBounds, tabsLeftBounds, tabsRightBounds;
     private final String title;
     private double tabsMaximumScrolled = -1d;
@@ -185,8 +185,8 @@ public abstract class ClothConfigScreen extends Screen {
     @Deprecated
     public void setEdited(boolean edited) {
         this.edited = edited;
-        buttonQuit.setMessage(edited ? I18n.translate("text.cloth-config.cancel_discard") : I18n.translate("gui.cancel"));
-        buttonSave.active = edited;
+        quitButton.setMessage(edited ? I18n.translate("text.cloth-config.cancel_discard") : I18n.translate("gui.cancel"));
+        saveButton.active = edited;
     }
     
     public void setEdited(boolean edited, boolean requiresRestart) {
@@ -200,6 +200,8 @@ public abstract class ClothConfigScreen extends Screen {
             for (AbstractConfigEntry entry : entries)
                 entry.save();
         save();
+        setEdited(false);
+        requiresRestart = false;
         if (openOtherScreens) {
             if (requiresRestart)
                 ClothConfigScreen.this.minecraft.openScreen(new ClothRequiresRestartScreen(parent));
@@ -220,13 +222,14 @@ public abstract class ClothConfigScreen extends Screen {
         listWidget.setSmoothScrolling(this.smoothScrollingList);
         if (tabbedEntries.size() > selectedTabIndex)
             Lists.newArrayList(tabbedEntries.values()).get(selectedTabIndex).forEach(entry -> listWidget.children().add(entry));
-        addButton(buttonQuit = new ButtonWidget(width / 2 - 154, height - 26, 150, 20, edited ? I18n.translate("text.cloth-config.cancel_discard") : I18n.translate("gui.cancel"), widget -> {
+        int buttonWidths = (width - 50 - 12) / 3;
+        addButton(quitButton = new ButtonWidget(25, height - 26, buttonWidths, 20, edited ? I18n.translate("text.cloth-config.cancel_discard") : I18n.translate("gui.cancel"), widget -> {
             if (confirmSave && edited)
                 minecraft.openScreen(new ConfirmScreen(new QuitSaveConsumer(), new TranslatableText("text.cloth-config.quit_config"), new TranslatableText("text.cloth-config.quit_config_sure"), I18n.translate("text.cloth-config.quit_discard"), I18n.translate("gui.cancel")));
             else
                 minecraft.openScreen(parent);
         }));
-        addButton(buttonSave = new AbstractPressableButtonWidget(width / 2 + 4, height - 26, 150, 20, "") {
+        addButton(saveButton = new AbstractPressableButtonWidget(25 + 6 + buttonWidths, height - 26, buttonWidths, 20, "") {
             @Override
             public void onPress() {
                 saveAll(true);
@@ -250,7 +253,19 @@ public abstract class ClothConfigScreen extends Screen {
                 super.render(int_1, int_2, float_1);
             }
         });
-        buttonSave.active = edited;
+        addButton(applyButton = new AbstractPressableButtonWidget(25 + (6 + buttonWidths) * 2, height - 26, buttonWidths, 20, I18n.translate("text.cloth-config.apply")) {
+            @Override
+            public void onPress() {
+                saveAll(false);
+            }
+            
+            @Override
+            public void render(int int_1, int int_2, float float_1) {
+                active = saveButton.active;
+                super.render(int_1, int_2, float_1);
+            }
+        });
+        saveButton.active = edited;
         if (isShowingTabs()) {
             tabsBounds = new Rectangle(0, 41, width, 24);
             tabsLeftBounds = new Rectangle(0, 41, 18, 24);

+ 3 - 2
src/main/resources/assets/cloth-config2/lang/en_us.json

@@ -1,8 +1,9 @@
 {
-  "text.cloth-config.save_and_done": "Save Changes",
+  "text.cloth-config.save_and_done": "Save & Quit",
+  "text.cloth-config.apply": "Apply Changes",
   "text.cloth-config.quit_config": "Changes Not Saved",
   "text.cloth-config.quit_config_sure": "Are you sure you want to quit editing the config? Changes will not be saved!",
-  "text.cloth-config.cancel_discard": "Cancel & Discard Changes",
+  "text.cloth-config.cancel_discard": "Discard Changes",
   "text.cloth-config.quit_discard": "Quit & Discard Changes",
   "text.cloth-config.config": "Config",
   "text.cloth-config.multi_error": "Multiple Issues!",