Remove downwards dependency from HUDOverlay to HealthDisplay

This commit is contained in:
Dean Herbert 2021-05-10 15:40:33 +09:00
parent 4be15cfc5a
commit 8e226319e2
2 changed files with 12 additions and 5 deletions

View File

@ -3,6 +3,7 @@
using osu.Framework.Allocation; using osu.Framework.Allocation;
using osu.Framework.Bindables; using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Judgements;
using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.Scoring;
@ -16,6 +17,8 @@ namespace osu.Game.Screens.Play.HUD
/// </summary> /// </summary>
public abstract class HealthDisplay : Container public abstract class HealthDisplay : Container
{ {
private Bindable<bool> showHealthbar;
[Resolved] [Resolved]
protected HealthProcessor HealthProcessor { get; private set; } protected HealthProcessor HealthProcessor { get; private set; }
@ -29,12 +32,18 @@ namespace osu.Game.Screens.Play.HUD
{ {
} }
[BackgroundDependencyLoader] [BackgroundDependencyLoader(true)]
private void load() private void load(HUDOverlay hud)
{ {
Current.BindTo(HealthProcessor.Health); Current.BindTo(HealthProcessor.Health);
HealthProcessor.NewJudgement += onNewJudgement; HealthProcessor.NewJudgement += onNewJudgement;
if (hud != null)
{
showHealthbar = hud.ShowHealthbar.GetBoundCopy();
showHealthbar.BindValueChanged(healthBar => this.FadeTo(healthBar.NewValue ? 1 : 0, HUDOverlay.FADE_DURATION, HUDOverlay.FADE_EASING), true);
}
} }
private void onNewJudgement(JudgementResult judgement) private void onNewJudgement(JudgementResult judgement)

View File

@ -36,7 +36,6 @@ namespace osu.Game.Screens.Play
public readonly KeyCounterDisplay KeyCounter; public readonly KeyCounterDisplay KeyCounter;
public readonly SkinnableScoreCounter ScoreCounter; public readonly SkinnableScoreCounter ScoreCounter;
public readonly SkinnableAccuracyCounter AccuracyCounter; public readonly SkinnableAccuracyCounter AccuracyCounter;
public readonly SkinnableHealthDisplay HealthDisplay;
public readonly SongProgress Progress; public readonly SongProgress Progress;
public readonly ModDisplay ModDisplay; public readonly ModDisplay ModDisplay;
public readonly HoldForMenuButton HoldToQuit; public readonly HoldForMenuButton HoldToQuit;
@ -96,7 +95,7 @@ namespace osu.Game.Screens.Play
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
Children = new Drawable[] Children = new Drawable[]
{ {
HealthDisplay = CreateHealthDisplay(), CreateHealthDisplay(),
AccuracyCounter = CreateAccuracyCounter(), AccuracyCounter = CreateAccuracyCounter(),
ScoreCounter = CreateScoreCounter(), ScoreCounter = CreateScoreCounter(),
CreateComboCounter(), CreateComboCounter(),
@ -185,7 +184,6 @@ namespace osu.Game.Screens.Play
{ {
base.LoadComplete(); base.LoadComplete();
ShowHealthbar.BindValueChanged(healthBar => HealthDisplay.FadeTo(healthBar.NewValue ? 1 : 0, FADE_DURATION, FADE_EASING), true);
ShowHud.BindValueChanged(visible => hideTargets.ForEach(d => d.FadeTo(visible.NewValue ? 1 : 0, FADE_DURATION, FADE_EASING))); ShowHud.BindValueChanged(visible => hideTargets.ForEach(d => d.FadeTo(visible.NewValue ? 1 : 0, FADE_DURATION, FADE_EASING)));
IsBreakTime.BindValueChanged(_ => updateVisibility()); IsBreakTime.BindValueChanged(_ => updateVisibility());