Only register changes in ReplayFileAppender if something changed - this applies to GuiKeyframeRepository, GuiObjectManager, GuiPlayerOverview, GuiAssetManager
Added equals method to ReplayImageAsset which is based on the BufferedImage's hash code (which is calculated only once)
This commit is contained in:
@@ -34,10 +34,13 @@ public class GuiAssetManager extends GuiScreen {
|
||||
|
||||
private AssetRepository assetRepository;
|
||||
|
||||
private final AssetRepository initialRepository;
|
||||
|
||||
private ReplayAsset currentAsset;
|
||||
|
||||
public GuiAssetManager() {
|
||||
this.assetRepository = ReplayHandler.getAssetRepository();
|
||||
this.initialRepository = ReplayHandler.getAssetRepository();
|
||||
this.assetRepository = new AssetRepository(ReplayHandler.getAssetRepository());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -190,6 +193,8 @@ public class GuiAssetManager extends GuiScreen {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if(assetRepository.equals(initialRepository)) return;
|
||||
ReplayHandler.setAssetRepository(assetRepository);
|
||||
assetRepository.saveAssets();
|
||||
}
|
||||
}, "replaymod-asset-saver").start();
|
||||
|
||||
@@ -15,6 +15,7 @@ import net.minecraft.client.gui.GuiTextField;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import org.apache.commons.lang3.time.DurationFormatUtils;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import scala.actors.threadpool.Arrays;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.IOException;
|
||||
@@ -40,8 +41,11 @@ public class GuiKeyframeRepository extends GuiScreen implements GuiReplayOverlay
|
||||
|
||||
private int currentSetTimeKeyframeCount, currentSetPositionKeyframeCount, currentSetDuration;
|
||||
|
||||
private final List<KeyframeSet> initialKeyframeSets;
|
||||
|
||||
public GuiKeyframeRepository(KeyframeSet[] keyframeRepository) {
|
||||
this.keyframeRepository = keyframeRepository;
|
||||
this.initialKeyframeSets = new ArrayList<KeyframeSet>(Arrays.asList(keyframeRepository));
|
||||
ReplayMod.replaySender.setReplaySpeed(0);
|
||||
}
|
||||
|
||||
@@ -230,6 +234,8 @@ public class GuiKeyframeRepository extends GuiScreen implements GuiReplayOverlay
|
||||
|
||||
private void saveOnQuit() {
|
||||
ArrayList<KeyframeSet> copy = new ArrayList<KeyframeSet>(keyframeSetList.getCopyOfElements());
|
||||
if(initialKeyframeSets.equals(copy)) return;
|
||||
|
||||
this.keyframeRepository = copy.toArray(new KeyframeSet[copy.size()]);
|
||||
ReplayHandler.setKeyframeRepository(keyframeRepository, true);
|
||||
}
|
||||
|
||||
@@ -42,6 +42,8 @@ public class GuiObjectManager extends GuiScreen {
|
||||
private GuiString dropdownLabel;
|
||||
private GuiDropdown<GuiEntryListValueEntry<UUID>> assetDropdown;
|
||||
|
||||
private final List<CustomImageObject> initialObjects = ReplayHandler.getCustomImageObjects();
|
||||
|
||||
private GuiDraggingNumberInput anchorXInput, anchorYInput, anchorZInput;
|
||||
private GuiDraggingNumberInput positionXInput, positionYInput, positionZInput;
|
||||
private GuiDraggingNumberInput orientationXInput, orientationYInput, orientationZInput;
|
||||
@@ -173,7 +175,7 @@ public class GuiObjectManager extends GuiScreen {
|
||||
nameInput = new GuiAdvancedTextField(fontRendererObj, 0, 0, 0, 20);
|
||||
nameInput.hint = I18n.format("replaymod.gui.objects.properties.name");
|
||||
|
||||
for(CustomImageObject customImageObject : ReplayHandler.getCustomImageObjects()) {
|
||||
for(CustomImageObject customImageObject : initialObjects) {
|
||||
objectList.addElement(customImageObject);
|
||||
}
|
||||
|
||||
@@ -366,6 +368,11 @@ public class GuiObjectManager extends GuiScreen {
|
||||
|
||||
private void saveOnQuit() {
|
||||
List<CustomImageObject> objects = objectList.getCopyOfElements();
|
||||
|
||||
if(objects.equals(initialObjects)) {
|
||||
return;
|
||||
}
|
||||
|
||||
ReplayHandler.setCustomImageObjects(objects);
|
||||
|
||||
if(objects.size() > 0) {
|
||||
|
||||
@@ -54,7 +54,11 @@ public class GuiPlayerOverview extends GuiScreen implements GuiReplayOverlay.NoO
|
||||
|
||||
private final String screenTitle = I18n.format("replaymod.input.playeroverview");
|
||||
|
||||
private final Set<UUID> initialHiddenPlayers;
|
||||
|
||||
public GuiPlayerOverview(List<EntityPlayer> players) {
|
||||
initialHiddenPlayers = new HashSet<UUID>(PlayerHandler.getHiddenPlayers());
|
||||
|
||||
Collections.sort(players, new PlayerComparator());
|
||||
|
||||
this.players = new ArrayList<Pair<EntityPlayer, ResourceLocation>>();
|
||||
@@ -304,6 +308,7 @@ public class GuiPlayerOverview extends GuiScreen implements GuiReplayOverlay.NoO
|
||||
|
||||
private void saveOnQuit() {
|
||||
if(rememberHidden.isChecked()) {
|
||||
if(initialHiddenPlayers.equals(PlayerHandler.getHiddenPlayers())) return;
|
||||
try {
|
||||
File f = File.createTempFile(ReplayFile.ENTRY_VISIBILITY, "json");
|
||||
ReplayFileIO.write(getVisibilityInstance(), f);
|
||||
@@ -312,6 +317,7 @@ public class GuiPlayerOverview extends GuiScreen implements GuiReplayOverlay.NoO
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
if(initialHiddenPlayers.isEmpty()) return;
|
||||
ReplayMod.replayFileAppender.registerModifiedFile(null, ReplayFile.ENTRY_VISIBILITY, ReplayHandler.getReplayFile());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user