public static void TestAddChunkToUnloadedChunks(GameSave gameSave, Header header) { ChunkTable oldChunkTable = header.SaveIndex.ChunkTable; var octree = new Octree(gameSave, new BitArray(new[] { false, false }), new byte[] { 1 }); var blockTypeTable = new BlockTypeTable(gameSave, new[] { new StringBlock(gameSave, "Block 0"), new StringBlock(gameSave, "Block 1"), new StringBlock(gameSave, "Block 2"), new StringBlock(gameSave, "Block 2") }, new[] { 0, 0, 0, 1 }); var chunk = new Chunk(gameSave, blockTypeTable, new[] { octree }); var r = new Random(); int x = r.Next(); int z = r.Next(); List<Tuple<int, int, Chunk>> chunks = oldChunkTable.GetChunks().Where(c => c.Item1 != x || c.Item2 != z).ToList(); chunks.Add(new Tuple<int, int, Chunk>(x, z, chunk)); var chunkTable = new ChunkTable(gameSave, chunks.ToArray()); var mainIndex = new SavedStateIndex(gameSave, DateTime.UtcNow.Ticks, new StringBlock(gameSave, "ChunkTable Length: " + chunkTable.Length), chunkTable); var newHeader = new Header(gameSave, mainIndex); newHeader.Write(true); }
public Header(GameSave gameSave, SavedStateIndex saveIndex) : base(gameSave) { Address = new Tuple <int, uint>(0, 0); SaveIndex = saveIndex; UpdateLength(); }
public Header(GameSave gameSave, SavedStateIndex saveIndex) : base(gameSave) { Address = new Tuple<int, uint>(0, 0); SaveIndex = saveIndex; UpdateLength(); }
internal static SavedStateIndex FromSave(GameSave gameSave, Tuple <int, uint> address) { SavedStateIndex savedStateIndex; if (!gameSave.TryGetFromBlockStructureCache(address, out savedStateIndex)) { savedStateIndex = new SavedStateIndex(gameSave, address); gameSave.AddToBlockStructureCache(address, savedStateIndex); } return(savedStateIndex); }
protected override void ReadData(BinaryReader reader) { int version = reader.ReadInt32(); if (version != Version) { throw new InvalidDataException("Expected file version " + Version + ", was " + version + "."); } SaveIndex = SavedStateIndex.FromSave(GameSave, ReadAddress(reader)); }
internal static SavedStateIndex FromSave(GameSave gameSave, Tuple<int, uint> address) { SavedStateIndex savedStateIndex; if (!gameSave.TryGetFromBlockStructureCache(address, out savedStateIndex)) { savedStateIndex = new SavedStateIndex(gameSave, address); gameSave.AddToBlockStructureCache(address, savedStateIndex); } return savedStateIndex; }
protected override void ForgetData() { SaveIndex = null; }
public static void TestSaving(GameSave gameSave, string saveName) { var octree = new Octree(gameSave, new BitArray(new[] { false, false }), new byte[] { 1 }); var blockTypeTable = new BlockTypeTable(gameSave, new[] { new StringBlock(gameSave, "Block 0"), new StringBlock(gameSave, "Block 1"), new StringBlock(gameSave, "Block 2"), new StringBlock(gameSave, "Block 2") }, new[] { 0, 0, 0, 1 }); var chunk = new Chunk(gameSave, blockTypeTable, new[] { octree }); var chunkTable = new ChunkTable(gameSave, new[] { 0 }, new[] { 0 }, new[] { chunk }); var mainIndex = new SavedStateIndex(gameSave, DateTime.UtcNow.Ticks, new StringBlock(gameSave, saveName), chunkTable); var header = new Header(gameSave, mainIndex); header.Write(true); }