Beispiel #1
0
        void Update()
        {
            if (_isGameWon)
            {
                return;
            }

            if (!_playersSeated)
            {
                return;
            }

            if (_currentHand == null)
            {
                DebugConsole.Log("Starting new hand...");
                _currentHand = _handFactory.GetNewHand(_players, _players.GetFrom(_players.Single(a => a.Id == _firstPlayerToBid), _numHandsPlayed).Id, team1CumulativeScore, team2CumulativeScore);
            }

            if (_currentHand.IsHandFinished())
            {
                if (!loggedFinish)
                {
                    finishTime   = Time.time;
                    loggedFinish = true;
                }
            }
            if (loggedFinish && Time.time - finishTime > 5)
            {
                loggedFinish = false;
                _numHandsPlayed++;
                team1CumulativeScore = _currentHand.GetPointsForTeam(1);
                team2CumulativeScore = _currentHand.GetPointsForTeam(2);
                if (OnScoreUpdate != null)
                {
                    OnScoreUpdate(team1CumulativeScore, team2CumulativeScore);
                }
                if (team1CumulativeScore >= 200 || team2CumulativeScore >= 200)
                {
                    _isGameWon = true;
                    if (team1CumulativeScore >= 200 && team2CumulativeScore >= 200)
                    {
                        _winner = RuleHelpers.GetTeam(_currentHand.GetBidHolder());
                    }
                    else
                    {
                        _winner = team1CumulativeScore > team2CumulativeScore ? 1 : 2;
                    }
                    DebugConsole.Log(_winner + " won");
                }
                else
                {
                    _currentHand = null;
                }
                if (_isGameWon)
                {
                    _onFinished(_winner);
                }
                return;
            }
            _currentHand.Tick();
        }