public void CollectPlayerNote(NoteScript noteToStore) { // Calculate Score float accuracyRating = Mathf.Abs(noteToStore.transform.position.x - selectors[noteToStore.noteTypeID].transform.position.x); AccuracyRating currRating = AccuracyRating.OK; if (accuracyRating < encounterConstants.accuracyPerfect) { currRating = AccuracyRating.Perfect; } else if (accuracyRating < encounterConstants.accuracyGood) { currRating = AccuracyRating.Good; } Color gradeColor = encounterConstants.missedNoteColor; Sprite noteSprite = noteOK; int scoreMultiplier = 0; switch (currRating) { case AccuracyRating.Perfect: gradeColor = encounterConstants.PlayerGradeColors[0]; noteSprite = notePerfect; scoreMultiplier = encounterConstants.scorePerfectMultiplier; audioManager.PlaySoundEffect(SoundEffects.Perfect); break; case AccuracyRating.Good: gradeColor = encounterConstants.PlayerGradeColors[1]; noteSprite = noteGood; scoreMultiplier = encounterConstants.scoreGoodMultiplier; audioManager.PlaySoundEffect(SoundEffects.Good); break; case AccuracyRating.OK: gradeColor = encounterConstants.PlayerGradeColors[2]; noteSprite = noteOK; scoreMultiplier = encounterConstants.scoreOKMultiplier; break; } float score = (scoreMultiplier * playerMoves[currentPlayer][currentMove].score); if (currentState == NotesGameStates.Hyped) { score *= 2; } else { if (gameManager.movesActive[MoveEffects.Amplifier]) { gameManager.AnimateEffectAction(MoveEffects.Amplifier); score *= encounterConstants.amplifierMultiplier; } } if (currentState == NotesGameStates.Playing) { hypeMeterUI.IncrementHypeValue((int)playerMoves[currentPlayer][currentMove].hypeRate); } gameManager.TurnScoreIncrement((int)score); audioManager.PlayMusicEffect(MusicEffects.PlayerCorrect, currentPlayer); noteToStore.PlaySuccessAnimation(gradeColor, noteSprite); }
public void CollectEnemyNote(NoteScript noteToStore) { bool hasMissed = false; // Set to true for move effect // Calculate random accuracy float accuracyRating = UnityEngine.Random.Range(10 * (1 - encounterConstants.enemyDifficulty), 100f - (20 * encounterConstants.enemyDifficulty)); AccuracyRating currRating = AccuracyRating.OK; if (accuracyRating < encounterConstants.accuracyPerfect) { currRating = AccuracyRating.Perfect; } else if (accuracyRating < encounterConstants.accuracyGood) { currRating = AccuracyRating.Good; } else { if (accuracyRating > encounterConstants.enemyMissThreshold) { hasMissed = true; } } Color gradeColor = encounterConstants.missedNoteColor; int scoreDecrement = 0; Sprite noteSprite = noteOK; switch (currRating) { case AccuracyRating.Perfect: gradeColor = encounterConstants.EnemyGradeColors[0]; noteSprite = notePerfect; scoreDecrement = encounterConstants.scorePerfectMultiplier; audioManager.PlaySoundEffect(SoundEffects.Perfect); break; case AccuracyRating.Good: gradeColor = encounterConstants.EnemyGradeColors[1]; noteSprite = noteGood; scoreDecrement = encounterConstants.scoreGoodMultiplier; audioManager.PlaySoundEffect(SoundEffects.Good); break; case AccuracyRating.OK: gradeColor = encounterConstants.EnemyGradeColors[2]; noteSprite = noteOK; scoreDecrement = encounterConstants.scoreOKMultiplier; break; } // Add handicap based on difficulty if (!hasMissed) { float handicapScore = scoreDecrement - (scoreDecrement * (0.2f * (1f - encounterConstants.enemyDifficulty))); if (gameManager.movesActive[MoveEffects.Rhythm]) { gameManager.AnimateEffectAction(MoveEffects.Rhythm); handicapScore *= encounterConstants.rhythmMultiplier; } noteToStore.PlaySuccessAnimation(gradeColor, noteSprite); gameManager.EnemyScoreDecrement((int)handicapScore); } else { noteToStore.isCollected = true; noteToStore.PlayFailureAnimation(); } }