mirror of
https://github.com/osukey/osukey.git
synced 2025-07-02 00:40:09 +09:00
Use generics everywhere.
This commit is contained in:
@ -20,7 +20,7 @@ namespace osu.Game.Modes.UI
|
||||
|
||||
public event Action OnAllJudged;
|
||||
|
||||
public InputManager InputManager;
|
||||
public abstract bool AllObjectsJudged { get; }
|
||||
|
||||
protected void TriggerOnJudgement(JudgementInfo j)
|
||||
{
|
||||
@ -28,18 +28,20 @@ namespace osu.Game.Modes.UI
|
||||
if (AllObjectsJudged)
|
||||
OnAllJudged?.Invoke();
|
||||
}
|
||||
|
||||
protected Playfield Playfield;
|
||||
|
||||
public bool AllObjectsJudged => Playfield.HitObjects.Children.First()?.Judgement.Result != null; //reverse depth sort means First() instead of Last().
|
||||
|
||||
public IEnumerable<DrawableHitObject> DrawableObjects => Playfield.HitObjects.Children;
|
||||
}
|
||||
|
||||
public abstract class HitRenderer<T> : HitRenderer
|
||||
where T : HitObject
|
||||
public abstract class HitRenderer<TObject> : HitRenderer
|
||||
where TObject : HitObject
|
||||
{
|
||||
private List<T> objects;
|
||||
private List<TObject> objects;
|
||||
|
||||
public InputManager InputManager;
|
||||
|
||||
protected Playfield<TObject> Playfield;
|
||||
|
||||
public override bool AllObjectsJudged => Playfield.HitObjects.Children.First()?.Judgement.Result != null; //reverse depth sort means First() instead of Last().
|
||||
|
||||
public IEnumerable<DrawableHitObject> DrawableObjects => Playfield.HitObjects.Children;
|
||||
|
||||
public Beatmap Beatmap
|
||||
{
|
||||
@ -51,11 +53,11 @@ namespace osu.Game.Modes.UI
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract Playfield CreatePlayfield();
|
||||
protected abstract Playfield<TObject> CreatePlayfield();
|
||||
|
||||
protected abstract HitObjectConverter<T> Converter { get; }
|
||||
protected abstract HitObjectConverter<TObject> Converter { get; }
|
||||
|
||||
protected virtual List<T> Convert(Beatmap beatmap) => Converter.Convert(beatmap);
|
||||
protected virtual List<TObject> Convert(Beatmap beatmap) => Converter.Convert(beatmap);
|
||||
|
||||
public HitRenderer()
|
||||
{
|
||||
@ -76,9 +78,9 @@ namespace osu.Game.Modes.UI
|
||||
private void loadObjects()
|
||||
{
|
||||
if (objects == null) return;
|
||||
foreach (T h in objects)
|
||||
foreach (TObject h in objects)
|
||||
{
|
||||
var drawableObject = GetVisualRepresentation(h);
|
||||
DrawableHitObject<TObject> drawableObject = GetVisualRepresentation(h);
|
||||
|
||||
if (drawableObject == null) continue;
|
||||
|
||||
@ -89,8 +91,8 @@ namespace osu.Game.Modes.UI
|
||||
Playfield.PostProcess();
|
||||
}
|
||||
|
||||
private void onJudgement(DrawableHitObject o, JudgementInfo j) => TriggerOnJudgement(j);
|
||||
private void onJudgement(DrawableHitObject<TObject> o, JudgementInfo j) => TriggerOnJudgement(j);
|
||||
|
||||
protected abstract DrawableHitObject GetVisualRepresentation(T h);
|
||||
protected abstract DrawableHitObject<TObject> GetVisualRepresentation(TObject h);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user