mirror of
https://github.com/ppy/osu.git
synced 2024-12-14 13:22:55 +08:00
Add secondary interface for further abstraction
This commit is contained in:
parent
7927b684d3
commit
5db813b7a4
@ -36,7 +36,7 @@ namespace osu.Game.Rulesets.Edit
|
|||||||
private readonly DrawableRuleset<TObject> drawableRuleset;
|
private readonly DrawableRuleset<TObject> drawableRuleset;
|
||||||
|
|
||||||
[Resolved]
|
[Resolved]
|
||||||
private EditorBeatmap<TObject> beatmap { get; set; }
|
private IEditorBeatmap<TObject> beatmap { get; set; }
|
||||||
|
|
||||||
public DrawableEditRuleset(DrawableRuleset<TObject> drawableRuleset)
|
public DrawableEditRuleset(DrawableRuleset<TObject> drawableRuleset)
|
||||||
{
|
{
|
||||||
|
@ -176,9 +176,6 @@ namespace osu.Game.Rulesets.Edit
|
|||||||
where TObject : HitObject
|
where TObject : HitObject
|
||||||
{
|
{
|
||||||
private Beatmap<TObject> playableBeatmap;
|
private Beatmap<TObject> playableBeatmap;
|
||||||
|
|
||||||
[Cached]
|
|
||||||
[Cached(typeof(IEditorBeatmap))]
|
|
||||||
private EditorBeatmap<TObject> editorBeatmap;
|
private EditorBeatmap<TObject> editorBeatmap;
|
||||||
|
|
||||||
protected HitObjectComposer(Ruleset ruleset)
|
protected HitObjectComposer(Ruleset ruleset)
|
||||||
@ -195,7 +192,11 @@ namespace osu.Game.Rulesets.Edit
|
|||||||
editorBeatmap.HitObjectAdded += addHitObject;
|
editorBeatmap.HitObjectAdded += addHitObject;
|
||||||
editorBeatmap.HitObjectRemoved += removeHitObject;
|
editorBeatmap.HitObjectRemoved += removeHitObject;
|
||||||
|
|
||||||
return base.CreateChildDependencies(parent);
|
var dependencies = new DependencyContainer(parent);
|
||||||
|
dependencies.CacheAs<IEditorBeatmap>(editorBeatmap);
|
||||||
|
dependencies.CacheAs<IEditorBeatmap<TObject>>(editorBeatmap);
|
||||||
|
|
||||||
|
return base.CreateChildDependencies(dependencies);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addHitObject(HitObject hitObject)
|
private void addHitObject(HitObject hitObject)
|
||||||
|
@ -10,7 +10,7 @@ using osu.Game.Rulesets.Objects;
|
|||||||
|
|
||||||
namespace osu.Game.Screens.Edit
|
namespace osu.Game.Screens.Edit
|
||||||
{
|
{
|
||||||
public class EditorBeatmap<T> : IBeatmap<T>, IEditorBeatmap
|
public class EditorBeatmap<T> : IEditorBeatmap<T>
|
||||||
where T : HitObject
|
where T : HitObject
|
||||||
{
|
{
|
||||||
public event Action<HitObject> HitObjectAdded;
|
public event Action<HitObject> HitObjectAdded;
|
||||||
|
@ -2,16 +2,35 @@
|
|||||||
// See the LICENCE file in the repository root for full licence text.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Rulesets.Edit;
|
||||||
using osu.Game.Rulesets.Objects;
|
using osu.Game.Rulesets.Objects;
|
||||||
|
|
||||||
namespace osu.Game.Screens.Edit
|
namespace osu.Game.Screens.Edit
|
||||||
{
|
{
|
||||||
public interface IEditorBeatmap
|
/// <summary>
|
||||||
|
/// Interface for the <see cref="IBeatmap"/> contained by the see <see cref="HitObjectComposer"/>.
|
||||||
|
/// Children of <see cref="HitObjectComposer"/> may resolve the beatmap via <see cref="IEditorBeatmap"/> or <see cref="IEditorBeatmap{T}"/>.
|
||||||
|
/// </summary>
|
||||||
|
public interface IEditorBeatmap : IBeatmap
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Invoked when a <see cref="HitObject"/> is added to this <see cref="IEditorBeatmap"/>.
|
||||||
|
/// </summary>
|
||||||
event Action<HitObject> HitObjectAdded;
|
event Action<HitObject> HitObjectAdded;
|
||||||
event Action<HitObject> HitObjectRemoved;
|
|
||||||
|
|
||||||
void Add(HitObject hitObject);
|
/// <summary>
|
||||||
void Remove(HitObject hitObject);
|
/// Invoked when a <see cref="HitObject"/> is removed from this <see cref="IEditorBeatmap"/>.
|
||||||
|
/// </summary>
|
||||||
|
event Action<HitObject> HitObjectRemoved;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Interface for the <see cref="IBeatmap"/> contained by the see <see cref="HitObjectComposer"/>.
|
||||||
|
/// Children of <see cref="HitObjectComposer"/> may resolve the beatmap via <see cref="IEditorBeatmap"/> or <see cref="IEditorBeatmap{T}"/>.
|
||||||
|
/// </summary>
|
||||||
|
public interface IEditorBeatmap<out T> : IEditorBeatmap, IBeatmap<T>
|
||||||
|
where T : HitObject
|
||||||
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user