diff --git a/osu.Game.Rulesets.Mania/UI/ManiaHitRenderer.cs b/osu.Game.Rulesets.Mania/UI/ManiaHitRenderer.cs index b92c0916b1..2805c129f3 100644 --- a/osu.Game.Rulesets.Mania/UI/ManiaHitRenderer.cs +++ b/osu.Game.Rulesets.Mania/UI/ManiaHitRenderer.cs @@ -30,7 +30,7 @@ using osu.Game.Rulesets.UI; namespace osu.Game.Rulesets.Mania.UI { - public class ManiaHitRenderer : SpeedAdjustedHitRenderer + public class ManiaHitRenderer : SpeedAdjustedHitRenderer { /// /// Preferred column count. This will only have an effect during the initialization of the play field. diff --git a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs index 03b6e18856..b81b9c44fe 100644 --- a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs +++ b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs @@ -23,7 +23,7 @@ using osu.Framework.Graphics.Shapes; namespace osu.Game.Rulesets.Mania.UI { - public class ManiaPlayfield : Playfield + public class ManiaPlayfield : SpeedAdjustedPlayfield { public const float HIT_TARGET_POSITION = 50; diff --git a/osu.Game/Rulesets/UI/HitRenderer.cs b/osu.Game/Rulesets/UI/HitRenderer.cs index 8fe1dd3e0a..fd43078c2b 100644 --- a/osu.Game/Rulesets/UI/HitRenderer.cs +++ b/osu.Game/Rulesets/UI/HitRenderer.cs @@ -221,7 +221,7 @@ namespace osu.Game.Rulesets.UI /// /// The playfield. /// - protected Playfield Playfield; + protected Playfield Playfield { get; private set; } protected override Container Content => content; private readonly Container content; @@ -319,6 +319,32 @@ namespace osu.Game.Rulesets.UI protected abstract Playfield CreatePlayfield(); } + /// + /// A derivable HitRenderer that manages the Playfield and HitObjects. + /// + /// The type of HitObject contained by this HitRenderer. + /// The type of Judgement of DrawableHitObjects contained by this HitRenderer. + public abstract class HitRenderer : HitRenderer + where TObject : HitObject + where TJudgement : Judgement + where TPlayfield : Playfield + { + /// + /// The playfield. + /// + protected new TPlayfield Playfield => (TPlayfield)base.Playfield; + + /// + /// Creates a hit renderer for a beatmap. + /// + /// The beatmap to create the hit renderer for. + /// Whether to assume the beatmap is for the current ruleset. + protected HitRenderer(WorkingBeatmap beatmap, bool isForCurrentRuleset) + : base(beatmap, isForCurrentRuleset) + { + } + } + public class BeatmapInvalidForRulesetException : ArgumentException { public BeatmapInvalidForRulesetException(string text) diff --git a/osu.Game/Rulesets/UI/SpeedAdjustedHitRenderer.cs b/osu.Game/Rulesets/UI/SpeedAdjustedHitRenderer.cs index 42dadb047d..2dadbb04d0 100644 --- a/osu.Game/Rulesets/UI/SpeedAdjustedHitRenderer.cs +++ b/osu.Game/Rulesets/UI/SpeedAdjustedHitRenderer.cs @@ -16,11 +16,13 @@ using osu.Game.Rulesets.Timing; namespace osu.Game.Rulesets.UI { /// - /// A type of that supports speed adjustments in some capacity. + /// A type of that exposes s to be used + /// in s. /// - public abstract class SpeedAdjustedHitRenderer : HitRenderer + public abstract class SpeedAdjustedHitRenderer : HitRenderer where TObject : HitObject where TJudgement : Judgement + where TPlayfield : SpeedAdjustedPlayfield { protected readonly SortedList DefaultControlPoints = new SortedList(Comparer.Default); diff --git a/osu.Game/Rulesets/UI/SpeedAdjustedPlayfield.cs b/osu.Game/Rulesets/UI/SpeedAdjustedPlayfield.cs new file mode 100644 index 0000000000..1d1f890a6e --- /dev/null +++ b/osu.Game/Rulesets/UI/SpeedAdjustedPlayfield.cs @@ -0,0 +1,15 @@ +using osu.Game.Rulesets.Judgements; +using osu.Game.Rulesets.Objects; + +namespace osu.Game.Rulesets.UI +{ + public class SpeedAdjustedPlayfield : Playfield + where TObject : HitObject + where TJudgement : Judgement + { + protected SpeedAdjustedPlayfield(float? customWidth = null) + : base(customWidth) + { + } + } +} \ No newline at end of file diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 3f475a34c8..5ec7f365f5 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -340,6 +340,7 @@ +