Exemple #1
0
        protected override double StrainValueOf(HitObject hitObject)
        {
            double distance = hitObject.GetPrevStartDistance();

            // determines speed based on distance to the note, where the further spaced the streams are the more speed is given
            // basically describes how fast you're forced to move your cursor at the same time as clicking
            double speedValue;

            if (distance > singleSpacingThreshold)
            {
                speedValue = 2.5;
            }
            else if (distance > streamSpacingThreshold)
            {
                speedValue = 1.6 + 0.9 * (distance - streamSpacingThreshold) / (singleSpacingThreshold - streamSpacingThreshold);
            }
            else if (distance > almostDiameter)
            {
                speedValue = 1.2 + 0.4 * (distance - almostDiameter) / (streamSpacingThreshold - almostDiameter);
            }
            else if (distance > almostDiameter / 2)
            {
                speedValue = 0.95 + 0.25 * (distance - almostDiameter / 2) / (almostDiameter / 2);
            }
            else
            {
                speedValue = 0.95;
            }

            return(speedValue / hitObject.GetPrevDeltaStartTime());
        }
Exemple #2
0
        protected override double StrainValueOf(HitObject anObject)
        {
            double distance = anObject.GetPrevStartDistance();
            double time     = anObject.GetPrevDeltaStartTime();

            double strainValue = Math.Pow(distance, 0.99) / time;

            return(strainValue);
        }
Exemple #3
0
        /// <summary> Covers base mechanics for strain, like decaying over time and increasing for each given object. </summary>
        public void Process(HitObject hitObject)
        {
            currentStrain *= GetStrainDecay(hitObject.GetPrevDeltaStartTime());
            if (!(hitObject is Spinner))
            {
                currentStrain += StrainValueOf(hitObject) * SkillMultiplier;
            }

            currentStrainPeak = Math.Max(currentStrain, currentStrainPeak);

            previousObjects.Add(hitObject);
        }