Пример #1
0
        public static void SaveChunk(SavedChunk chunk, string worldName, string name)
        {
            Directory.CreateDirectory(Application.dataPath + "/Worlds/" + worldName);
            BinaryFormatter formatter = new BinaryFormatter();
            FileStream      stream    = File.Create(Application.dataPath + "/Worlds/" + worldName + "/" + name + ".chnk");

            formatter.Serialize(stream, chunk);
            stream.Close();
        }
Пример #2
0
        /// <summary>
        /// Converts a Block 2D multi array into a single array and returns as chunk.
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        SavedChunk ConvertToSerializableChunk(Block[,] c)
        {
            Block[] _chunk = new Block[Global.maxChunkSize * Global.maxChunkSize];
            int     i      = 0;

            for (int z = 0; z < c.GetLength(1); z++)
            {
                for (int x = 0; x < c.GetLength(0); x++, i++)
                {
                    _chunk[i] = c[x, z];
                }
            }
            SavedChunk newChunk = new SavedChunk(chunkPosX, chunkPosZ, _chunk);

            newChunk.blocks = _chunk;
            return(newChunk);
        }
Пример #3
0
        public static Chunk LoadChunk(string worldName, string name)
        {
            string path   = Application.dataPath + "/Worlds/" + worldName + "/" + name + ".chnk";
            Chunk  _chunk = null;

            if (File.Exists(path))
            {
                BinaryFormatter formatter = new BinaryFormatter();
                FileStream      stream    = File.Open(path, FileMode.Open);
                SavedChunk      chunk     = (SavedChunk)formatter.Deserialize(stream);

                Block[,] blocks = new Block[Global.maxChunkSize, Global.maxChunkSize];
                for (int i = 0; i < chunk.blocks.Length; i++)
                {
                    blocks[chunk.blocks[i].posX, chunk.blocks[i].posZ] = chunk.blocks[i];
                }

                _chunk   = new Chunk(blocks);
                _chunk.x = chunk.x;
                _chunk.z = chunk.z;
                stream.Close();
            }
            return(_chunk);
        }