Пример #1
0
 void FlagLevelLoad()
 {
     if (Time.time > this.startTime + player.winTime)
     {
         PlayerWon.Invoke();
     }
 }
Пример #2
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.gameObject.TryGetComponent(out Player player))
     {
         PlayerWon?.Invoke(_timer.Minute, (int)_timer.Second);
         _statsData.CountingWins();
         _statsData.СomparePlayingTime(_timer.Minute, (int)_timer.Second);
     }
 }
Пример #3
0
    //TODO: in RPSNController, update game state


    void Start()
    {
        gamesToChooseFrom = settings.GetShuffledMinigames().ToList();
        // If we overestimated the number of games to choose from
        if (numberOfMinigamesToChooseFrom > gamesToChooseFrom.Count)
        {
            numberOfMinigamesToChooseFrom = gamesToChooseFrom.Count;

            //TODO: won't need this if dynamic thumbnail display, get all minigame options, spawn thumbnail screens based on how many choices we can select
            // Reset minigame thumbnail array
            if (populatableObjects.Count > numberOfMinigamesToChooseFrom)
            {
                for (int i = numberOfMinigamesToChooseFrom; i < populatableObjects.Count; i++)
                {
                    populatableObjects[i].SetActive(false);
                }
                populatableObjects.RemoveRange(numberOfMinigamesToChooseFrom, populatableObjects.Count - numberOfMinigamesToChooseFrom);
            }
            // minigameSelectionLocation.transform.localPosition = new Vector3(0, minigameSelectionLocation.transform.localPosition.y, minigameSelectionLocation.transform.localPosition.z);
        }

        //gamesToChooseFrom = GameState.Instance.SelectedMinigames;

        //TODO: change UI anchors on screen
        switch (GameState.Instance.LastMetagameFinishState)
        {
        case LastMetagameFinish.P1WIN:
            currentWinner        = PlayerWon.P1;
            playerSelecting.text = "P1";
            break;

        case LastMetagameFinish.P2WIN:
            currentWinner        = PlayerWon.P2;
            playerSelecting.text = "P2";
            break;

        default:     // TIE or NONE, pick random player to select
            switch (Random.Range(0, 1))
            {
            case 0:
                currentWinner        = PlayerWon.P1;
                playerSelecting.text = "P1";
                break;

            case 1:
                currentWinner        = PlayerWon.P2;
                playerSelecting.text = "P2";
                break;
            }
            break;
        }
        PopulateUI();
        StartCoroutine(ChooseMinigame());
    }
Пример #4
0
 protected override void EndGame(Player winner = null)
 {
     base.EndGame(winner);
     if (winner == null)
     {
         MatchDrawn?.Invoke();
     }
     else
     {
         PlayerWon?.Invoke(winner);
     }
 }
Пример #5
0
    void SubscribeToGameSceneEvents()
    {
        // Make sure the game over and player won events don't have any
        // listeners before adding any
        GameOver.RemoveAllListeners();
        PlayerWon.RemoveAllListeners();

        GameOver.AddListener(resetGameState);
        PlayerWon.AddListener(victorySequence);

        player.statusEvents.Died.AddListener(deathSequence);
    }
Пример #6
0
        internal static GameState CalculateScore(GameState state, PlayerWon playerWon)
        {
            if (playerWon == PlayerWon.A)
            {
                return(state.IncreaseA());
            }

            else
            {
                return(state.IncreaseB());
            }
        }
Пример #7
0
 private void AddToEtherealKillCount(String element)
 {
     etherealKillCount++;
     if (etherealKillCount == 4)
     {
         Cursor.lockState = CursorLockMode.None;
         Cursor.visible   = true;
         animator.SetBool("isAttacking", false);
         animator.SetBool("isDying", false);
         animator.SetBool("isRunning", false);
         animator.SetBool("isIdle", true);
         PlayerWon?.Invoke();
         enabled = false;
     }
 }
Пример #8
0
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendLine("GameId: " + Id.ToString());
            sb.AppendLine("Channel: " + ChannelName);
            sb.AppendLine("Player count: " + PlayerCount);
            sb.AppendLine("Start time: " + StartTime.ToShortTimeString());
            sb.AppendLine("End time: " + EndTime.ToShortTimeString());
            sb.AppendLine("Status: " + GameStatus);
            sb.AppendLine("Kon time: " + KonTime);
            sb.AppendLine("Fuse time: " + FuseTime);
            sb.AppendLine("Holder: " + Holder?.ToString());
            sb.AppendLine("Player won: " + PlayerWon?.ToString());
            return(sb.ToString());
        }
Пример #9
0
    void VictorySequence()
    {
        // Play music, fade into a victory screen, and then give the player the
        // option to either exit the game or start a new one.
        Debug.Log("You win!");
        PlayerWon.RemoveListener(victorySequence);
        //resultText.text =     "You win! You are now promoted to Admiral!";

        // Fade out of the current song into the next one
        musicFader.FadeIntoClip(victoryMusic, 1, 0.5f, 0.5f);

        screenFader.Fade(1, fadeOutDuration);

        // Make sure the victory scene is loaded when the fade out is done.
        //UnityAction undisplayResultText =     () => resultText.text = "";

        //screenFader.FadeEnd.AddListener(undisplayResultText);
        screenFader.FadeEnd.AddListener(LoadVictoryScene);
        //screenFader.FadeEnd.AddListener(ResetGameState);
    }
Пример #10
0
    public void InvokePlayerWon()
    {
        if (!playerWonInvoked)
        {
            Debug.Log("PLayerWon has been invoked");
            PlayerWon?.Invoke();

            if (PlayerWon == null)
            {
                Debug.Log("PlayerWon is null");
            }

            playerWonInvoked = true;
        }

        if (!gameOverInkvoked)
        {
            InvokeGameOver();
        }
    }
Пример #11
0
    private void Update()
    {
        if (canStartLevel && Input.GetKeyDown(KeyCode.G))
        {
            canStartLevel = false;
            StopAllCoroutines();
            StartCoroutine(PlayLevel());
        }

        if (isResetRequired && UIManager.Instance.IsReadyToReceiveUpdates)
        {
            isResetRequired = false;
            ResetLevel();
        }

        if (isLevelOngoing && haveAllWavesSpawned && IsWaveFinished())
        {
            isLevelOngoing = false;
            PlayerWon?.Invoke();
        }
    }
Пример #12
0
    /// <summary>
    /// Start is called before the first frame update
    /// </summary>
    void Start()
    {
        // Start level timer
        levelTime           = ConfigurationUtils.InitialLevelTimer;
        levelTimer          = gameObject.AddComponent <Timer>();
        levelTimer.Duration = ConfigurationUtils.InitialLevelTimer + 1;
        levelTimer.AddTimerFinishedListener(HandleLevelTimerFinished);
        levelTimer.Run();

        // Set level
        level = 1;

        // Initialize text
        timeLeftText      = GameObject.FindGameObjectWithTag("TimeLeftText").GetComponent <Text>();
        levelText         = GameObject.FindGameObjectWithTag("LevelText").GetComponent <Text>();
        timeLeftText.text = timeLeftPrefix + levelTime;
        levelText.text    = levelPrefix + level;

        // Initialize events and add class as invoker
        levelUp   = new LevelUp();
        playerWon = new PlayerWon();
        EventManager.AddLevelUpInvoker(this);
        EventManager.AddPlayerWonInvoker(this);
    }
Пример #13
0
    public void Redeal()
    {
        for (int i = 0; i < currentPlayer.RedealFlags.Length; i++)
        {
            if (currentPlayer.RedealFlags[i])
            {
                currentDeck.DiscardCard(currentPlayer.Hand[i]);
                currentPlayer.Hand[i] = currentDeck.GetTopCard();
            }

            currentPlayer.RedealFlags[i] = false;
        }

        CardsRedealt?.Invoke(currentPlayer.Hand);

        if (Rules.TestHand(currentPlayer.Hand, currentBet, out string winningHandName, out int reward))
        {
            currentPlayer.Credits += reward;
            PlayerWon?.Invoke(winningHandName, reward, currentPlayer);
        }

        currentBet = Mathf.Min(kDefaultBet, currentPlayer.Credits);
        BetChanged?.Invoke(currentBet);
    }
 public static void UnsubscribeAllSubscriber()
 {
     if (NextPhase != null)
     {
         System.Delegate[] delegates = NextPhase.GetInvocationList();
         for (int i = 0; i < delegates.Length; i++)
         {
             NextPhase -= delegates [i] as NextPhaseEvent;
         }
     }
     if (AllowCurrentPlayerToMove != null)
     {
         System.Delegate[] delegates = AllowCurrentPlayerToMove.GetInvocationList();
         for (int i = 0; i < delegates.Length; i++)
         {
             AllowCurrentPlayerToMove -= delegates [i] as AllowCurrentPlayerToMoveEvent;
         }
     }
     if (DisallowCurrentPlayerToMove != null)
     {
         System.Delegate[] delegates = DisallowCurrentPlayerToMove.GetInvocationList();
         for (int i = 0; i < delegates.Length; i++)
         {
             DisallowCurrentPlayerToMove -= delegates [i] as DisallowCurrentPlayerToMoveEvent;
         }
     }
     if (AllowCurrentPlayerToFire != null)
     {
         System.Delegate[] delegates = AllowCurrentPlayerToFire.GetInvocationList();
         for (int i = 0; i < delegates.Length; i++)
         {
             AllowCurrentPlayerToFire -= delegates [i] as AllowCurrentPlayerToFireEvent;
         }
     }
     if (DisallowCurrentPlayerToFire != null)
     {
         System.Delegate[] delegates = DisallowCurrentPlayerToFire.GetInvocationList();
         for (int i = 0; i < delegates.Length; i++)
         {
             DisallowCurrentPlayerToFire -= delegates [i] as DisallowCurrentPlayerToFireEvent;
         }
     }
     if (NextPlayer != null)
     {
         System.Delegate[] delegates = NextPlayer.GetInvocationList();
         for (int i = 0; i < delegates.Length; i++)
         {
             NextPlayer -= delegates [i] as NextPlayerEvent;
         }
     }
     if (PlayerDead != null)
     {
         System.Delegate[] delegates = PlayerDead.GetInvocationList();
         for (int i = 0; i < delegates.Length; i++)
         {
             PlayerDead -= delegates [i] as PlayerDeadEvent;
         }
     }
     if (PlayerWon != null)
     {
         System.Delegate[] delegates = PlayerWon.GetInvocationList();
         for (int i = 0; i < delegates.Length; i++)
         {
             PlayerWon -= delegates [i] as PlayerWonEvent;
         }
     }
     if (TimerEnd != null)
     {
         System.Delegate[] delegates = TimerEnd.GetInvocationList();
         for (int i = 0; i < delegates.Length; i++)
         {
             TimerEnd -= delegates [i] as TimerEndEvent;
         }
     }
     if (PlayerCast != null)
     {
         System.Delegate[] delegates = PlayerCast.GetInvocationList();
         for (int i = 0; i < delegates.Length; i++)
         {
             PlayerCast -= delegates [i] as PlayerCastEvent;
         }
     }
     if (SpellEnd != null)
     {
         System.Delegate[] delegates = SpellEnd.GetInvocationList();
         for (int i = 0; i < delegates.Length; i++)
         {
             SpellEnd -= delegates [i] as SpellEndEvent;
         }
     }
     if (NextPlayerButtonClick != null)
     {
         System.Delegate[] delegates = NextPlayerButtonClick.GetInvocationList();
         for (int i = 0; i < delegates.Length; i++)
         {
             NextPlayerButtonClick -= delegates [i] as NextPlayerButtonClickEvent;
         }
     }
 }
Пример #15
0
 public void CallAWinner(Player player)
 {
     PlayerWon?.Invoke(player, EventArgs.Empty);
 }
Пример #16
0
        public void NewState_Is_Correct_After_Game(GameState currentState, PlayerWon playerWon, GameState expectedNewState)
        {
            var newState = Scorer.CalculateScore(currentState, playerWon);

            Assert.Equal(expectedNewState, newState);
        }
Пример #17
0
        private void Minesweeper_MouseClick(object sender, MouseEventArgs e)
        {
            if (!GameOver)
            {
                int  x = e.X; int y = e.Y;
                bool FitsByX = (x <= Starting.X + this.Size && x >= Starting.X);
                bool FitsByY = (y <= Starting.Y + this.Size && y >= Starting.Y);

                if (FitsByX && FitsByY)
                {
                    bool isLeft   = e.Button.Equals(MouseButtons.Left);
                    bool isRight  = e.Button.Equals(MouseButtons.Right);
                    bool isMiddle = e.Button.Equals(MouseButtons.Middle);
                    int  CellSize = this.Size / this.Settings.Width;
                    int  i        = (x - Starting.X) / CellSize;
                    int  j        = (y - Starting.Y) / CellSize;
                    if (isMiddle)
                    {
                        if (board[i, j].State.Equals(Enums.CellState.Uncovered))
                        {
                            List <Cell> cells     = board[i, j].Neighbours;
                            List <Cell> mines     = board[i, j].Neighbours.Where(x => x.IsMine == true).ToList();
                            List <Cell> nonMine   = board[i, j].Neighbours.Where(x => x.IsMine == false).ToList();
                            bool        AllMarked = true;
                            foreach (Cell mine in mines)
                            {
                                if (!mine.State.Equals(Enums.CellState.Flag))
                                {
                                    AllMarked = false;
                                    break;
                                }
                            }
                            if (AllMarked)
                            {
                                foreach (Cell cell in nonMine)
                                {
                                    cell.Uncover(g);
                                }
                            }
                        }
                    }
                    else
                    {
                        if (isLeft)
                        {
                            if (!board[i, j].State.Equals(Enums.CellState.Flag))
                            {
                                if (board[i, j].IsMine)
                                {
                                    GameOver = true;
                                    for (int n = 0; n < this.Settings.Width; n++)
                                    {
                                        for (int m = 0; m < this.Settings.Height; m++)
                                        {
                                            if (board[n, m].IsMine)
                                            {
                                                board[n, m].State = Enums.CellState.Mine;
                                                board[n, m].Draw(g);
                                            }
                                        }
                                    }
                                    PlayerLost?.Invoke(this, EventArgs.Empty);
                                    return;
                                }
                                else
                                {
                                    board[i, j].Uncover(g);
                                }
                            }
                        }
                        else
                        {
                            if (isRight)
                            {
                                board[i, j].TryPlaceFlag(g);
                            }
                        }
                    }
                }
                int CoveredCount = 0;
                for (int i = 0; i < this.Settings.Width; i++)
                {
                    for (int j = 0; j < this.Settings.Height; j++)
                    {
                        if (!board[i, j].IsMine && board[i, j].State.Equals(Enums.CellState.Covered))
                        {
                            CoveredCount++;
                        }
                    }
                }
                if (CoveredCount == 0)
                {
                    PlayerWon?.Invoke(this, EventArgs.Empty);
                    GameOver = true;
                    return;
                }
            }
        }