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()); }