@@ -18,24 +18,29 @@ public abstract class PlaybackFlavorBase {
18
18
/**
19
19
* The current tick that is being serialised or deserialised
20
20
*/
21
- private int currentTick ;
21
+ protected int currentTick ;
22
22
23
23
public abstract String flavorName ();
24
24
25
25
public List <String > serialiseHeader (List <PlaybackMetadata > metadataList ) {
26
26
List <String > out = new ArrayList <>();
27
- out . add ( serialiseFlavorName () );
27
+ serialiseFlavorName (out );
28
28
// out.add(serializeExtensionNames());
29
- out . addAll ( serialiseMetadata (metadataList ) );
29
+ serialiseMetadata (out , metadataList );
30
30
return out ;
31
31
}
32
32
33
- protected String serialiseFlavorName () {
34
- return " Flavor:" + flavorName ();
33
+ protected void serialiseFlavorName (List < String > out ) {
34
+ out . add ( "# Flavor:" + flavorName () );
35
35
}
36
36
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
+ }
39
44
}
40
45
41
46
public BigArrayList <String > serialise (BigArrayList <TickInputContainer > inputs ) {
@@ -44,43 +49,57 @@ public BigArrayList<String> serialise(BigArrayList<TickInputContainer> inputs) {
44
49
for (int i = 0 ; i < inputs .size (); i ++) {
45
50
currentTick = i ;
46
51
TickInputContainer container = inputs .get (i );
47
- addAll (out , serialiseContainer ( container ) );
52
+ serialiseContainer (out , container );
48
53
}
49
54
return out ;
50
55
}
51
56
52
- protected List <String > serialiseContainer ( TickInputContainer container ) {
57
+ protected void serialiseContainer ( BigArrayList <String > out , TickInputContainer container ) {
53
58
List <String > serialisedKeyboard = serialiseKeyboard (container .getKeyboard ());
54
59
List <String > serialisedMouse = serialiseMouse (container .getMouse ());
55
60
List <String > serialisedCameraAngle = serialiseCameraAngle (container .getCameraAngle ());
56
61
57
- return mergeInputs (serialisedKeyboard , serialisedMouse , serialisedCameraAngle );
62
+ mergeInputs (out , serialisedKeyboard , serialisedMouse , serialisedCameraAngle );
58
63
}
59
64
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
+ }
63
72
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
+ }
65
80
66
- protected List <String > mergeInputs ( List < String > serialisedKeyboard , List < String > serialisedMouse , List < String > serialisedCameraAngle ) {
81
+ protected List <String > serialiseCameraAngle ( VirtualCameraAngle cameraAngle ) {
67
82
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 ) {
69
90
Queue <String > keyboardQueue = new LinkedBlockingQueue <>(serialisedKeyboard );
70
91
Queue <String > mouseQueue = new LinkedBlockingQueue <>(serialisedMouse );
71
92
Queue <String > cameraAngleQueue = new LinkedBlockingQueue <>(serialisedCameraAngle );
72
-
73
- while (!keyboardQueue .isEmpty () && !mouseQueue .isEmpty () && !cameraAngleQueue .isEmpty ()) {
93
+
94
+ while (!keyboardQueue .isEmpty () || !mouseQueue .isEmpty () || !cameraAngleQueue .isEmpty ()) {
74
95
String kb = getOrEmpty (keyboardQueue .poll ());
75
96
String ms = getOrEmpty (mouseQueue .poll ());
76
97
String ca = getOrEmpty (cameraAngleQueue .poll ());
77
-
98
+
78
99
out .add (kb + ms + ca );
79
100
}
80
-
81
- return out ;
82
101
}
83
-
102
+
84
103
protected String getOrEmpty (String string ) {
85
104
return string == null ? "" : string ;
86
105
}
0 commit comments