1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-11 10:07:52 +08:00

Add argon drum roll ticks

This commit is contained in:
Dean Herbert 2022-11-07 15:39:24 +09:00
parent aa61eb8f4b
commit e2046791c2
5 changed files with 75 additions and 2 deletions

View File

@ -26,7 +26,7 @@ namespace osu.Game.Rulesets.Taiko.Skinning.Argon
Origin = Anchor.Centre,
RelativeSizeAxes = Axes.Both,
Icon = FontAwesome.Solid.AngleLeft,
Size = new Vector2(20 / 70f),
Size = new Vector2(ICON_SIZE),
Scale = new Vector2(0.8f, 1)
});
}

View File

@ -16,6 +16,8 @@ namespace osu.Game.Rulesets.Taiko.Skinning.Argon
{
public abstract class ArgonCirclePiece : BeatSyncedContainer
{
public const float ICON_SIZE = 20 / 70f;
private const double pre_beat_transition_time = 80;
private const float flash_opacity = 0.3f;

View File

@ -26,7 +26,7 @@ namespace osu.Game.Rulesets.Taiko.Skinning.Argon
Origin = Anchor.Centre,
RelativeSizeAxes = Axes.Both,
Icon = FontAwesome.Solid.AngleLeft,
Size = new Vector2(20 / 70f),
Size = new Vector2(ICON_SIZE),
Scale = new Vector2(0.8f, 1)
});
}

View File

@ -0,0 +1,68 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes;
using osu.Framework.Graphics.Sprites;
using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Rulesets.Taiko.Objects;
using osu.Game.Rulesets.Taiko.Objects.Drawables;
using osuTK;
namespace osu.Game.Rulesets.Taiko.Skinning.Argon
{
public class ArgonTickPiece : CompositeDrawable
{
private readonly Bindable<bool> isFirstTick = new Bindable<bool>();
public ArgonTickPiece()
{
const float tick_size = 1 / TaikoHitObject.DEFAULT_SIZE * ArgonCirclePiece.ICON_SIZE;
Anchor = Anchor.Centre;
Origin = Anchor.Centre;
RelativeSizeAxes = Axes.Both;
FillMode = FillMode.Fit;
Size = new Vector2(tick_size);
}
[Resolved]
private DrawableHitObject drawableHitObject { get; set; } = null!;
protected override void LoadComplete()
{
base.LoadComplete();
if (drawableHitObject is DrawableDrumRollTick drumRollTick)
isFirstTick.BindTo(drumRollTick.IsFirstTick);
isFirstTick.BindValueChanged(first =>
{
if (first.NewValue)
{
InternalChild = new Circle
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
RelativeSizeAxes = Axes.Both
};
}
else
{
InternalChild = new SpriteIcon
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
RelativeSizeAxes = Axes.Both,
Icon = FontAwesome.Solid.AngleLeft,
Scale = new Vector2(0.8f, 1)
};
}
}, true);
}
}
}

View File

@ -41,6 +41,9 @@ namespace osu.Game.Rulesets.Taiko.Skinning.Argon
case TaikoSkinComponents.DrumRollBody:
return new ArgonElongatedCirclePiece();
case TaikoSkinComponents.DrumRollTick:
return new ArgonTickPiece();
}
break;