예제 #1
0
    //Input check and raycast for building system
    private void Update()
    {
        if (GameManager.Instance.CurrentGameState == GameState.RUNNING)
        {
            if (Input.GetMouseButtonDown(0) && !_isSelected)
            {
                RaycastHit hit;
                Ray        ray = _camera.ScreenPointToRay(Input.mousePosition);

                if (Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask))
                {
                    PlaySfx(towerSelectionSfx);
                    _selectedTile = hit.collider.GetComponentInParent <TowerTile>();

                    if (_selectedTile.isAvailable)
                    {
                        ShowSelectionPanel();
                    }
                    else
                    {
                        ShowUpgradePanel();
                    }

                    _isSelected = true;
                }
            }
            else if (Input.GetMouseButtonDown(1) && _isSelected)
            {
                ClosePanel();
                PlaySfx(towerSelectionSfx);
            }
        }
    }
예제 #2
0
    private void ClosePanel()
    {
        if (_selectedTile.tower != null)
        {
            _selectedTile.tower.DisableDome();
        }
        _isSelected   = false;
        _selectedTile = null;

        towerSelectionPanel.gameObject.SetActive(false);
        towerUpgradePanel.gameObject.SetActive(false);
    }
예제 #3
0
    public void SetTower(TowerTile towerTile, Tower tower)
    {
        this.towerTile = towerTile;
        selectedTower  = tower;
        var towerBlocks = selectedTower.GetBlocks();

        for (var blockIndex = 0; blockIndex < towerBlocks.Count; blockIndex++)
        {
            blocks[blockIndex].SetBlock(towerBlocks[blockIndex]);
        }

        ShowTowerInfo();
        ShowPanel();
    }
예제 #4
0
 public void SetTowerTile(TowerTile towerTile)
 {
     selectedTile = towerTile;
     ShowPanel();
 }
예제 #5
0
 public void Init(TowerTile tile)
 {
     _tile = tile;
     transform.position = Camera.main.WorldToScreenPoint(_tile.transform.position);
 }