示例#1
0
    public void endGame(GameEndStatus status)
    {
        if (gameAlive)
        {
            switch (status)
            {
            case GameEndStatus.win:
                panel_win.SetActive(true);
                break;

            case GameEndStatus.loose:
                panel_loose.SetActive(true);
                break;

            default:
                break;
            }

            //PRIMODIAL
            cam_mainmenu.SetActive(true);
            //panel_mainmenu.SetActive(true);
            gameAlive             = false;
            m_tempete.moveEnabled = false;
        }
    }
示例#2
0
    private void CheckScore(PlayerHandle handle)
    {
        if (playerScores[handle] >= rules.scoreLimit)
        {
            //OnPlayerWin?.Invoke(handle);
            //OnPlayerWin = null;
            GameEndStatus endStatus = new GameEndStatus
            {
                playerScores = playerScores,
                winnerHandle = handle
            };

            foreach (PlayerController player in playerControllers)
            {
                player.OnDie          -= OnPlayerDie;
                player.OnChangeHealth -= OnHealthChange;
                player.OnAreaScore    -= OnAreaScore;
            }
            callback(endStatus);
            callback = null;
        }

        foreach (PlayerController player in playerControllers)
        {
            player.hud.SetScore(playerScores[player.handle]);
        }
    }
示例#3
0
    public void EndGame(GameEndStatus status)
    {
        IsPlaying = false;

        if (GameEnded != null)
        {
            GameEnded(status);
        }
    }
    void GameManagerOnGameEnded(GameEndStatus gameEndStatus)
    {
        if (gameEndStatus == GameEndStatus.Won)
        {
            return;
        }

        gameObject.SetActive(true);

        PointsText.text = string.Format("With {0} points!", _gameManager.Points);

        _animator.SetBool("IsShowing", true);
    }
示例#5
0
    void GameManagerOnGameEnded(GameEndStatus gameEndStatus)
    {
        if (gameEndStatus == GameEndStatus.Lost)
        {
            return;
        }

        gameObject.SetActive(true);

        PointsText.text = string.Format("With {0} points!", _gameManager.Points);
        TimeText.text   = string.Format("{0:F2} seconds left", _gameManager.TimeLeft);

        _animator.SetBool("IsShowing", true);
    }
示例#6
0
    // destroy stuff we need to explicitly, and let scenemanager do the rest
    private void UnloadLevel(GameEndStatus endStatus)
    {
        for (int i = 0; i < configuration.playerCount; i++)
        {
            // hud must be explicitly destroyed because it is instantieated as child to
            // GameManager instance which doesn't destroy on load
            Destroy(players[i].hud.gameObject);
            Destroy(players[i].gameObject);
        }
        players = null;

        menuSystem.SetEndView(endStatus);
        SceneManager.LoadScene(menuSceneName);
        musicManager.PlayMenu();
    }
示例#7
0
    private void EndGame(GameEndStatus endStatus)
    {
        ChangeGameState(GameState.GameIsOver);

        switch (endStatus)
        {
        case GameEndStatus.PlayerWins:
            ShowMessage("You win!", 120f);
            break;

        case GameEndStatus.OpponentWins:
            ShowMessage("You lose!", 120f);
            break;

        case GameEndStatus.Draw:
            ShowMessage("It's a draw!", 120f);
            break;
        }

        CardPool.Instance.ReturnAllToPool();
    }
示例#8
0
    private void ContinueToNextTurn()
    {
        GameEndStatus endStatus = CheckWinnerStatus();

        if (endStatus != GameEndStatus.NotOverYet)
        {
            EndGame(endStatus);
            return;
        }

        if (playerHasNextTurn)
        {
            playerHasNextTurn = false;
            ChangeGameState(GameState.PlayersTurn);
        }
        else
        {
            playerHasNextTurn = true;
            StartCoroutine(OpponentChooseGroupsForBattle());
        }
    }
示例#9
0
    private IEnumerator PlayerWinRoutine(GameEndStatus endStatus)
    {
        Debug.Log("I have been called by the gods of trading horn");
        judge = null;
        musicManager.PlayEnd();
        for (int i = 0; i < configuration.playerCount; i++)
        {
            players[i].Stop();
            players[i].enabled = false;

            if (endStatus.winnerHandle == i)
            {
                players [i].hud.SetBigText(winText, winColor);
            }
            else
            {
                players [i].hud.SetBigText(loseText, loseColor);
            }
        }
        yield return(new WaitForSeconds(dieRoutineDuration));

        UnloadLevel(endStatus);
    }
示例#10
0
 // Start routine in method so we can also unsubscribe this
 private void StartPlayerWinRoutine(GameEndStatus endStatus)
 => StartCoroutine(PlayerWinRoutine(endStatus));
示例#11
0
    ///////////////////////////////////////
    /// End view stuff                  ///
    ///////////////////////////////////////

    public void SetEndView(GameEndStatus endStatus)
    {
        endWinnerNumberText.text = $"#{endStatus.winnerHandle.index + 1}";
        SetView(endViewObject);
        eventSystem.SetSelectedGameObject(endGoToMainButton.gameObject);
    }