From 63e6a063589d9bb0abbd16187161dc0afd8ae6ac Mon Sep 17 00:00:00 2001 From: 0xSeb Date: Sun, 8 Nov 2015 22:02:39 +0100 Subject: [PATCH] Added loading, changing and saving keys. Only some TODOs left! --- .../skate702/craftingkeys/CraftingKeys.java | 5 +- .../craftingkeys/config/GuiConfig.java | 79 +++++++++++++++---- 2 files changed, 65 insertions(+), 19 deletions(-) diff --git a/src/main/java/de/skate702/craftingkeys/CraftingKeys.java b/src/main/java/de/skate702/craftingkeys/CraftingKeys.java index 448a10f..1f4c465 100644 --- a/src/main/java/de/skate702/craftingkeys/CraftingKeys.java +++ b/src/main/java/de/skate702/craftingkeys/CraftingKeys.java @@ -13,7 +13,6 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.network.NetworkRegistry; import de.skate702.craftingkeys.config.Config; -import de.skate702.craftingkeys.config.GuiConfig; import de.skate702.craftingkeys.config.GuiConfigHandler; import de.skate702.craftingkeys.manager.*; import de.skate702.craftingkeys.proxies.CraftingKeysProxy; @@ -109,7 +108,7 @@ public class CraftingKeys { @SubscribeEvent public void onGuiOpened(GuiOpenEvent event) { if (event.gui instanceof GuiMainMenu) { - event.gui = new GuiConfig(); // Delete this! + //event.gui = new GuiConfig(); // Delete this! } } @@ -122,7 +121,7 @@ public class CraftingKeys { public void onTick(TickEvent.ClientTickEvent tick) { if (Util.client.currentScreen == null) { - // Util.client.thePlayer.openGui(instance, 702, Util.client.theWorld, 0, 0, 0); + Util.client.thePlayer.openGui(instance, 702, Util.client.theWorld, 0, 0, 0); } // Get current Screen, then test diff --git a/src/main/java/de/skate702/craftingkeys/config/GuiConfig.java b/src/main/java/de/skate702/craftingkeys/config/GuiConfig.java index 1de4c2b..4e90b05 100644 --- a/src/main/java/de/skate702/craftingkeys/config/GuiConfig.java +++ b/src/main/java/de/skate702/craftingkeys/config/GuiConfig.java @@ -2,10 +2,12 @@ package de.skate702.craftingkeys.config; import de.skate702.craftingkeys.util.LanguageLocalizer; import de.skate702.craftingkeys.util.Logger; +import de.skate702.craftingkeys.util.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.util.ResourceLocation; +import org.apache.commons.lang3.ArrayUtils; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; @@ -19,7 +21,7 @@ public class GuiConfig extends GuiScreen { private static final Color pureWhite = new Color(255, 255, 255, 255); private static final Color lightGray = new Color(128, 128, 128, 255); private static final Color highlight = new Color(86, 144, 72, 255); - int[] keyValues; + private int[] keyValues = new int[]{}; private int guiBasePosition; private int guiShowBasePosition; private int guiShowBaseHeight; @@ -30,6 +32,7 @@ public class GuiConfig extends GuiScreen { private int buttonSaveID = 901; private int buttonAbortID = 902; private ArrayList configButtons; + private int selectedButtonID = -1; @Override public void initGui() { @@ -127,17 +130,59 @@ public class GuiConfig extends GuiScreen { @Override public void actionPerformed(GuiButton button) { if (button.id == buttonAbortID) { - Logger.warn("actionPerformed(b)", "Not implemented yet"); + Logger.info("actionPerformed(b)", "Closing Crafting Keys GUI now!"); + Util.client.thePlayer.closeScreen(); + mc.thePlayer.closeScreen(); + Util.client.displayGuiScreen(null); } else if (button.id == buttonSaveID) { - Logger.warn("actionPerformed(b)", "Not implemented yet"); + save(); + Logger.info("actionPerformed(b)", "Saving & closing Crafting Keys GUI now!"); + Util.client.thePlayer.closeScreen(); + } else if (button.id >= 0 && button.id <= 11) { + if (selectedButtonID == -1) { + selectedButtonID = button.id; + configButtons.get(selectedButtonID).displayString = "..."; + } } } + private void save() { + Config.keyTopLeft.set(keyValues[0]); + Config.keyTopCenter.set(keyValues[1]); + Config.keyTopRight.set(keyValues[2]); + Config.keyCenterLeft.set(keyValues[3]); + Config.keyCenterCenter.set(keyValues[4]); + Config.keyCenterRight.set(keyValues[5]); + Config.keyLowerLeft.set(keyValues[6]); + Config.keyLowerCenter.set(keyValues[7]); + Config.keyLowerRight.set(keyValues[8]); + Config.keyInteract.set(keyValues[9]); + Config.keyStack.set(keyValues[10]); + Config.keyDrop.set(keyValues[11]); + Config.syncConfig(); + } + @Override public void keyTyped(char character, int keyCode) { + if (keyCode == Keyboard.KEY_ESCAPE) { + selectedButtonID = -1; + drawKeyValues(); + } else if (selectedButtonID != -1) { + if (!ArrayUtils.contains(keyValues, keyCode)) { // No double keys + keyValues[selectedButtonID] = keyCode; + selectedButtonID = -1; + drawKeyValues(); + } + } + } + // TODO: Lang files + // TODO: Config files + // TODO: Crafting symbols + // TODO: KeyBindings + private void drawCraftingTable() { GL11.glColor4f(1F, 1F, 1F, 1F); mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/crafting_table.png")); @@ -230,19 +275,21 @@ public class GuiConfig extends GuiScreen { } private void initKeyValues() { - keyValues = new int[]{ - Config.keyTopLeft.getInt(), - Config.keyTopCenter.getInt(), - Config.keyTopRight.getInt(), - Config.keyCenterLeft.getInt(), - Config.keyCenterCenter.getInt(), - Config.keyCenterRight.getInt(), - Config.keyLowerLeft.getInt(), - Config.keyLowerCenter.getInt(), - Config.keyLowerRight.getInt(), - Config.keyInteract.getInt(), - Config.keyStack.getInt(), - Config.keyDrop.getInt()}; + if (keyValues.length == 0) { + keyValues = new int[]{ + Config.keyTopLeft.getInt(), + Config.keyTopCenter.getInt(), + Config.keyTopRight.getInt(), + Config.keyCenterLeft.getInt(), + Config.keyCenterCenter.getInt(), + Config.keyCenterRight.getInt(), + Config.keyLowerLeft.getInt(), + Config.keyLowerCenter.getInt(), + Config.keyLowerRight.getInt(), + Config.keyInteract.getInt(), + Config.keyStack.getInt(), + Config.keyDrop.getInt()}; + } } private void drawKeyValues() {