示例#1
0
    public void CollectNote(NoteCollectArgs args)
    {
        var accuracy  = args.Accuracy;
        var scoreArgs = new ScoreEarnedArgs();

        if (accuracy >= 0.7f)
        {
            scoreArgs.Rate     = ScoreRate.Poor;
            _currentMultiplier = 1;
        }
        else if (accuracy >= 0.45f && accuracy < 0.7f)
        {
            scoreArgs.Rate     = ScoreRate.Good;
            _currentMultiplier = 1;
        }
        else if (accuracy > 0 && accuracy < 0.45f)
        {
            scoreArgs.Rate = ScoreRate.Perfect;
            if (_currentMultiplier != _scoreData.maxMultiplier)
            {
                _currentMultiplier++;
            }
        }
        else
        {
            return;
        }
        scoreArgs.CurrentIncome = _scoreData.noteScore * _currentMultiplier;
        _totalScore            += scoreArgs.CurrentIncome;
        scoreArgs.Total         = _totalScore;
        scoreArgs.Multiplier    = _currentMultiplier;
        scoreArgs.ScorePosition = args.Collectable.transform.position;

        EventBus.RaiseEvent <IScoreEarnedHandler>(x => x.ProcessScoreData(scoreArgs));
    }
示例#2
0
 public void ProcessScoreData(ScoreEarnedArgs args)
 {
     StopAllCoroutines();
     StartCoroutine(ConsistenlyUpdateScore(args.Total));
     UpdateMultiplier(args.Multiplier);
 }