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