start splitting up tsb; fix a wtf in the save code

This commit is contained in:
Chris Forbes
2010-09-17 18:59:14 +12:00
parent 1b66635670
commit 5593b9ffdd
5 changed files with 1265 additions and 1414 deletions

View File

@@ -24,6 +24,7 @@ namespace OpenRA.TilesetBuilder
{
string srcfile;
int size;
public Form1( string src, int size )
{
srcfile = src;
@@ -31,11 +32,11 @@ namespace OpenRA.TilesetBuilder
InitializeComponent();
surface1.TileSize = size;
surface1.Image = (Bitmap)Image.FromFile(src);
surface1.Image.SetResolution(96, 96); // people keep being noobs about DPI, and GDI+ cares.
surface1.TerrainTypes = new int[surface1.Image.Width / size, surface1.Image.Height / size]; /* all passable by default */
surface1.Templates = new List<Template>();
surface1.Size = surface1.Image.Size;
/* todo: load stuff from previous session */
Load();
}
@@ -78,6 +79,7 @@ namespace OpenRA.TilesetBuilder
w.WriteAttributeString("x", i.ToString());
w.WriteAttributeString("y", j.ToString());
w.WriteAttributeString("t", surface1.TerrainTypes[i, j].ToString());
w.WriteEndElement();
}
foreach (var t in surface1.Templates)
@@ -273,125 +275,4 @@ namespace OpenRA.TilesetBuilder
return filename;
}
}
class Template
{
public Dictionary<int2, bool> Cells = new Dictionary<int2, bool>();
public int Left { get { return Cells.Keys.Min(c => c.X); } }
public int Top { get { return Cells.Keys.Min(c => c.Y); } }
public int Right { get { return Cells.Keys.Max(c => c.X) + 1; } }
public int Bottom { get { return Cells.Keys.Max(c => c.Y) + 1; } }
public int Width { get { return Right - Left; } }
public int Height { get { return Bottom - Top; } }
}
class Surface : Control
{
public Bitmap Image;
public int[,] TerrainTypes;
public List<Template> Templates = new List<Template>();
public bool ShowTerrainTypes = true;
public string InputMode;
public int TileSize;
Template CurrentTemplate;
public Surface()
{
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
SetStyle(ControlStyles.ResizeRedraw, true);
UpdateStyles();
}
Brush currentBrush = new SolidBrush(Color.FromArgb(60, Color.White));
protected override void OnPaint(PaintEventArgs e)
{
if (Image == null || TerrainTypes == null || Templates == null)
return;
/* draw the background */
e.Graphics.DrawImageUnscaled(Image, 0, 0);
/* draw terrain type overlays */
if (ShowTerrainTypes)
for (var i = 0; i <= TerrainTypes.GetUpperBound(0); i++)
for (var j = 0; j <= TerrainTypes.GetUpperBound(1); j++)
if (TerrainTypes[i, j] != 0)
{
e.Graphics.FillRectangle(Brushes.Black, TileSize * i + 10, TileSize * j + 10, 10, 10);
e.Graphics.DrawString(TerrainTypes[i, j].ToString(),
Font, Brushes.LimeGreen, TileSize * i + 10, TileSize * j + 10);
}
/* draw template outlines */
foreach (var t in Templates)
{
foreach (var c in t.Cells.Keys)
{
if (CurrentTemplate == t)
e.Graphics.FillRectangle(currentBrush, TileSize * c.X, TileSize * c.Y, TileSize, TileSize);
if (!t.Cells.ContainsKey(c + new int2(-1, 0)))
e.Graphics.DrawLine(Pens.Red, (TileSize * c).ToPoint(), (TileSize * (c + new int2(0, 1))).ToPoint());
if (!t.Cells.ContainsKey(c + new int2(+1, 0)))
e.Graphics.DrawLine(Pens.Red, (TileSize * (c + new int2(1, 0))).ToPoint(), (TileSize * (c + new int2(1, 1))).ToPoint());
if (!t.Cells.ContainsKey(c + new int2(0, +1)))
e.Graphics.DrawLine(Pens.Red, (TileSize * (c + new int2(0, 1))).ToPoint(), (TileSize * (c + new int2(1, 1))).ToPoint());
if (!t.Cells.ContainsKey(c + new int2(0, -1)))
e.Graphics.DrawLine(Pens.Red, (TileSize * c).ToPoint(), (TileSize * (c + new int2(1, 0))).ToPoint());
}
}
}
protected override void OnMouseDown(MouseEventArgs e)
{
var pos = new int2( e.X / TileSize, e.Y / TileSize );
if (InputMode == null)
{
if (e.Button == MouseButtons.Left)
{
CurrentTemplate = Templates.FirstOrDefault(t => t.Cells.ContainsKey(pos));
if (CurrentTemplate == null)
Templates.Add(CurrentTemplate = new Template { Cells = new Dictionary<int2, bool> { { pos, true } } });
Invalidate();
}
if (e.Button == MouseButtons.Right)
{
Templates.RemoveAll(t => t.Cells.ContainsKey(pos));
CurrentTemplate = null;
Invalidate();
}
}
else
{
TerrainTypes[pos.X, pos.Y] = int.Parse(InputMode);
Invalidate();
}
}
protected override void OnMouseMove(MouseEventArgs e)
{
var pos = new int2(e.X / TileSize, e.Y / TileSize);
if (InputMode == null)
{
if (e.Button == MouseButtons.Left && CurrentTemplate != null)
{
if (!CurrentTemplate.Cells.ContainsKey(pos))
{
CurrentTemplate.Cells[pos] = true;
Invalidate();
}
}
}
}
}
}

View File

@@ -80,6 +80,10 @@
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="Surface.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Template.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\OpenRA.FileFormats\OpenRA.FileFormats.csproj">

View File

@@ -0,0 +1,114 @@
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
namespace OpenRA.TilesetBuilder
{
class Surface : Control
{
public Bitmap Image;
public int[,] TerrainTypes;
public List<Template> Templates = new List<Template>();
public bool ShowTerrainTypes = true;
public string InputMode;
public int TileSize;
Template CurrentTemplate;
public Surface()
{
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
SetStyle(ControlStyles.ResizeRedraw, true);
UpdateStyles();
}
Brush currentBrush = new SolidBrush(Color.FromArgb(60, Color.White));
protected override void OnPaint(PaintEventArgs e)
{
if (Image == null || TerrainTypes == null || Templates == null)
return;
/* draw the background */
e.Graphics.DrawImageUnscaled(Image, 0, 0);
/* draw terrain type overlays */
if (ShowTerrainTypes)
for (var i = 0; i <= TerrainTypes.GetUpperBound(0); i++)
for (var j = 0; j <= TerrainTypes.GetUpperBound(1); j++)
if (TerrainTypes[i, j] != 0)
{
e.Graphics.FillRectangle(Brushes.Black, TileSize * i + 10, TileSize * j + 10, 10, 10);
e.Graphics.DrawString(TerrainTypes[i, j].ToString(),
Font, Brushes.LimeGreen, TileSize * i + 10, TileSize * j + 10);
}
/* draw template outlines */
foreach (var t in Templates)
{
foreach (var c in t.Cells.Keys)
{
if (CurrentTemplate == t)
e.Graphics.FillRectangle(currentBrush, TileSize * c.X, TileSize * c.Y, TileSize, TileSize);
if (!t.Cells.ContainsKey(c + new int2(-1, 0)))
e.Graphics.DrawLine(Pens.Red, (TileSize * c).ToPoint(), (TileSize * (c + new int2(0, 1))).ToPoint());
if (!t.Cells.ContainsKey(c + new int2(+1, 0)))
e.Graphics.DrawLine(Pens.Red, (TileSize * (c + new int2(1, 0))).ToPoint(), (TileSize * (c + new int2(1, 1))).ToPoint());
if (!t.Cells.ContainsKey(c + new int2(0, +1)))
e.Graphics.DrawLine(Pens.Red, (TileSize * (c + new int2(0, 1))).ToPoint(), (TileSize * (c + new int2(1, 1))).ToPoint());
if (!t.Cells.ContainsKey(c + new int2(0, -1)))
e.Graphics.DrawLine(Pens.Red, (TileSize * c).ToPoint(), (TileSize * (c + new int2(1, 0))).ToPoint());
}
}
}
protected override void OnMouseDown(MouseEventArgs e)
{
var pos = new int2(e.X / TileSize, e.Y / TileSize);
if (InputMode == null)
{
if (e.Button == MouseButtons.Left)
{
CurrentTemplate = Templates.FirstOrDefault(t => t.Cells.ContainsKey(pos));
if (CurrentTemplate == null)
Templates.Add(CurrentTemplate = new Template { Cells = new Dictionary<int2, bool> { { pos, true } } });
Invalidate();
}
if (e.Button == MouseButtons.Right)
{
Templates.RemoveAll(t => t.Cells.ContainsKey(pos));
CurrentTemplate = null;
Invalidate();
}
}
else
{
TerrainTypes[pos.X, pos.Y] = int.Parse(InputMode);
Invalidate();
}
}
protected override void OnMouseMove(MouseEventArgs e)
{
var pos = new int2(e.X / TileSize, e.Y / TileSize);
if (InputMode == null)
{
if (e.Button == MouseButtons.Left && CurrentTemplate != null)
{
if (!CurrentTemplate.Cells.ContainsKey(pos))
{
CurrentTemplate.Cells[pos] = true;
Invalidate();
}
}
}
}
}
}

View File

@@ -0,0 +1,19 @@
using System.Collections.Generic;
using System.Linq;
namespace OpenRA.TilesetBuilder
{
class Template
{
public Dictionary<int2, bool> Cells = new Dictionary<int2, bool>();
public int Left { get { return Cells.Keys.Min(c => c.X); } }
public int Top { get { return Cells.Keys.Min(c => c.Y); } }
public int Right { get { return Cells.Keys.Max(c => c.X) + 1; } }
public int Bottom { get { return Cells.Keys.Max(c => c.Y) + 1; } }
public int Width { get { return Right - Left; } }
public int Height { get { return Bottom - Top; } }
}
}

View File

@@ -1,235 +1,235 @@
<?xml version="1.0" encoding="utf-8"?>
<tileset>
<terrain x="0" y="6" t="1">
<terrain x="0" y="7" t="1">
<terrain x="0" y="8" t="1">
<terrain x="0" y="10" t="1">
<terrain x="0" y="11" t="1">
<terrain x="0" y="13" t="2">
<terrain x="0" y="14" t="2">
<terrain x="0" y="30" t="1">
<terrain x="0" y="31" t="1">
<terrain x="0" y="32" t="1">
<terrain x="1" y="6" t="1">
<terrain x="1" y="7" t="1">
<terrain x="1" y="8" t="1">
<terrain x="1" y="11" t="1">
<terrain x="1" y="12" t="1">
<terrain x="2" y="6" t="1">
<terrain x="2" y="7" t="1">
<terrain x="2" y="8" t="1">
<terrain x="2" y="10" t="1">
<terrain x="2" y="11" t="1">
<terrain x="2" y="12" t="1">
<terrain x="2" y="13" t="2">
<terrain x="2" y="14" t="2">
<terrain x="2" y="16" t="1">
<terrain x="2" y="30" t="1">
<terrain x="2" y="31" t="1">
<terrain x="2" y="32" t="1">
<terrain x="3" y="6" t="1">
<terrain x="3" y="7" t="1">
<terrain x="3" y="8" t="1">
<terrain x="3" y="10" t="1">
<terrain x="3" y="11" t="1">
<terrain x="3" y="15" t="2">
<terrain x="3" y="16" t="2">
<terrain x="3" y="30" t="1">
<terrain x="3" y="31" t="1">
<terrain x="4" y="6" t="1">
<terrain x="4" y="7" t="1">
<terrain x="4" y="8" t="2">
<terrain x="4" y="9" t="2">
<terrain x="4" y="10" t="1">
<terrain x="4" y="11" t="1">
<terrain x="4" y="15" t="2">
<terrain x="4" y="16" t="2">
<terrain x="4" y="30" t="1">
<terrain x="4" y="31" t="1">
<terrain x="5" y="5" t="1">
<terrain x="5" y="6" t="1">
<terrain x="5" y="7" t="1">
<terrain x="5" y="8" t="2">
<terrain x="5" y="9" t="2">
<terrain x="5" y="10" t="1">
<terrain x="5" y="11" t="1">
<terrain x="5" y="13" t="2">
<terrain x="5" y="26" t="1">
<terrain x="5" y="27" t="2">
<terrain x="5" y="30" t="1">
<terrain x="5" y="31" t="1">
<terrain x="6" y="4" t="1">
<terrain x="6" y="6" t="1">
<terrain x="6" y="14" t="2">
<terrain x="6" y="15" t="2">
<terrain x="6" y="26" t="1">
<terrain x="6" y="27" t="2">
<terrain x="6" y="30" t="1">
<terrain x="6" y="31" t="1">
<terrain x="7" y="4" t="1">
<terrain x="7" y="13" t="2">
<terrain x="7" y="14" t="2">
<terrain x="7" y="15" t="2">
<terrain x="7" y="24" t="1">
<terrain x="7" y="25" t="1">
<terrain x="7" y="26" t="1">
<terrain x="7" y="27" t="2">
<terrain x="7" y="30" t="1">
<terrain x="7" y="31" t="1">
<terrain x="8" y="4" t="1">
<terrain x="8" y="8" t="1">
<terrain x="8" y="9" t="1">
<terrain x="8" y="10" t="1">
<terrain x="8" y="11" t="1">
<terrain x="8" y="12" t="1">
<terrain x="8" y="13" t="1">
<terrain x="8" y="24" t="1">
<terrain x="8" y="25" t="1">
<terrain x="8" y="26" t="1">
<terrain x="8" y="27" t="2">
<terrain x="8" y="30" t="1">
<terrain x="8" y="31" t="1">
<terrain x="9" y="4" t="1">
<terrain x="9" y="6" t="1">
<terrain x="9" y="8" t="1">
<terrain x="9" y="9" t="1">
<terrain x="9" y="10" t="1">
<terrain x="9" y="11" t="1">
<terrain x="9" y="12" t="1">
<terrain x="9" y="13" t="1">
<terrain x="9" y="24" t="1">
<terrain x="9" y="25" t="1">
<terrain x="9" y="26" t="1">
<terrain x="9" y="27" t="2">
<terrain x="9" y="30" t="1">
<terrain x="9" y="31" t="1">
<terrain x="10" y="4" t="1">
<terrain x="10" y="5" t="1">
<terrain x="10" y="6" t="1">
<terrain x="10" y="7" t="1">
<terrain x="10" y="24" t="1">
<terrain x="10" y="25" t="1">
<terrain x="10" y="26" t="1">
<terrain x="10" y="27" t="2">
<terrain x="10" y="30" t="1">
<terrain x="10" y="31" t="1">
<terrain x="11" y="4" t="1">
<terrain x="11" y="5" t="1">
<terrain x="11" y="11" t="1">
<terrain x="11" y="24" t="1">
<terrain x="11" y="25" t="1">
<terrain x="11" y="26" t="1">
<terrain x="11" y="30" t="2">
<terrain x="11" y="31" t="2">
<terrain x="12" y="4" t="1">
<terrain x="12" y="5" t="1">
<terrain x="12" y="7" t="1">
<terrain x="12" y="10" t="1">
<terrain x="12" y="11" t="1">
<terrain x="12" y="12" t="1">
<terrain x="12" y="13" t="1">
<terrain x="12" y="23" t="1">
<terrain x="12" y="24" t="1">
<terrain x="12" y="25" t="1">
<terrain x="12" y="26" t="1">
<terrain x="12" y="27" t="2">
<terrain x="12" y="28" t="2">
<terrain x="12" y="29" t="2">
<terrain x="12" y="30" t="2">
<terrain x="12" y="31" t="2">
<terrain x="12" y="32" t="1">
<terrain x="12" y="33" t="1">
<terrain x="13" y="4" t="1">
<terrain x="13" y="5" t="1">
<terrain x="13" y="6" t="1">
<terrain x="13" y="7" t="1">
<terrain x="13" y="10" t="1">
<terrain x="13" y="13" t="1">
<terrain x="13" y="24" t="1">
<terrain x="13" y="25" t="1">
<terrain x="13" y="27" t="2">
<terrain x="13" y="28" t="2">
<terrain x="13" y="29" t="2">
<terrain x="13" y="30" t="2">
<terrain x="13" y="31" t="2">
<terrain x="13" y="32" t="1">
<terrain x="13" y="33" t="1">
<terrain x="14" y="4" t="1">
<terrain x="14" y="5" t="1">
<terrain x="14" y="6" t="1">
<terrain x="14" y="7" t="1">
<terrain x="14" y="8" t="1">
<terrain x="14" y="9" t="1">
<terrain x="14" y="10" t="1">
<terrain x="14" y="12" t="1">
<terrain x="14" y="13" t="1">
<terrain x="14" y="22" t="1">
<terrain x="14" y="23" t="2">
<terrain x="14" y="24" t="2">
<terrain x="14" y="27" t="2">
<terrain x="14" y="28" t="2">
<terrain x="14" y="29" t="2">
<terrain x="14" y="30" t="2">
<terrain x="14" y="31" t="2">
<terrain x="14" y="32" t="2">
<terrain x="15" y="2" t="1">
<terrain x="15" y="3" t="1">
<terrain x="15" y="6" t="1">
<terrain x="15" y="7" t="1">
<terrain x="15" y="8" t="1">
<terrain x="15" y="9" t="1">
<terrain x="15" y="10" t="1">
<terrain x="15" y="12" t="1">
<terrain x="15" y="13" t="1">
<terrain x="15" y="22" t="1">
<terrain x="15" y="23" t="1">
<terrain x="15" y="24" t="2">
<terrain x="15" y="27" t="2">
<terrain x="15" y="28" t="2">
<terrain x="15" y="29" t="2">
<terrain x="15" y="30" t="2">
<terrain x="15" y="31" t="2">
<terrain x="15" y="32" t="2">
<terrain x="16" y="4" t="1">
<terrain x="16" y="5" t="1">
<terrain x="16" y="6" t="1">
<terrain x="16" y="7" t="1">
<terrain x="16" y="8" t="1">
<terrain x="16" y="9" t="1">
<terrain x="16" y="10" t="1">
<terrain x="16" y="13" t="2">
<terrain x="16" y="22" t="1">
<terrain x="16" y="23" t="1">
<terrain x="16" y="24" t="2">
<terrain x="16" y="27" t="2">
<terrain x="16" y="28" t="2">
<terrain x="16" y="29" t="2">
<terrain x="16" y="30" t="2">
<terrain x="16" y="31" t="2">
<terrain x="16" y="32" t="2">
<terrain x="17" y="6" t="1">
<terrain x="17" y="7" t="1">
<terrain x="17" y="10" t="1">
<terrain x="17" y="22" t="1">
<terrain x="17" y="23" t="2">
<terrain x="17" y="24" t="2">
<terrain x="17" y="30" t="2">
<terrain x="17" y="31" t="2">
<terrain x="18" y="4" t="1">
<terrain x="18" y="5" t="1">
<terrain x="18" y="6" t="1">
<terrain x="18" y="7" t="1">
<terrain x="18" y="10" t="2">
<terrain x="18" y="16" t="2">
<terrain x="18" y="17" t="2">
<terrain x="18" y="30" t="2">
<terrain x="18" y="31" t="2">
<terrain x="19" y="4" t="1">
<terrain x="19" y="7" t="1">
<terrain x="19" y="8" t="2">
<terrain x="19" y="13" t="2">
<terrain x="19" y="16" t="2">
<terrain x="19" y="17" t="2">
<terrain x="0" y="6" t="1" />
<terrain x="0" y="7" t="1" />
<terrain x="0" y="8" t="1" />
<terrain x="0" y="10" t="1" />
<terrain x="0" y="11" t="1" />
<terrain x="0" y="13" t="2" />
<terrain x="0" y="14" t="2" />
<terrain x="0" y="30" t="1" />
<terrain x="0" y="31" t="1" />
<terrain x="0" y="32" t="1" />
<terrain x="1" y="6" t="1" />
<terrain x="1" y="7" t="1" />
<terrain x="1" y="8" t="1" />
<terrain x="1" y="11" t="1" />
<terrain x="1" y="12" t="1" />
<terrain x="2" y="6" t="1" />
<terrain x="2" y="7" t="1" />
<terrain x="2" y="8" t="1" />
<terrain x="2" y="10" t="1" />
<terrain x="2" y="11" t="1" />
<terrain x="2" y="12" t="1" />
<terrain x="2" y="13" t="2" />
<terrain x="2" y="14" t="2" />
<terrain x="2" y="16" t="1" />
<terrain x="2" y="30" t="1" />
<terrain x="2" y="31" t="1" />
<terrain x="2" y="32" t="1" />
<terrain x="3" y="6" t="1" />
<terrain x="3" y="7" t="1" />
<terrain x="3" y="8" t="1" />
<terrain x="3" y="10" t="1" />
<terrain x="3" y="11" t="1" />
<terrain x="3" y="15" t="2" />
<terrain x="3" y="16" t="2" />
<terrain x="3" y="30" t="1" />
<terrain x="3" y="31" t="1" />
<terrain x="4" y="6" t="1" />
<terrain x="4" y="7" t="1" />
<terrain x="4" y="8" t="2" />
<terrain x="4" y="9" t="2" />
<terrain x="4" y="10" t="1" />
<terrain x="4" y="11" t="1" />
<terrain x="4" y="15" t="2" />
<terrain x="4" y="16" t="2" />
<terrain x="4" y="30" t="1" />
<terrain x="4" y="31" t="1" />
<terrain x="5" y="5" t="1" />
<terrain x="5" y="6" t="1" />
<terrain x="5" y="7" t="1" />
<terrain x="5" y="8" t="2" />
<terrain x="5" y="9" t="2" />
<terrain x="5" y="10" t="1" />
<terrain x="5" y="11" t="1" />
<terrain x="5" y="13" t="2" />
<terrain x="5" y="26" t="1" />
<terrain x="5" y="27" t="2" />
<terrain x="5" y="30" t="1" />
<terrain x="5" y="31" t="1" />
<terrain x="6" y="4" t="1" />
<terrain x="6" y="6" t="1" />
<terrain x="6" y="14" t="2" />
<terrain x="6" y="15" t="2" />
<terrain x="6" y="26" t="1" />
<terrain x="6" y="27" t="2" />
<terrain x="6" y="30" t="1" />
<terrain x="6" y="31" t="1" />
<terrain x="7" y="4" t="1" />
<terrain x="7" y="13" t="2" />
<terrain x="7" y="14" t="2" />
<terrain x="7" y="15" t="2" />
<terrain x="7" y="24" t="1" />
<terrain x="7" y="25" t="1" />
<terrain x="7" y="26" t="1" />
<terrain x="7" y="27" t="2" />
<terrain x="7" y="30" t="1" />
<terrain x="7" y="31" t="1" />
<terrain x="8" y="4" t="1" />
<terrain x="8" y="8" t="1" />
<terrain x="8" y="9" t="1" />
<terrain x="8" y="10" t="1" />
<terrain x="8" y="11" t="1" />
<terrain x="8" y="12" t="1" />
<terrain x="8" y="13" t="1" />
<terrain x="8" y="24" t="1" />
<terrain x="8" y="25" t="1" />
<terrain x="8" y="26" t="1" />
<terrain x="8" y="27" t="2" />
<terrain x="8" y="30" t="1" />
<terrain x="8" y="31" t="1" />
<terrain x="9" y="4" t="1" />
<terrain x="9" y="6" t="1" />
<terrain x="9" y="8" t="1" />
<terrain x="9" y="9" t="1" />
<terrain x="9" y="10" t="1" />
<terrain x="9" y="11" t="1" />
<terrain x="9" y="12" t="1" />
<terrain x="9" y="13" t="1" />
<terrain x="9" y="24" t="1" />
<terrain x="9" y="25" t="1" />
<terrain x="9" y="26" t="1" />
<terrain x="9" y="27" t="2" />
<terrain x="9" y="30" t="1" />
<terrain x="9" y="31" t="1" />
<terrain x="10" y="4" t="1" />
<terrain x="10" y="5" t="1" />
<terrain x="10" y="6" t="1" />
<terrain x="10" y="7" t="1" />
<terrain x="10" y="24" t="1" />
<terrain x="10" y="25" t="1" />
<terrain x="10" y="26" t="1" />
<terrain x="10" y="27" t="2" />
<terrain x="10" y="30" t="1" />
<terrain x="10" y="31" t="1" />
<terrain x="11" y="4" t="1" />
<terrain x="11" y="5" t="1" />
<terrain x="11" y="11" t="1" />
<terrain x="11" y="24" t="1" />
<terrain x="11" y="25" t="1" />
<terrain x="11" y="26" t="1" />
<terrain x="11" y="30" t="2" />
<terrain x="11" y="31" t="2" />
<terrain x="12" y="4" t="1" />
<terrain x="12" y="5" t="1" />
<terrain x="12" y="7" t="1" />
<terrain x="12" y="10" t="1" />
<terrain x="12" y="11" t="1" />
<terrain x="12" y="12" t="1" />
<terrain x="12" y="13" t="1" />
<terrain x="12" y="23" t="1" />
<terrain x="12" y="24" t="1" />
<terrain x="12" y="25" t="1" />
<terrain x="12" y="26" t="1" />
<terrain x="12" y="27" t="2" />
<terrain x="12" y="28" t="2" />
<terrain x="12" y="29" t="2" />
<terrain x="12" y="30" t="2" />
<terrain x="12" y="31" t="2" />
<terrain x="12" y="32" t="1" />
<terrain x="12" y="33" t="1" />
<terrain x="13" y="4" t="1" />
<terrain x="13" y="5" t="1" />
<terrain x="13" y="6" t="1" />
<terrain x="13" y="7" t="1" />
<terrain x="13" y="10" t="1" />
<terrain x="13" y="13" t="1" />
<terrain x="13" y="24" t="1" />
<terrain x="13" y="25" t="1" />
<terrain x="13" y="27" t="2" />
<terrain x="13" y="28" t="2" />
<terrain x="13" y="29" t="2" />
<terrain x="13" y="30" t="2" />
<terrain x="13" y="31" t="2" />
<terrain x="13" y="32" t="1" />
<terrain x="13" y="33" t="1" />
<terrain x="14" y="4" t="1" />
<terrain x="14" y="5" t="1" />
<terrain x="14" y="6" t="1" />
<terrain x="14" y="7" t="1" />
<terrain x="14" y="8" t="1" />
<terrain x="14" y="9" t="1" />
<terrain x="14" y="10" t="1" />
<terrain x="14" y="12" t="1" />
<terrain x="14" y="13" t="1" />
<terrain x="14" y="22" t="1" />
<terrain x="14" y="23" t="2" />
<terrain x="14" y="24" t="2" />
<terrain x="14" y="27" t="2" />
<terrain x="14" y="28" t="2" />
<terrain x="14" y="29" t="2" />
<terrain x="14" y="30" t="2" />
<terrain x="14" y="31" t="2" />
<terrain x="14" y="32" t="2" />
<terrain x="15" y="2" t="1" />
<terrain x="15" y="3" t="1" />
<terrain x="15" y="6" t="1" />
<terrain x="15" y="7" t="1" />
<terrain x="15" y="8" t="1" />
<terrain x="15" y="9" t="1" />
<terrain x="15" y="10" t="1" />
<terrain x="15" y="12" t="1" />
<terrain x="15" y="13" t="1" />
<terrain x="15" y="22" t="1" />
<terrain x="15" y="23" t="1" />
<terrain x="15" y="24" t="2" />
<terrain x="15" y="27" t="2" />
<terrain x="15" y="28" t="2" />
<terrain x="15" y="29" t="2" />
<terrain x="15" y="30" t="2" />
<terrain x="15" y="31" t="2" />
<terrain x="15" y="32" t="2" />
<terrain x="16" y="4" t="1" />
<terrain x="16" y="5" t="1" />
<terrain x="16" y="6" t="1" />
<terrain x="16" y="7" t="1" />
<terrain x="16" y="8" t="1" />
<terrain x="16" y="9" t="1" />
<terrain x="16" y="10" t="1" />
<terrain x="16" y="13" t="2" />
<terrain x="16" y="22" t="1" />
<terrain x="16" y="23" t="1" />
<terrain x="16" y="24" t="2" />
<terrain x="16" y="27" t="2" />
<terrain x="16" y="28" t="2" />
<terrain x="16" y="29" t="2" />
<terrain x="16" y="30" t="2" />
<terrain x="16" y="31" t="2" />
<terrain x="16" y="32" t="2" />
<terrain x="17" y="6" t="1" />
<terrain x="17" y="7" t="1" />
<terrain x="17" y="10" t="1" />
<terrain x="17" y="22" t="1" />
<terrain x="17" y="23" t="2" />
<terrain x="17" y="24" t="2" />
<terrain x="17" y="30" t="2" />
<terrain x="17" y="31" t="2" />
<terrain x="18" y="4" t="1" />
<terrain x="18" y="5" t="1" />
<terrain x="18" y="6" t="1" />
<terrain x="18" y="7" t="1" />
<terrain x="18" y="10" t="2" />
<terrain x="18" y="16" t="2" />
<terrain x="18" y="17" t="2" />
<terrain x="18" y="30" t="2" />
<terrain x="18" y="31" t="2" />
<terrain x="19" y="4" t="1" />
<terrain x="19" y="7" t="1" />
<terrain x="19" y="8" t="2" />
<terrain x="19" y="13" t="2" />
<terrain x="19" y="16" t="2" />
<terrain x="19" y="17" t="2" />
<template>
<cell x="8" y="0" />
</template>
@@ -445,14 +445,6 @@
<cell x="8" y="34" />
</template>
<template>
<cell x="9" y="32" />
<cell x="10" y="32" />
<cell x="10" y="33" />
<cell x="11" y="33" />
<cell x="11" y="32" />
<cell x="9" y="33" />
</template>
<template>
<cell x="11" y="34" />
</template>
<template>
@@ -835,9 +827,6 @@
<cell x="11" y="20" />
</template>
<template>
<cell x="12" y="19" />
</template>
<template>
<cell x="12" y="20" />
<cell x="12" y="21" />
<cell x="13" y="21" />
@@ -1008,18 +997,12 @@
<cell x="2" y="30" />
</template>
<template>
<cell x="9" y="30" />
</template>
<template>
<cell x="9" y="31" />
</template>
<template>
<cell x="10" y="31" />
</template>
<template>
<cell x="10" y="30" />
</template>
<template>
<cell x="11" y="30" />
</template>
<template>
@@ -1059,234 +1042,84 @@
<cell x="11" y="9" />
<cell x="10" y="9" />
</template>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
</terrain>
<template>
<cell x="9" y="30" />
<cell x="10" y="30" />
</template>
<template>
<cell x="9" y="32" />
<cell x="9" y="33" />
<cell x="10" y="33" />
<cell x="10" y="32" />
</template>
<template>
<cell x="14" y="33" />
<cell x="14" y="34" />
</template>
<template>
<cell x="15" y="34" />
<cell x="15" y="33" />
</template>
<template>
<cell x="18" y="33" />
<cell x="19" y="33" />
</template>
<template>
<cell x="19" y="34" />
<cell x="18" y="34" />
</template>
<template>
<cell x="17" y="34" />
<cell x="17" y="33" />
</template>
<template>
<cell x="12" y="22" />
<cell x="13" y="22" />
</template>
<template>
<cell x="14" y="22" />
<cell x="14" y="23" />
<cell x="14" y="24" />
<cell x="15" y="24" />
<cell x="15" y="23" />
<cell x="15" y="22" />
</template>
<template>
<cell x="16" y="22" />
<cell x="16" y="23" />
<cell x="16" y="24" />
<cell x="17" y="24" />
<cell x="17" y="23" />
<cell x="17" y="22" />
</template>
<template>
<cell x="18" y="22" />
<cell x="18" y="23" />
<cell x="19" y="23" />
<cell x="19" y="22" />
</template>
<template>
<cell x="18" y="24" />
<cell x="18" y="25" />
<cell x="19" y="25" />
<cell x="19" y="24" />
</template>
<template>
<cell x="12" y="19" />
</template>
<template>
<cell x="16" y="17" />
</template>
<template>
<cell x="12" y="34" />
<cell x="13" y="34" />
</template>
<template>
<cell x="12" y="33" />
<cell x="13" y="33" />
</template>
<template>
<cell x="12" y="32" />
<cell x="13" y="32" />
</template>
</tileset>