private void PlaceTile(int tileType, int x, int y, Vector3 worldStart) { // int tileIndex = (tileType < 9) ? tileType : (Random.Range(0, TilePrefabs.Length) < 9) ? 0 : Random.Range(9, TilePrefabs.Length); GameObject newTile; if (tileType > 0) { if (tileType == 7) { Tiles[y, x] = 2; } if (tileType == 8) { Tiles[y, x] = 3; } if (tileType > 0 && tileType < 7) { Tiles[y, x] = 1; } // For now we are instantiating all Paths as a generic placeholer asset. newTile = Instantiate(TilePrefabs[1]); newTile.GetComponent <Tile>().Setup(new Node(x, y), new Vector3(worldStart.x + (TileSize * x + TileSize / 2), worldStart.y - (TileSize * y + TileSize / 2), 0), this.transform); PathDict.Add(new Vector2(y, x), newTile); } else { Tiles[y, x] = 0; newTile = Instantiate(TilePrefabs[tileType]); PlaceableTile newTileScript = newTile.GetComponent <PlaceableTile>(); newTileScript.Setup(new Node(x, y), new Vector3(worldStart.x + (TileSize * x + TileSize / 2), worldStart.y - (TileSize * y + TileSize / 2), 0), this.transform); TileDict.Add(new Vector2(y, x), newTileScript); } }
private void DeselectTile() { if (selectedOverlay == null) { return; } selectedOverlay.SetActive(false); selectedTile = null; }
public void BuildSelectedTower(PlaceableTile tile) { var towerDataConfig = GetSelectedTowerDataConfig(); if (towerDataConfig == null) { Debug.Log("TowerData not configured! Skipping place tower."); return; } var tower = tile.PlaceTower(towerDataConfig.GetTowerPrefab()); if (tower != null) { var towerComponent = tower.GetComponent <Tower>(); towerComponent.SetTowerData(towerDataConfig.CreateTowerDataFromConfig()); } }
public void SelectTile() { var objectSelected = GetClickedGameObject(); if (objectSelected == null) { DeselectTile(); return; } var tile = objectSelected.GetComponent <PlaceableTile>(); if (tile) { DeselectTile(); selectedTile = tile; selectedOverlay.transform.position = selectedTile.GetPlacementPosition() + new Vector3(0, 0.0002f, 0); selectedOverlay.SetActive(true); } }
// Function first checks to see if ndoe has a tower on it. // If no tower is on then it should check the player's money and decide if a tower should be built. // TODO: Either rename this function or Node.PlaceTower to prevent ambiguous names. public bool PlaceTower(GameObject tower, GameObject node) { if (Nodes[node].HasTower()) { // Then the node already has a tower and cannot place another one. Debug.Log("This node already has a tower!"); return(false); } else { // If not then place a tower using the Node.PlaceTower() function. GameObject newTower = (GameObject)Instantiate(tower, node.transform); // Add tower and associated node to Towers Dict PlaceableTile nodeScript = Nodes[node]; nodeScript.PlaceTower(newTower); Towers.Add(nodeScript, newTower); // Set new tower as a child of the TowerManager GO for organization. newTower.transform.SetParent(transform, true); return(true); } }