public void Save(string filePath, List<Texture> tileSetSprites)
{
this.Version++;
using (FileStream fileStream = new FileStream(filePath + this.Name + ".map", FileMode.OpenOrCreate))
{
using (BinaryWriter binaryWriter = new BinaryWriter(fileStream))
{
binaryWriter.Write(this.Name);
binaryWriter.Write(this.Version);
binaryWriter.Write(this.tiles.GetLength(0));
binaryWriter.Write(this.tiles.GetLength(1));
for (int x = 0; x < this.tiles.GetLength(0); x++)
{
for (int y = 0; y < this.tiles.GetLength(1); y++)
{
binaryWriter.Write(this.GetTile(x, y).Blocked);
foreach (Layers layer in Enum.GetValues(typeof(Map.Layers)))
{
if (this.tiles[x, y].Layers[(int)layer] == null)
{
binaryWriter.Write(false);
continue;
}
binaryWriter.Write(true);
binaryWriter.Write(tileSetSprites.IndexOf(this.GetTile(x, y).Layers[(int)layer].Sprite.Texture));
binaryWriter.Write(this.tiles[x, y].Layers[(int)layer].Sprite.TextureRect.Left);
binaryWriter.Write(this.tiles[x, y].Layers[(int)layer].Sprite.TextureRect.Top);
binaryWriter.Write(this.tiles[x, y].Layers[(int)layer].Sprite.TextureRect.Width);
binaryWriter.Write(this.tiles[x, y].Layers[(int)layer].Sprite.TextureRect.Height);
}
}
}
}
}
}