// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using osu.Framework.Bindables; using osu.Framework.Graphics.Sprites; using osu.Framework.Localisation; using osu.Game.Configuration; using osu.Game.Graphics; namespace osu.Game.Rulesets.Mods { public abstract class ModDoubleTime : ModRateAdjust { public override string Name => "Double Time"; public override string Acronym => "DT"; public override IconUsage? Icon => OsuIcon.ModDoubleTime; public override ModType Type => ModType.DifficultyIncrease; public override LocalisableString Description => "Zoooooooooom..."; [SettingSource("Speed increase", "The actual increase to apply")] public override BindableNumber SpeedChange { get; } = new BindableDouble(1.5) { MinValue = 1.01, MaxValue = 2, Precision = 0.01, }; public override double ScoreMultiplier { get { // Round to the nearest multiple of 0.1. double value = (int)(SpeedChange.Value * 10) / 10.0; // Offset back to 0. value -= 1; // Each 0.1 multiple changes score multiplier by 0.02. value /= 5; return 1 + value; } } } }