// Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using OpenTK.Input; using osu.Game.Beatmaps; using osu.Game.Graphics; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Osu.Mods; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.OsuDifficulty; using osu.Game.Rulesets.Osu.UI; using osu.Game.Rulesets.UI; using osu.Game.Screens.Play; using System.Collections.Generic; using System.Linq; using osu.Framework.Graphics; using osu.Game.Rulesets.Osu.Scoring; using osu.Game.Rulesets.Scoring; using osu.Game.Overlays.Settings; namespace osu.Game.Rulesets.Osu { public class OsuRuleset : Ruleset { public override RulesetContainer CreateRulesetContainerWith(WorkingBeatmap beatmap, bool isForCurrentRuleset) => new OsuRulesetContainer(this, beatmap, isForCurrentRuleset); public override IEnumerable GetBeatmapStatistics(WorkingBeatmap beatmap) => new[] { new BeatmapStatistic { Name = @"Circle count", Content = beatmap.Beatmap.HitObjects.Count(h => h is HitCircle).ToString(), Icon = FontAwesome.fa_dot_circle_o }, new BeatmapStatistic { Name = @"Slider count", Content = beatmap.Beatmap.HitObjects.Count(h => h is Slider).ToString(), Icon = FontAwesome.fa_circle_o } }; public override IEnumerable GetModsFor(ModType type) { switch (type) { case ModType.DifficultyReduction: return new Mod[] { new OsuModEasy(), new OsuModNoFail(), new MultiMod { Mods = new Mod[] { new OsuModHalfTime(), new OsuModDaycore(), }, }, }; case ModType.DifficultyIncrease: return new Mod[] { new OsuModHardRock(), new MultiMod { Mods = new Mod[] { new OsuModSuddenDeath(), new OsuModPerfect(), }, }, new MultiMod { Mods = new Mod[] { new OsuModDoubleTime(), new OsuModNightcore(), }, }, new OsuModHidden(), new OsuModFlashlight(), }; case ModType.Special: return new Mod[] { new OsuModRelax(), new OsuModAutopilot(), new OsuModSpunOut(), new MultiMod { Mods = new Mod[] { new OsuModAutoplay(), new ModCinema(), }, }, new OsuModTarget(), }; default: return new Mod[] { }; } } public override Mod GetAutoplayMod() => new OsuModAutoplay(); public override Drawable CreateIcon() => new SpriteIcon { Icon = FontAwesome.fa_osu_osu_o }; public override DifficultyCalculator CreateDifficultyCalculator(Beatmap beatmap) => new OsuDifficultyCalculator(beatmap); public override string Description => "osu!"; public override IEnumerable CreateGameplayKeys() => new KeyCounter[] { new KeyCounterKeyboard(Key.Z), new KeyCounterKeyboard(Key.X), new KeyCounterMouse(MouseButton.Left), new KeyCounterMouse(MouseButton.Right) }; public override ScoreProcessor CreateScoreProcessor() => new OsuScoreProcessor(); public override SettingsSubsection CreateSettings() => new OsuSettings(); public override int LegacyID => 0; public OsuRuleset(RulesetInfo rulesetInfo) : base(rulesetInfo) { } } }