コード例 #1
0
        private void EnsureSmashStreak()
        {
            if (isDead ||
                smashStreakLength < smashStreakMinLength ||
                smashStreakScore <= 0)
            {
                ResetSmashStreak();
                return;
            }

            int extraScore = (int)(smashStreakScore *
                                   smashStreakLength * smashStreakScoreLengthFactor);
            ScoreableView scoreSource = null;

            extraScore = FilterScore(extraScore, scoreSource);

            if (extraScore > 0)
            {
                smashStreakBuffer.Length     = smashStreakLength;
                smashStreakBuffer.ExtraScore = extraScore;
                eventBus.Fire((int)Events.PlayerSmashStreak,
                              new Evt(this, smashStreakBuffer));
                Score += extraScore;
            }

            ResetSmashStreak();
        }
コード例 #2
0
        public CriticalValue FilterScore(
            CriticalValue score, ScoreableView source = null)
        {
            if (IsScoreFreezed || isDead)
            {
                return(new CriticalValue());
            }

            if (!score.IsCritical &&
                UnityEngine.Random.value <= CriticalScoreChance &&
                source != null &&
                source.GetComponent <SmashableView>() != null)
            {
                score.IsCritical = true;
                score.Value      =
                    Mathf.RoundToInt(score.Value * (1f + criticalScoreFactor));
            }

            for (int i = 0; i < scoreFilters.Count; ++i)
            {
                score = scoreFilters[i](score, source);
            }

            return(score);
        }