示例#1
0
    // Update is called once per frame
    private void Update()
    {
        int trashTotal = _playerDataList.Sum(x => x.trashCount);

        lightAtmoAnimator.SetBool("bStateHasChanged", false);

        UpdateCopGauge();

        if (data.copGauge >= 100 && !data.gameOver)
        {
            data.gameOver = true;
            lightAtmoAnimator.SetInteger("StateNeighborGauge", 4);
            lightAtmoAnimator.SetBool("bStateHasChanged", true);
            _audioSrcs[0].Play();

            OnGameOver?.Invoke();

            // End game
            data.timeScale = 0;
            canvasGameOver.transform.GetChild(0).GetComponent <TextMeshProUGUI>().text = "Game Over";
            canvasGameOver.SetActive(true);
            canvasUI.SetActive(false);
            endScore.text = "Score: " + (int)data.score;
            return;
        }

        // Setting / Unsetting pause ?
        if (Input.GetButtonDown(InputHelper.GetActionName(1, InputHelper.PAUSE, false)) || Input.GetButtonDown(InputHelper.GetActionName(1, InputHelper.PAUSE, true)))
        {
            data.paused = !data.paused;

            if (data.paused)
            {
                canvasGameOver.transform.GetChild(0).GetComponent <TextMeshProUGUI>().text = "Paused";
                canvasGameOver.SetActive(true);
                canvasUI.SetActive(false);
                endScore.text = string.Empty;
            }
            else
            {
                canvasGameOver.SetActive(false);
                canvasUI.SetActive(true);
            }
        }

        if (data.paused && data.timeScale > 0)
        {
            data.timeScale -= Time.deltaTime;
            data.timeScale  = data.timeScale.Wrap(0, 1);
        }
        else if (!data.paused && data.timeScale < 1)
        {
            data.timeScale += Time.deltaTime;
            data.timeScale  = data.timeScale.Wrap(0, 1);
        }

        if (trashTotal >= data.trashLimit)
        {
            trashImage.sprite = trashImages[trashImages.Length - 1];
        }
        else
        {
            trashImage.sprite =
                trashImages[(trashTotal * (trashImages.Length - 1)) / data.trashLimit];
        }

        // Update score
        data.score    += (Time.deltaTime * data.timeScale) * 10;
        scoreMesh.text = "Score: " + data.score.ToString("000000");
    }