Example #1
0
    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));
    }