public void SaveChunksToDatabase(List <Vector3i> chunkPositions, string filename) { if (!GameStorePath.IsValidName(filename)) { Console.WriteLine("Invalid backup filename: " + filename); return; } if (!Directory.Exists(GameStorePath.gamepathbackup)) { Directory.CreateDirectory(GameStorePath.gamepathbackup); } string finalFilename = Path.Combine(GameStorePath.gamepathbackup, filename + MapManipulator.BinSaveExtension); List <DbChunk> dbchunks = new List <DbChunk>(); foreach (Vector3i pos in chunkPositions) { int dx = pos.x / chunksize; int dy = pos.y / chunksize; int dz = pos.z / chunksize; ServerChunk cc = new ServerChunk() { data = this.GetChunk(pos.x, pos.y, pos.z) }; MemoryStream ms = new MemoryStream(); Serializer.Serialize(ms, cc); dbchunks.Add(new DbChunk() { Position = new Xyz() { X = dx, Y = dy, Z = dz }, Chunk = ms.ToArray() }); } if (dbchunks.Count != 0) { IChunkDb d_ChunkDb = new ChunkDbCompressed() { d_ChunkDb = new ChunkDbSqlite(), d_Compression = new CompressionGzip() }; d_ChunkDb.SetChunksToFile(dbchunks, finalFilename); } else { Console.WriteLine(string.Format("0 chunks selected. Nothing to do.")); } Console.WriteLine(string.Format("Saved {0} chunk(s) to database.", dbchunks.Count)); }
public void SaveChunksToDatabase(List<Vector3i> chunkPositions, string filename) { if (!GameStorePath.IsValidName(filename)) { Console.WriteLine("Invalid backup filename: " + filename); return; } if (!Directory.Exists(GameStorePath.gamepathbackup)) { Directory.CreateDirectory(GameStorePath.gamepathbackup); } string finalFilename = Path.Combine(GameStorePath.gamepathbackup, filename + MapManipulator.BinSaveExtension); List<DbChunk> dbchunks = new List<DbChunk>(); foreach (Vector3i pos in chunkPositions) { int dx = pos.x / chunksize; int dy = pos.y / chunksize; int dz = pos.z / chunksize; ServerChunk cc = new ServerChunk() { data = this.GetChunk(pos.x, pos.y, pos.z) }; MemoryStream ms = new MemoryStream(); Serializer.Serialize(ms, cc); dbchunks.Add(new DbChunk() { Position = new Xyz() { X = dx, Y = dy, Z = dz }, Chunk = ms.ToArray() }); } if (dbchunks.Count != 0) { IChunkDb d_ChunkDb = new ChunkDbCompressed() { d_ChunkDb = new ChunkDbSqlite(), d_Compression = new CompressionGzip() }; d_ChunkDb.SetChunksToFile(dbchunks, finalFilename); } else { Console.WriteLine(string.Format("0 chunks selected. Nothing to do.")); } Console.WriteLine(string.Format("Saved {0} chunk(s) to database.", dbchunks.Count)); }