private void DoScore(HitObject hitObject, int hitValue) { if (hitValue < 0) { return; } string hitValueName; if (hitValue == HitValues[ScoreMarvelous]) { CurrentScoreSplash = new ScoreSplash(_gameplay.Skin.ScoreMarvelousTexture); MarvelousCount++; hitValueName = ScoreMarvelous; } else if (hitValue == HitValues[ScorePerfect]) { CurrentScoreSplash = new ScoreSplash(_gameplay.Skin.ScorePerfectTexture); PerfectCount++; hitValueName = ScorePerfect; } else if (hitValue == HitValues[ScoreGreat]) { CurrentScoreSplash = new ScoreSplash(_gameplay.Skin.ScoreGreatTexture); GreatCount++; hitValueName = ScoreGreat; } else if (hitValue == HitValues[ScoreGood]) { CurrentScoreSplash = new ScoreSplash(_gameplay.Skin.ScoreGoodTexture); GoodCount++; hitValueName = ScoreGood; } else if (hitValue == HitValues[ScoreBad]) { CurrentScoreSplash = new ScoreSplash(_gameplay.Skin.ScoreBadTexture); BadCount++; hitValueName = ScoreBad; } else if (hitValue == HitValues[ScoreMiss]) { CurrentScoreSplash = new ScoreSplash(_gameplay.Skin.ScoreMissTexture); MissCount++; DoBreakCombo(); hitValueName = ScoreMiss; } else { throw new InvalidDataException("ScoremeterScore not found"); } OnScoreGet?.Invoke(this, new OnScoreGetEventHandler(hitValueName, HitValues[hitValueName], (float)FindSystem <GameTimeSystem>().Time - hitObject.Position)); GameSystemManager.FindSystem <ScoremeterSystem>()?.AddScore((long)FindSystem <GameTimeSystem>().Time, hitObject.Position, hitValueName); ProceedCombo(hitValue); CalculateScore(hitValueName); CalculateAccuracy(); }
public override void Reset() { _score = Combo = MaxCombo = 0; MarvelousCount = PerfectCount = GreatCount = GoodCount = BadCount = MissCount = 0; CurrentBonus = 100; Accuracy = 1.0f; CurrentScoreSplash = null; }