public void ChangeTurn() { TurnNumber += 1; // Clean up after the previous player TileSelector.Instance.DeactiveAnyHighlight(); List <Player> losers = new List <Player>(); for (int i = 0; i < piecesToChange.Count; i++) { Piece piece; if ((piece = GetFriendlyPieceAtGrid(piecesToChange[i])) != null) { UpgradePiece(piece); } } piecesToChange = new List <Vector2Int>(); // Checking win conditions: if (!PlayerCanMove(CurrentPlayer)) { losers.Add(CurrentPlayer); } if (!PlayerCanMove(GetOtherPlayerFromCurrent())) { losers.Add(GetOtherPlayerFromCurrent()); } if (losers.Count > 0) { SetGameOver(losers.ToArray()); ShouldMove = false; return; } // Change current player, next player: CurrentPlayer = GetOtherPlayerFromCurrent(); cam.backgroundColor = CurrentPlayer.CurrentTeam == Team.Black ? new Color(0.12f, 0.12f, 0.12f) : new Color(0.76f, 0.76f, 0.76f); Piece[] piecesYouCanAttack = CurrentPlayerCanAttack().ToArray(); if (MustAttack) { // goes false if there is minimum one piece to attack ShouldMove = !(piecesYouCanAttack.Length > 0); } WarPieces = piecesYouCanAttack; if (CurrentPlayer is NotPlayer) { NotPlayer ai = CurrentPlayer as NotPlayer; StartCoroutine(ai.EnterAIBehaviour()); StopCoroutine(ai.EnterAIBehaviour()); } if (firstRotate == false) { if (!(CurrentPlayer is NotPlayer)) { camMovement.AdjustCamera(CurrentPlayer.CurrentTeam); } firstRotate = true; } TimerController.Instance.ChangeCountdown(CurrentPlayer); if (CurrentPlayer.PlayerPieces.Count <= 2 || GetOtherPlayerFromCurrent().PlayerPieces.Count <= 2) { MusicManager.Instance.ChangeMusic(musicClips[3]); return; } if (CurrentPlayer.PlayerPieces.Count <= 7 || GetOtherPlayerFromCurrent().PlayerPieces.Count <= 7) { MusicManager.Instance.ChangeMusic(musicClips[2]); return; } if (CurrentPlayer.PlayerPieces.Count <= 9 || GetOtherPlayerFromCurrent().PlayerPieces.Count <= 9) { MusicManager.Instance.ChangeMusic(musicClips[1]); return; } }