Beispiel #1
0
 // Use this for initialization
 void Start()
 {
     if (!curInput || !curPlayer || !curPowerup)
     {
         GameObject player = FindObjectOfType <TurnManager>().GetCurrentPlayer();
         curInput   = player.GetComponent <PlayerInput>();
         curPlayer  = player.GetComponent <PlayerControl>();
         curPowerup = player.GetComponent <PlayerPowerUpController>();
     }
 }
Beispiel #2
0
    IEnumerator CheckTurnSwitch()
    {
        while (true)
        {
            if (gameObject.activeInHierarchy)
            {
                PlayerControl           curPlayerControl = players[curPlayerIndex].GetComponent <PlayerControl>();
                Rigidbody               curPlayerRB      = players[curPlayerIndex].GetComponent <Rigidbody>();
                PlayerInput             curPlayerInput   = players[curPlayerIndex].GetComponent <PlayerInput>();
                PlayerPowerUpController curPlayerPowerUp = players[curPlayerIndex].GetComponent <PlayerPowerUpController>();
                PlayerPoints            curPlayerPoints  = players[curPlayerIndex].GetComponent <PlayerPoints>();


                if (turnsSinceWin > turnsAfterWinUntilEndGame || AllPlayersWon())
                {
                    // End the game!
                    Debug.Log("GAME HAS ENDED!");
                    SceneManager.LoadScene("GameEndScreen");
                }

                if (curPlayerControl.getPossibleTurnOver() &&
                    (curPlayerRB.velocity.magnitude < minimumVelocity || !curPlayerPoints.playerPlaying))
                {
                    StartCoroutine(switchTurn(curPlayerControl, curPlayerRB, curPlayerInput, curPlayerPowerUp, curPlayerPoints));
                }
                else
                {
                    confirming = false;                     // The player is moving, so we are no longer confirmed.
                }

                if (AllPlayersWon())
                {
                    // End the game!
                }
                yield return(new WaitForSeconds(WAIT_TIME));
            }
            //yield return new WaitForSeconds(WAIT_TIME);
        }
    }
Beispiel #3
0
    IEnumerator switchTurn(PlayerControl curPlayerControl, Rigidbody curPlayerRB, PlayerInput curPlayerInput, PlayerPowerUpController curPlayerPowerUp, PlayerPoints curPlayerPoints)
    {
        if (!confirming && curPlayerPoints.playerPlaying)
        {
            confirming = true;             // We are currently confirming!
            Debug.Log("Confirming!");
            yield break;
        }
        // If we make it here, the player has been stationary for WAIT_TIME seconds or they've won!
        Debug.Log("Confirmed!");
        curPlayerRB.velocity = Vector3.zero;

        curPlayerPowerUp.EndTurn();
        curPlayerInput.enabled   = false;
        curPlayerControl.enabled = false;
        curPlayerControl.endTurn();

        curPlayerIndex = (curPlayerIndex + 1) % players.Length;
        Camera.main.GetComponent <CameraMan>().ballLeaveFlight();

        // There might be a better way to do this...
        foreach (GameObject powerUp in powerUps)
        {
            powerUp.GetComponentInChildren <PowerUpManager>().Respawn(players.Length);
        }

        int playersWonCounter = 0;

        while (!players[curPlayerIndex].GetComponent <PlayerPoints>().playerPlaying)
        {
            printPlayersWon();
            Debug.Log("Skipping turns! Current player is: " + curPlayerIndex);
            Debug.Log("First Winning Player was: " + firstWinningPlayerIndex);
            if (curPlayerIndex == firstWinningPlayerIndex)
            {
                turnsSinceWin++;
                print("Turns Since Win: " + turnsSinceWin);
            }
            playersWon[curPlayerIndex] = true;
            playersWonCounter++;
            curPlayerIndex = (curPlayerIndex + 1) % players.Length;
            printPlayersWon();
            if (playersWonCounter >= (players.Length - 1))
            {
                Debug.Log("GAME HAS ENDED!");
                SceneManager.LoadScene("GameEndScreen");
                yield break;
            }
        }


        curPlayerControl = players[curPlayerIndex].GetComponent <PlayerControl>();
        curPlayerRB      = players[curPlayerIndex].GetComponent <Rigidbody>();
        curPlayerInput   = players[curPlayerIndex].GetComponent <PlayerInput>();
        curPlayerPowerUp = players[curPlayerIndex].GetComponent <PlayerPowerUpController>();


        Camera.main.GetComponent <CameraMan>().target = players[curPlayerIndex].transform;

        curPlayerInput.enabled   = true;
        curPlayerControl.enabled = true;
        curPlayerPowerUp.UpdateUI();

        inputController.curInput   = curPlayerInput;
        inputController.curPlayer  = curPlayerControl;
        inputController.curPowerup = curPlayerPowerUp;
        players[curPlayerIndex].GetComponent <Indicator>().setActive(true);

        confirming = false;
    }