Beispiel #1
0
    public void SaveChunk(WixelChunk chunk)
    {
        WixelChunkSaveBuffer save = new WixelChunkSaveBuffer(chunk);

        if (save.Blocks.Count == 0)
        {
            return;
        }

        string saveFile = SaveLocation(chunk.World.WorldName);

        saveFile += FileName(chunk.WorldPosition);

        IFormatter formatter = new BinaryFormatter();

        using (Stream stream = new FileStream(saveFile, FileMode.Create, FileAccess.Write, FileShare.None))
        {
            formatter.Serialize(stream, chunk.Blocks);
            stream.Close();
        }
    }
Beispiel #2
0
    public bool LoadChunk(WixelChunk chunk)
    {
        string saveFile = SaveLocation(chunk.World.WorldName);

        saveFile += FileName(chunk.WorldPosition);

        if (!File.Exists(saveFile))
        {
            return(false);
        }

        IFormatter formatter = new BinaryFormatter();

        using (FileStream stream = new FileStream(saveFile, FileMode.Open))
        {
            try
            {
                WixelChunkSaveBuffer save = (WixelChunkSaveBuffer)formatter.Deserialize(stream);

                foreach (var block in save.Blocks)
                {
                    chunk.Blocks[block.Key.x, block.Key.y, block.Key.z] = block.Value;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                stream.Close();
            }
        }

        return(true);
    }