Update ReplayStudio and add connect replay functionality to replay editor
This commit is contained in:
@@ -3,6 +3,7 @@ package eu.crushedpixel.replaymod.studio;
|
||||
import com.google.gson.JsonObject;
|
||||
import de.johni0702.replaystudio.PacketData;
|
||||
import de.johni0702.replaystudio.filter.ChangeTimestampFilter;
|
||||
import de.johni0702.replaystudio.filter.NeutralizerFilter;
|
||||
import de.johni0702.replaystudio.filter.RemoveFilter;
|
||||
import de.johni0702.replaystudio.filter.SquashFilter;
|
||||
import de.johni0702.replaystudio.io.ReplayOutputStream;
|
||||
@@ -11,6 +12,7 @@ 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 org.apache.commons.lang3.Validate;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@@ -54,8 +56,48 @@ public class StudioImplementation {
|
||||
replayFile.saveTo(outputFile);
|
||||
}
|
||||
|
||||
//TODO Work with Johni to connect multiple Replay Files
|
||||
public static void connectReplayFiles(List<File> filesToConnect, File outputFile) {
|
||||
public static void connectReplayFiles(List<File> filesToConnect, File outputFile) throws IOException {
|
||||
Validate.notEmpty(filesToConnect);
|
||||
ReplayStudio studio = new ReplayStudio();
|
||||
studio.setWrappingEnabled(false);
|
||||
|
||||
ReplayFile outputReplayFile = new ZipReplayFile(studio, outputFile);
|
||||
ReplayOutputStream out = outputReplayFile.writePacketData();
|
||||
|
||||
ConnectMetadataFilter metaDataFilter = new ConnectMetadataFilter();
|
||||
int startTime = 0;
|
||||
for (File file : filesToConnect) {
|
||||
ReplayFile replayFile = new ZipReplayFile(studio, file);
|
||||
PacketStream stream = studio.createReplayStream(replayFile.getPacketData(), true);
|
||||
ReplayMetaData metaData = replayFile.getMetaData();
|
||||
|
||||
stream.addFilter(new NeutralizerFilter());
|
||||
|
||||
if (startTime > 0) {
|
||||
ChangeTimestampFilter ctf = new ChangeTimestampFilter();
|
||||
JsonObject cfg = new JsonObject();
|
||||
cfg.addProperty("offset", startTime);
|
||||
ctf.init(studio, cfg);
|
||||
stream.addFilter(ctf);
|
||||
}
|
||||
|
||||
metaDataFilter.setInputReplay(replayFile);
|
||||
stream.addFilter(metaDataFilter);
|
||||
|
||||
PacketData packetData;
|
||||
while ((packetData = stream.next()) != null) {
|
||||
out.write(packetData);
|
||||
}
|
||||
for (PacketData data : stream.end()) {
|
||||
out.write(data);
|
||||
}
|
||||
|
||||
startTime += metaData.getDuration();
|
||||
}
|
||||
|
||||
out.close();
|
||||
|
||||
metaDataFilter.writeTo(outputReplayFile);
|
||||
outputReplayFile.saveTo(outputFile);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user