Ejemplo n.º 1
0
    public void PlaceTower(int _player, Vector2 _pos, Quaternion _rot, int _towerIndex)
    {
        if (gridManager.IsTileAvailable(_pos))
        {
            GameObject tower = Instantiate(AllTowers.instance.GetTowerFromIndex(_towerIndex).GetGameObject(), new Vector3(_pos.x, _pos.y, -1) + MapBase.GetOffset(), _rot);

            tower.transform.SetParent(gridManager.GetGridTile(_pos).background.transform);
            gridManager.SetGridTileTower(_pos, tower, AllTowers.instance.GetTowerFromIndex(_towerIndex));

            if (AllTowers.instance.GetTowerFromIndex(_towerIndex).GetBehaviours().Length > 0)
            {
                foreach (TowerBehaviour behaviour in AllTowers.instance.GetTowerFromIndex(_towerIndex).GetBehaviours())
                {
                    TowerBehaviour newBehaviour = tower.AddComponent(behaviour.GetType()) as TowerBehaviour;
                    newBehaviour.SetGridTile(gridManager.GetGridTile(_pos));
                    newBehaviour.OnPlace(_pos);
                }
            }
            if (_player == PlayerConfig.GetPlayerID())
            {
                //BLUE
                tower.GetComponent <MeshRenderer>().material = localPlayerColor;
                gridManager.SetTileOwner(_pos, TileOwner.PLAYER1);
            }
            else
            {
                //RED
                tower.GetComponent <MeshRenderer>().material = playerColor;
                gridManager.SetTileOwner(_pos, TileOwner.PLAYER2);
            }
        }
        gridManager.ClearLaserHits();
        UpdateLasers();


        //Weird bug, needs delay to find winner
        StartCoroutine(CheckWinnerDelay());
    }