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(); }