Exemple #1
0
    public override void HandleFire(PlayerState p)
    {
        if (p != p1 && p != p2)
        {
            return;
        }

        InputHelpers.BasicPullTrigger(p);
        InputHelpers.BasicReleaseTrigger(p);
    }
Exemple #2
0
 public virtual void HandleFire(PlayerState p)
 {
     InputHelpers.BasicPullTrigger(p);
     InputHelpers.BasicReleaseTrigger(p);
 }
Exemple #3
0
    void Update()
    {
        if (state == GameState.Countdown)
        {
            LeaderboardPanel.SetActive(false);
            playerHUDManager.DisableUI(playerStates);
            if (!CountdownStarted)
            {
                CountdownStarted = true;
                CountdownAudio.Play();
            }

            remainingCountdownDuration -= Time.deltaTime;
            ui.countdownNumber.text     = Mathf.CeilToInt(remainingCountdownDuration).ToString();

            if (remainingCountdownDuration <= 0f)
            {
                CountdownStarted = false;
                state            = GameState.Live;
                ui.animator.SetTrigger("Close");
            }
        }
        else if (state == GameState.Live)
        {
            GameTimer += Time.deltaTime;
            UpdateGameClock(GameTimer);
            ProcessNewValidHits();

            /*
             * How do we decide how players should move on a given frame?
             *
             * !player.moveStatus.Dashing
             * player.canMove
             * minigame.canMove(player)
             *
             */

            if (Minigame)
            {
                if (Minigame.MinigameIsRunning())
                {
                    for (var i = 0; i < playerStates.Length; i++)
                    {
                        Minigame.HandleMove(playerStates[i]);
                        Minigame.HandleDash(playerStates[i]);
                        Minigame.HandleRotate(playerStates[i]);
                        Minigame.HandleFire(playerStates[i]);
                        InputHelpers.BasicReload(playerStates[i]);
                    }

                    //prob need to figure out where to put this so it doesnt get processed over and over
                    foreach (var n in Minigame.NPCS)
                    {
                        if (!NPCS.Contains(n))
                        {
                            NPCS.Add(n);
                            if (n.OnValidHitOccurred == null)
                            {
                                n.OnValidHitOccurred += AddValidHit;
                            }
                        }
                    }
                }
                else if (Minigame.MinigameResultsReady())
                {
                    //collect the results from the minigame in order to process them and apply prize/penalty to players
                    if (ActiveMinigameResults == null)
                    {
                        ActiveMinigameResults = Minigame.Results;
                    }
                }
                else if (Minigame.MinigameShouldDestroy())
                {
                    //wanted to ensure that the minigame results were collected / score screen shown before removing
                    Destroy(Minigame.gameObject);
                }
            }
            else
            {
                // Temp code for testing
                if (GameTimer >= 5f && didSpawnMinigame == false && MinigamePrefabs.Length > 0)
                {
                    Minigame = Instantiate(MinigamePrefabs[0]);
                    Minigame.BeginMinigame(playerStates);
                    didSpawnMinigame = true;
                }

                // These are the "default" behaviors when no minigames are present
                for (var i = 0; i < playerStates.Length; i++)
                {
                    InputHelpers.BasicMove(playerStates[i]);
                    InputHelpers.BasicDash(playerStates[i]);
                    InputHelpers.BasicRotate(playerStates[i]);
                    InputHelpers.BasicPullTrigger(playerStates[i]);
                    InputHelpers.BasicReleaseTrigger(playerStates[i]);
                    InputHelpers.BasicReload(playerStates[i]);
                }
            }

            // kill players that have fallen off the map
            for (var i = 0; i < playerStates.Length; i++)
            {
                var notDead         = !playerStates[i].player.IsDead();
                var belowKillHeight = playerStates[i].player.transform.position.y < killHeight;

                if (notDead && belowKillHeight)
                {
                    playerStates[i].player.KillByFalling();
                    StartCoroutine(RespawnAfter(playerStates[i], RespawnTimer));
                }
            }

            // calculate current top level
            LeaderboardPanel.SetActive(true);
            var topLevel = 1;
            for (var i = 0; i < playerStates.Length; i++)
            {
                topLevel = Mathf.Max(topLevel, playerStates[i].weaponIndex + 1);
            }

            // find all current leaders
            var leaders = "";
            for (var i = 0; i < playerStates.Length; i++)
            {
                leaders += (playerStates[i].weaponIndex + 1) == topLevel
                                        ? "P" + (i + 1) + ", "
                                        : "";
            }
            LeaderboardLabel.text = "Current Leaders";
            GuncountText.text     = topLevel + " / " + WeaponPrefabs.Length;

            leaders            = leaders.TrimEnd(' ');
            leaders            = leaders.TrimEnd(',');
            PlayerNumbers.text = leaders;

            playerHUDManager.UpdatePlayerHUDs(playerStates, WeaponPrefabs, shakeable.shakyCamera,
                                              screenSpaceUICanvas.transform as RectTransform, PlayerUIArea.transform as RectTransform);
        }
        else if (state == GameState.Victory)
        {
            playerHUDManager.DisableUI(playerStates);
            LeaderboardPanel.SetActive(false);

            for (var i = 0; i < playerStates.Length; i++)
            {
                if (playerStates[i].playerController.GetButtonDown("Fire"))
                {
                    SceneManager.LoadScene(SceneManager.GetActiveScene().name);
                }
            }
        }
        // always push timescale back towards full-speed
        Time.timeScale += (1 - Time.timeScale) * .1f * Time.timeScale;
    }