diff options
Diffstat (limited to 'src')
6 files changed, 119 insertions, 9 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuide.java b/src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuide.java index 15929c2e..daf1c00f 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuide.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuide.java @@ -37,9 +37,11 @@ public class DungeonsGuide ClientCommandHandler.instance.registerCommand(new CommandLoadData()); ClientCommandHandler.instance.registerCommand(new CommandSaveData()); + //noinspection ResultOfMethodCallIgnored configDir.mkdirs(); DungeonRoomInfoRegistry.loadAll(configDir); + Keybinds.register(); } @Getter diff --git a/src/main/java/kr/syeyoung/dungeonsguide/EventListener.java b/src/main/java/kr/syeyoung/dungeonsguide/EventListener.java index 93457e8e..1a5731fd 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/EventListener.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/EventListener.java @@ -4,6 +4,7 @@ import kr.syeyoung.dungeonsguide.dungeon.DungeonContext; import kr.syeyoung.dungeonsguide.dungeon.data.DungeonRoomInfo; import kr.syeyoung.dungeonsguide.dungeon.doorfinder.DungeonDoor; import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom; +import kr.syeyoung.dungeonsguide.roomedit.EditingContext; import kr.syeyoung.dungeonsguide.utils.MapUtils; import kr.syeyoung.dungeonsguide.utils.RenderUtils; import net.minecraft.client.Minecraft; @@ -12,10 +13,12 @@ import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.util.ChatComponentText; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.InputEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; import org.lwjgl.opengl.GL11; @@ -104,4 +107,13 @@ public class EventListener { } } } + + @SubscribeEvent + public void onKeyInput(InputEvent.KeyInputEvent keyInputEvent) { + if (Keybinds.opengui.isKeyDown()){ + EditingContext ec = EditingContext.getEditingContext(); + if (ec == null) Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("No Editing session is open right now")); + else ec.reopen(); + } + } } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/Keybinds.java b/src/main/java/kr/syeyoung/dungeonsguide/Keybinds.java new file mode 100644 index 00000000..17d0ccaa --- /dev/null +++ b/src/main/java/kr/syeyoung/dungeonsguide/Keybinds.java @@ -0,0 +1,17 @@ +package kr.syeyoung.dungeonsguide; + +import net.minecraft.client.settings.KeyBinding; +import net.minecraftforge.fml.client.registry.ClientRegistry; +import org.lwjgl.input.Keyboard; + +public class Keybinds +{ + public static KeyBinding opengui; + + public static void register() + { + opengui = new KeyBinding("ay", Keyboard.KEY_R, "key.categories.misc"); + + ClientRegistry.registerKeyBinding(opengui); + } +} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandEditRoom.java b/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandEditRoom.java index b1f15300..77f9718b 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandEditRoom.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandEditRoom.java @@ -4,6 +4,7 @@ import kr.syeyoung.dungeonsguide.DungeonsGuide; import kr.syeyoung.dungeonsguide.SkyblockStatus; import kr.syeyoung.dungeonsguide.dungeon.DungeonContext; import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom; +import kr.syeyoung.dungeonsguide.roomedit.EditingContext; import kr.syeyoung.dungeonsguide.roomedit.GuiDungeonRoomEdit; import kr.syeyoung.dungeonsguide.utils.MapUtils; import net.minecraft.client.Minecraft; @@ -23,12 +24,12 @@ import java.awt.*; public class CommandEditRoom extends CommandBase { @Override public String getCommandName() { - return "editroom"; + return "editsession"; } @Override public String getCommandUsage(ICommandSender sender) { - return "editroom"; + return "editsession"; } @Override @@ -55,16 +56,22 @@ public class CommandEditRoom extends CommandBase { return; } - openit = new GuiDungeonRoomEdit(dungeonRoom); + if (EditingContext.getEditingContext() != null) { + sender.addChatMessage(new ChatComponentText("There is an editing session currently open.")); + return; + } + + EditingContext.createEditingContext(dungeonRoom); + openGuiReq = true; } - GuiScreen openit = null; + private boolean openGuiReq = false; @SubscribeEvent public void tick(TickEvent.ClientTickEvent tick){ - if ( openit != null &&tick.phase == TickEvent.Phase.END && tick.side == Side.CLIENT && tick.type == TickEvent.Type.CLIENT) { - Minecraft.getMinecraft().displayGuiScreen(openit); - openit = null; + if ( openGuiReq &&tick.phase == TickEvent.Phase.END && tick.side == Side.CLIENT && tick.type == TickEvent.Type.CLIENT) { + DungeonRoom dr = EditingContext.getEditingContext().getRoom(); + EditingContext.getEditingContext().openGui(new GuiDungeonRoomEdit(dr)); } } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/EditingContext.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/EditingContext.java new file mode 100644 index 00000000..8b5cecdd --- /dev/null +++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/EditingContext.java @@ -0,0 +1,56 @@ +package kr.syeyoung.dungeonsguide.roomedit; + +import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom; +import lombok.Data; +import lombok.Getter; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.GuiScreen; + +import java.util.LinkedList; +import java.util.Stack; + +public class EditingContext { + + private static EditingContext editingContext; + + public static void createEditingContext(DungeonRoom dungeonRoom) { + editingContext = new EditingContext(dungeonRoom); + } + + public static EditingContext getEditingContext() { + return editingContext; + } + + public static void endEditingSession() { + editingContext = null; + Minecraft.getMinecraft().displayGuiScreen(null); + } + + + private EditingContext(DungeonRoom dungeonRoom) { + this.room = dungeonRoom; + } + + @Getter + private DungeonRoom room; + + private Stack<GuiScreen> guiStack = new Stack<GuiScreen>(); + + private GuiScreen current; + + public void openGui(GuiScreen gui) { + guiStack.push(current); + this.current = gui; + Minecraft.getMinecraft().displayGuiScreen(gui); + } + + public void goBack() { + current = guiStack.pop(); + Minecraft.getMinecraft().displayGuiScreen(current); + } + + public void reopen() { + Minecraft.getMinecraft().displayGuiScreen(current); + } +} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java index eec9a63b..51ccc1d5 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java @@ -2,6 +2,7 @@ package kr.syeyoung.dungeonsguide.roomedit.panes; import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom; import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoomInfoRegistry; +import kr.syeyoung.dungeonsguide.roomedit.EditingContext; import kr.syeyoung.dungeonsguide.roomedit.MPanel; import kr.syeyoung.dungeonsguide.roomedit.elements.*; import kr.syeyoung.dungeonsguide.roomprocessor.ProcessorFactory; @@ -20,6 +21,7 @@ public class GeneralEditPane extends MPanel { private MLabelAndElement shape2; private MButton save; + private MButton end; private MLabelAndElement roomProcessor; @@ -84,6 +86,19 @@ System.out.println("building"); }); } { + end = new MButton(); + end.setText("End Editing Session"); + end.setOnActionPerformed(new Runnable() { + @Override + public void run() { + EditingContext.endEditingSession(); + } + }); + end.setBackgroundColor(Color.green); + end.setBounds(new Rectangle(0,120,bounds.width, 20)); + add(end); + } + { if (dungeonRoom.getDungeonRoomInfo().isRegistered()) return; save = new MButton(); save.setText("Save RoomData"); @@ -95,7 +110,7 @@ System.out.println("building"); } }); save.setBackgroundColor(Color.green); - save.setBounds(new Rectangle(1,120,bounds.width-2, 20)); + save.setBounds(new Rectangle(0,140,bounds.width, 20)); add(save); System.out.println(save.getBounds()); } @@ -109,6 +124,7 @@ System.out.println("building"); @Override public void onBoundsUpdate() { if (save != null) - save.setBounds(new Rectangle(0,120,bounds.width, 20)); + save.setBounds(new Rectangle(0,140,bounds.width, 20)); + end.setBounds(new Rectangle(1,120,bounds.width-2, 20)); } } |