int[] LoadTiles(TileSet tileSet, MiniYaml y) { var nodes = y.ToDictionary()["Tiles"].Nodes; if (!PickAny) { var tiles = new int[Size.X * Size.Y]; for (var i = 0; i < tiles.Length; i++) { tiles[i] = -1; } foreach (var node in nodes) { int key; if (!int.TryParse(node.Key, out key) || key < 0 || key >= tiles.Length) { throw new InvalidDataException("Invalid tile key '{0}' on template '{1}' of tileset '{2}'.".F(node.Key, Id, tileSet.Id)); } tiles[key] = tileSet.GetTerrainIndex(node.Value.Value); } return(tiles); } else { var tiles = new int[nodes.Count]; var i = 0; foreach (var node in nodes) { int key; if (!int.TryParse(node.Key, out key) || key != i++) { throw new InvalidDataException("Invalid tile key '{0}' on template '{1}' of tileset '{2}'.".F(node.Key, Id, tileSet.Id)); } tiles[key] = tileSet.GetTerrainIndex(node.Value.Value); } return(tiles); } }
int[] LoadTiles(TileSet tileSet, MiniYaml y) { var nodes = y.ToDictionary()["Tiles"].Nodes; if (!PickAny) { var tiles = new int[Size.X * Size.Y]; for (var i = 0; i < tiles.Length; i++) tiles[i] = -1; foreach (var node in nodes) { int key; if (!int.TryParse(node.Key, out key) || key < 0 || key >= tiles.Length) throw new InvalidDataException("Invalid tile key '{0}' on template '{1}' of tileset '{2}'.".F(node.Key, Id, tileSet.Id)); tiles[key] = tileSet.GetTerrainIndex(node.Value.Value); } return tiles; } else { var tiles = new int[nodes.Count]; var i = 0; foreach (var node in nodes) { int key; if (!int.TryParse(node.Key, out key) || key != i++) throw new InvalidDataException("Invalid tile key '{0}' on template '{1}' of tileset '{2}'.".F(node.Key, Id, tileSet.Id)); tiles[key] = tileSet.GetTerrainIndex(node.Value.Value); } return tiles; } }
static TerrainTileInfo LoadTileInfo(TileSet tileSet, MiniYaml my) { var tile = new TerrainTileInfo(); FieldLoader.Load(tile, my); // Terrain type must be converted from a string to an index tile.GetType().GetField("TerrainType").SetValue(tile, tileSet.GetTerrainIndex(my.Value)); // Fall back to the terrain-type color if necessary var overrideColor = tileSet.TerrainInfo[tile.TerrainType].Color; if (tile.LeftColor == default(Color)) { tile.GetType().GetField("LeftColor").SetValue(tile, overrideColor); } if (tile.RightColor == default(Color)) { tile.GetType().GetField("RightColor").SetValue(tile, overrideColor); } return(tile); }
static TerrainTileInfo LoadTileInfo(TileSet tileSet, MiniYaml my) { var tile = new TerrainTileInfo(); FieldLoader.Load(tile, my); // Terrain type must be converted from a string to an index tile.GetType().GetField("TerrainType").SetValue(tile, tileSet.GetTerrainIndex(my.Value)); // Fall back to the terrain-type color if necessary var overrideColor = tileSet.TerrainInfo[tile.TerrainType].Color; if (tile.LeftColor == default(Color)) tile.GetType().GetField("LeftColor").SetValue(tile, overrideColor); if (tile.RightColor == default(Color)) tile.GetType().GetField("RightColor").SetValue(tile, overrideColor); return tile; }