Skip to content

Commit fdf1953

Browse files
committed
[PlaybackSerialiser] Switched flavor to pass by reference
1 parent e09a4d6 commit fdf1953

File tree

3 files changed

+59
-31
lines changed

3 files changed

+59
-31
lines changed

src/main/java/com/minecrafttas/tasmod/playback/tasfile/PlaybackSerialiser2.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package com.minecrafttas.tasmod.playback.tasfile;
22

33
import java.io.File;
4-
import java.util.ArrayList;
4+
import java.io.FileNotFoundException;
55
import java.util.List;
66

77
import com.dselent.bigarraylist.BigArrayList;
88
import com.minecrafttas.tasmod.playback.PlaybackControllerClient;
99
import com.minecrafttas.tasmod.playback.PlaybackControllerClient.TickInputContainer;
1010
import com.minecrafttas.tasmod.playback.metadata.PlaybackMetadata;
1111
import com.minecrafttas.tasmod.playback.tasfile.flavor.PlaybackFlavorBase;
12+
import com.minecrafttas.tasmod.util.FileThread;
1213
import com.minecrafttas.tasmod.util.TASmodRegistry;
1314

1415
/**
@@ -28,15 +29,16 @@ public class PlaybackSerialiser2 {
2829
* @param file The file to save the serialised inputs to.
2930
* @param controller
3031
* @param flavor
32+
* @throws FileNotFoundException
3133
*/
32-
public static void saveToFile(File file, PlaybackControllerClient controller, String flavorname) {
34+
public static void saveToFile(File file, PlaybackControllerClient controller, String flavorname) throws FileNotFoundException {
3335
if (controller == null) {
3436
throw new NullPointerException("Save to file failed. No controller specified");
3537
}
3638
saveToFile(file, controller.getInputs(), flavorname);
3739
}
3840

39-
public static void saveToFile(File file, BigArrayList<TickInputContainer> container, String flavorname) {
41+
public static void saveToFile(File file, BigArrayList<TickInputContainer> container, String flavorname) throws FileNotFoundException {
4042
if (file == null) {
4143
throw new NullPointerException("Save to file failed. No file specified");
4244
}
@@ -49,12 +51,22 @@ public static void saveToFile(File file, BigArrayList<TickInputContainer> contai
4951
flavorname = defaultFlavor;
5052
}
5153

54+
FileThread writerThread = new FileThread(file, false);
55+
5256
PlaybackFlavorBase flavor = TASmodRegistry.SERIALISER_FLAVOR.getFlavor(flavorname);
5357

5458
List<PlaybackMetadata> metadataList = TASmodRegistry.PLAYBACK_METADATA.handleOnStore();
5559

56-
List<String> outLines = new ArrayList<>();
57-
outLines.addAll(flavor.serialiseHeader(metadataList));
60+
for (String line : flavor.serialiseHeader(metadataList)) {
61+
writerThread.addLine(line);
62+
}
63+
64+
BigArrayList<String> tickLines = flavor.serialise(container);
65+
for (long i = 0; i < tickLines.size(); i++) {
66+
writerThread.addLine(tickLines.get(i));
67+
}
68+
69+
writerThread.close();
5870
}
5971

6072
/**

src/main/java/com/minecrafttas/tasmod/playback/tasfile/flavor/PlaybackFlavorBase.java

Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,29 @@ public abstract class PlaybackFlavorBase {
1818
/**
1919
* The current tick that is being serialised or deserialised
2020
*/
21-
private int currentTick;
21+
protected int currentTick;
2222

2323
public abstract String flavorName();
2424

2525
public List<String> serialiseHeader(List<PlaybackMetadata> metadataList) {
2626
List<String> out = new ArrayList<>();
27-
out.add(serialiseFlavorName());
27+
serialiseFlavorName(out);
2828
// out.add(serializeExtensionNames());
29-
out.addAll(serialiseMetadata(metadataList));
29+
serialiseMetadata(out, metadataList);
3030
return out;
3131
}
3232

33-
protected String serialiseFlavorName() {
34-
return "Flavor:" + flavorName();
33+
protected void serialiseFlavorName(List<String> out) {
34+
out.add("# Flavor:" + flavorName());
3535
}
3636

37-
public List<String> serialiseMetadata(List<PlaybackMetadata> metadataList) {
38-
return null;
37+
protected void serialiseMetadata(List<String> out, List<PlaybackMetadata> metadataList) {
38+
for (PlaybackMetadata metadata : metadataList) {
39+
out.add("### " + metadata.getExtensionName());
40+
for (String value : metadata.toStringList()) {
41+
out.add("# " + value);
42+
}
43+
}
3944
}
4045

4146
public BigArrayList<String> serialise(BigArrayList<TickInputContainer> inputs) {
@@ -44,43 +49,57 @@ public BigArrayList<String> serialise(BigArrayList<TickInputContainer> inputs) {
4449
for (int i = 0; i < inputs.size(); i++) {
4550
currentTick = i;
4651
TickInputContainer container = inputs.get(i);
47-
addAll(out, serialiseContainer(container));
52+
serialiseContainer(out, container);
4853
}
4954
return out;
5055
}
5156

52-
protected List<String> serialiseContainer(TickInputContainer container) {
57+
protected void serialiseContainer(BigArrayList<String> out, TickInputContainer container) {
5358
List<String> serialisedKeyboard = serialiseKeyboard(container.getKeyboard());
5459
List<String> serialisedMouse = serialiseMouse(container.getMouse());
5560
List<String> serialisedCameraAngle = serialiseCameraAngle(container.getCameraAngle());
5661

57-
return mergeInputs(serialisedKeyboard, serialisedMouse, serialisedCameraAngle);
62+
mergeInputs(out, serialisedKeyboard, serialisedMouse, serialisedCameraAngle);
5863
}
5964

60-
protected abstract List<String> serialiseKeyboard(VirtualKeyboard keyboard);
61-
62-
protected abstract List<String> serialiseMouse(VirtualMouse mouse);
65+
protected List<String> serialiseKeyboard(VirtualKeyboard keyboard) {
66+
List<String> out = new ArrayList<>();
67+
for (VirtualKeyboard subtick : keyboard.getAll()) {
68+
out.add(subtick.toString());
69+
}
70+
return out;
71+
}
6372

64-
protected abstract List<String> serialiseCameraAngle(VirtualCameraAngle cameraAngle);
73+
protected List<String> serialiseMouse(VirtualMouse mouse) {
74+
List<String> out = new ArrayList<>();
75+
for (VirtualMouse subtick : mouse.getAll()) {
76+
out.add(subtick.toString());
77+
}
78+
return out;
79+
}
6580

66-
protected List<String> mergeInputs(List<String> serialisedKeyboard, List<String> serialisedMouse, List<String> serialisedCameraAngle) {
81+
protected List<String> serialiseCameraAngle(VirtualCameraAngle cameraAngle) {
6782
List<String> out = new ArrayList<>();
68-
83+
for (VirtualCameraAngle subtick : cameraAngle.getAll()) {
84+
out.add(subtick.toString());
85+
}
86+
return out;
87+
}
88+
89+
protected void mergeInputs(BigArrayList<String> out, List<String> serialisedKeyboard, List<String> serialisedMouse, List<String> serialisedCameraAngle) {
6990
Queue<String> keyboardQueue = new LinkedBlockingQueue<>(serialisedKeyboard);
7091
Queue<String> mouseQueue = new LinkedBlockingQueue<>(serialisedMouse);
7192
Queue<String> cameraAngleQueue = new LinkedBlockingQueue<>(serialisedCameraAngle);
72-
73-
while(!keyboardQueue.isEmpty() && !mouseQueue.isEmpty() && !cameraAngleQueue.isEmpty()) {
93+
94+
while (!keyboardQueue.isEmpty() || !mouseQueue.isEmpty() || !cameraAngleQueue.isEmpty()) {
7495
String kb = getOrEmpty(keyboardQueue.poll());
7596
String ms = getOrEmpty(mouseQueue.poll());
7697
String ca = getOrEmpty(cameraAngleQueue.poll());
77-
98+
7899
out.add(kb + ms + ca);
79100
}
80-
81-
return out;
82101
}
83-
102+
84103
protected String getOrEmpty(String string) {
85104
return string == null ? "" : string;
86105
}

src/main/java/com/minecrafttas/tasmod/playback/tasfile/flavor/integrated/BetaFlavor.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,17 @@ public String flavorName() {
1616

1717
@Override
1818
protected List<String> serialiseKeyboard(VirtualKeyboard keyboard) {
19-
// TODO Auto-generated method stub
2019
return null;
2120
}
2221

2322
@Override
2423
protected List<String> serialiseMouse(VirtualMouse mouse) {
25-
// TODO Auto-generated method stub
2624
return null;
25+
2726
}
2827

2928
@Override
3029
protected List<String> serialiseCameraAngle(VirtualCameraAngle cameraAngle) {
31-
// TODO Auto-generated method stub
3230
return null;
3331
}
34-
3532
}

0 commit comments

Comments
 (0)