private void Awake() { IdleState = new PlayerIdleState(this); RunState = new PlayerRunState(this); FightState = new PlayerFightState(this); WinState = new PlayerWinState(this); LoseState = new PlayerLoseState(this); }
void RaisePlayerWinEvent(PlayerWinState a_state) { CancelInvoke(); // Ignore attempts to raise player events, when a state has been already determined if (_winState != WinState.None) { Debug.LogWarning("Attempted to raise PlayerWin Event, but player win state has already been determined, ignoring..."); return; } // Notify listeners of event foreach (GameObject eventListener in _eventListeners) { ExecuteEvents.Execute <ISceneManagerEvents>(eventListener, null, (x, y) => x.OnPlayerWon(a_state)); } // Set win state to current event _winState = WinState.Win; }
/// <summary> /// Called when player has either destroyed all generators in the level /// or destroyed all sheep /// </summary> public void OnPlayerWon(PlayerWinState a_state) { // Show win prompt, and hide pause button _winMenu.SetActive(true); _pauseButton.SetActive(false); }
public double GetPenalty(Game game, Player player, History history) { History playerHistory = history.filter(player); playerHistory.SortByDate(); int i = 1, gamesPlayed = 0; Player opponent = history.GameHistory[0].GetOtherPlayer(player); foreach (Game g in history.GameHistory) { if (i > GAMES_TO_CHECK) { break; } else if (i > 0) { if (opponent == g.GetOtherPlayer(player)) { gamesPlayed++; } } i++; } PlayerWinState state = 0; if (player == game.PlayerWinner) { state = PlayerWinState.Win; } else if (game.Winner == GameWinState.Stalemate) { state = PlayerWinState.Stalemate; } else { state = PlayerWinState.Loss; } Conditions conditions = new Conditions(state, gamesPlayed); if (penalties.ContainsKey(conditions)) { double penalty = penalties[conditions]; string message = ""; if (state == PlayerWinState.Win) { message = string.Format( "{0} has had winning points multiplied by {1} for playing too many games too recently" + " with the same player.", player.Name, penalty); } else if (state == PlayerWinState.Loss) { message = string.Format( "{0} has had losing points multiplied by {1} for playing too many games too recently" + " with the same player.", player.Name, penalty); } MessageBox.Show(message, "Penalty Applied", MessageBoxButton.OK, MessageBoxImage.Exclamation); return(penalty); } else { return(1.0); } }
public Conditions(PlayerWinState winner, int numPlays) { this.winner = winner; this.numPlays = numPlays; }
void RaisePlayerWinEvent(PlayerWinState a_state) { CancelInvoke(); // Ignore attempts to raise player events, when a state has been already determined if (_winState != WinState.None) { Debug.LogWarning("Attempted to raise PlayerWin Event, but player win state has already been determined, ignoring..."); return; } // Notify listeners of event foreach (GameObject eventListener in _eventListeners) { ExecuteEvents.Execute<ISceneManagerEvents>(eventListener, null, (x, y) => x.OnPlayerWon(a_state)); } // Set win state to current event _winState = WinState.Win; }