diff --git a/MapConverter/MapConverter.cs b/MapConverter/MapConverter.cs
index a78f9d6f27..dd7a96a7b3 100644
--- a/MapConverter/MapConverter.cs
+++ b/MapConverter/MapConverter.cs
@@ -126,7 +126,6 @@ namespace MapConverter
{Pair.New("cnc","WINTER"),Pair.New("win","winter.col")},
};
- TerrainColorSet terrainTypeColors;
TileSet tileset;
public void ConvertIniMap(string iniFile)
{
@@ -154,16 +153,17 @@ namespace MapConverter
UnpackRATileData(ReadPackedSection(file.GetSection("MapPack")));
UnpackRAOverlayData(ReadPackedSection(file.GetSection("OverlayPack")));
ReadRATrees(file);
- terrainTypeColors = new TerrainColorSet(fileMapping[Pair.New("ra",Map.Tileset)].Second);
- tileset = new TileSet("tileSet.til","templates.ini",fileMapping[Pair.New("ra",Map.Tileset)].First);
+ // TODO: Fixme
+ //tileset = new TileSet("tileSet.til","templates.ini",fileMapping[Pair.New("ra",Map.Tileset)].First);
}
else // CNC
{
UnpackCncTileData(FileSystem.Open(iniFile.Substring(0,iniFile.Length-4)+".bin"));
ReadCncOverlay(file);
ReadCncTrees(file);
- terrainTypeColors = new TerrainColorSet(fileMapping[Pair.New("cnc",Map.Tileset)].Second);
- tileset = new TileSet("tileSet.til","templates.ini",fileMapping[Pair.New("cnc",Map.Tileset)].First);
+
+ // TODO: Fixme
+ //tileset = new TileSet("tileSet.til","templates.ini",fileMapping[Pair.New("cnc",Map.Tileset)].First);
}
LoadActors(file, "STRUCTURES");
@@ -373,31 +373,12 @@ namespace MapConverter
{
return s.Length <= maxLength ? s : s.Substring(0,maxLength );
}
-
- public void SavePreviewImage(string filepath)
- {
- var xs = Map.TopLeft.X;
- var ys = Map.TopLeft.Y;
-
- var bitmap = new Bitmap(Map.Width, Map.Height);
- for (var x = 0; x < Map.Width; x++)
- for (var y = 0; y < Map.Height; y++)
- bitmap.SetPixel(x, y, terrainTypeColors.ColorForTerrainType(tileset.GetTerrainType(Map.MapTiles[x+xs, y+ys])));
-
- for (var x = 0; x < Map.Width; x++)
- for (var y = 0; y < Map.Height; y++)
- if (Map.MapResources[x+xs, y+ys].type > 0)
- bitmap.SetPixel(x, y, terrainTypeColors.ColorForTerrainType(TerrainType.Ore));
- bitmap.Save(filepath,ImageFormat.Png);
- }
-
public void Save(string filepath)
{
Directory.CreateDirectory(filepath);
Map.Package = new Folder(filepath);
- SavePreviewImage(Path.Combine(filepath,"preview.png"));
Map.Save(filepath);
}
}
diff --git a/OpenRA.Editor/Form1.cs b/OpenRA.Editor/Form1.cs
index 03f4805299..d761497e91 100644
--- a/OpenRA.Editor/Form1.cs
+++ b/OpenRA.Editor/Form1.cs
@@ -330,7 +330,7 @@ namespace OpenRA.Editor
surface1.Invalidate();
}
}
-
+
void SavePreviewImage(string filepath)
{
var Map = surface1.Map;
@@ -338,19 +338,15 @@ namespace OpenRA.Editor
var xs = Map.TopLeft.X;
var ys = Map.TopLeft.Y;
- var terrainTypeColors = new TerrainColorSet(colors);
-
var bitmap = new Bitmap(Map.Width, Map.Height);
for (var x = 0; x < Map.Width; x++)
for (var y = 0; y < Map.Height; y++)
- bitmap.SetPixel(x, y, terrainTypeColors.ColorForTerrainType(
- tileset.GetTerrainType(Map.MapTiles[x + xs, y + ys])));
+ bitmap.SetPixel(x, y, tileset.Terrain[tileset.GetTerrainType(Map.MapTiles[x + xs, y + ys])].Color);
for (var x = 0; x < Map.Width; x++)
for (var y = 0; y < Map.Height; y++)
if (Map.MapResources[x + xs, y + ys].type > 0)
- bitmap.SetPixel(x, y, terrainTypeColors.ColorForTerrainType(TerrainType.Ore));
-
+ bitmap.SetPixel(x, y, tileset.Terrain["Ore"].Color);
bitmap.Save(filepath, ImageFormat.Png);
}
diff --git a/OpenRA.FileFormats/FieldLoader.cs b/OpenRA.FileFormats/FieldLoader.cs
index d09b2c517f..e34fd0034e 100644
--- a/OpenRA.FileFormats/FieldLoader.cs
+++ b/OpenRA.FileFormats/FieldLoader.cs
@@ -69,13 +69,22 @@ namespace OpenRA.FileFormats
if (x != null) x = x.Trim();
if( fieldType == typeof( int ) )
return int.Parse( x );
+
+ else if( fieldType == typeof( ushort ) )
+ return ushort.Parse( x );
else if (fieldType == typeof(float))
return float.Parse(x.Replace("%","")) * (x.Contains( '%' ) ? 0.01f : 1f);
else if (fieldType == typeof(string))
return x;
-
+
+ else if (fieldType == typeof(System.Drawing.Color))
+ {
+ var parts = x.Split(',');
+ return System.Drawing.Color.FromArgb(int.Parse(parts[0]), int.Parse(parts[1]), int.Parse(parts[2]));
+ }
+
else if (fieldType.IsEnum)
return Enum.Parse(fieldType, x, true);
diff --git a/OpenRA.FileFormats/Map/TerrainColorSet.cs b/OpenRA.FileFormats/Map/TerrainColorSet.cs
deleted file mode 100644
index ddefc5424c..0000000000
--- a/OpenRA.FileFormats/Map/TerrainColorSet.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-#region Copyright & License Information
-/*
- * Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford.
- * This file is part of OpenRA.
- *
- * OpenRA is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * OpenRA is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with OpenRA. If not, see .
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-
-namespace OpenRA.FileFormats
-{
- public class TerrainColorSet
- {
- readonly Dictionary colors;
-
- public TerrainColorSet(string colorFile)
- {
- var lines = FileSystem.Open(colorFile).ReadAllLines()
- .Select(l => l.Trim())
- .Where(l => !l.StartsWith(";") && l.Length > 0);
-
- colors = lines.Select(l => l.Split('=')).ToDictionary(
- kv => (TerrainType)Enum.Parse(typeof(TerrainType), kv[0]),
- kv => ColorFromRgbString(kv[1]));
- }
-
- static Color ColorFromRgbString(string s)
- {
- var parts = s.Split(',');
- return Color.FromArgb(int.Parse(parts[0]), int.Parse(parts[1]), int.Parse(parts[2]));
- }
-
- public Color ColorForTerrainType(TerrainType type) { return colors[type]; }
- }
-}
diff --git a/OpenRA.FileFormats/Map/TileSet.cs b/OpenRA.FileFormats/Map/TileSet.cs
index ebcc1f01cd..6164a2603b 100644
--- a/OpenRA.FileFormats/Map/TileSet.cs
+++ b/OpenRA.FileFormats/Map/TileSet.cs
@@ -21,73 +21,78 @@
using System.Collections.Generic;
using System.Globalization;
using System.IO;
+using System.Drawing;
namespace OpenRA.FileFormats
{
+ public class TerrainTypeInfo
+ {
+ public string Type;
+ public bool Buildable = true;
+ public bool AcceptSmudge = true;
+ public Color Color;
+
+ public TerrainTypeInfo(MiniYaml my)
+ {
+ FieldLoader.Load(this, my);
+ }
+ }
+
+ public class TileTemplate
+ {
+ public ushort Id;
+ public string Image;
+ public int2 Size;
+ public string Bridge;
+ public float HP;
+ public bool PickAny;
+ public Dictionary Tiles = new Dictionary();
+
+ static List fields = new List() {"Id", "Image", "Size", "Bridge", "HP", "PickAny"};
+
+ public TileTemplate(Dictionary my)
+ {
+ FieldLoader.LoadFields(this, my, fields);
+ }
+ }
+
public class TileSet
{
- public readonly Dictionary tiles = new Dictionary();
-
- public readonly Walkability Walkability;
- public readonly Dictionary walk
- = new Dictionary();
-
- string NextLine( StreamReader reader )
+ public readonly Dictionary Terrain = new Dictionary();
+ public readonly Dictionary Tiles = new Dictionary();
+ public readonly Dictionary Templates = new Dictionary();
+
+ public TileSet( string tilesetFile, string suffix )
{
- string ret;
- do
+ var yaml = MiniYaml.FromFile(tilesetFile);
+
+ // TerrainTypes
+ foreach (var tt in yaml["Terrain"].Nodes)
{
- ret = reader.ReadLine();
- if( ret == null )
- return null;
- ret = ret.Trim();
+ var t = new TerrainTypeInfo(tt.Value);
+ Terrain.Add(t.Type, t);
}
- while( ret.Length == 0 || ret[ 0 ] == ';' );
- return ret;
- }
-
- public TileSet( string tilesetFile, string templatesFile, string suffix )
- {
- Walkability = new Walkability(templatesFile);
- char tileSetChar = char.ToUpperInvariant( suffix[ 0 ] );
- StreamReader tileIdFile = new StreamReader( FileSystem.Open(tilesetFile) );
-
- while( true )
+
+ // Templates
+ foreach (var tt in yaml["Templates"].Nodes)
{
- string tileSetStr = NextLine( tileIdFile );
- string countStr = NextLine( tileIdFile );
- string startStr = NextLine( tileIdFile );
- string pattern = NextLine( tileIdFile );
- if( tileSetStr == null || countStr == null || startStr == null || pattern == null )
- break;
-
- if( tileSetStr.IndexOf( tileSetChar.ToString() ) == -1 )
- continue;
-
- int count = int.Parse( countStr );
- int start = int.Parse( startStr, NumberStyles.HexNumber );
- for( int i = 0 ; i < count ; i++ )
+ // Info
+ var t = new TileTemplate(tt.Value.Nodes);
+ Templates.Add(t.Id, t);
+
+ // Artwork
+ using( Stream s = FileSystem.Open( t.Image + "." + suffix ) )
{
- string tilename = string.Format(pattern, i + 1);
-
- if (!walk.ContainsKey((ushort)(start + i)))
- walk.Add((ushort)(start + i), Walkability.GetTileTemplate(tilename));
-
- using( Stream s = FileSystem.Open( tilename + "." + suffix ) )
- {
- if( !tiles.ContainsKey( (ushort)( start + i ) ) )
- tiles.Add( (ushort)( start + i ), new Terrain( s ) );
- }
+ if( !Tiles.ContainsKey( t.Id ) )
+ Tiles.Add( t.Id, new Terrain( s ) );
}
}
-
- tileIdFile.Close();
}
-
+
public byte[] GetBytes(TileReference r)
{
Terrain tile;
- if( tiles.TryGetValue( r.type, out tile ) )
+ if( Tiles.TryGetValue( r.type, out tile ) )
return tile.TileBitmapBytes[ r.image ];
byte[] missingTile = new byte[ 24 * 24 ];
@@ -97,12 +102,13 @@ namespace OpenRA.FileFormats
return missingTile;
}
- public TerrainType GetTerrainType(TileReference r)
+ public string GetTerrainType(TileReference r)
{
- var tt = walk[r.type].TerrainType;
- TerrainType ret;
+ var tt = Templates[r.type].Tiles;
+ string ret;
if (!tt.TryGetValue(r.image, out ret))
- return 0;// Default zero (walkable)
+ return "Clear";// Default zero (walkable)
+
return ret;
}
}
diff --git a/OpenRA.FileFormats/Map/Walkability.cs b/OpenRA.FileFormats/Map/Walkability.cs
deleted file mode 100644
index 0ee8f7dc9e..0000000000
--- a/OpenRA.FileFormats/Map/Walkability.cs
+++ /dev/null
@@ -1,97 +0,0 @@
-#region Copyright & License Information
-/*
- * Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford.
- * This file is part of OpenRA.
- *
- * OpenRA is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * OpenRA is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with OpenRA. If not, see .
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace OpenRA.FileFormats
-{
- public enum TerrainType : byte
- {
- Clear = 0,
- Water = 1,
- Road = 2,
- Rock = 3,
- Tree = 4,
- River = 5,
- Rough = 6,
- Wall = 7,
- Beach = 8,
- Ore = 9,
- Special = 10,
- }
-
- public class TileTemplate
- {
- public int Index; // not valid for `interior` stuff. only used for bridges.
- public string Name;
- public int2 Size;
- public string Bridge;
- public float HP;
- public bool PickAny;
- public Dictionary TerrainType = new Dictionary();
- }
-
- public class Walkability
- {
- Dictionary templates
- = new Dictionary();
-
- public Walkability(string templatesFile)
- {
- var file = new IniFile( FileSystem.Open( templatesFile ) );
-
- foreach (var section in file.Sections)
- {
- var name = section.GetValue("Name", null).ToLowerInvariant();
- if (!section.Contains("width") || !section.Contains("height"))
- throw new InvalidOperationException("no width/height for template `{0}`".F(name));
-
- var tile = new TileTemplate
- {
- Name = name,
- Size = new int2(
- int.Parse(section.GetValue("width", "--")),
- int.Parse(section.GetValue("height", "--"))),
- TerrainType = section
- .Where(p => p.Key.StartsWith("tiletype"))
- .ToDictionary(
- p => int.Parse(p.Key.Substring(8)),
- p => (TerrainType)Enum.Parse(typeof(TerrainType),p.Value)),
-
- Bridge = section.GetValue("bridge", null),
- HP = float.Parse(section.GetValue("hp", "0")),
- PickAny = (bool)FieldLoader.GetValue(typeof(bool), section.GetValue("pickany", "no")),
- };
-
- tile.Index = -1;
- int.TryParse(section.Name.Substring(3), out tile.Index);
-
- templates[tile.Name] = tile;
- }
- }
-
- public TileTemplate GetTileTemplate(string terrainName)
- {
- return templates[terrainName];
- }
- }
-}
diff --git a/OpenRA.FileFormats/OpenRA.FileFormats.csproj b/OpenRA.FileFormats/OpenRA.FileFormats.csproj
index 2dd13a7973..4a5db0b749 100644
--- a/OpenRA.FileFormats/OpenRA.FileFormats.csproj
+++ b/OpenRA.FileFormats/OpenRA.FileFormats.csproj
@@ -1,4 +1,4 @@
-
+
Debug
@@ -80,12 +80,10 @@
-
-
diff --git a/OpenRA.Game/Combat.cs b/OpenRA.Game/Combat.cs
index ced800b60e..78175ce07e 100644
--- a/OpenRA.Game/Combat.cs
+++ b/OpenRA.Game/Combat.cs
@@ -48,7 +48,8 @@ namespace OpenRA
if (!world.Map.IsInMap(targetTile))
return;
- var isWater = world.GetTerrainType(targetTile) == TerrainType.Water;
+ // Todo: Unhardcode "Water" terraintype reference
+ var isWater = world.GetTerrainType(targetTile) == "Water";
if (warhead.Explosion != 0)
world.AddFrameEndTask(
diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs
index 055a098243..53aa0ac218 100644
--- a/OpenRA.Game/Game.cs
+++ b/OpenRA.Game/Game.cs
@@ -660,65 +660,6 @@ namespace OpenRA
file.Write(id);
file.Flush();
file.Close();
- }
-
- public static void ConvertTileset(OpenRA.FileFormats.TileSet Tileset, OpenRA.Traits.TheaterInfo Info, string outFile)
- {
- List SimpleFields = new List() {
- "Name", "Size", "PickAny", "Bridge", "HP"
- };
- OpenRA.FileFormats.TerrainColorSet colors = new TerrainColorSet(Info.MapColors);
-
- Dictionary root = new Dictionary();
- Dictionary terrainYaml = new Dictionary();
-
- for (TerrainType t = TerrainType.Clear; t <= TerrainType.Special; t++)
- {
- Dictionary nodeYaml = new Dictionary();
- string type = Enum.GetName( typeof(TerrainType), t);
- nodeYaml.Add("Type", new MiniYaml(type, null));
- nodeYaml.Add("Buildable", new MiniYaml(Rules.TerrainTypes[t].Buildable.ToString(), null));
- nodeYaml.Add("AcceptSmudge", new MiniYaml(Rules.TerrainTypes[t].AcceptSmudge.ToString(), null));
-
- var color = colors.ColorForTerrainType(t);
- nodeYaml.Add("Color", new MiniYaml("{0}, {1}, {2}".F(color.R, color.G, color.B), null));
- terrainYaml.Add("TerrainType@{0}".F(type), new MiniYaml(null, nodeYaml));
- }
-
- root.Add("Terrain", new MiniYaml(null, terrainYaml));
-
- Dictionary templateYaml = new Dictionary();
- foreach(var w in Tileset.walk)
- {
- Dictionary nodeYaml = new Dictionary();
- nodeYaml.Add("Id", new MiniYaml(w.Key.ToString(), null));
-
- foreach (var field in SimpleFields)
- {
- var save = field;
- System.Reflection.FieldInfo f = w.Value.GetType().GetField(field);
- if (f.GetValue(w.Value) == null) continue;
-
- if (field == "Name")
- save = "Image";
-
- if (field == "HP" && w.Value.HP == 0)
- continue;
-
- if (field == "HP")
- save = "Strength";
-
- if (field == "PickAny" && !w.Value.PickAny)
- continue;
-
- nodeYaml.Add(save, new MiniYaml(FieldSaver.FormatValue(w.Value, f), null));
- }
-
- nodeYaml.Add("Tiles", MiniYaml.FromDictionary(w.Value.TerrainType));
- templateYaml.Add("Template@{0}".F(w.Key), new MiniYaml(null, nodeYaml));
- }
- root.Add("Templates", new MiniYaml(null, templateYaml));
- root.WriteToFile(outFile);
}
}
}
diff --git a/OpenRA.Game/GameRules/Rules.cs b/OpenRA.Game/GameRules/Rules.cs
index 3f036380d1..6ceb192b9e 100755
--- a/OpenRA.Game/GameRules/Rules.cs
+++ b/OpenRA.Game/GameRules/Rules.cs
@@ -34,7 +34,6 @@ namespace OpenRA
public static Dictionary Weapons;
public static Dictionary Voices;
public static Dictionary Music;
- public static Dictionary TerrainTypes;
public static void LoadRules(Manifest m, Map map)
{
@@ -48,9 +47,6 @@ namespace OpenRA
Weapons = LoadYamlRules(m.Weapons, map.Weapons, (k, _) => new WeaponInfo(k.Key.ToLowerInvariant(), k.Value));
Voices = LoadYamlRules(m.Voices, map.Voices, (k, _) => new VoiceInfo(k.Value));
Music = LoadYamlRules(m.Music, map.Music, (k, _) => new MusicInfo(k.Value));
- TerrainTypes = LoadYamlRules(m.Terrain, map.Terrain, (k, _) => new TerrainCost(k.Value))
- .ToDictionary(kv => (TerrainType)Enum.Parse(typeof(TerrainType), kv.Key, true), kv => kv.Value);
-
TechTree = new TechTree();
}
diff --git a/OpenRA.Game/GameRules/TerrainCost.cs b/OpenRA.Game/GameRules/TerrainCost.cs
deleted file mode 100644
index 7e91b44df6..0000000000
--- a/OpenRA.Game/GameRules/TerrainCost.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-#region Copyright & License Information
-/*
- * Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford.
- * This file is part of OpenRA.
- *
- * OpenRA is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * OpenRA is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with OpenRA. If not, see .
- */
-#endregion
-
-using System;
-using OpenRA.FileFormats;
-using OpenRA.Graphics;
-
-namespace OpenRA.GameRules
-{
- public class TerrainCost
- {
- public readonly bool Buildable = true;
- public readonly bool AcceptSmudge = true;
-
- public TerrainCost(MiniYaml y) { FieldLoader.Load(this, y); }
- }
-}
diff --git a/OpenRA.Game/Graphics/Minimap.cs b/OpenRA.Game/Graphics/Minimap.cs
index d7c634fba2..218c75f834 100644
--- a/OpenRA.Game/Graphics/Minimap.cs
+++ b/OpenRA.Game/Graphics/Minimap.cs
@@ -72,12 +72,6 @@ namespace OpenRA.Graphics
return new Rectangle(m.TopLeft.X - dw, m.TopLeft.Y - dh, size, size);
}
- static Cache terrainTypeColors = new Cache(
- theater =>
- {
- return new TerrainColorSet(Rules.Info["world"].Traits.WithInterface().FirstOrDefault(t => t.Theater == theater).MapColors);
- });
-
static Color shroudColor;
public void InvalidateOre() { oreLayer = null; }
@@ -85,11 +79,15 @@ namespace OpenRA.Graphics
public static Bitmap RenderTerrainBitmap(Map map, TileSet tileset)
{
var terrain = new Bitmap(map.MapSize.X, map.MapSize.Y);
+
for (var x = 0; x < map.MapSize.X; x++)
for (var y = 0; y < map.MapSize.Y; y++)
+ {
+ var type = tileset.GetTerrainType(map.MapTiles[x, y]);
terrain.SetPixel(x, y, map.IsInMap(x, y)
- ? Color.FromArgb(alpha, terrainTypeColors[map.Theater].ColorForTerrainType(tileset.GetTerrainType(map.MapTiles[x, y])))
+ ? Color.FromArgb(alpha, tileset.Terrain[type].Color)
: shroudColor);
+ }
return terrain;
}
@@ -102,11 +100,14 @@ namespace OpenRA.Graphics
{
var res = world.WorldActor.traits.Get();
+ // This is an ugly hack
+ Color oreColor = world.TileSet.Terrain["Ore"].Color;
+
oreLayer = new Bitmap(terrain);
for (var x = world.Map.TopLeft.X; x < world.Map.BottomRight.X; x++)
for (var y = world.Map.TopLeft.Y; y < world.Map.BottomRight.Y; y++)
if (res.GetResource(new int2(x,y)) != null)
- oreLayer.SetPixel(x, y, Color.FromArgb(alpha, terrainTypeColors[world.Map.Theater].ColorForTerrainType(TerrainType.Ore)));
+ oreLayer.SetPixel(x, y, Color.FromArgb(alpha, oreColor));
}
if (!world.GameHasStarted || !world.Queries.OwnedBy[world.LocalPlayer].WithTrait().Any())
@@ -133,9 +134,12 @@ namespace OpenRA.Graphics
continue;
}
var b = world.WorldActor.traits.Get().GetBuildingAt(new int2(x, y));
+
+ // This is an even worse hack than the ore!
+ var treeColor = world.TileSet.Terrain["tree"].Color;
if (b != null)
*(c + (y * bitmapData.Stride >> 2) + x) =
- (b.Owner != null ? Color.FromArgb(alpha, b.Owner.Color) : Color.FromArgb(alpha, terrainTypeColors[world.Map.Theater].ColorForTerrainType(TerrainType.Tree))).ToArgb();
+ (b.Owner != null ? Color.FromArgb(alpha, b.Owner.Color) : Color.FromArgb(alpha, treeColor)).ToArgb();
}
}
diff --git a/OpenRA.Game/OpenRA.Game.csproj b/OpenRA.Game/OpenRA.Game.csproj
index b81e6480f5..841980b6f7 100755
--- a/OpenRA.Game/OpenRA.Game.csproj
+++ b/OpenRA.Game/OpenRA.Game.csproj
@@ -177,7 +177,6 @@
-
diff --git a/OpenRA.Game/Traits/Mobile.cs b/OpenRA.Game/Traits/Mobile.cs
index 2cdab4a6b5..962c721fda 100644
--- a/OpenRA.Game/Traits/Mobile.cs
+++ b/OpenRA.Game/Traits/Mobile.cs
@@ -28,7 +28,7 @@ namespace OpenRA.Traits
{
public class MobileInfo : ITraitInfo, ITraitPrerequisite
{
- public readonly TerrainType[] TerrainTypes;
+ public readonly string[] TerrainTypes;
public readonly float[] TerrainSpeeds;
public readonly string[] Crushes;
public readonly int WaitAverage = 60;
@@ -41,8 +41,8 @@ namespace OpenRA.Traits
{
public readonly Actor self;
public readonly MobileInfo Info;
- public readonly Dictionary TerrainCost;
- public readonly Dictionary TerrainSpeed;
+ public readonly Dictionary TerrainCost;
+ public readonly Dictionary TerrainSpeed;
[Sync]
int2 __fromCell, __toCell;
@@ -73,8 +73,8 @@ namespace OpenRA.Traits
this.__fromCell = this.__toCell = init.location;
AddInfluence();
- TerrainCost = new Dictionary();
- TerrainSpeed = new Dictionary();
+ TerrainCost = new Dictionary();
+ TerrainSpeed = new Dictionary();
if (info.TerrainTypes.Count() != info.TerrainSpeeds.Count())
throw new InvalidOperationException("Mobile TerrainType/TerrainSpeed length missmatch");
@@ -196,7 +196,7 @@ namespace OpenRA.Traits
.FirstOrDefault();
// Todo: Hack this until i finish migrating TerrainType to a string
- var type = (customTerrain != null) ? (TerrainType)Enum.Parse(typeof(TerrainType), customTerrain) : self.World.TileSet.GetTerrainType(self.World.Map.MapTiles[cell.X, cell.Y]);
+ var type = (customTerrain != null) ? customTerrain : self.World.GetTerrainType(cell);
var additionalCost = self.World.WorldActor.traits.WithInterface()
.Select( t => t.GetTerrainCost(cell, self) ).Sum();
@@ -216,7 +216,7 @@ namespace OpenRA.Traits
.FirstOrDefault();
// Todo: Hack this until i finish migrating TerrainType to a string
- var type = (customTerrain != null) ? (TerrainType)Enum.Parse(typeof(TerrainType), customTerrain) : self.World.TileSet.GetTerrainType(self.World.Map.MapTiles[cell.X, cell.Y]);
+ var type = (customTerrain != null) ? customTerrain : self.World.GetTerrainType(cell);
var modifier = self.traits
.WithInterface()
diff --git a/OpenRA.Game/Traits/World/SmudgeLayer.cs b/OpenRA.Game/Traits/World/SmudgeLayer.cs
index 12bd70105d..c76667f325 100644
--- a/OpenRA.Game/Traits/World/SmudgeLayer.cs
+++ b/OpenRA.Game/Traits/World/SmudgeLayer.cs
@@ -62,7 +62,7 @@ namespace OpenRA.Traits
public void AddSmudge(int2 loc)
{
- if (!Rules.TerrainTypes[world.GetTerrainType(loc)].AcceptSmudge)
+ if (!world.GetTerrainInfo(loc).AcceptSmudge)
return;
// No smudge; create a new one
diff --git a/OpenRA.Game/Traits/World/Theater.cs b/OpenRA.Game/Traits/World/Theater.cs
index 7785d56f6d..2fc31dbb36 100644
--- a/OpenRA.Game/Traits/World/Theater.cs
+++ b/OpenRA.Game/Traits/World/Theater.cs
@@ -26,8 +26,6 @@ namespace OpenRA.Traits
public readonly string Theater = null;
public readonly string Suffix = null;
public readonly string Tileset = null;
- public readonly string Templates = null;
- public readonly string MapColors = null;
}
public class Theater {}
diff --git a/OpenRA.Game/World.cs b/OpenRA.Game/World.cs
index afb31e4bc7..a0a5c44311 100644
--- a/OpenRA.Game/World.cs
+++ b/OpenRA.Game/World.cs
@@ -80,9 +80,8 @@ namespace OpenRA
var theaterInfo = Rules.Info["world"].Traits.WithInterface()
.FirstOrDefault(t => t.Theater == Map.Theater);
- TileSet = new TileSet(theaterInfo.Tileset, theaterInfo.Templates, theaterInfo.Suffix);
+ TileSet = new TileSet(theaterInfo.Tileset, theaterInfo.Suffix);
- Game.ConvertTileset(TileSet, theaterInfo, "tileset-"+theaterInfo.Suffix+".yaml");
SpriteSheetBuilder.Initialize( Map );
Timer.Time( "Tileset: {0}" );
diff --git a/OpenRA.Game/WorldUtils.cs b/OpenRA.Game/WorldUtils.cs
index ad023ae3e6..8faf5b3283 100755
--- a/OpenRA.Game/WorldUtils.cs
+++ b/OpenRA.Game/WorldUtils.cs
@@ -41,12 +41,11 @@ namespace OpenRA
if (world.WorldActor.traits.Get().GetBuildingAt(a) != null) return false;
if (world.WorldActor.traits.Get().GetUnitsAt(a).Any(b => b != toIgnore)) return false;
+ // Todo: Unhardcode "Water" terraintype reference
if (waterBound)
- return world.Map.IsInMap(a.X,a.Y) && GetTerrainType(world,a) == TerrainType.Water;
+ return world.Map.IsInMap(a.X,a.Y) && GetTerrainType(world,a) == "Water";
- return world.Map.IsInMap(a.X, a.Y) &&
- Rules.TerrainTypes[world.TileSet.GetTerrainType(world.Map.MapTiles[a.X, a.Y])]
- .Buildable;
+ return world.Map.IsInMap(a.X, a.Y) && world.GetTerrainInfo(a).Buildable;
}
public static IEnumerable FindUnitsAtMouse(this World world, int2 mouseLocation)
@@ -105,9 +104,14 @@ namespace OpenRA
.FirstOrDefault();
}
- public static TerrainType GetTerrainType(this World world, int2 cell)
+ public static string GetTerrainType(this World world, int2 cell)
{
- return (TerrainType)world.TileSet.GetTerrainType(world.Map.MapTiles[cell.X, cell.Y]);
+ return world.TileSet.GetTerrainType(world.Map.MapTiles[cell.X, cell.Y]);
+ }
+
+ public static TerrainTypeInfo GetTerrainInfo(this World world, int2 cell)
+ {
+ return world.TileSet.Terrain[world.GetTerrainType(cell)];
}
public static bool CanPlaceBuilding(this World world, string name, BuildingInfo building, int2 topLeft, Actor toIgnore)
diff --git a/OpenRA.Mods.RA/Bridge.cs b/OpenRA.Mods.RA/Bridge.cs
index fb2838f74a..e2b60bd0be 100644
--- a/OpenRA.Mods.RA/Bridge.cs
+++ b/OpenRA.Mods.RA/Bridge.cs
@@ -39,7 +39,7 @@ namespace OpenRA.Mods.RA
public object Create(ActorInitializer init) { return new Bridge(init.self); }
}
- class Bridge: IRender, INotifyDamage
+ class Bridge //: IRender, INotifyDamage
{
Dictionary Tiles;
List> TileSprites = new List>();
@@ -49,7 +49,7 @@ namespace OpenRA.Mods.RA
Bridge northNeighbour, southNeighbour;
public Bridge(Actor self) { this.self = self; self.RemoveOnDeath = false; }
-
+
static string cachedTileset;
static Cache, Sprite> sprites;
@@ -80,6 +80,7 @@ namespace OpenRA.Mods.RA
public int StateFromTemplate(TileTemplate t)
{
+ /*
var info = self.Info.Traits.Get();
if (info.UseAlternateNames)
{
@@ -89,19 +90,23 @@ namespace OpenRA.Mods.RA
}
else
return t.Name[t.Name.Length - 1] - 'a';
+ */
+ return 0;
}
public string NameFromState(TileTemplate t, int state)
{
- var info = self.Info.Traits.Get();
+ /*var info = self.Info.Traits.Get();
if (info.UseAlternateNames)
return t.Bridge + new[] { "", "h", "d" }[state];
else
- return t.Bridge + (char)(state + 'a');
+ return t.Bridge + (char)(state + 'a');*/
+ return "";
}
public void SetTiles(World world, TileTemplate template, Dictionary replacedTiles)
{
+ /*
Tiles = replacedTiles;
state = StateFromTemplate(template);
@@ -125,12 +130,14 @@ namespace OpenRA.Mods.RA
}
self.Health = (int)(self.GetMaxHP() * template.HP);
+ */
}
public string GetTerrainType(int2 cell)
{
+ return "";
// Ugly hack until terraintypes are converted from enums
- return Enum.GetName( typeof(TerrainType), Templates[state].TerrainType[Tiles[cell]]);
+ //return Enum.GetName( typeof(TerrainType), Templates[state].TerrainType[Tiles[cell]]);
}
static bool IsIntact(Bridge b)
diff --git a/OpenRA.Mods.RA/BridgeLayer.cs b/OpenRA.Mods.RA/BridgeLayer.cs
index 713e1a6982..3205bd7f02 100644
--- a/OpenRA.Mods.RA/BridgeLayer.cs
+++ b/OpenRA.Mods.RA/BridgeLayer.cs
@@ -49,7 +49,7 @@ namespace OpenRA.Mods.RA
void ConvertBridgeToActor(World w, int i, int j)
{
Log.Write("debug", "Converting bridge at {0} {1}", i, j);
-
+ /*
var tile = w.Map.MapTiles[i, j].type;
var image = w.Map.MapTiles[i, j].image;
var template = w.TileSet.walk[tile];
@@ -88,18 +88,20 @@ namespace OpenRA.Mods.RA
br.SetTiles(w, template, replacedTiles);
}
+ */
}
public string GetTerrainType(int2 cell)
{
- if (bridges[ cell.X, cell.Y ] != null)
- return bridges[ cell.X, cell.Y ].GetTerrainType(cell);
+ /*if (bridges[ cell.X, cell.Y ] != null)
+ return bridges[ cell.X, cell.Y ].GetTerrainType(cell);*/
return null;
}
static bool IsBridge(World w, ushort t)
{
- return w.TileSet.walk[t].Bridge != null;
+ return false;
+ //return w.TileSet.walk[t].Bridge != null;
}
public void WorldLoaded(World w)
diff --git a/OpenRA.Mods.RA/Crate.cs b/OpenRA.Mods.RA/Crate.cs
index 7b798e15f2..4d9aac39e9 100644
--- a/OpenRA.Mods.RA/Crate.cs
+++ b/OpenRA.Mods.RA/Crate.cs
@@ -91,7 +91,7 @@ namespace OpenRA.Mods.RA
if (++ticks >= self.Info.Traits.Get().Lifetime * 25)
self.World.AddFrameEndTask(w => w.Remove(self));
- var seq = self.World.GetTerrainType(cell) == TerrainType.Water ? "water" : "idle";
+ var seq = self.World.GetTerrainType(cell) == "Water" ? "water" : "idle";
if (seq != self.traits.Get().anim.CurrentSequence.Name)
self.traits.Get().anim.PlayRepeating(seq);
}
diff --git a/OpenRA.Mods.RA/CrateDrop.cs b/OpenRA.Mods.RA/CrateDrop.cs
index 433fe5349d..63b3f24d41 100644
--- a/OpenRA.Mods.RA/CrateDrop.cs
+++ b/OpenRA.Mods.RA/CrateDrop.cs
@@ -70,10 +70,8 @@ namespace OpenRA.Mods.RA
var p = self.World.ChooseRandomCell(self.World.SharedRandom);
// Is this valid terrain?
- // Ugly hack until terraintypes are converted from enums
var terrainType = self.World.TileSet.GetTerrainType(self.World.Map.MapTiles[p.X, p.Y]);
- var terrain = Enum.GetName( typeof(TerrainType), terrainType);
- if (!(inWater ? info.ValidWater : info.ValidGround).Contains(terrain)) continue;
+ if (!(inWater ? info.ValidWater : info.ValidGround).Contains(terrainType)) continue;
// Don't drop on any actors
if (self.World.WorldActor.traits.Get().GetBuildingAt(p) != null) continue;
diff --git a/OpenRA.Mods.RA/CrateSpawner.cs b/OpenRA.Mods.RA/CrateSpawner.cs
index 6f8faf44ef..7f722d2ee3 100644
--- a/OpenRA.Mods.RA/CrateSpawner.cs
+++ b/OpenRA.Mods.RA/CrateSpawner.cs
@@ -70,10 +70,8 @@ namespace OpenRA.Mods.RA
var p = self.World.ChooseRandomCell(self.World.SharedRandom);
// Is this valid terrain?
- // Ugly hack until terraintypes are converted from enums
var terrainType = self.World.TileSet.GetTerrainType(self.World.Map.MapTiles[p.X, p.Y]);
- var terrain = Enum.GetName( typeof(TerrainType), terrainType);
- if (!(inWater ? info.ValidWater : info.ValidGround).Contains(terrain)) continue;
+ if (!(inWater ? info.ValidWater : info.ValidGround).Contains(terrainType)) continue;
// Don't spawn on any actors
if (self.World.WorldActor.traits.Get().GetBuildingAt(p) != null) continue;
diff --git a/mods/cnc/desert.col b/mods/cnc/desert.col
deleted file mode 100644
index 456a2042e9..0000000000
--- a/mods/cnc/desert.col
+++ /dev/null
@@ -1,13 +0,0 @@
-; Minimap colors for cnc DESERT theater
-; Format: terraintype=R,G,B
-Clear=134,95,69
-Water=93,165,206
-Road=168,123,83
-Rock=116,90,63
-Tree=28,32,36
-River=111,132,139
-Rough=68,68,60
-Wall=208,192,160
-Beach=176,156,120
-Ore=161,226,28
-Special=124,124,124
\ No newline at end of file
diff --git a/mods/cnc/mod.yaml b/mods/cnc/mod.yaml
index 250389a823..d93d3b2590 100644
--- a/mods/cnc/mod.yaml
+++ b/mods/cnc/mod.yaml
@@ -48,8 +48,5 @@ Weapons:
Voices:
mods/cnc/voices.yaml:
-
-Terrain:
- mods/cnc/terrain.yaml
ShellmapUid:a0e5a8a3cb4e7fb82a08e8d768c32d480f0ec152
diff --git a/mods/cnc/system.yaml b/mods/cnc/system.yaml
index c02c50c781..4c379bf8f1 100644
--- a/mods/cnc/system.yaml
+++ b/mods/cnc/system.yaml
@@ -54,23 +54,17 @@ World:
Name:Desert
Theater:DESERT
Suffix:des
- Templates:templates.ini
- Tileset:tileSet.til
- MapColors:desert.col
+ Tileset:mods/cnc/tileset-des.yaml
Theater@WINTER:
Name:Winter
Theater:WINTER
Suffix:win
- Templates:templates.ini
- Tileset:tileSet.til
- MapColors:winter.col
+ Tileset:mods/cnc/tileset-win.yaml
Theater@TEMPERAT:
Name:Temperate
Theater:TEMPERAT
Suffix:tem
- Templates:templates.ini
- Tileset:tileSet.til
- MapColors:temperat.col
+ Tileset:mods/cnc/tileset-tem.yaml
PaletteFromFile@terrain_desert:
Name: terrain
Theater: desert
diff --git a/mods/cnc/temperat.col b/mods/cnc/temperat.col
deleted file mode 100644
index 7f8717c545..0000000000
--- a/mods/cnc/temperat.col
+++ /dev/null
@@ -1,13 +0,0 @@
-; Minimap colors for cnc TEMPERAT theater
-; Format: terraintype,R,G,B
-Clear=40,68,40
-Water=92,116,164
-Road=88,116,116
-Rock=68,68,60
-Tree=28,32,36
-River=92,140,180
-Rough=68,68,60
-Wall=208,192,160
-Beach=176,156,120
-Ore=161,226,28
-Special=124,124,124
\ No newline at end of file
diff --git a/mods/cnc/templates.ini b/mods/cnc/templates.ini
deleted file mode 100644
index d7b3fda9e4..0000000000
--- a/mods/cnc/templates.ini
+++ /dev/null
@@ -1,2069 +0,0 @@
-;tiletype%d can be:
-; 0, land (default)
-; 1, water
-; 2, road
-; 3, rock
-; 4, tree
-; 5, water(blocked)
-; 7, other non passable terrain thing
-
-[TEM0]
-Name=CLEAR1
-pickany=yes
-width=1
-height=1
-tiletype0=0
-
-[TEM1]
-Name=W1
-width=1
-height=1
-tiletype0=1
-
-[TEM2]
-Name=W2
-width=2
-height=2
-tiletype0=1
-tiletype1=1
-tiletype2=1
-tiletype3=1
-
-[TEM3]
-Name=SH1
-width=3
-height=3
-tiletype3=5
-tiletype6=1
-tiletype7=1
-tiletype8=1
-
-[TEM4]
-Name=SH2
-width=3
-height=3
-tiletype3=5
-tiletype4=5
-tiletype5=5
-tiletype6=5
-tiletype7=1
-tiletype8=1
-
-[TEM5]
-Name=SH3
-width=1
-height=1
-tiletype0=5
-
-[TEM6]
-Name=SH4
-width=2
-height=1
-tiletype0=5
-tiletype1=5
-
-[TEM7]
-Name=SH5
-width=3
-height=3
-tiletype3=5
-tiletype4=5
-tiletype6=1
-tiletype7=1
-tiletype8=1
-
-[TEM8]
-Name=SH11
-width=3
-height=3
-tiletype1=5
-tiletype2=3
-tiletype4=5
-tiletype5=5
-tiletype6=1
-tiletype7=1
-tiletype8=1
-
-[TEM9]
-Name=SH12
-width=3
-height=3
-tiletype0=1
-tiletype1=1
-tiletype2=1
-tiletype3=3
-tiletype6=4
-tiletype7=4
-
-[TEM10]
-Name=SH13
-width=3
-height=3
-tiletype0=1
-tiletype1=1
-tiletype2=1
-tiletype3=1
-tiletype5=3
-tiletype7=3
-tiletype8=2
-
-[TEM11]
-Name=SH14
-width=3
-height=3
-tiletype0=5
-tiletype1=5
-tiletype2=5
-tiletype3=5
-tiletype4=5
-tiletype5=5
-tiletype8=4
-
-[TEM12]
-Name=SH15
-width=3
-height=3
-tiletype1=5
-tiletype2=5
-tiletype3=5
-tiletype4=3
-tiletype5=3
-tiletype7=4
-
-[TEM13]
-Name=S01
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype3=3
-
-[TEM14]
-Name=S02
-width=2
-height=3
-tiletype0=3
-tiletype2=3
-tiletype3=3
-tiletype5=3
-
-[TEM15]
-Name=S03
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM16]
-Name=S04
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM17]
-Name=S05
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM18]
-Name=S06
-width=2
-height=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-tiletype4=3
-
-[TEM19]
-Name=S07
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM20]
-Name=S08
-width=2
-height=2
-tiletype0=3
-tiletype2=3
-tiletype3=3
-
-[TEM21]
-Name=S09
-width=3
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype4=3
-tiletype5=3
-
-[TEM22]
-Name=S10
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM23]
-Name=S11
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM24]
-Name=S12
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM25]
-Name=S13
-width=3
-height=2
-tiletype1=3
-tiletype3=3
-tiletype4=3
-
-[TEM26]
-Name=S14
-width=2
-height=2
-tiletype0=3
-
-[TEM27]
-Name=S15
-width=2
-height=2
-tiletype0=3
-tiletype2=3
-tiletype3=3
-
-[TEM28]
-Name=S16
-width=2
-height=3
-tiletype2=3
-tiletype3=3
-tiletype5=3
-
-[TEM29]
-Name=S17
-width=2
-height=2
-tiletype2=3
-tiletype3=3
-
-[TEM30]
-Name=S18
-width=2
-height=2
-tiletype2=3
-tiletype3=3
-
-[TEM31]
-Name=S19
-width=2
-height=2
-tiletype2=3
-tiletype3=3
-
-[TEM32]
-Name=S20
-width=2
-height=3
-tiletype2=3
-tiletype3=3
-tiletype4=3
-
-[TEM33]
-Name=S21
-width=1
-height=2
-tiletype0=3
-tiletype1=3
-
-[TEM34]
-Name=S22
-width=2
-height=1
-tiletype0=3
-tiletype1=3
-
-[TEM35]
-Name=S23
-width=3
-height=2
-tiletype0=3
-tiletype1=3
-tiletype3=3
-tiletype4=3
-
-[TEM36]
-Name=S24
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM37]
-Name=S25
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM38]
-Name=S26
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM39]
-Name=S27
-width=3
-height=2
-tiletype0=3
-tiletype1=3
-tiletype4=3
-tiletype5=3
-
-[TEM40]
-Name=S28
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype3=3
-
-[TEM41]
-Name=S29
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM42]
-Name=S30
-width=2
-height=2
-tiletype0=3
-tiletype2=3
-tiletype3=3
-
-[TEM43]
-Name=S31
-width=2
-height=2
-tiletype2=3
-tiletype3=3
-
-[TEM44]
-Name=S32
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-
-[TEM45]
-Name=S33
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM46]
-Name=S34
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM47]
-Name=S35
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM48]
-Name=S36
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM49]
-Name=S37
-width=2
-height=2
-tiletype0=3
-tiletype2=3
-tiletype3=3
-
-[TEM50]
-Name=S38
-width=2
-height=2
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-
-[TEM51]
-Name=SH32
-width=3
-height=3
-tiletype0=1
-tiletype3=5
-
-[TEM52]
-Name=SH33
-width=3
-height=3
-tiletype2=5
-
-[TEM53]
-Name=SH20
-width=4
-height=1
-tiletype0=5
-tiletype1=3
-tiletype2=3
-tiletype3=5
-
-[TEM54]
-Name=SH21
-width=3
-height=1
-tiletype0=3
-tiletype2=5
-
-[TEM55]
-Name=SH22
-width=6
-height=2
-tiletype1=3
-tiletype2=3
-tiletype6=5
-tiletype7=1
-tiletype8=1
-tiletype9=3
-tiletype10=5
-tiletype11=5
-
-[TEM56]
-Name=SH23
-width=2
-height=2
-tiletype2=5
-tiletype3=5
-
-[TEM57]
-Name=BR1
-width=1
-height=1
-tiletype0=4
-
-[TEM58]
-Name=BR2
-width=1
-height=1
-tiletype0=4
-
-[TEM59]
-Name=BR3
-width=1
-height=1
-tiletype0=4
-
-[TEM60]
-Name=BR4
-width=1
-height=1
-tiletype0=4
-
-[TEM61]
-Name=BR5
-width=1
-height=1
-tiletype0=7
-
-[TEM62]
-Name=BR6
-width=2
-height=2
-tiletype0=4
-tiletype1=4
-tiletype2=4
-
-[TEM63]
-Name=BR7
-width=2
-height=2
-tiletype0=4
-tiletype1=4
-tiletype3=4
-
-[TEM64]
-Name=BR8
-width=3
-height=2
-tiletype0=4
-tiletype1=4
-tiletype4=4
-tiletype5=4
-
-[TEM65]
-Name=BR9
-width=3
-height=2
-tiletype0=4
-tiletype1=4
-tiletype2=4
-tiletype3=4
-tiletype4=4
-tiletype5=4
-
-[TEM66]
-Name=BR10
-width=2
-height=1
-tiletype0=7
-tiletype1=7
-
-[TEM67]
-Name=P01
-width=1
-height=1
-tiletype0=7
-
-[TEM68]
-Name=P02
-width=1
-height=1
-tiletype0=7
-
-[TEM69]
-Name=P03
-width=1
-height=1
-tiletype0=7
-
-[TEM70]
-Name=P04
-width=1
-height=1
-tiletype0=7
-
-[TEM71]
-Name=P05
-width=2
-height=2
-
-[TEM72]
-Name=P06
-width=6
-height=4
-
-[TEM73]
-Name=P07
-width=4
-height=2
-
-[TEM74]
-Name=P08
-width=3
-height=2
-
-[TEM75]
-Name=SH16
-width=3
-height=2
-tiletype0=5
-tiletype1=1
-tiletype2=5
-tiletype3=4
-tiletype4=5
-tiletype5=5
-
-[TEM76]
-Name=SH17
-width=2
-height=2
-tiletype0=1
-tiletype1=1
-tiletype2=1
-tiletype3=1
-
-[TEM77]
-Name=SH18
-width=2
-height=2
-tiletype0=1
-tiletype1=1
-tiletype2=1
-tiletype3=1
-
-[TEM78]
-Name=SH19
-width=3
-height=2
-tiletype1=3
-tiletype3=5
-tiletype4=3
-tiletype5=5
-
-[TEM79]
-Name=P13
-width=3
-height=2
-tiletype0=7
-tiletype1=7
-tiletype2=7
-tiletype3=7
-tiletype5=7
-
-[TEM80]
-Name=P14
-width=2
-height=1
-tiletype0=7
-tiletype1=7
-
-[TEM81]
-Name=P15
-width=4
-height=2
-
-[TEM82]
-Name=B1
-width=1
-height=1
-tiletype0=3
-
-[TEM83]
-Name=B2
-width=2
-height=1
-tiletype0=3
-tiletype1=3
-
-[TEM84]
-Name=B3
-width=3
-height=1
-tiletype0=3
-tiletype1=3
-
-[TEM85]
-Name=B4
-width=1
-height=1
-tiletype0=3
-
-[TEM86]
-Name=B5
-width=1
-height=1
-tiletype0=3
-
-[TEM87]
-Name=B6
-width=1
-height=1
-tiletype0=3
-
-[TEM88]
-Name=SH6
-width=3
-height=3
-tiletype6=1
-tiletype7=1
-tiletype8=1
-
-[TEM89]
-Name=SH7
-width=2
-height=2
-tiletype1=5
-tiletype2=5
-tiletype3=1
-
-[TEM90]
-Name=SH8
-width=3
-height=3
-tiletype5=5
-tiletype8=1
-
-[TEM91]
-Name=SH9
-width=3
-height=3
-tiletype3=5
-tiletype6=1
-tiletype7=5
-
-[TEM92]
-Name=SH10
-width=2
-height=2
-tiletype0=5
-tiletype2=1
-tiletype3=5
-
-[TEM93]
-Name=D01
-width=2
-height=2
-tiletype1=2
-
-[TEM94]
-Name=D02
-width=2
-height=2
-tiletype1=2
-
-[TEM95]
-Name=D03
-width=1
-height=2
-
-[TEM96]
-Name=D04
-width=2
-height=2
-tiletype2=2
-
-[TEM97]
-Name=D05
-width=3
-height=4
-tiletype1=2
-tiletype3=2
-tiletype4=2
-tiletype6=2
-tiletype7=2
-tiletype10=2
-
-[TEM98]
-Name=D06
-width=2
-height=3
-tiletype0=2
-tiletype2=2
-tiletype3=2
-tiletype4=2
-
-[TEM99]
-Name=D07
-width=3
-height=2
-tiletype1=2
-tiletype4=2
-
-[TEM100]
-Name=D08
-width=3
-height=2
-tiletype1=2
-tiletype4=2
-
-[TEM101]
-Name=D09
-width=4
-height=3
-tiletype4=2
-tiletype5=2
-tiletype6=2
-tiletype7=2
-
-[TEM102]
-Name=D10
-width=4
-height=2
-tiletype1=3
-tiletype4=2
-tiletype5=2
-tiletype6=2
-tiletype7=2
-
-[TEM103]
-Name=D11
-width=2
-height=3
-tiletype2=2
-tiletype3=2
-
-[TEM104]
-Name=D12
-width=2
-height=2
-tiletype2=2
-tiletype3=2
-
-[TEM105]
-Name=D13
-width=4
-height=3
-tiletype0=2
-tiletype1=2
-tiletype5=2
-tiletype6=2
-tiletype10=7
-tiletype11=2
-
-[TEM106]
-Name=D14
-width=3
-height=3
-tiletype2=2
-tiletype4=7
-tiletype5=2
-tiletype6=2
-tiletype7=2
-tiletype8=2
-
-[TEM107]
-Name=D15
-width=3
-height=3
-tiletype0=2
-tiletype1=2
-tiletype2=2
-tiletype3=2
-tiletype4=2
-tiletype6=2
-
-[TEM108]
-Name=D16
-width=3
-height=3
-tiletype1=2
-tiletype4=2
-tiletype5=2
-tiletype6=2
-tiletype8=7
-
-[TEM109]
-Name=D17
-width=3
-height=2
-tiletype0=2
-tiletype1=2
-tiletype2=2
-tiletype4=2
-
-[TEM110]
-Name=D18
-width=3
-height=3
-tiletype1=2
-tiletype3=2
-tiletype4=2
-tiletype7=2
-tiletype8=7
-
-[TEM111]
-Name=D19
-width=3
-height=3
-tiletype1=2
-tiletype3=2
-tiletype4=2
-tiletype5=2
-tiletype7=2
-
-[TEM112]
-Name=D20
-width=3
-height=3
-tiletype0=2
-tiletype3=2
-tiletype4=2
-tiletype7=2
-tiletype8=2
-
-[TEM113]
-Name=D21
-width=3
-height=2
-tiletype0=3
-tiletype1=2
-tiletype2=2
-tiletype4=2
-
-[TEM114]
-Name=D22
-width=3
-height=3
-tiletype3=2
-tiletype4=2
-tiletype7=2
-
-[TEM115]
-Name=D23
-width=3
-height=3
-tiletype1=2
-tiletype4=2
-tiletype6=2
-
-[TEM116]
-Name=D24
-width=3
-height=3
-tiletype0=2
-tiletype4=2
-tiletype8=2
-
-[TEM117]
-Name=D25
-width=3
-height=3
-tiletype0=2
-tiletype4=2
-tiletype8=2
-
-[TEM118]
-Name=D26
-width=2
-height=2
-
-[TEM119]
-Name=D27
-width=2
-height=2
-
-[TEM120]
-Name=D28
-width=2
-height=2
-tiletype0=2
-
-[TEM121]
-Name=D29
-width=2
-height=2
-tiletype0=2
-
-[TEM122]
-Name=D30
-width=2
-height=2
-tiletype0=2
-tiletype2=2
-
-[TEM123]
-Name=D31
-width=2
-height=2
-tiletype3=2
-
-[TEM124]
-Name=D32
-width=2
-height=2
-tiletype2=2
-
-[TEM125]
-Name=D33
-width=2
-height=2
-tiletype2=2
-tiletype3=2
-
-[TEM126]
-Name=D34
-width=3
-height=3
-tiletype2=2
-tiletype4=2
-tiletype5=2
-tiletype6=2
-tiletype7=2
-
-[TEM127]
-Name=D35
-width=3
-height=3
-tiletype2=2
-tiletype4=2
-tiletype6=2
-
-[TEM128]
-Name=D36
-width=2
-height=2
-
-[TEM129]
-Name=D37
-width=2
-height=2
-
-[TEM130]
-Name=D38
-width=2
-height=2
-tiletype1=2
-
-[TEM131]
-Name=D39
-width=2
-height=2
-tiletype1=2
-
-[TEM132]
-Name=D40
-width=2
-height=2
-tiletype0=2
-tiletype1=2
-
-[TEM133]
-Name=D41
-width=2
-height=2
-tiletype0=7
-tiletype2=2
-
-[TEM134]
-Name=D42
-width=2
-height=2
-tiletype2=2
-
-[TEM135]
-Name=D43
-width=2
-height=2
-tiletype2=2
-tiletype3=2
-
-[TEM136]
-Name=RV01
-width=5
-height=4
-tiletype1=3
-tiletype5=3
-tiletype6=5
-tiletype7=5
-tiletype8=5
-tiletype9=3
-tiletype10=5
-tiletype11=5
-tiletype12=5
-tiletype13=3
-tiletype14=5
-tiletype16=7
-
-[TEM137]
-Name=RV02
-width=5
-height=3
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-tiletype4=5
-tiletype5=5
-tiletype6=5
-tiletype7=5
-tiletype8=5
-tiletype9=5
-tiletype10=5
-tiletype11=3
-
-[TEM138]
-Name=RV03
-width=4
-height=4
-tiletype4=5
-tiletype5=5
-tiletype6=5
-tiletype9=5
-tiletype10=5
-tiletype11=5
-tiletype15=5
-
-[TEM139]
-Name=RV04
-width=4
-height=4
-tiletype2=7
-tiletype6=5
-tiletype7=5
-tiletype8=5
-tiletype9=5
-tiletype10=5
-tiletype11=3
-tiletype12=5
-tiletype13=3
-tiletype14=3
-
-[TEM140]
-Name=RV05
-width=3
-height=3
-tiletype1=5
-tiletype2=5
-tiletype4=5
-tiletype5=5
-tiletype6=3
-tiletype7=5
-tiletype8=5
-
-[TEM141]
-Name=RV06
-width=3
-height=2
-tiletype0=3
-tiletype1=5
-tiletype2=3
-tiletype3=3
-tiletype4=5
-
-[TEM142]
-Name=RV07
-width=3
-height=2
-tiletype0=3
-tiletype1=5
-tiletype2=5
-tiletype3=3
-tiletype4=3
-tiletype5=5
-
-[TEM143]
-Name=RV08
-width=2
-height=2
-tiletype0=3
-tiletype1=5
-tiletype2=5
-tiletype3=5
-
-[TEM144]
-Name=RV09
-width=2
-height=2
-tiletype2=5
-tiletype3=5
-
-[TEM145]
-Name=RV10
-width=2
-height=2
-tiletype0=5
-tiletype1=5
-tiletype3=5
-
-[TEM146]
-Name=RV11
-width=2
-height=2
-tiletype0=5
-tiletype1=5
-tiletype2=5
-
-[TEM147]
-Name=RV12
-width=3
-height=4
-tiletype1=5
-tiletype2=5
-tiletype3=3
-tiletype4=5
-tiletype5=5
-tiletype6=5
-tiletype7=5
-tiletype8=3
-tiletype10=5
-tiletype11=5
-
-[TEM148]
-Name=RV13
-width=4
-height=4
-tiletype4=5
-tiletype5=5
-tiletype6=5
-tiletype7=5
-tiletype8=5
-tiletype9=3
-tiletype10=5
-tiletype11=3
-tiletype13=3
-tiletype14=5
-tiletype15=3
-
-[TEM149]
-Name=RV14
-width=4
-height=3
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-tiletype4=3
-tiletype5=3
-tiletype6=3
-tiletype7=5
-tiletype8=3
-tiletype9=3
-tiletype10=4
-tiletype11=3
-
-[TEM150]
-Name=RV15
-width=4
-height=3
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype4=5
-tiletype5=5
-tiletype6=3
-tiletype7=5
-tiletype9=3
-tiletype10=3
-
-[TEM151]
-Name=RV16
-width=6
-height=4
-tiletype2=3
-tiletype3=3
-tiletype4=3
-tiletype5=3
-tiletype7=3
-tiletype8=3
-tiletype9=5
-tiletype10=5
-tiletype11=5
-tiletype12=3
-tiletype13=3
-tiletype14=5
-tiletype15=3
-tiletype16=4
-tiletype17=3
-tiletype18=5
-tiletype19=5
-tiletype20=3
-tiletype21=4
-
-[TEM152]
-Name=RV17
-width=6
-height=5
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=3
-tiletype6=5
-tiletype7=3
-tiletype8=3
-tiletype9=3
-tiletype10=4
-tiletype12=3
-tiletype13=3
-tiletype14=5
-tiletype15=5
-tiletype16=5
-tiletype17=3
-tiletype19=3
-tiletype20=3
-tiletype21=3
-tiletype22=5
-tiletype23=5
-tiletype28=3
-tiletype29=5
-
-[TEM153]
-Name=RV18
-width=4
-height=4
-tiletype0=3
-tiletype1=5
-tiletype2=4
-tiletype3=3
-tiletype4=3
-tiletype5=3
-tiletype6=3
-tiletype8=3
-tiletype9=5
-tiletype10=4
-tiletype12=3
-tiletype13=5
-tiletype14=3
-
-[TEM154]
-Name=RV19
-width=4
-height=4
-tiletype1=3
-tiletype2=5
-tiletype5=3
-tiletype6=5
-tiletype7=4
-tiletype8=3
-tiletype9=3
-tiletype10=5
-tiletype11=3
-tiletype13=3
-tiletype14=5
-tiletype15=4
-
-[TEM155]
-Name=RV20
-width=6
-height=8
-tiletype3=3
-tiletype4=5
-tiletype8=3
-tiletype9=5
-tiletype10=3
-tiletype13=3
-tiletype14=3
-tiletype15=5
-tiletype16=3
-tiletype18=3
-tiletype19=3
-tiletype20=5
-tiletype21=3
-tiletype24=3
-tiletype25=3
-tiletype26=5
-tiletype27=3
-tiletype28=3
-tiletype30=3
-tiletype31=3
-tiletype32=5
-tiletype33=3
-tiletype37=5
-tiletype38=5
-tiletype39=3
-tiletype43=5
-tiletype44=3
-tiletype45=3
-
-[TEM156]
-Name=RV21
-width=5
-height=8
-tiletype0=3
-tiletype1=3
-tiletype6=5
-tiletype7=5
-tiletype8=3
-tiletype11=3
-tiletype12=5
-tiletype13=3
-tiletype16=3
-tiletype17=5
-tiletype18=3
-tiletype19=3
-tiletype21=3
-tiletype22=5
-tiletype23=5
-tiletype24=3
-tiletype27=3
-tiletype28=5
-tiletype29=3
-tiletype32=3
-tiletype33=5
-tiletype34=5
-tiletype39=5
-
-[TEM157]
-Name=RV22
-width=3
-height=3
-tiletype3=3
-tiletype4=3
-tiletype5=5
-tiletype6=3
-tiletype7=5
-tiletype8=3
-
-[TEM158]
-Name=RV23
-width=3
-height=3
-tiletype0=3
-tiletype1=3
-tiletype2=3
-tiletype3=5
-tiletype4=5
-tiletype5=3
-tiletype6=3
-tiletype7=5
-tiletype8=3
-
-[TEM159]
-Name=RV24
-width=3
-height=3
-tiletype0=3
-tiletype1=5
-tiletype2=3
-tiletype3=3
-tiletype4=5
-tiletype5=5
-tiletype7=4
-
-[TEM160]
-Name=RV25
-width=3
-height=3
-tiletype0=4
-tiletype1=5
-tiletype2=3
-tiletype3=5
-tiletype4=3
-tiletype5=3
-tiletype6=3
-tiletype7=3
-
-[TEM161]
-Name=FORD1
-width=3
-height=3
-tiletype1=5
-tiletype3=2
-tiletype4=2
-tiletype5=2
-tiletype7=5
-tiletype8=5
-
-[TEM162]
-Name=FORD2
-width=3
-height=3
-tiletype1=2
-tiletype2=5
-tiletype3=5
-tiletype4=2
-tiletype5=5
-tiletype7=2
-
-[TEM163]
-Name=FALLS1
-width=3
-height=3
-tiletype1=3
-tiletype2=5
-tiletype3=5
-tiletype4=5
-tiletype5=5
-tiletype7=3
-tiletype8=3
-
-[TEM164]
-Name=FALLS2
-width=3
-height=2
-tiletype0=3
-tiletype1=5
-tiletype2=5
-tiletype3=3
-tiletype4=5
-tiletype5=5
-
-[TEM165]
-Name=BRIDGE1
-bridge=bridge1
-width=4
-height=4
-tiletype3=2
-tiletype4=5
-tiletype5=7
-tiletype6=2
-tiletype7=7
-tiletype8=5
-tiletype9=2
-tiletype10=7
-tiletype11=5
-tiletype12=2
-tiletype15=5
-
-[TEM166]
-Name=BRIDGE1D
-bridge=bridge1
-width=4
-height=4
-tiletype3=2
-tiletype4=5
-tiletype5=7
-tiletype6=7
-tiletype7=7
-tiletype8=5
-tiletype9=5
-tiletype10=5
-tiletype11=5
-tiletype12=2
-tiletype15=5
-
-[TEM167]
-Name=BRIDGE2
-bridge=bridge2
-width=5
-height=5
-tiletype0=2
-tiletype5=7
-tiletype6=2
-tiletype7=7
-tiletype8=5
-tiletype9=5
-tiletype10=5
-tiletype11=7
-tiletype12=2
-tiletype13=7
-tiletype15=5
-tiletype18=2
-tiletype24=2
-
-[TEM168]
-Name=BRIDGE2D
-bridge=bridge2
-width=5
-height=5
-tiletype0=2
-tiletype5=7
-tiletype6=7
-tiletype7=5
-tiletype8=5
-tiletype9=5
-tiletype10=5
-tiletype11=5
-tiletype12=5
-tiletype13=5
-tiletype15=5
-tiletype18=2
-tiletype24=2
-
-[TEM169]
-Name=BRIDGE3
-bridge=bridge3
-width=6
-height=5
-tiletype4=2
-tiletype7=3
-tiletype8=7
-tiletype9=2
-tiletype10=7
-tiletype12=5
-tiletype13=5
-tiletype14=2
-tiletype15=7
-tiletype16=3
-tiletype17=3
-tiletype18=3
-tiletype19=2
-tiletype21=3
-tiletype22=5
-tiletype23=5
-tiletype24=2
-
-[TEM170]
-Name=BRIDGE3D
-bridge=bridge3
-width=6
-height=5
-tiletype4=2
-tiletype7=3
-tiletype8=3
-tiletype9=7
-tiletype10=7
-tiletype12=5
-tiletype13=5
-tiletype14=5
-tiletype15=5
-tiletype16=3
-tiletype17=3
-tiletype18=3
-tiletype19=2
-tiletype21=5
-tiletype22=5
-tiletype23=5
-tiletype24=2
-
-[TEM171]
-Name=BRIDGE4
-bridge=bridge4
-width=6
-height=4
-tiletype1=2
-tiletype3=4
-tiletype4=3
-tiletype7=7
-tiletype8=2
-tiletype9=7
-tiletype10=5
-tiletype11=5
-tiletype12=3
-tiletype13=5
-tiletype14=7
-tiletype15=2
-tiletype16=7
-tiletype17=3
-tiletype18=5
-tiletype19=5
-tiletype20=3
-tiletype22=2
-
-[TEM172]
-Name=BRIDGE4D
-bridge=bridge4
-width=6
-height=4
-tiletype1=2
-tiletype3=4
-tiletype4=3
-tiletype7=7
-tiletype8=7
-tiletype9=5
-tiletype10=5
-tiletype11=5
-tiletype12=3
-tiletype13=5
-tiletype14=5
-tiletype15=5
-tiletype16=7
-tiletype17=3
-tiletype18=5
-tiletype19=5
-tiletype20=3
-tiletype22=2
-
-[TEM173]
-Name=SH24
-width=3
-height=3
-tiletype0=3
-tiletype1=5
-tiletype2=3
-tiletype3=5
-tiletype4=5
-tiletype6=5
-tiletype7=1
-tiletype8=5
-
-[TEM174]
-Name=SH25
-width=3
-height=2
-tiletype0=5
-tiletype1=5
-tiletype2=5
-tiletype5=3
-
-[TEM175]
-Name=SH26
-width=3
-height=2
-tiletype0=5
-tiletype1=3
-tiletype2=5
-tiletype4=3
-
-[TEM176]
-Name=SH27
-width=4
-height=1
-tiletype0=5
-tiletype1=5
-tiletype2=5
-tiletype3=3
-
-[TEM177]
-Name=SH28
-width=3
-height=1
-tiletype0=5
-tiletype1=5
-tiletype2=5
-
-[TEM178]
-Name=SH29
-width=6
-height=2
-tiletype0=5
-tiletype1=5
-tiletype2=3
-tiletype3=5
-tiletype4=5
-tiletype5=5
-
-[TEM179]
-Name=SH30
-width=2
-height=2
-tiletype0=5
-tiletype1=5
-tiletype2=3
-
-[TEM180]
-Name=SH31
-width=3
-height=3
-tiletype0=5
-tiletype1=5
-tiletype2=5
-tiletype3=3
-tiletype4=5
-tiletype5=3
-tiletype7=5
-tiletype8=3
-
-[TEM181]
-Name=P16
-width=2
-height=2
-
-[TEM182]
-Name=P17
-width=4
-height=2
-
-[TEM183]
-Name=P18
-width=4
-height=3
-
-[TEM184]
-Name=P19
-width=6
-height=2
-
-[TEM185]
-Name=P20
-width=4
-height=3
-
-[TEM186]
-Name=SH34
-width=3
-height=3
-tiletype2=1
-tiletype5=1
-tiletype8=1
-
-[TEM187]
-Name=SH35
-width=3
-height=3
-tiletype0=1
-tiletype1=5
-tiletype3=1
-tiletype4=5
-tiletype6=1
-
-[TEM188]
-Name=SH36
-width=1
-height=1
-
-[TEM189]
-Name=SH37
-width=1
-height=1
-
-[TEM190]
-Name=SH38
-width=1
-height=1
-
-[TEM191]
-Name=SH39
-width=1
-height=1
-
-[TEM192]
-Name=SH40
-width=3
-height=3
-tiletype1=5
-tiletype2=5
-tiletype4=1
-tiletype5=5
-tiletype6=5
-tiletype7=1
-tiletype8=1
-
-[TEM193]
-Name=SH41
-width=3
-height=3
-tiletype0=1
-tiletype1=1
-tiletype2=5
-tiletype3=1
-tiletype4=5
-tiletype6=5
-tiletype7=3
-
-[TEM194]
-Name=SH42
-width=1
-height=2
-tiletype0=5
-tiletype1=5
-
-[TEM195]
-Name=SH43
-width=1
-height=3
-tiletype0=5
-tiletype2=5
-
-[TEM196]
-Name=SH44
-width=1
-height=3
-tiletype0=5
-tiletype2=5
-
-[TEM197]
-Name=SH45
-width=1
-height=2
-tiletype0=5
-tiletype1=5
-
-[TEM198]
-Name=SH46
-width=3
-height=3
-tiletype2=5
-tiletype4=5
-tiletype5=1
-tiletype6=5
-tiletype7=5
-tiletype8=1
-
-[TEM199]
-Name=SH47
-width=3
-height=3
-tiletype0=5
-tiletype1=3
-tiletype3=5
-tiletype6=1
-tiletype7=5
-tiletype8=5
-
-[TEM200]
-Name=SH48
-width=3
-height=3
-tiletype0=5
-tiletype3=5
-tiletype6=5
-tiletype7=5
-tiletype8=5
-
-[TEM201]
-Name=SH49
-width=3
-height=3
-tiletype1=1
-tiletype2=5
-tiletype3=5
-tiletype4=3
-tiletype5=3
-tiletype7=3
-tiletype8=3
-
-[TEM202]
-Name=SH50
-width=4
-height=3
-tiletype1=1
-tiletype2=5
-tiletype3=5
-tiletype4=5
-tiletype5=3
-tiletype6=3
-tiletype8=5
-
-[TEM203]
-Name=SH51
-width=4
-height=3
-tiletype0=5
-tiletype1=1
-tiletype5=5
-tiletype6=1
-tiletype8=3
-tiletype9=3
-tiletype10=5
-tiletype11=5
-
-[TEM204]
-Name=SH52
-width=4
-height=3
-tiletype0=5
-tiletype1=5
-tiletype2=5
-tiletype3=3
-tiletype6=5
-tiletype7=3
-tiletype10=5
-tiletype11=5
-
-[TEM205]
-Name=SH53
-width=4
-height=3
-tiletype3=5
-tiletype5=5
-tiletype6=1
-tiletype7=1
-tiletype8=5
-tiletype9=1
-tiletype10=5
-tiletype11=5
-
-[TEM206]
-Name=SH54
-width=3
-height=2
-tiletype1=4
-tiletype2=5
-tiletype3=5
-tiletype4=1
-tiletype5=5
-
-[TEM207]
-Name=SH55
-width=3
-height=2
-tiletype0=5
-tiletype1=3
-tiletype3=1
-tiletype4=5
-tiletype5=5
-
-[TEM208]
-Name=SH56
-width=3
-height=2
-tiletype1=1
-tiletype2=5
-tiletype3=5
-tiletype4=3
-tiletype5=3
-
-[TEM209]
-Name=SH57
-width=3
-height=2
-tiletype0=5
-tiletype3=5
-tiletype4=5
-tiletype5=5
-
-[TEM210]
-Name=SH58
-width=2
-height=3
-tiletype0=5
-tiletype2=5
-tiletype3=1
-tiletype5=5
-
-[TEM211]
-Name=SH59
-width=2
-height=3
-tiletype1=5
-tiletype2=5
-tiletype3=5
-tiletype4=5
-tiletype5=5
-
-[TEM212]
-Name=SH60
-width=2
-height=3
-tiletype0=1
-tiletype1=5
-tiletype2=5
-tiletype4=5
-
-[TEM213]
-Name=SH61
-width=2
-height=3
-tiletype0=5
-tiletype2=1
-tiletype3=5
-tiletype5=5
-
-[TEM214]
-Name=SH62
-width=6
-height=1
-tiletype0=5
-tiletype1=5
-tiletype2=5
-tiletype3=5
-tiletype4=5
-tiletype5=5
-
-[TEM215]
-Name=SH63
-width=4
-height=1
-tiletype0=5
-tiletype1=5
-tiletype2=5
-tiletype3=5
-
-; special tile
-[TEM65534]
-Name=Bogus
-width=1
-height=1
-tiletype0=10
\ No newline at end of file
diff --git a/mods/cnc/terrain.yaml b/mods/cnc/terrain.yaml
deleted file mode 100644
index 50f3a8e23f..0000000000
--- a/mods/cnc/terrain.yaml
+++ /dev/null
@@ -1,38 +0,0 @@
-Clear:
- Buildable: yes
-
-Rough:
- Buildable: no
-
-Road:
- Buildable: yes
-
-Tree:
- Buildable: no
- AcceptSmudge: no
-
-Water:
- Buildable: no
- AcceptSmudge: no
-
-Rock:
- Buildable: no
- AcceptSmudge: no
-
-Wall:
- Buildable: no
-
-Ore:
- Buildable: no
-
-Beach:
- Buildable: no
- AcceptSmudge: no
-
-River:
- Buildable: no
- AcceptSmudge: no
-
-Special:
- Buildable: no
- AcceptSmudge: no
\ No newline at end of file
diff --git a/mods/cnc/tileSet.til b/mods/cnc/tileSet.til
deleted file mode 100644
index 322814807b..0000000000
--- a/mods/cnc/tileSet.til
+++ /dev/null
@@ -1,589 +0,0 @@
-; clear ground
-DTW
-1
-00ff
-clear1
-
-; clear ground
-DTW
-1
-ffff
-clear1
-
-; clear ground
-DTW
-1
-0000
-clear1
-
-; plain water
-DTW
-1
-0001
-w1
-
--TW
-1
-0002
-w2
-
-; Coastline
--TW
-5
-0003
-sh{0}
-
--TW
-1
-0008
-sh11
-
--TW
-1
-0009
-sh12
-
--TW
-1
-000A
-sh13
-
--TW
-1
-000B
-sh14
-
--TW
-1
-000C
-sh15
-
-; Cliffs
-DTW
-38
-000D
-s{0:00}
-
-; More Coast
--TW
-1
-0033
-sh32
-
--TW
-1
-0034
-sh33
-
-
-D--
-1
-0035
-sh20
-
-D--
-1
-0036
-sh21
-
-D--
-1
-0037
-sh22
-
-D--
-1
-0038
-sh23
-
-
-; Bushes
-D--
-10
-0039
-br{0}
-
-; Bones/Wall/Mud/UFO/Rock
-DT-
-4
-0043
-p{0:00}
-
-D--
-1
-0047
-p05
-
-D--
-1
-0048
-p06
-
-DTW
-1
-0049
-p07
-
--TW
-1
-004A
-p08
-
-; Ford WU
--TW
-1
-004B
-sh16
-
-; Water
-DTW
-1
-004C
-sh17
-
-; Water
-DTW
-1
-004D
-sh18
-
-D--
-1
-004E
-sh19
-
-
-; Destroyed house
--TW
-1
-004F
-p13
-
-; Walls
--TW
-1
-0050
-p14
-
-; Snow
---W
-1
-0051
-p15
-
-; Rocks
-DTW
-2
-0052
-b{0}
-
--TW
-1
-0054
-b3
-
-D--
-1
-0055
-b4
-
-D--
-1
-0056
-b5
-
-D--
-1
-0057
-b6
-
-; More coast
--TW
-1
-0058
-sh6
-
--TW
-1
-0059
-sh7
-
--TW
-1
-005A
-sh8
-
--TW
-1
-005B
-sh9
-
--TW
-1
-005C
-sh10
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; ROADS
-
-; roads
-DTW
-43
-005d
-d{0:00}
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; RIVERS
-
-; rivers
--TW
-13
-0088
-rv{0:00}
-
-D--
-1
-0095
-rv14
-
-D--
-1
-0096
-rv15
-
-D--
-1
-0097
-rv16
-
-D--
-1
-0098
-rv17
-
-D--
-1
-0099
-rv18
-
-D--
-1
-009A
-rv19
-
-D--
-1
-009B
-rv20
-
-D--
-1
-009C
-rv21
-
-D--
-1
-009D
-rv22
-
-D--
-1
-009E
-rv23
-
-D--
-1
-009F
-rv24
-
-D--
-1
-00A0
-rv25
-
-; River Crossing
-DTW
-2
-00A1
-ford{0}
-
-; Waterfalls
-DTW
-2
-00A3
-falls{0}
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; BRIDGES
-
-; short bridge "/"
--TW
-1
-00A5
-bridge1
-
-; short bridge "/" (destroyed)
--TW
-1
-00A6
-bridge1d
-
-; short bridge "\"
--TW
-1
-00A7
-bridge2
-
-; short bridge "\" (destroyed)
--TW
-1
-00A8
-bridge2d
-
-; desert short bridge "/"
-D--
-1
-00A9
-bridge3
-
-; desert short bridge "/" (destroyed)
-D--
-1
-00AA
-bridge3d
-
-; desert short bridge "\"
-D--
-1
-00AB
-bridge4
-
-; desert short bridge "\" (destroyed)
-D--
-1
-00AC
-bridge4d
-
-; Desert coast
-D--
-1
-00AD
-sh24
-
-D--
-1
-00AE
-sh25
-
-D--
-1
-00AF
-sh26
-
-D--
-1
-00B0
-sh27
-
-D--
-1
-00B1
-sh28
-
-D--
-1
-00B2
-sh29
-
-D--
-1
-00B3
-sh30
-
-D--
-1
-00B4
-sh31
-
-; Snow
---W
-1
-00B5
-p16
-
---W
-1
-00B6
-p17
-
---W
-1
-00B7
-p18
-
---W
-1
-00B8
-p19
-
---W
-1
-00B9
-p20
-
-; More coast
--TW
-1
-00BA
-sh34
-
--TW
-1
-00BB
-sh35
-
-D--
-1
-00BC
-sh36
-
-D--
-1
-00BD
-sh37
-
-D--
-1
-00BE
-sh38
-
-D--
-1
-00BF
-sh39
-
-D--
-1
-00C0
-sh40
-
-D--
-1
-00C1
-sh41
-
-D--
-1
-00C2
-sh42
-
-D--
-1
-00C3
-sh43
-
-D--
-1
-00C4
-sh44
-
-D--
-1
-00C5
-sh45
-
-D--
-1
-00C6
-sh46
-
-D--
-1
-00C7
-sh47
-
-D--
-1
-00C8
-sh48
-
-D--
-1
-00C9
-sh49
-
-D--
-1
-00CA
-sh50
-
-D--
-1
-00CB
-sh51
-
-D--
-1
-00CC
-sh52
-
-D--
-1
-00CD
-sh53
-
-D--
-1
-00CE
-sh54
-
-D--
-1
-00CF
-sh55
-
-D--
-1
-00D0
-sh56
-
-D--
-1
-00D1
-sh57
-
-D--
-1
-00D2
-sh58
-
-D--
-1
-00D3
-sh59
-
-D--
-1
-00D4
-sh60
-
-D--
-1
-00D5
-sh61
-
-D--
-1
-00D6
-sh62
-
-D--
-1
-00D7
-sh63
-
-; bogus
-TS-
-1
-fffe
-bogus
\ No newline at end of file
diff --git a/mods/cnc/winter.col b/mods/cnc/winter.col
deleted file mode 100644
index 89bdf32953..0000000000
--- a/mods/cnc/winter.col
+++ /dev/null
@@ -1,13 +0,0 @@
-; Minimap colors for cnc WINTER theater
-; Format: terraintype,R,G,B
-Clear=40,68,40
-Water=92,116,164
-Road=88,116,116
-Rock=68,68,60
-Tree=28,32,36
-River=92,140,180
-Rough=68,68,60
-Wall=208,192,160
-Beach=176,156,120
-Ore=161,226,28
-Special=124,124,124
\ No newline at end of file