Exemplo n.º 1
0
    private void MultiplierSetup(ScoringGrade scoringGrade)
    {
        if (scoringGrade == ScoringGrade.Perfect)
        {
            _multiplierProgressCounter++;

            if (_multiplierProgressCounter < 5)
            {
                // If the counter ain't full, keep lighting the capsules
                //uiManager.multiplierProgress[_multiplierProgressCounter].material = filledMultiplierMaterial;
                uiManager.UpdateMultiplierProgress(_multiplierProgressCounter, filledMultiplierMaterial);
            }
            else
            {
                if (!_reachedMaxMultiplier)
                {
                    // If the capsules are all lit, increase the multiplier
                    multiplier++;

                    if (multiplier >= 4)
                    {
                        // If we're at max multiplier, we can't go higher!
                        uiManager.StartCoroutine("ChainExplosion", maxMultiplierColor);
                        uiManager.SetMultiplierProgress(maxMultiplierMaterial);

                        uiManager.SetMaxMultiplierText(true);

                        _reachedMaxMultiplier = true;

                        // TODO: CAN USE THIS TO SAVE THE LONGEST STREAK
                        _multiplierProgressCounter = 5;
                    }
                    else
                    {
                        // If we aren't at max multiplier, just turn the capsules off
                        uiManager.StartCoroutine("ChainExplosion", normalMultiplierColor);
                        uiManager.SetMultiplierProgress(emptyMultiplierMaterial);

                        _multiplierProgressCounter = -1;
                    }

                    // Update the multiplier on screen
                    uiManager.UpdateMultiplier(multiplier.ToString());
                }
            }
        }
        else
        {
            // Lose the counter and the multiplier
            _multiplierProgressCounter = -1;
            multiplier            = 1;
            _reachedMaxMultiplier = false;
            uiManager.SetMultiplierProgress(emptyMultiplierMaterial);

            // Update the multiplier on screen
            uiManager.UpdateMultiplier(multiplier.ToString());
            uiManager.SetMaxMultiplierText(false);
        }
    }
Exemplo n.º 2
0
    private void ShowFloatingText(ScoringGrade scoringGrade)
    {
        floatingTextObject.SetActive(true);
        ScoringValues scoreVal = GameManager.Instance.scoringValues.Find(values => values.scoringGrade == scoringGrade);

        floatingText.text  = scoreVal.textValue;
        floatingText.color = scoreVal.textColor;
    }
Exemplo n.º 3
0
    public ScoringGrade CalculateScore()
    {
        // Get a timing score based on the destruction of a coin and the beat timing
        float timingScore = GetTimingScore();

        // Get a scoring grade depending on the timing score
        ScoringGrade scoringGrade = GetScoringGrade(timingScore);

        // Setup and calculate the multiplier
        MultiplierSetup(scoringGrade);

        // Increase the score based on the grade multiplied by the current multiplier
        lastScore = IncreaseScore(_scoreValuesDictionary[scoringGrade] * multiplier);

        return(scoringGrade);
    }
Exemplo n.º 4
0
    private void OnTriggerEnter(Collider other)
    {
        // before destroying, check if it was killed on a beat.
        ScoringGrade scoringGrade = _gameManager.CalculateScore();

        // Disable the mesh renderer and the mesh collider
        SetComponents(false);

        // Enable the floating text with the correct string and color
        ShowFloatingText(scoringGrade);

        // Update score
        _gameManager.ShowScore();

        // Finish mopping up the coin
        DestroyCoin();
    }