This commit is contained in:
nattthebear 2015-10-03 19:20:18 -04:00
parent 7b3461798f
commit 915abb9504
2 changed files with 47 additions and 0 deletions

View File

@ -1,4 +1,5 @@
using System; using System;
using System.IO;
namespace BizHawk.Client.Common namespace BizHawk.Client.Common
{ {
@ -15,6 +16,20 @@ namespace BizHawk.Client.Common
public int Frame { get; set; } public int Frame { get; set; }
public void Write(BinaryWriter w)
{
w.Write(Frame);
w.Write(_state.Length);
w.Write(_state);
}
public static StateManagerState Read(BinaryReader r, TasStateManager m)
{
int frame = r.ReadInt32();
byte[] data = r.ReadBytes(r.ReadInt32());
return new StateManagerState(m, data, frame);
}
public byte[] State public byte[] State
{ {
get get

View File

@ -520,6 +520,19 @@ namespace BizHawk.Client.Common
bw.Write(kvp.Value.Length); bw.Write(kvp.Value.Length);
bw.Write(kvp.Value.State); bw.Write(kvp.Value.State);
} }
bw.Write(currentBranch);
bw.Write(BranchStates.Count);
foreach (var s in BranchStates)
{
bw.Write(s.Key);
bw.Write(s.Value.Count);
foreach (var t in s.Value)
{
bw.Write(t.Key);
t.Value.Write(bw);
}
}
} }
private List<int> ExcludeStates() private List<int> ExcludeStates()
@ -574,6 +587,25 @@ namespace BizHawk.Client.Common
//Used += len; //Used += len;
} }
//} //}
currentBranch = br.ReadInt32();
int c = br.ReadInt32();
BranchStates = new SortedList<int, SortedList<int, StateManagerState>>(c);
while (c > 0)
{
int key = br.ReadInt32();
int c2 = br.ReadInt32();
var list = new SortedList<int, StateManagerState>(c2);
while (c2 > 0)
{
int key2 = br.ReadInt32();
var state = StateManagerState.Read(br, this);
list.Add(key2, state);
c2--;
}
BranchStates.Add(key, list);
c--;
}
} }
public KeyValuePair<int, byte[]> GetStateClosestToFrame(int frame) public KeyValuePair<int, byte[]> GetStateClosestToFrame(int frame)