Use `[Resolved]` to simplify bindable resolution

This commit is contained in:
Dean Herbert 2021-06-10 15:47:03 +09:00
parent 6995945360
commit 865c5c0676
1 changed files with 4 additions and 5 deletions

View File

@ -19,7 +19,8 @@ namespace osu.Game.Rulesets.Catch.Skinning.Legacy
{
public class LegacyCatcherNew : CompositeDrawable, ICatcherSprite
{
public Bindable<CatcherAnimationState> CurrentState { get; } = new Bindable<CatcherAnimationState>();
[Resolved]
private Bindable<CatcherAnimationState> currentState { get; set; }
public Texture CurrentTexture => (currentDrawable as TextureAnimation)?.CurrentFrame ?? (currentDrawable as Sprite)?.Texture;
@ -33,7 +34,7 @@ public LegacyCatcherNew()
}
[BackgroundDependencyLoader]
private void load(ISkinSource skin, Bindable<CatcherAnimationState> currentState)
private void load(ISkinSource skin)
{
foreach (var state in Enum.GetValues(typeof(CatcherAnimationState)).Cast<CatcherAnimationState>())
{
@ -53,15 +54,13 @@ private void load(ISkinSource skin, Bindable<CatcherAnimationState> currentState
Drawable getDrawableFor(CatcherAnimationState state) =>
skin.GetAnimation(@$"fruit-catcher-{state.ToString().ToLowerInvariant()}", true, true, true) ??
skin.GetAnimation(@"fruit-catcher-idle", true, true, true);
CurrentState.BindTo(currentState);
}
protected override void LoadComplete()
{
base.LoadComplete();
CurrentState.BindValueChanged(state =>
currentState.BindValueChanged(state =>
{
currentDrawable.Alpha = 0;
currentDrawable = drawables[state.NewValue];