public NetBuffer GetMapData()
{
NetBuffer buffer = new NetBuffer();
buffer.Write(this.Name);
buffer.Write(this.Version);
buffer.Write(this.MapWidth);
buffer.Write(this.MapHeight);
for (int x = 0; x < this.MapWidth; x++)
{
for (int y = 0; y < this.MapHeight; y++)
{
buffer.Write(this.GetTile(x, y).Blocked);
foreach (Layers layer in Enum.GetValues(typeof(Layers)))
{
if (this.GetTile(x, y).GetLayer(layer) == null)
{
buffer.Write(false);
continue;
}
buffer.Write(true);
buffer.Write(this.GetTile(x, y).GetLayer(layer).TextureNumber);
buffer.Write(this.GetTile(x, y).GetLayer(layer).SpriteRect.Left);
buffer.Write(this.GetTile(x, y).GetLayer(layer).SpriteRect.Top);
buffer.Write(this.GetTile(x, y).GetLayer(layer).SpriteRect.Width);
buffer.Write(this.GetTile(x, y).GetLayer(layer).SpriteRect.Height);
}
}
}
var mapNpcs = this.GetMapNpcs();
buffer.Write(mapNpcs.Length);
foreach (var npc in mapNpcs)
{
buffer.Write(npc.Name);
buffer.Write(npc.Level);
buffer.Write(npc.TextureNumber);
buffer.Write(npc.Position);
}
return buffer;
}