mirror of https://github.com/ppy/osu
Added arbitrary hit handler to drum roll object
This commit is contained in:
parent
6e12f1b69b
commit
1057981c79
|
@ -34,6 +34,14 @@ public class DrawableDrumRoll : DrawableTaikoHitObject<DrumRoll>
|
||||||
private Color4 colourIdle;
|
private Color4 colourIdle;
|
||||||
private Color4 colourEngaged;
|
private Color4 colourEngaged;
|
||||||
|
|
||||||
|
private bool judgingStarted;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A handler action for when the drumroll has been hit,
|
||||||
|
/// regardless of any judgement.
|
||||||
|
/// </summary>
|
||||||
|
public Action<TaikoAction> OnHit;
|
||||||
|
|
||||||
public DrawableDrumRoll(DrumRoll drumRoll)
|
public DrawableDrumRoll(DrumRoll drumRoll)
|
||||||
: base(drumRoll)
|
: base(drumRoll)
|
||||||
{
|
{
|
||||||
|
@ -86,15 +94,27 @@ protected override DrawableHitObject CreateNestedHitObject(HitObject hitObject)
|
||||||
|
|
||||||
protected override TaikoPiece CreateMainPiece() => new ElongatedCirclePiece();
|
protected override TaikoPiece CreateMainPiece() => new ElongatedCirclePiece();
|
||||||
|
|
||||||
public override bool OnPressed(TaikoAction action) => false;
|
public override bool OnPressed(TaikoAction action)
|
||||||
|
{
|
||||||
|
if (judgingStarted)
|
||||||
|
OnHit.Invoke(action);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
private void onNewResult(DrawableHitObject obj, JudgementResult result)
|
private void onNewResult(DrawableHitObject obj, JudgementResult result)
|
||||||
{
|
{
|
||||||
if (!(obj is DrawableDrumRollTick))
|
if (!(obj is DrawableDrumRollTick))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
DrawableDrumRollTick drumRollTick = (DrawableDrumRollTick)obj;
|
||||||
|
|
||||||
if (result.Type > HitResult.Miss)
|
if (result.Type > HitResult.Miss)
|
||||||
|
{
|
||||||
|
OnHit.Invoke(drumRollTick.JudgedAction);
|
||||||
|
judgingStarted = true;
|
||||||
rollingHits++;
|
rollingHits++;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
rollingHits--;
|
rollingHits--;
|
||||||
|
|
||||||
|
@ -113,8 +133,11 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int countHit = NestedHitObjects.Count(o => o.IsHit);
|
int countHit = NestedHitObjects.Count(o => o.IsHit);
|
||||||
|
|
||||||
if (countHit >= HitObject.RequiredGoodHits)
|
if (countHit >= HitObject.RequiredGoodHits)
|
||||||
|
{
|
||||||
ApplyResult(r => r.Type = countHit >= HitObject.RequiredGreatHits ? HitResult.Great : HitResult.Good);
|
ApplyResult(r => r.Type = countHit >= HitObject.RequiredGreatHits ? HitResult.Great : HitResult.Good);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
ApplyResult(r => r.Type = HitResult.Miss);
|
ApplyResult(r => r.Type = HitResult.Miss);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue