public void CacheMap()
{
using (var fileStream = new FileStream(Constants.FILEPATH_CACHE + "Maps/" + this.Name + ".map", FileMode.OpenOrCreate))
{
using (var 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].GetLayer(layer) == null)
{
binaryWriter.Write(false);
continue;
}
binaryWriter.Write(true);
binaryWriter.Write(ServiceLocator.ScreenManager.ActiveScreen.TextureManager.GetTextureName(this._tiles[x, y].GetLayer(layer).Sprite.Texture));
binaryWriter.Write(this._tiles[x, y].GetLayer(layer).Sprite.TextureRect.Left);
binaryWriter.Write(this._tiles[x, y].GetLayer(layer).Sprite.TextureRect.Top);
binaryWriter.Write(this._tiles[x, y].GetLayer(layer).Sprite.TextureRect.Width);
binaryWriter.Write(this._tiles[x, y].GetLayer(layer).Sprite.TextureRect.Height);
}
}
}
}
}
}