diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiKeyframeTimeline.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiKeyframeTimeline.java index 0bdb1ddf..d0279c79 100644 --- a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiKeyframeTimeline.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiKeyframeTimeline.java @@ -21,8 +21,8 @@ public class GuiKeyframeTimeline extends GuiTimeline { private static final int KEYFRAME_TIME_Y = 25; private static final int KEYFRAME_SPEC_X = 74; private static final int KEYFRAME_SPEC_Y = 30; - private static final int KEYFRAME_MARKER_X = 40; - private static final int KEYFRAME_MARKER_Y = 39; + private static final int KEYFRAME_MARKER_X = 109; + private static final int KEYFRAME_MARKER_Y = 20; private Keyframe clickedKeyFrame; private long clickTime; diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/overlay/GuiReplayOverlay.java b/src/main/java/eu/crushedpixel/replaymod/gui/overlay/GuiReplayOverlay.java index 270c49c9..74ac6e73 100755 --- a/src/main/java/eu/crushedpixel/replaymod/gui/overlay/GuiReplayOverlay.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/overlay/GuiReplayOverlay.java @@ -154,9 +154,44 @@ public class GuiReplayOverlay extends Gui { } }, "replaymod.gui.ingame.menu.removeposkeyframe"); + private final GuiElement buttonSpectatorNotSelected = texturedButton(BUTTON_PLACE_X, BOTTOM_ROW, 40, 40, 20, new Runnable() { + @Override + public void run() { + Entity cam = mc.getRenderViewEntity(); + if (cam != null) { + Position position = new Position(cam.posX, cam.posY, cam.posZ, cam.rotationPitch, + cam.rotationYaw % 360, ReplayHandler.getCameraTilt()); + + if (ReplayHandler.isCamera()) + ReplayHandler.addKeyframe(new PositionKeyframe(ReplayHandler.getRealTimelineCursor(), position)); + else + ReplayHandler.addKeyframe(new PositionKeyframe(ReplayHandler.getRealTimelineCursor(), cam.getEntityId())); + } + } + }, "replaymod.gui.ingame.menu.addspeckeyframe"); + + private final GuiElement buttonSpectatorSelected = texturedButton(BUTTON_PLACE_X, BOTTOM_ROW, 40, 60, 20, new Runnable() { + @Override + public void run() { + ReplayHandler.removeKeyframe(ReplayHandler.getSelectedKeyframe()); + } + }, "replaymod.gui.ingame.menu.removespeckeyframe"); + @Override public GuiElement delegate() { - return ReplayHandler.getSelectedKeyframe() instanceof PositionKeyframe ? buttonSelected : buttonNotSelected; + boolean selected = ReplayHandler.getSelectedKeyframe() instanceof PositionKeyframe; + boolean camera = true; + if(selected) { + camera = ((PositionKeyframe)ReplayHandler.getSelectedKeyframe()).getSpectatedEntityID() == null; + } else { + camera = ReplayHandler.isCamera(); + } + + if(camera) { + return selected ? buttonSelected : buttonNotSelected; + } else { + return selected ? buttonSpectatorSelected : buttonSpectatorNotSelected; + } } }; diff --git a/src/main/resources/assets/replaymod/lang/en_US.lang b/src/main/resources/assets/replaymod/lang/en_US.lang index 8060d102..4ab7d841 100644 --- a/src/main/resources/assets/replaymod/lang/en_US.lang +++ b/src/main/resources/assets/replaymod/lang/en_US.lang @@ -298,6 +298,8 @@ replaymod.gui.rendering.timeleft=Time Left #Ingame Menu replaymod.gui.ingame.menu.addposkeyframe=Add Position Keyframe replaymod.gui.ingame.menu.removeposkeyframe=Remove Position Keyframe +replaymod.gui.ingame.menu.addspeckeyframe=Add Spectator Keyframe +replaymod.gui.ingame.menu.removespeckeyframe=Remove Spectator Keyframe replaymod.gui.ingame.menu.addtimekeyframe=Add Time Keyframe replaymod.gui.ingame.menu.removetimekeyframe=Remove Time Keyframe replaymod.gui.ingame.menu.pause=Pause Replay diff --git a/src/main/resources/assets/replaymod/replay_gui.png b/src/main/resources/assets/replaymod/replay_gui.png index 864fbc85..526925d9 100755 Binary files a/src/main/resources/assets/replaymod/replay_gui.png and b/src/main/resources/assets/replaymod/replay_gui.png differ