Remove Component inheritance

This commit is contained in:
smoogipoo
2021-05-18 18:59:45 +09:00
parent 633f841a0f
commit 97f4f7bbd1
3 changed files with 29 additions and 17 deletions

View File

@ -23,6 +23,8 @@ namespace osu.Game.Screens.Edit.Compose.Components
protected readonly HitObjectComposer Composer;
private HitObjectUsageEventBuffer usageEventBuffer;
protected EditorBlueprintContainer(HitObjectComposer composer)
{
Composer = composer;
@ -46,14 +48,19 @@ namespace osu.Game.Screens.Edit.Compose.Components
foreach (var obj in Composer.HitObjects)
AddBlueprintFor(obj.HitObject);
var eventQueue = new HitObjectUsageEventBuffer(Composer.Playfield);
eventQueue.HitObjectUsageBegan += AddBlueprintFor;
eventQueue.HitObjectUsageFinished += RemoveBlueprintFor;
eventQueue.HitObjectUsageTransferred += TransferBlueprintFor;
AddInternal(eventQueue);
usageEventBuffer = new HitObjectUsageEventBuffer(Composer.Playfield);
usageEventBuffer.HitObjectUsageBegan += AddBlueprintFor;
usageEventBuffer.HitObjectUsageFinished += RemoveBlueprintFor;
usageEventBuffer.HitObjectUsageTransferred += TransferBlueprintFor;
}
}
protected override void Update()
{
base.Update();
usageEventBuffer?.Update();
}
protected override IEnumerable<SelectionBlueprint<HitObject>> SortForMovement(IReadOnlyList<SelectionBlueprint<HitObject>> blueprints)
=> blueprints.OrderBy(b => b.Item.StartTime);
@ -145,6 +152,8 @@ namespace osu.Game.Screens.Edit.Compose.Components
Beatmap.HitObjectAdded -= AddBlueprintFor;
Beatmap.HitObjectRemoved -= RemoveBlueprintFor;
}
usageEventBuffer?.Dispose();
}
}
}