Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        public override void Reset()
        {
            _score         = Combo = MaxCombo = 0;
            MarvelousCount = PerfectCount = GreatCount = GoodCount = BadCount = MissCount = 0;
            CurrentBonus   = 100;

            Accuracy = 1.0f;

            CurrentScoreSplash = null;
        }