Beispiel #1
0
        public HitObjectTimings GetHitObjectTimings(int index, bool alternating, bool doubleDelay)
        {
            var result = new HitObjectTimings();

            int startOffsetMin = (int)((alternating ? minAlternateOffset : minOffset) * (doubleDelay ? configManager.HitTimingsDoubleDelayFactor : 1f));
            int startOffsetMax = (int)((alternating ? maxAlternateOffset : maxOffset) * (doubleDelay ? configManager.HitTimingsDoubleDelayFactor : 1f));

            result.StartOffset = MathHelper.Clamp(random.Next(startOffsetMin, startOffsetMax), -hitWindow50, hitWindow50);

            if (beatmap.HitObjects[index] is OsuSlider)
            {
                int sliderDuration = beatmap.HitObjects[index].EndTime - beatmap.HitObjects[index].StartTime;
                int maxHoldTime    = (int)(configManager.HitTimingsMaxSliderHoldTime * audioRate);
                int holdTime       = random.Next(configManager.HitTimingsMinSliderHoldTime, maxHoldTime);

                result.HoldTime = MathHelper.Clamp(holdTime, sliderDuration >= 72 ? -26 : sliderDuration / 2 - 10, maxHoldTime);
            }
            else
            {
                int minHoldTime = (int)(configManager.HitTimingsMinHoldTime * audioRate);
                int maxHoldTime = (int)(configManager.HitTimingsMaxHoldTime * audioRate);
                int holdTime    = random.Next(minHoldTime, maxHoldTime);

                result.HoldTime = MathHelper.Clamp(holdTime, 0, maxHoldTime);
            }

            return(result);
        }
Beispiel #2
0
        public HitObjectTimings GetHitObjectTimings(int index, bool alternating, bool doubleDelay)
        {
            HitObjectTimings hitObjectTimings = new HitObjectTimings(0, 0);
            int minValue = (int)((float)(alternating ? this.minAlternateOffset : this.minOffset) * (doubleDelay ? this.configManager.HitTimingsDoubleDelayFactor : 1f));
            int maxValue = (int)((float)(alternating ? this.maxAlternateOffset : this.maxOffset) * (doubleDelay ? this.configManager.HitTimingsDoubleDelayFactor : 1f));

            hitObjectTimings.StartOffset = MathHelper.Clamp(this.random.Next(minValue, maxValue), -this.hitWindow50, this.hitWindow50);
            if (this.beatmap.HitObjects[index] is OsuSlider)
            {
                int num   = this.beatmap.HitObjects[index].EndTime - this.beatmap.HitObjects[index].StartTime;
                int num2  = (int)((float)this.configManager.HitTimingsMaxSliderHoldTime * this.audioRate);
                int value = this.random.Next(this.configManager.HitTimingsMinSliderHoldTime, num2);
                hitObjectTimings.HoldTime = MathHelper.Clamp(value, (num >= 72) ? -26 : (num / 2 - 10), num2);
            }
            else
            {
                int minValue2 = (int)((float)this.configManager.HitTimingsMinHoldTime * this.audioRate);
                int num3      = (int)((float)this.configManager.HitTimingsMaxHoldTime * this.audioRate);
                int value2    = this.random.Next(minValue2, num3);
                hitObjectTimings.HoldTime = MathHelper.Clamp(value2, 0, num3);
            }
            return(hitObjectTimings);
        }