Exemplo n.º 1
0
    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;
        }
    }