mirror of
https://github.com/ppy/osu.git
synced 2025-02-24 19:02:59 +08:00
Include TriggeredFail in mods
This commit is contained in:
parent
674d6eecd3
commit
8da673ec24
@ -103,11 +103,13 @@ namespace osu.Game.Rulesets.Osu.Mods
|
||||
|
||||
public bool RestartOnFail => false;
|
||||
|
||||
public bool TriggeredFail { get; set; } = false;
|
||||
|
||||
public void ApplyToHealthProcessor(HealthProcessor healthProcessor)
|
||||
{
|
||||
// Sudden death
|
||||
healthProcessor.FailConditions += (_, result)
|
||||
=> result.Type.AffectsCombo()
|
||||
=> TriggeredFail = result.Type.AffectsCombo()
|
||||
&& !result.IsHit;
|
||||
}
|
||||
|
||||
|
@ -51,5 +51,7 @@ namespace osu.Game.Rulesets.Mods
|
||||
public bool PerformFail() => false;
|
||||
|
||||
public bool RestartOnFail => false;
|
||||
|
||||
public bool TriggeredFail => false;
|
||||
}
|
||||
}
|
||||
|
@ -35,7 +35,11 @@ namespace osu.Game.Rulesets.Mods
|
||||
|
||||
public bool PerformFail()
|
||||
{
|
||||
if (retries == 0) return true;
|
||||
if (retries == 0)
|
||||
{
|
||||
TriggeredFail = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
health.Value = health.MaxValue;
|
||||
retries--;
|
||||
@ -45,6 +49,8 @@ namespace osu.Game.Rulesets.Mods
|
||||
|
||||
public bool RestartOnFail => false;
|
||||
|
||||
public bool TriggeredFail { get; set; } = false;
|
||||
|
||||
public void ApplyToHealthProcessor(HealthProcessor healthProcessor)
|
||||
{
|
||||
health.BindTo(healthProcessor.Health);
|
||||
|
@ -20,6 +20,8 @@ namespace osu.Game.Rulesets.Mods
|
||||
|
||||
public virtual bool RestartOnFail => Restart.Value;
|
||||
|
||||
public virtual bool TriggeredFail { get; set; } = false;
|
||||
|
||||
private Action? triggerFailureDelegate;
|
||||
|
||||
public void ApplyToHealthProcessor(HealthProcessor healthProcessor)
|
||||
@ -31,7 +33,11 @@ namespace osu.Game.Rulesets.Mods
|
||||
/// <summary>
|
||||
/// Immediately triggers a failure on the loaded <see cref="HealthProcessor"/>.
|
||||
/// </summary>
|
||||
protected void TriggerFailure() => triggerFailureDelegate?.Invoke();
|
||||
protected void TriggerFailure()
|
||||
{
|
||||
TriggeredFail = true;
|
||||
triggerFailureDelegate?.Invoke();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines whether <paramref name="result"/> should trigger a failure. Called every time a
|
||||
|
@ -31,6 +31,8 @@ namespace osu.Game.Rulesets.Mods
|
||||
|
||||
public bool RestartOnFail => false;
|
||||
|
||||
public bool TriggeredFail => false;
|
||||
|
||||
public void ReadFromConfig(OsuConfigManager config)
|
||||
{
|
||||
config.BindWith(OsuSetting.ShowHealthDisplayWhenCantFail, showHealthBar);
|
||||
|
@ -24,7 +24,7 @@ namespace osu.Game.Rulesets.Mods
|
||||
public override Type[] IncompatibleMods => base.IncompatibleMods.Append(typeof(ModPerfect)).ToArray();
|
||||
|
||||
protected override bool FailCondition(HealthProcessor healthProcessor, JudgementResult result)
|
||||
=> result.Type.AffectsCombo()
|
||||
=> TriggeredFail = result.Type.AffectsCombo()
|
||||
&& !result.IsHit;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user