public void Init(int arg_x, int arg_y, TD_Tile_Factory arg_factory) { spawn_points_ = new List <TD_Tile>(); this.map_size_ = new Vector2Int(arg_x, arg_y); this.tile_factory_ = arg_factory; map_tiles_ = new TD_Tile[arg_y, arg_x]; //offset caries on tile scale; this could be 0.5 for performance sake Vector2 ls_offset = new Vector2((map_size_.x - 1) * (prefab_tile_.transform.localScale.x / 2), (map_size_.y - 1) * (prefab_tile_.transform.localScale.y / 2)); for (int i_y = 0; i_y < map_size_.y; i_y++) { for (int i_x = 0; i_x < map_size_.x; i_x++) { TD_Tile ls_tile = map_tiles_[i_y, i_x] = Instantiate(prefab_tile_); ls_tile.transform.position = new Vector3(i_x - ls_offset.x, 0, i_y - ls_offset.y); ls_tile.Content = tile_factory_.Get(TileContentType.EMPTY); ls_tile.Parent = null; ls_tile.g = int.MaxValue; ls_tile.IndexX = i_x; ls_tile.IndexY = i_y; } } }
public void Init(TD_Tile_Factory arg_factory, List <Vector3Int> arg_loaded_tiles) { spawn_points_ = new List <TD_Tile>(); this.map_size_ = new Vector2Int(arg_loaded_tiles[0].x, arg_loaded_tiles[0].y); this.tile_factory_ = arg_factory; map_tiles_ = new TD_Tile[map_size_.y, map_size_.x]; //offset caries on tile scale; this could be 0.5 for performance sake Vector2 ls_offset = new Vector2((map_size_.x - 1) * (prefab_tile_.transform.localScale.x / 2), (map_size_.y - 1) * (prefab_tile_.transform.localScale.y / 2)); int ls_loaded_tiles_index = 1; for (int i_y = 0; i_y < map_size_.y; i_y++) { for (int i_x = 0; i_x < map_size_.x; i_x++) { TD_Tile ls_tile; if (ls_loaded_tiles_index < arg_loaded_tiles.Count) { if (arg_loaded_tiles[ls_loaded_tiles_index].x == i_x && arg_loaded_tiles[ls_loaded_tiles_index].y == i_y) { ls_tile = map_tiles_[i_y, i_x] = Instantiate(prefab_tile_); ls_tile.transform.position = new Vector3(i_x - ls_offset.x, 0, i_y - ls_offset.y); ls_tile.Content = tile_factory_.Get((TileContentType)(arg_loaded_tiles[ls_loaded_tiles_index].z)); //should be a switch here if (TileContentType.DESTINATION == ls_tile.Content.Type) { destination_ = ls_tile; ls_tile.is_blocking_ = false; ls_tile.Parent = null; ls_tile.g = int.MaxValue; ls_tile.IndexX = i_x; ls_tile.IndexY = i_y; ls_loaded_tiles_index++; continue; } else if (TileContentType.SPAWN == ls_tile.Content.Type) { spawn_points_.Add(ls_tile); ls_tile.is_blocking_ = false; ls_tile.Parent = null; ls_tile.g = int.MaxValue; ls_tile.IndexX = i_x; ls_tile.IndexY = i_y; ls_loaded_tiles_index++; continue; } else if (TileContentType.OIL == ls_tile.Content.Type) { ls_tile.is_blocking_ = false; ls_tile.Parent = null; ls_tile.g = int.MaxValue; ls_tile.IndexX = i_x; ls_tile.IndexY = i_y; ls_loaded_tiles_index++; continue; } ls_tile.is_blocking_ = true; ls_tile.Parent = null; ls_tile.g = int.MaxValue; ls_tile.IndexX = i_x; ls_tile.IndexY = i_y; ls_loaded_tiles_index++; continue; } } ls_tile = map_tiles_[i_y, i_x] = Instantiate(prefab_tile_); ls_tile.transform.position = new Vector3(i_x - ls_offset.x, 0, i_y - ls_offset.y); ls_tile.Content = tile_factory_.Get(TileContentType.EMPTY); ls_tile.Parent = null; ls_tile.g = int.MaxValue; ls_tile.IndexX = i_x; ls_tile.IndexY = i_y; } } }