1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-21 21:27:24 +08:00

Taiko touch control scheme can now be changed mid-map

This commit is contained in:
OpenSauce 2023-01-12 17:55:05 +00:00
parent 767c3cb523
commit 927fccb7be

View File

@ -57,7 +57,10 @@ namespace osu.Game.Rulesets.Taiko.UI
const float centre_region = 0.80f; const float centre_region = 0.80f;
if (ForceControlScheme == null) if (ForceControlScheme == null)
{
config.BindWith(TaikoRulesetSetting.TouchControlScheme, configTouchControlScheme); config.BindWith(TaikoRulesetSetting.TouchControlScheme, configTouchControlScheme);
configTouchControlScheme.ValueChanged += reloadTouchDrums;
}
else else
configTouchControlScheme.Value = ForceControlScheme.Value; configTouchControlScheme.Value = ForceControlScheme.Value;
@ -225,11 +228,11 @@ namespace osu.Game.Rulesets.Taiko.UI
} }
private partial class QuarterCircle : CompositeDrawable, IKeyBindingHandler<TaikoAction> private partial class QuarterCircle : CompositeDrawable, IKeyBindingHandler<TaikoAction>
{ {
private readonly Circle overlay; private TaikoAction handledAction;
private readonly TaikoAction handledAction; private Circle overlay;
private readonly Circle circle; private Circle circle;
public override bool Contains(Vector2 screenSpacePos) => circle.Contains(screenSpacePos); public override bool Contains(Vector2 screenSpacePos) => circle.Contains(screenSpacePos);
@ -280,6 +283,22 @@ namespace osu.Game.Rulesets.Taiko.UI
if (e.Action == handledAction) if (e.Action == handledAction)
overlay.FadeOut(1000, Easing.OutQuint); overlay.FadeOut(1000, Easing.OutQuint);
} }
public void ReloadDrumSegmentProperties(TaikoAction handledAction, Color4 colour)
{
this.handledAction = handledAction;
circle.Colour = colour.Multiply(1.4f).Darken(2.8f);
overlay.Colour = colour;
}
}
private void reloadTouchDrums(object _)
{
leftRim.ReloadDrumSegmentProperties(getTaikoActionFromDrumSegment(0), getColourFromTaikoAction(getTaikoActionFromDrumSegment(0)));
leftCentre.ReloadDrumSegmentProperties(getTaikoActionFromDrumSegment(1), getColourFromTaikoAction(getTaikoActionFromDrumSegment(1)));
rightRim.ReloadDrumSegmentProperties(getTaikoActionFromDrumSegment(3), getColourFromTaikoAction(getTaikoActionFromDrumSegment(3)));
rightCentre.ReloadDrumSegmentProperties(getTaikoActionFromDrumSegment(2), getColourFromTaikoAction(getTaikoActionFromDrumSegment(2)));
} }
} }
} }