Added new Gui with Progress Bar when editing a Replay using the ReplayEditor | https://trello.com/c/uGFDgv6E/

Added ProgressUpdateListener interface for the use with ProgressBars
This commit is contained in:
CrushedPixel
2015-07-02 23:08:09 +02:00
parent 088bb00ab3
commit 8c81dd414e
9 changed files with 237 additions and 23 deletions

View File

@@ -12,6 +12,8 @@ import de.johni0702.replaystudio.replay.ReplayMetaData;
import de.johni0702.replaystudio.replay.ZipReplayFile;
import de.johni0702.replaystudio.stream.PacketStream;
import de.johni0702.replaystudio.studio.ReplayStudio;
import eu.crushedpixel.replaymod.gui.elements.listeners.ProgressUpdateListener;
import net.minecraft.client.resources.I18n;
import org.apache.commons.lang3.Validate;
import java.io.File;
@@ -20,7 +22,9 @@ import java.util.List;
public class StudioImplementation {
public static void trimReplay(File file, int beginning, int ending, File outputFile) throws IOException {
public static void trimReplay(File file, int beginning, int ending, File outputFile, ProgressUpdateListener updateListener) throws IOException {
updateListener.onProgressChanged(0f, I18n.format("replaymod.gui.editor.progress.status.initializing"));
ReplayStudio studio = new ReplayStudio();
studio.setWrappingEnabled(false);
ReplayFile replayFile = new ZipReplayFile(studio, file);
@@ -39,24 +43,37 @@ public class StudioImplementation {
ReplayOutputStream out = replayFile.writePacketData();
PacketData packetData;
updateListener.onProgressChanged(1/4f, I18n.format("replaymod.gui.editor.progress.status.writing.raw"));
while((packetData = stream.next()) != null) {
out.write(packetData);
}
for(PacketData data : stream.end()) {
List<PacketData> endList = stream.end();
for(PacketData data : endList) {
out.write(data);
}
out.close();
updateListener.onProgressChanged(2/4f, I18n.format("replaymod.gui.editor.progress.status.writing.zip"));
ReplayMetaData metaData = replayFile.getMetaData();
ending = Math.min(metaData.getDuration(), ending);
metaData.setDuration(ending - beginning);
replayFile.writeMetaData(metaData);
updateListener.onProgressChanged(3/4f, I18n.format("replaymod.gui.editor.progress.status.writing.final"));
replayFile.saveTo(outputFile);
updateListener.onProgressChanged(1f, I18n.format("replaymod.gui.editor.progress.status.finished"));
}
public static void connectReplayFiles(List<File> filesToConnect, File outputFile) throws IOException {
public static void connectReplayFiles(List<File> filesToConnect, File outputFile, ProgressUpdateListener updateListener) throws IOException {
updateListener.onProgressChanged(0f, I18n.format("replaymod.gui.editor.progress.status.initializing"));
Validate.notEmpty(filesToConnect);
ReplayStudio studio = new ReplayStudio();
studio.setWrappingEnabled(false);
@@ -66,6 +83,12 @@ public class StudioImplementation {
ConnectMetadataFilter metaDataFilter = new ConnectMetadataFilter();
int startTime = 0;
updateListener.onProgressChanged(1/4f, I18n.format("replaymod.gui.editor.progress.status.writing.raw"));
float i = 0;
float size = filesToConnect.size();
for (File file : filesToConnect) {
ReplayFile replayFile = new ZipReplayFile(studio, file);
PacketStream stream = studio.createReplayStream(replayFile.getPacketData(), true);
@@ -93,11 +116,20 @@ public class StudioImplementation {
}
startTime += metaData.getDuration();
updateListener.onProgressChanged((1/4f)+((1/4f)*(i/size)));
}
out.close();
updateListener.onProgressChanged(2/4f, I18n.format("replaymod.gui.editor.progress.status.writing.zip"));
metaDataFilter.writeTo(outputReplayFile);
updateListener.onProgressChanged(3/4f, I18n.format("replaymod.gui.editor.progress.status.writing.final"));
outputReplayFile.saveTo(outputFile);
updateListener.onProgressChanged(1f, I18n.format("replaymod.gui.editor.progress.status.finished"));
}
}