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:
@@ -3,6 +3,7 @@ package eu.crushedpixel.replaymod.assets;
|
||||
import eu.crushedpixel.replaymod.ReplayMod;
|
||||
import eu.crushedpixel.replaymod.replay.ReplayHandler;
|
||||
import eu.crushedpixel.replaymod.utils.ReplayFile;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
@@ -13,14 +14,25 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.*;
|
||||
|
||||
@EqualsAndHashCode
|
||||
public class AssetRepository {
|
||||
|
||||
private Map<UUID, ReplayAsset> replayAssets;
|
||||
private final Map<UUID, ReplayAsset> replayAssets;
|
||||
|
||||
public AssetRepository() {
|
||||
replayAssets = new HashMap<UUID, ReplayAsset>();
|
||||
}
|
||||
|
||||
public AssetRepository(AssetRepository toCopy) {
|
||||
HashMap<UUID, ReplayAsset> newAssetList = new HashMap<UUID, ReplayAsset>();
|
||||
|
||||
for(Map.Entry<UUID, ReplayAsset> e : toCopy.replayAssets.entrySet()) {
|
||||
newAssetList.put(e.getKey(), e.getValue().copy());
|
||||
}
|
||||
|
||||
this.replayAssets = newAssetList;
|
||||
}
|
||||
|
||||
public ReplayAsset addAsset(String assetFileName, InputStream inputStream) throws IOException {
|
||||
return addAsset(assetFileName, inputStream, null);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import eu.crushedpixel.replaymod.holders.GuiEntryListEntry;
|
||||
import eu.crushedpixel.replaymod.holders.Transformations;
|
||||
import eu.crushedpixel.replaymod.registry.ResourceHelper;
|
||||
import eu.crushedpixel.replaymod.replay.ReplayHandler;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.minecraft.client.Minecraft;
|
||||
@@ -14,6 +15,7 @@ import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import java.util.UUID;
|
||||
|
||||
@EqualsAndHashCode
|
||||
public class CustomImageObject implements GuiEntryListEntry {
|
||||
|
||||
public CustomImageObject(String name, UUID assetUUID) throws IOException {
|
||||
|
||||
@@ -17,6 +17,8 @@ public interface ReplayAsset<T> extends GuiEntryListEntry {
|
||||
|
||||
void setAssetName(String name);
|
||||
|
||||
ReplayAsset<T> copy();
|
||||
|
||||
T getObject();
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package eu.crushedpixel.replaymod.assets;
|
||||
import eu.crushedpixel.replaymod.registry.ResourceHelper;
|
||||
import eu.crushedpixel.replaymod.replay.ReplayHandler;
|
||||
import eu.crushedpixel.replaymod.utils.BoundingUtils;
|
||||
import eu.crushedpixel.replaymod.utils.BufferedImageUtils;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.Gui;
|
||||
import net.minecraft.client.renderer.texture.DynamicTexture;
|
||||
@@ -16,14 +18,24 @@ import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.UUID;
|
||||
|
||||
@EqualsAndHashCode(of={"name", "bufferedImageHashCode"})
|
||||
public class ReplayImageAsset implements ReplayAsset<BufferedImage> {
|
||||
|
||||
private final Minecraft mc = Minecraft.getMinecraft();
|
||||
|
||||
private BufferedImage object;
|
||||
private int bufferedImageHashCode;
|
||||
|
||||
private String name;
|
||||
|
||||
public ReplayImageAsset copy() {
|
||||
ReplayImageAsset newReplay = new ReplayImageAsset(name);
|
||||
newReplay.object = object;
|
||||
newReplay.bufferedImageHashCode = bufferedImageHashCode;
|
||||
|
||||
return newReplay;
|
||||
}
|
||||
|
||||
public ReplayImageAsset(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
@@ -46,6 +58,7 @@ public class ReplayImageAsset implements ReplayAsset<BufferedImage> {
|
||||
@Override
|
||||
public void loadFromStream(InputStream inputStream) throws IOException {
|
||||
this.object = ImageIO.read(inputStream);
|
||||
this.bufferedImageHashCode = BufferedImageUtils.hashCode(object);
|
||||
ResourceHelper.freeResource(previewResource);
|
||||
|
||||
for(CustomImageObject object : ReplayHandler.getCustomImageObjects()) {
|
||||
|
||||
Reference in New Issue
Block a user