diff --git a/osu.Game.Modes.Catch/CatchMod.cs b/osu.Game.Modes.Catch/CatchMod.cs index 49b6f8a2a9..75b616a9ed 100644 --- a/osu.Game.Modes.Catch/CatchMod.cs +++ b/osu.Game.Modes.Catch/CatchMod.cs @@ -19,7 +19,6 @@ namespace osu.Game.Modes.Catch { public override string Description => @"Play with no approach circles and fading notes for a slight score advantage."; public override double ScoreMultiplier => 1.06; - public override Type[] IncompatibleMods => new Type[] { }; } public class CatchModHardRock : ModHardRock @@ -56,7 +55,6 @@ namespace osu.Game.Modes.Catch public class CatchModFlashlight : ModFlashlight { public override double ScoreMultiplier => 1.12; - public override Type[] IncompatibleMods => new Type[] { }; } public class CatchModPerfect : ModPerfect diff --git a/osu.Game.Modes.Mania/ManiaMod.cs b/osu.Game.Modes.Mania/ManiaMod.cs index 743887cbb7..d52db2977c 100644 --- a/osu.Game.Modes.Mania/ManiaMod.cs +++ b/osu.Game.Modes.Mania/ManiaMod.cs @@ -26,7 +26,6 @@ namespace osu.Game.Modes.Mania public class ManiaModHardRock : ModHardRock { public override double ScoreMultiplier => 1.0; - public override bool Ranked => false; } public class ManiaModSuddenDeath : ModSuddenDeath @@ -62,9 +61,8 @@ namespace osu.Game.Modes.Mania public class ManiaModFadeIn : Mod { - public override Mods Name => Mods.FadeIn; + public override string Name => "FadeIn"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_hidden; - public override string Description => @""; public override double ScoreMultiplier => 1; public override bool Ranked => true; public override Type[] IncompatibleMods => new[] { typeof(ModFlashlight) }; @@ -72,85 +70,77 @@ namespace osu.Game.Modes.Mania public class ManiaModRandom : Mod { - public override Mods Name => Mods.Random; - public override FontAwesome Icon => FontAwesome.fa_close; + public override string Name => "Random"; public override string Description => @"Shuffle around the notes!"; public override double ScoreMultiplier => 1; - public override bool Ranked => false; - public override Type[] IncompatibleMods => new Type[] { }; } public abstract class ManiaKeyMod : Mod { public abstract int KeyCount { get; } - public override FontAwesome Icon => FontAwesome.fa_close; // TODO: Add proper key icons - public override string Description => @""; public override double ScoreMultiplier => 1; // TODO: Implement the mania key mod score multiplier public override bool Ranked => true; - public override Type[] IncompatibleMods => new Type[] { }; } public class ManiaModKey1 : ManiaKeyMod { public override int KeyCount => 1; - public override Mods Name => Mods.Key1; + public override string Name => "1K"; } public class ManiaModKey2 : ManiaKeyMod { public override int KeyCount => 2; - public override Mods Name => Mods.Key2; + public override string Name => "2K"; } public class ManiaModKey3 : ManiaKeyMod { public override int KeyCount => 3; - public override Mods Name => Mods.Key3; + public override string Name => "3K"; } public class ManiaModKey4 : ManiaKeyMod { public override int KeyCount => 4; - public override Mods Name => Mods.Key4; + public override string Name => "4K"; } public class ManiaModKey5 : ManiaKeyMod { public override int KeyCount => 5; - public override Mods Name => Mods.Key5; + public override string Name => "5K"; } public class ManiaModKey6 : ManiaKeyMod { public override int KeyCount => 6; - public override Mods Name => Mods.Key6; + public override string Name => "6K"; } public class ManiaModKey7 : ManiaKeyMod { public override int KeyCount => 7; - public override Mods Name => Mods.Key7; + public override string Name => "7K"; } public class ManiaModKey8 : ManiaKeyMod { public override int KeyCount => 8; - public override Mods Name => Mods.Key8; + public override string Name => "8K"; } public class ManiaModKey9 : ManiaKeyMod { public override int KeyCount => 9; - public override Mods Name => Mods.Key9; + public override string Name => "9K"; } public class ManiaModKeyCoop : Mod { - public override Mods Name => Mods.KeyCoop; - public override FontAwesome Icon => FontAwesome.fa_close; + public override string Name => "KeyCoop"; public override string Description => @"Double the key amount, double the fun!"; public override double ScoreMultiplier => 1; public override bool Ranked => true; - public override Type[] IncompatibleMods => new Type[] { }; } } diff --git a/osu.Game.Modes.Osu/OsuMod.cs b/osu.Game.Modes.Osu/OsuMod.cs index 0b23ebc9ed..2df44ab5de 100644 --- a/osu.Game.Modes.Osu/OsuMod.cs +++ b/osu.Game.Modes.Osu/OsuMod.cs @@ -21,7 +21,6 @@ namespace osu.Game.Modes.Osu { public override string Description => @"Play with no approach circles and fading notes for a slight score advantage."; public override double ScoreMultiplier => 1.06; - public override Type[] IncompatibleMods => new Type[] { }; } public class OsuModHardRock : ModHardRock @@ -59,7 +58,6 @@ namespace osu.Game.Modes.Osu public class OsuModFlashlight : ModFlashlight { public override double ScoreMultiplier => 1.12; - public override Type[] IncompatibleMods => new Type[] { }; } public class OsuModPerfect : ModPerfect @@ -69,7 +67,7 @@ namespace osu.Game.Modes.Osu public class OsuModSpunOut : Mod { - public override Mods Name => Mods.SpunOut; + public override string Name => "Spun Out"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_spunout; public override string Description => @"Spinners will be automatically completed"; public override double ScoreMultiplier => 0.9; @@ -79,7 +77,7 @@ namespace osu.Game.Modes.Osu public class OsuModAutopilot : Mod { - public override Mods Name => Mods.Autopilot; + public override string Name => "Autopilot"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_autopilot; public override string Description => @"Automatic cursor movement - just follow the rhythm."; public override double ScoreMultiplier => 0; @@ -94,11 +92,9 @@ namespace osu.Game.Modes.Osu public class OsuModTarget : Mod { - public override Mods Name => Mods.Target; + public override string Name => "Target"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_target; public override string Description => @""; public override double ScoreMultiplier => 1; - public override bool Ranked => false; - public override Type[] IncompatibleMods => new Type[] { }; } } diff --git a/osu.Game.Modes.Taiko/TaikoMod.cs b/osu.Game.Modes.Taiko/TaikoMod.cs index fdf46834f6..fd09e4528e 100644 --- a/osu.Game.Modes.Taiko/TaikoMod.cs +++ b/osu.Game.Modes.Taiko/TaikoMod.cs @@ -19,7 +19,6 @@ namespace osu.Game.Modes.Taiko { public override string Description => @"The notes fade out before you hit them!"; public override double ScoreMultiplier => 1.06; - public override Type[] IncompatibleMods => new Type[] { }; } public class TaikoModHardRock : ModHardRock @@ -56,7 +55,6 @@ namespace osu.Game.Modes.Taiko public class TaikoModFlashlight : ModFlashlight { public override double ScoreMultiplier => 1.12; - public override Type[] IncompatibleMods => new Type[] { }; } public class TaikoModPerfect : ModPerfect diff --git a/osu.Game/Modes/Mod.cs b/osu.Game/Modes/Mod.cs index b914f7d73a..916d84cf2f 100644 --- a/osu.Game/Modes/Mod.cs +++ b/osu.Game/Modes/Mod.cs @@ -15,17 +15,17 @@ namespace osu.Game.Modes /// /// The name of this mod. /// - public abstract Mods Name { get; } + public abstract string Name { get; } /// /// The icon of this mod. /// - public abstract FontAwesome Icon { get; } + public virtual FontAwesome Icon => FontAwesome.fa_question; /// /// The user readable description of this mod. /// - public abstract string Description { get; } + public virtual string Description => string.Empty; /// /// The score multiplier of this mod. @@ -35,31 +35,28 @@ namespace osu.Game.Modes /// /// Returns if this mod is ranked. /// - public abstract bool Ranked { get; } + public virtual bool Ranked => false; /// /// The mods this mod cannot be enabled with. /// - public abstract Type[] IncompatibleMods { get; } + public virtual Type[] IncompatibleMods => new Type[] { }; } public class MultiMod : Mod { - public override Mods Name => Modes.Mods.None; - public override FontAwesome Icon => FontAwesome.fa_close; - public override string Description => @""; + public override string Name => string.Empty; + public override string Description => string.Empty; public override double ScoreMultiplier => 0.0; - public override bool Ranked => false; - public override Type[] IncompatibleMods => new Type[] { }; public Mod[] Mods; } public abstract class ModNoFail : Mod { - public override Mods Name => Mods.NoFail; + public override string Name => "NoFail"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_nofail; - public override string Description => @"You can't fail, no matter what."; + public override string Description => "You can't fail, no matter what."; public override double ScoreMultiplier => 0.5; public override bool Ranked => true; public override Type[] IncompatibleMods => new[] { typeof(ModRelax), typeof(ModSuddenDeath), typeof(ModPerfect) }; @@ -67,34 +64,33 @@ namespace osu.Game.Modes public abstract class ModEasy : Mod { - public override Mods Name => Mods.Easy; + public override string Name => "Easy"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_easy; - public override string Description => @"Reduces overall difficulty - larger circles, more forgiving HP drain, less accuracy required."; + public override string Description => "Reduces overall difficulty - larger circles, more forgiving HP drain, less accuracy required."; public override double ScoreMultiplier => 0.5; public override bool Ranked => true; - public override Type[] IncompatibleMods => new[] { typeof(ModHardRock) }; } public abstract class ModHidden : Mod { - public override Mods Name => Mods.Hidden; + public override string Name => "Hidden"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_hidden; public override bool Ranked => true; } public abstract class ModHardRock : Mod { - public override Mods Name => Mods.HardRock; + public override string Name => "Hard Rock"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_hardrock; - public override string Description => @"Everything just got a bit harder..."; + public override string Description => "Everything just got a bit harder..."; public override Type[] IncompatibleMods => new[] { typeof(ModEasy) }; } public abstract class ModSuddenDeath : Mod { - public override Mods Name => Mods.SuddenDeath; + public override string Name => "Sudden Death"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_suddendeath; - public override string Description => @"Miss a note and fail."; + public override string Description => "Miss a note and fail."; public override double ScoreMultiplier => 1; public override bool Ranked => true; public override Type[] IncompatibleMods => new[] { typeof(ModNoFail), typeof(ModRelax), typeof(ModAutoplay), typeof(ModCinema) }; @@ -102,167 +98,66 @@ namespace osu.Game.Modes public abstract class ModDoubleTime : Mod { - public override Mods Name => Mods.DoubleTime; + public override string Name => "Double Time"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_doubletime; - public override string Description => @"Zoooooooooom"; + public override string Description => "Zoooooooooom"; public override bool Ranked => true; public override Type[] IncompatibleMods => new[] { typeof(ModHalfTime) }; } public abstract class ModRelax : Mod { - public override Mods Name => Mods.Relax; + public override string Name => "Relax"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_relax; public override double ScoreMultiplier => 0; - public override bool Ranked => false; public override Type[] IncompatibleMods => new[] { typeof(ModAutoplay), typeof(ModCinema), typeof(ModNoFail), typeof(ModSuddenDeath), typeof(ModPerfect) }; } public abstract class ModHalfTime : Mod { - public override Mods Name => Mods.HalfTime; + public override string Name => "Half Time"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_halftime; - public override string Description => @"Less zoom"; + public override string Description => "Less zoom"; public override bool Ranked => true; public override Type[] IncompatibleMods => new[] { typeof(ModDoubleTime), typeof(ModNightcore) }; } public abstract class ModNightcore : ModDoubleTime { - public override Mods Name => Mods.Nightcore; + public override string Name => "Nightcore"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_nightcore; - public override string Description => @"uguuuuuuuu"; + public override string Description => "uguuuuuuuu"; } public abstract class ModFlashlight : Mod { - public override Mods Name => Mods.Flashlight; + public override string Name => "Flashlight"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_flashlight; - public override string Description => @"Restricted view area."; + public override string Description => "Restricted view area."; public override bool Ranked => true; } public class ModAutoplay : Mod { - public override Mods Name => Mods.Autoplay; + public override string Name => "Autoplay"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_auto; - public override string Description => @"Watch a perfect automated play through the song"; + public override string Description => "Watch a perfect automated play through the song"; public override double ScoreMultiplier => 0; - public override bool Ranked => false; public override Type[] IncompatibleMods => new[] { typeof(ModRelax), typeof(ModSuddenDeath), typeof(ModPerfect) }; } public abstract class ModPerfect : ModSuddenDeath { - public override Mods Name => Mods.Perfect; - public override FontAwesome Icon => FontAwesome.fa_close; - public override string Description => @"SS or quit."; + public override string Name => "Perfect"; + public override string Description => "SS or quit."; } public class ModCinema : ModAutoplay { - public override Mods Name => Mods.Cinema; + public override string Name => "Cinema"; public override FontAwesome Icon => FontAwesome.fa_osu_mod_cinema; } - [Flags] - public enum Mods - { - None = 0, - - [Description(@"No Fail")] - NoFail = 1 << 0, - - [Description(@"Easy")] - Easy = 1 << 1, - - //NoVideo = 1 << 2, - - [Description(@"Hidden")] - Hidden = 1 << 3, - - [Description(@"Hard Rock")] - HardRock = 1 << 4, - - [Description(@"Sudden Death")] - SuddenDeath = 1 << 5, - - [Description(@"Double Time")] - DoubleTime = 1 << 6, - - [Description(@"Relax")] - Relax = 1 << 7, - - [Description(@"Halftime")] - HalfTime = 1 << 8, - - [Description(@"Nightcore")] - Nightcore = 1 << 9, - - [Description(@"Flashlight")] - Flashlight = 1 << 10, - - [Description(@"Auto")] - Autoplay = 1 << 11, - - [Description(@"Spun Out")] - SpunOut = 1 << 12, - - [Description(@"Autopilot")] - Autopilot = 1 << 13, - - [Description(@"Perfect")] - Perfect = 1 << 14, - - [Description(@"4K")] - Key4 = 1 << 15, - - [Description(@"5K")] - Key5 = 1 << 16, - - [Description(@"6K")] - Key6 = 1 << 17, - - [Description(@"7K")] - Key7 = 1 << 18, - - [Description(@"8K")] - Key8 = 1 << 19, - - [Description(@"Fade In")] - FadeIn = 1 << 20, - - [Description(@"Random")] - Random = 1 << 21, - - [Description(@"Cinema")] - Cinema = 1 << 22, - - [Description(@"Target Practice")] - Target = 1 << 23, - - [Description(@"9K")] - Key9 = 1 << 24, - - [Description(@"Co-Op")] - KeyCoop = 1 << 25, - - [Description(@"1K")] - Key1 = 1 << 26, - - [Description(@"3K")] - Key3 = 1 << 27, - - [Description(@"2K")] - Key2 = 1 << 28, - - LastMod = 1 << 29, - - KeyMod = Key1 | Key2 | Key3 | Key4 | Key5 | Key6 | Key7 | Key8 | Key9 | KeyCoop, - FreeModAllowed = NoFail | Easy | Hidden | HardRock | SuddenDeath | Flashlight | FadeIn | Relax | Autopilot | SpunOut | KeyMod, - ScoreIncreaseMods = Hidden | HardRock | DoubleTime | Flashlight | FadeIn - } - public enum ModType { DifficultyReduction, diff --git a/osu.Game/Overlays/Mods/ModButton.cs b/osu.Game/Overlays/Mods/ModButton.cs index 3cec804653..93d301bb21 100644 --- a/osu.Game/Overlays/Mods/ModButton.cs +++ b/osu.Game/Overlays/Mods/ModButton.cs @@ -184,7 +184,7 @@ namespace osu.Game.Overlays.Mods private void displayMod(Mod mod) { displayIcon.Icon = mod.Icon; - text.Text = mod.Name.GetDescription(); + text.Text = mod.Name; } private void displaySelectedMod()