// Load map information, possible tiles and tile sprites public void LoadMapResources() { // Parse Json map data MapJsonData data = JsonLoader.LoadMapJsonFile(worldMap.fileName); mapWidth = data.map_width; mapHeight = data.map_height; numberOfHouses = data.number_of_houses; // Find and add all possible tile types TileJsonData[] loadedTileTypes = data.tiles; foreach (TileJsonData td in loadedTileTypes) { // Tile type is unique // Check if the type is already loaded if (!tileTypes.Contains(td.type)) { Tile newPossibleTile = new Tile(); // Register new tile type tileTypes.Add(td.type); int typeIndex = tileTypes.Count - 1; newPossibleTile.typeID = (ushort)typeIndex; // Load sprites for the given tile type, tile images have the same name as tile types. string spritePath = "Images/" + td.type; Sprite newSprite = Resources.Load <Sprite>(spritePath); loadedSprites.Add(newSprite); // Tile names are not unique // Register tile name if it is new if (!tileNames.Contains(td.name)) { tileNames.Add(td.name); } int nameIndex = tileNames.IndexOf(td.name); newPossibleTile.nameID = (ushort)nameIndex; // Register tile level, tiles with no given level are level 0 newPossibleTile.level = (byte)td.level; possibleTiles.Add(newPossibleTile); } } }
private void LoadMap() { MapData data = JsonLoader.LoadMapJsonFile(filename); mapWidth = data.map_width; mapHeight = data.map_height; numberOfHouses = data.number_of_houses; outlineSprite = Resources.Load <Sprite>("Images/outline"); // TODO: move elsewhere TileData[] loadedTileTypes = data.tiles; foreach (TileData td in loadedTileTypes) { if (!tileTypes.Contains(td.type)) { Tile newPossibleTile = new Tile(); tileTypes.Add(td.type); // TODO: IndexOf after Add - high time complexity? // TODO: possible int to ushort overflow (type, name index) // TODO: possible int to byte overflow (level) int typeIndex = tileTypes.IndexOf(td.type); newPossibleTile.typeID = (ushort)typeIndex; string spritePath = "Images/" + td.type; Sprite newSprite = Resources.Load <Sprite>(spritePath); loadedSprites.Add(newSprite); if (!tileNames.Contains(td.name)) { tileNames.Add(td.name); } int nameIndex = tileNames.IndexOf(td.name); newPossibleTile.nameID = (ushort)nameIndex; newPossibleTile.level = (byte)td.level; possibleTiles.Add(newPossibleTile); //-------------------------------------- waterTiles = new List <int>(); sandTiles = new List <int>(); groundTiles = new List <int>(); treeTiles = new List <int>(); houseTiles = new List <int>(); foreach (Tile tile in possibleTiles) { if (tileTypes[tile.typeID] == "water") { waterTiles.Add(tile.typeID); } else if (tileTypes[tile.typeID] == "sand") { sandTiles.Add(tile.typeID); } else if (tileTypes[tile.typeID] == "grass") { groundTiles.Add(tile.typeID); } else if (tileTypes[tile.typeID].Contains("trees")) { treeTiles.Add(tile.typeID); } else if (tileTypes[tile.typeID].Contains("house")) { houseTiles.Add(tile.typeID); } } //-------------------------------------- } } //FindObjectOfType<HouseCounter>().SetCount(numberOfHouses); FindObjectOfType <HouseCounter>().startingCounter = numberOfHouses; }