From a58e06703cb0aac02bbdd0babca32e6cc5e6f84a Mon Sep 17 00:00:00 2001 From: CrushedPixel Date: Mon, 13 Jul 2015 22:27:14 +0200 Subject: [PATCH] Using the DELETE Key, selected Keyframes can now be removed Added StaticKeybindings to provide non-changeable KeyBindings --- .../eu/crushedpixel/replaymod/ReplayMod.java | 1 + .../{ => keyboard}/KeyInputHandler.java | 27 ++++++++++++++----- .../handlers/keyboard/StaticKeybinding.java | 13 +++++++++ .../replaymod/registry/KeybindRegistry.java | 5 ++++ .../replaymod/replay/ReplayHandler.java | 4 ++- 5 files changed, 42 insertions(+), 8 deletions(-) rename src/main/java/eu/crushedpixel/replaymod/events/handlers/{ => keyboard}/KeyInputHandler.java (91%) create mode 100644 src/main/java/eu/crushedpixel/replaymod/events/handlers/keyboard/StaticKeybinding.java diff --git a/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java b/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java index 19461441..70cadc20 100755 --- a/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java +++ b/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java @@ -5,6 +5,7 @@ import eu.crushedpixel.replaymod.api.ApiClient; import eu.crushedpixel.replaymod.api.replay.holders.FileInfo; import eu.crushedpixel.replaymod.chat.ChatMessageHandler; import eu.crushedpixel.replaymod.events.handlers.*; +import eu.crushedpixel.replaymod.events.handlers.keyboard.KeyInputHandler; import eu.crushedpixel.replaymod.gui.online.GuiReplayDownloading; import eu.crushedpixel.replaymod.gui.overlay.GuiReplayOverlay; import eu.crushedpixel.replaymod.holders.KeyframeSet; diff --git a/src/main/java/eu/crushedpixel/replaymod/events/handlers/KeyInputHandler.java b/src/main/java/eu/crushedpixel/replaymod/events/handlers/keyboard/KeyInputHandler.java similarity index 91% rename from src/main/java/eu/crushedpixel/replaymod/events/handlers/KeyInputHandler.java rename to src/main/java/eu/crushedpixel/replaymod/events/handlers/keyboard/KeyInputHandler.java index a7f6097a..aa3850e3 100755 --- a/src/main/java/eu/crushedpixel/replaymod/events/handlers/KeyInputHandler.java +++ b/src/main/java/eu/crushedpixel/replaymod/events/handlers/keyboard/KeyInputHandler.java @@ -1,7 +1,8 @@ -package eu.crushedpixel.replaymod.events.handlers; +package eu.crushedpixel.replaymod.events.handlers.keyboard; import eu.crushedpixel.replaymod.ReplayMod; import eu.crushedpixel.replaymod.entities.CameraEntity.MoveDirection; +import eu.crushedpixel.replaymod.events.handlers.TickAndRenderListener; import eu.crushedpixel.replaymod.gui.GuiAssetManager; import eu.crushedpixel.replaymod.gui.GuiKeyframeRepository; import eu.crushedpixel.replaymod.gui.GuiMouseInput; @@ -120,6 +121,24 @@ public class KeyInputHandler { handleCustomKeybindings(kb, found, -1); found = true; } + + if(!ReplayHandler.isInReplay() || (mc.currentScreen != null && !(mc.currentScreen instanceof GuiMouseInput))) return; + + for(StaticKeybinding staticKeybinding : KeybindRegistry.staticKeybindings) { + if(!Keyboard.isKeyDown(staticKeybinding.getKeyCode())) { + staticKeybinding.setDown(false); + return; + } + + if(staticKeybinding.isDown()) return; + staticKeybinding.setDown(true); + + switch(staticKeybinding.getId()) { + case KeybindRegistry.STATIC_DELETE_KEYFRAME: + if(ReplayHandler.getSelectedKeyframe() != null) ReplayHandler.removeKeyframe(ReplayHandler.getSelectedKeyframe()); + break; + } + } } private void forwardCameraMovement(boolean forward, boolean backward, boolean left, boolean right, boolean up, boolean down) { @@ -155,12 +174,6 @@ public class KeyInputHandler { if(!ReplayHandler.isInReplay() || (mc.currentScreen != null && !(mc.currentScreen instanceof GuiMouseInput))) return; - if(kb.getKeyCode() == Keyboard.KEY_DELETE) { - if(ReplayHandler.getSelectedKeyframe() != null) { - - } - } - if(kb.getKeyDescription().equals("key.chat") && (kb.isPressed() || kb.getKeyCode() == keyCode)) { mc.displayGuiScreen(new GuiMouseInput(ReplayMod.overlay)); } diff --git a/src/main/java/eu/crushedpixel/replaymod/events/handlers/keyboard/StaticKeybinding.java b/src/main/java/eu/crushedpixel/replaymod/events/handlers/keyboard/StaticKeybinding.java new file mode 100644 index 00000000..d9dee734 --- /dev/null +++ b/src/main/java/eu/crushedpixel/replaymod/events/handlers/keyboard/StaticKeybinding.java @@ -0,0 +1,13 @@ +package eu.crushedpixel.replaymod.events.handlers.keyboard; + +import lombok.Data; +import lombok.RequiredArgsConstructor; + +@Data +@RequiredArgsConstructor +public class StaticKeybinding { + + private final int id; + private final int keyCode; + private boolean down; +} diff --git a/src/main/java/eu/crushedpixel/replaymod/registry/KeybindRegistry.java b/src/main/java/eu/crushedpixel/replaymod/registry/KeybindRegistry.java index c8ecbf9e..fd3bc859 100755 --- a/src/main/java/eu/crushedpixel/replaymod/registry/KeybindRegistry.java +++ b/src/main/java/eu/crushedpixel/replaymod/registry/KeybindRegistry.java @@ -1,5 +1,6 @@ package eu.crushedpixel.replaymod.registry; +import eu.crushedpixel.replaymod.events.handlers.keyboard.StaticKeybinding; import net.minecraft.client.Minecraft; import net.minecraft.client.settings.KeyBinding; import org.lwjgl.input.Keyboard; @@ -57,4 +58,8 @@ public class KeybindRegistry { } return null; } + + public static final int STATIC_DELETE_KEYFRAME = 0; + + public static final StaticKeybinding[] staticKeybindings = new StaticKeybinding[]{new StaticKeybinding(STATIC_DELETE_KEYFRAME, Keyboard.KEY_DELETE)}; } diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java b/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java index fde036bd..bb3126d0 100755 --- a/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java +++ b/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java @@ -227,7 +227,7 @@ public class ReplayHandler { } public static void toggleMarker() { - if(selectedKeyframe.getValue() instanceof Marker) markerKeyframes.remove(selectedKeyframe); + if(selectedKeyframe != null && selectedKeyframe.getValue() instanceof Marker) markerKeyframes.remove(selectedKeyframe); else { AdvancedPosition pos = new AdvancedPosition(mc.getRenderViewEntity(), false); int timestamp = ReplayMod.replaySender.currentTimeStamp(); @@ -281,6 +281,8 @@ public class ReplayHandler { positionKeyframes.remove(keyframe); } else if(keyframe.getValue() instanceof TimestampValue) { timeKeyframes.remove(keyframe); + } else if(keyframe.getValue() instanceof Marker) { + markerKeyframes.remove(keyframe); } if(keyframe == selectedKeyframe) {