1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-15 09:42:57 +08:00

Tidy up Add method logic

This commit is contained in:
Dean Herbert 2023-03-07 16:21:57 +09:00
parent 8f6df5ea0f
commit 15d65059b5
2 changed files with 16 additions and 26 deletions

View File

@ -3,7 +3,6 @@
#nullable disable
using System.Linq;
using NUnit.Framework;
using osu.Framework.Graphics;
using osu.Framework.Utils;
@ -21,15 +20,16 @@ namespace osu.Game.Tests.Visual.Gameplay
{
Origin = Anchor.Centre,
Anchor = Anchor.Centre,
Triggers = new InputTrigger[]
{
new KeyCounterKeyboardTrigger(Key.X),
new KeyCounterKeyboardTrigger(Key.X),
new KeyCounterMouseTrigger(MouseButton.Left),
new KeyCounterMouseTrigger(MouseButton.Right),
}
};
kc.AddTriggerRange(new InputTrigger[]
{
new KeyCounterKeyboardTrigger(Key.X),
new KeyCounterKeyboardTrigger(Key.X),
new KeyCounterMouseTrigger(MouseButton.Left),
new KeyCounterMouseTrigger(MouseButton.Right),
});
var testCounter = (DefaultKeyCounter)kc.Children.First();
AddStep("Add random", () =>

View File

@ -25,16 +25,6 @@ namespace osu.Game.Screens.Play
public Bindable<bool> IsCounting { get; } = new BindableBool(true);
public IReadOnlyList<InputTrigger> Triggers
{
get => Children.Select(c => c.Trigger).ToArray();
set
{
Clear();
value.ForEach(AddTrigger);
}
}
protected readonly Bindable<bool> ConfigVisibility = new Bindable<bool>();
protected abstract void UpdateVisibility();
@ -60,17 +50,17 @@ namespace osu.Game.Screens.Play
public void AddTriggerRange(IEnumerable<InputTrigger> triggers) => triggers.ForEach(AddTrigger);
private bool checkType(KeyCounter key) => acceptedTypes.Length == 0 || acceptedTypes.Any(t => t.IsInstanceOfType(key));
public override void Add(KeyCounter key)
public override void Add(KeyCounter counter)
{
if (!checkType(key))
throw new InvalidOperationException($"{key.GetType()} is not a supported counter type. (hint: you may want to use {nameof(AddTrigger)} instead.)");
if (!checkType(counter))
throw new InvalidOperationException($"{counter.GetType()} is not a supported counter type. (hint: you may want to use {nameof(AddTrigger)} instead.)");
base.Add(key);
key.IsCounting.BindTo(IsCounting);
base.Add(counter);
counter.IsCounting.BindTo(IsCounting);
}
private bool checkType(KeyCounter counter) => acceptedTypes.Length == 0 || acceptedTypes.Any(t => t.IsInstanceOfType(counter));
[BackgroundDependencyLoader]
private void load(OsuConfigManager config)
{
@ -110,7 +100,7 @@ namespace osu.Game.Screens.Play
case KeyUpEvent:
case MouseDownEvent:
case MouseUpEvent:
return Target.Children.Any(c => c.TriggerEvent(e));
return Target.InternalChildren.Any(c => c.TriggerEvent(e));
}
return base.Handle(e);