예제 #1
0
 private void Awake()
 {
     IdleState  = new PlayerIdleState(this);
     RunState   = new PlayerRunState(this);
     FightState = new PlayerFightState(this);
     WinState   = new PlayerWinState(this);
     LoseState  = new PlayerLoseState(this);
 }
예제 #2
0
        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;
        }
예제 #3
0
 /// <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);
 }
예제 #4
0
        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);
            }
        }
예제 #5
0
 public Conditions(PlayerWinState winner, int numPlays)
 {
     this.winner   = winner;
     this.numPlays = numPlays;
 }
예제 #6
0
        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;
        }
예제 #7
0
 /// <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);
 }