From 0a1680e891b0bac21b70c44712862a04df798986 Mon Sep 17 00:00:00 2001 From: CrushedPixel Date: Tue, 9 Jun 2015 23:05:18 +0200 Subject: [PATCH] Keyframe Presets now ignore Marker Keyframes and those are not overwritten when loading a preset --- .../replaymod/gui/GuiKeyframeRepository.java | 9 ++++++++- .../replaymod/replay/ReplayHandler.java | 16 +++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/GuiKeyframeRepository.java b/src/main/java/eu/crushedpixel/replaymod/gui/GuiKeyframeRepository.java index 2194f2d1..e183bbd2 100644 --- a/src/main/java/eu/crushedpixel/replaymod/gui/GuiKeyframeRepository.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/GuiKeyframeRepository.java @@ -6,6 +6,7 @@ import eu.crushedpixel.replaymod.gui.elements.listeners.SelectionListener; import eu.crushedpixel.replaymod.gui.overlay.GuiReplayOverlay; import eu.crushedpixel.replaymod.holders.Keyframe; import eu.crushedpixel.replaymod.holders.KeyframeSet; +import eu.crushedpixel.replaymod.holders.MarkerKeyframe; import eu.crushedpixel.replaymod.replay.ReplayHandler; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; @@ -18,6 +19,7 @@ import org.lwjgl.input.Keyboard; import java.awt.*; import java.io.IOException; import java.util.ArrayList; +import java.util.List; public class GuiKeyframeRepository extends GuiScreen implements GuiReplayOverlay.NoOverlay { @@ -131,7 +133,12 @@ public class GuiKeyframeRepository extends GuiScreen implements GuiReplayOverlay if(!button.enabled) return; switch(button.id) { case GuiConstants.KEYFRAME_REPOSITORY_ADD_BUTTON: - Keyframe[] keyframes = ReplayHandler.getKeyframes().toArray(new Keyframe[ReplayHandler.getKeyframes().size()]); + List kfs = new ArrayList(ReplayHandler.getKeyframes()); + for(Keyframe kf : new ArrayList(kfs)) { + if(kf instanceof MarkerKeyframe) kfs.remove(kf); + } + + Keyframe[] keyframes = kfs.toArray(new Keyframe[ReplayHandler.getKeyframes().size()]); KeyframeSet newSet = new KeyframeSet(I18n.format("replaymod.gui.keyframerepository.preset.defaultname"), keyframes); if(newSet.getPositionKeyframeCount() < 2 && newSet.getTimeKeyframeCount() < 2) { message = I18n.format("replaymod.chat.notenoughkeyframes"); diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java b/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java index 13d45e71..4903a455 100755 --- a/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java +++ b/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java @@ -95,7 +95,15 @@ public class ReplayHandler { } public static void useKeyframePresetFromRepository(int index) { + MarkerKeyframe[] markers = getMarkers(); + keyframes = new ArrayList(Arrays.asList(keyframeRepository[index].getKeyframes())); + + for(MarkerKeyframe mk : markers) { + keyframes.add(mk); + } + + if(!(selectedKeyframe instanceof MarkerKeyframe)) selectedKeyframe = null; } public static void spectateEntity(Entity e) { @@ -374,9 +382,15 @@ public class ReplayHandler { } public static void resetKeyframes() { + MarkerKeyframe[] markers = getMarkers(); keyframes = new ArrayList(); - selectKeyframe(null); + for(MarkerKeyframe mk : markers) { + keyframes.add(mk); + } + + if(!(selectedKeyframe instanceof MarkerKeyframe)) + selectKeyframe(null); } public static boolean isSelected(Keyframe kf) {