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]); } }
public Judge(PlayerController[] _players, RuleSet _rules, PlayerWinCallback _callback) { playerControllers = _players; playerScores = new int[_players.Length]; rules = _rules; callback = _callback; foreach (PlayerController player in playerControllers) { player.OnDie += OnPlayerDie; player.OnChangeHealth += OnHealthChange; player.OnAreaScore += OnAreaScore; player.SetImmortal(rules.immortalPlayers); } }