/// <summary> /// Instantiates Tile Objects to visualise the grid and sets up the <see cref="m_AvailableCells" /> /// </summary> protected void SetUpGrid() { PlacementTile tileToUse = placementTilePrefab; if (tileToUse != null) { // Create a container that will hold the cells. var tilesParent = new GameObject("Container"); tilesParent.transform.parent = transform; tilesParent.transform.localPosition = Vector3.zero; tilesParent.transform.localRotation = Quaternion.identity; m_Tiles = new PlacementTile[dimensions.x, dimensions.y]; for (int y = 0; y < dimensions.y; y++) { for (int x = 0; x < dimensions.x; x++) { Vector3 targetPos = GridToWorld(new Vector2Int(x, y), new Vector2Int(1, 1)); targetPos.y += 0.01f; PlacementTile newTile = Instantiate(tileToUse); newTile.transform.parent = tilesParent.transform; newTile.transform.position = targetPos; newTile.transform.localRotation = Quaternion.identity; m_Tiles[x, y] = newTile; newTile.SetState(PlacementTileState.Empty); } } } }
private void MouseClick_performed() { if (currentUiState == UiStates.Play && !EventSystem.current.IsPointerOverGameObject()) { Vector2 mousePos = inputActions.UI.MousePosition.ReadValue <Vector2>(); RaycastHit output; Ray ray = m_Camera.ScreenPointToRay(mousePos); bool hasHit = Physics.Raycast(ray, out output, float.MaxValue, towerSelectionLayer); if (!hasHit) { return; } Tower tower = output.collider.GetComponent <TowerLevel>()?.ParentTower; if (tower != null) { SelectTower(tower); return; } PlacementTile tile = output.collider.GetComponent <PlacementTile>(); if (tile != null) { SelectTile(tile); return; } ClearSelection(); } }
public void BuildLoadedTowers(List <TowerSaveData> towerSaveDatas) { int tempCoins = CurrencyManager.instance.GetCurrency(); CurrencyManager.instance.SetCurrency(100000); foreach (TowerSaveData towerSaveData in towerSaveDatas) { TowerData towerToBuild = towerConfigurations.Where(t => t.Id.Equals(towerSaveData.towerId)).FirstOrDefault(); PlacementTile tile = placementTilesholder.GetPlacementTile(towerSaveData.tileId); if (towerToBuild != null && tile != null) { GameObject newTowerGO = Instantiate(towerToBuild.Prefab.gameObject, tile.transform.position, tile.transform.rotation); Tower deffenceTower = newTowerGO.GetComponent <Tower>(); deffenceTower.Init(towerToBuild); deffenceTower.PlacementTile = tile; OnTowerBuild?.Invoke(deffenceTower); UiManager.instance.SelectTower(deffenceTower); while (deffenceTower.currentLevel < towerSaveData.currentLevel) { UpgradeTower(); } } } CurrencyManager.instance.SetCurrency(tempCoins); }
public void SelectTile(PlacementTile tile) { ClearSelection(); LeftPanel.SetActive(true); newTowerMenu.SetActive(true); selectedTile = tile; selectedTile.Select(); }
/// <summary> /// Set up visualisation tile /// </summary> protected void Awake() { PlacementTile tileToUse; tileToUse = placementTilePrefab; if (tileToUse != null) { m_SpawnedTile = Instantiate(tileToUse, transform); //m_SpawnedTile.transform.localPosition = Vector3.zero; //m_SpawnedTile.transform.localEulerAngles = new Vector3(90f, 0, 0); } }
/// <summary> /// Set up visualisation tile /// </summary> protected void Awake() { PlacementTile tileToUse; tileToUse = placementTilePrefab; if (tileToUse != null) { m_SpawnedTile = Instantiate(tileToUse); m_SpawnedTile.transform.SetParent(transform); m_SpawnedTile.transform.localPosition = new Vector3(0f, 0.05f, 0f); } }
/// <summary> /// Set up visualisation tile /// </summary> protected void Awake() { PlacementTile tileToUse; #if UNITY_STANDALONE tileToUse = placementTilePrefab; #else tileToUse = placementTilePrefabMobile; #endif if (tileToUse != null) { m_SpawnedTile = Instantiate(tileToUse); m_SpawnedTile.transform.SetParent(transform); m_SpawnedTile.transform.localPosition = new Vector3(0f, 0.05f, 0f); } }
public void BuildTower(TowerData towerToBuild) { if (!CurrencyManager.instance.IsEnoughMoneyFor(towerToBuild.TowerLevels[0].UpgradeCost)) { Debug.Log("Not enough money to build tower!"); return; } selectedTile = UiManager.instance.selectedTile; GameObject newTowerGO = Instantiate(towerToBuild.Prefab.gameObject, selectedTile.transform.position, selectedTile.transform.rotation); Tower deffenceTower = newTowerGO.GetComponent <Tower>(); deffenceTower.Init(towerToBuild); deffenceTower.PlacementTile = selectedTile; OnTowerBuild?.Invoke(deffenceTower); UiManager.instance.SelectTower(deffenceTower); }
internal void ClearSelection() { if (currentSelectedTower != null) { towerMenuGO.SetActive(false); currentSelectedTower.PlacementTile.Deselect(); currentSelectedTower = null; } if (selectedTile != null) { newTowerMenu.SetActive(false); selectedTile.Deselect(); selectedTile = null; } LeftPanel.SetActive(false); }
protected void SetUpGridOverride() { PlacementTile tileToUse; #if UNITY_STANDALONE tileToUse = placementTilePrefab; #else tileToUse = placementTilePrefabMobile; #endif if (tileToUse != null) { // Create a container that will hold the cells. var tilesParent = new GameObject("Container"); tilesParent.transform.parent = transform; tilesParent.transform.localPosition = Vector3.zero; tilesParent.transform.localRotation = Quaternion.identity; //m_Tiles = new PlacementTile[dimensions.x, dimensions.y]; PlacementTile newTile = Instantiate(tileToUse); SpriteRenderer tileSpr = newTile.GetComponent <SpriteRenderer>(); tileSpr.size = new Vector2(dimensions.x * 2, dimensions.y * 2); } }