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); } }
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; }
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); }
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(); }