1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-29 01:22:54 +08:00

Remove DrumRollCirclePiece, cleanup CirclePiece a bit.

This commit is contained in:
smoogipooo 2017-03-30 18:59:00 +09:00
parent a4f3816626
commit 41aaf42183
5 changed files with 36 additions and 83 deletions

View File

@ -92,22 +92,20 @@ namespace osu.Desktop.VisualTests.Tests
Position = new Vector2(350, 500) Position = new Vector2(350, 500)
}); });
Add(new DrumRollCirclePiece(new CirclePiece Add(new CirclePiece
{
KiaiMode = kiai
})
{ {
Position = new Vector2(575, 100),
Width = 0.25f, Width = 0.25f,
Position = new Vector2(575, 100) AccentColour = Color4.Orange,
KiaiMode = kiai,
}); });
Add(new DrumRollCirclePiece(new StrongCirclePiece Add(new StrongCirclePiece
{
KiaiMode = kiai
})
{ {
Position = new Vector2(575, 300),
Width = 0.25f, Width = 0.25f,
Position = new Vector2(575, 300) AccentColour = Color4.Orange,
KiaiMode = kiai
}); });
} }

View File

@ -1,7 +1,11 @@
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>. // Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using OpenTK.Graphics;
using osu.Framework.Allocation;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.MathUtils;
using osu.Game.Graphics;
using osu.Game.Modes.Objects.Drawables; using osu.Game.Modes.Objects.Drawables;
using osu.Game.Modes.Taiko.Judgements; using osu.Game.Modes.Taiko.Judgements;
using osu.Game.Modes.Taiko.Objects.Drawable.Pieces; using osu.Game.Modes.Taiko.Objects.Drawable.Pieces;
@ -13,7 +17,10 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable
{ {
private readonly DrumRoll drumRoll; private readonly DrumRoll drumRoll;
private readonly DrumRollCirclePiece circle; private readonly CirclePiece circle;
private Color4 baseColour;
private Color4 finalColour;
public DrawableDrumRoll(DrumRoll drumRoll) public DrawableDrumRoll(DrumRoll drumRoll)
: base(drumRoll) : base(drumRoll)
@ -23,7 +30,7 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable
RelativeSizeAxes = Axes.X; RelativeSizeAxes = Axes.X;
Width = (float)(drumRoll.Duration / drumRoll.PreEmpt); Width = (float)(drumRoll.Duration / drumRoll.PreEmpt);
Add(circle = new DrumRollCirclePiece(CreateCirclePiece())); Add(circle = CreateCirclePiece());
foreach (var tick in drumRoll.Ticks) foreach (var tick in drumRoll.Ticks)
{ {
@ -39,10 +46,11 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable
} }
} }
private void onTickJudgement(DrawableHitObject<TaikoHitObject, TaikoJudgement> obj) [BackgroundDependencyLoader]
private void load(OsuColour colours)
{ {
int countHit = NestedHitObjects.Count(o => o.Judgement.Result == HitResult.Hit); circle.Background.Colour = baseColour = colours.YellowDark;
circle.Completion = (float)countHit / NestedHitObjects.Count(); finalColour = colours.YellowDarker;
} }
protected override void LoadComplete() protected override void LoadComplete()
@ -56,6 +64,14 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable
LifetimeEnd = drumRoll.EndTime + drumRoll.PreEmpt; LifetimeEnd = drumRoll.EndTime + drumRoll.PreEmpt;
} }
private void onTickJudgement(DrawableHitObject<TaikoHitObject, TaikoJudgement> obj)
{
int countHit = NestedHitObjects.Count(o => o.Judgement.Result == HitResult.Hit);
float completion = (float)countHit / NestedHitObjects.Count();
circle.AccentColour = Interpolation.ValueAt(completion, baseColour, finalColour, 0, 1);
}
protected override void CheckJudgement(bool userTriggered) protected override void CheckJudgement(bool userTriggered)
{ {
if (userTriggered) if (userTriggered)

View File

@ -35,8 +35,7 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces
{ {
accentColour = value; accentColour = value;
innerBackground.Colour = AccentColour; background.Colour = AccentColour;
triangles.Colour = AccentColour;
resetEdgeEffects(); resetEdgeEffects();
} }
@ -66,10 +65,8 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces
protected override Container<Framework.Graphics.Drawable> Content => SymbolContainer; protected override Container<Framework.Graphics.Drawable> Content => SymbolContainer;
protected readonly Container SymbolContainer; protected readonly Container SymbolContainer;
private readonly Container background;
private readonly Container innerLayer; private readonly Container innerLayer;
private readonly Container innerCircleContainer;
private readonly Box innerBackground;
private readonly Triangles triangles;
public CirclePiece() public CirclePiece()
{ {
@ -85,22 +82,22 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces
RelativeSizeAxes = Axes.Y, RelativeSizeAxes = Axes.Y,
Children = new Framework.Graphics.Drawable[] Children = new Framework.Graphics.Drawable[]
{ {
innerCircleContainer = new CircularContainer background = new CircularContainer
{ {
Name = "Inner Circle", Name = "Background",
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = Anchor.Centre, Origin = Anchor.Centre,
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
Masking = true, Masking = true,
Children = new Framework.Graphics.Drawable[] Children = new Framework.Graphics.Drawable[]
{ {
innerBackground = new Box new Box
{ {
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = Anchor.Centre, Origin = Anchor.Centre,
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
}, },
triangles = new Triangles new Triangles
{ {
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = Anchor.Centre, Origin = Anchor.Centre,
@ -149,7 +146,7 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces
private void resetEdgeEffects() private void resetEdgeEffects()
{ {
innerCircleContainer.EdgeEffect = new EdgeEffect background.EdgeEffect = new EdgeEffect
{ {
Type = EdgeEffectType.Glow, Type = EdgeEffectType.Glow,
Colour = AccentColour, Colour = AccentColour,

View File

@ -1,57 +0,0 @@
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using OpenTK;
using OpenTK.Graphics;
using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.MathUtils;
using osu.Game.Graphics;
namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces
{
/// <summary>
/// A circle piece used for drumrolls.
/// </summary>
public class DrumRollCirclePiece : Container
{
private float completion;
/// <summary>
/// The amount of the drumroll that has been completed, as a percentage of the number
/// of ticks in the drumroll. This determines the internal colour of the drumroll.
/// </summary>
public float Completion
{
get { return completion; }
set
{
completion = MathHelper.Clamp(value, 0, 1);
if (!IsLoaded)
return;
circle.AccentColour = Interpolation.ValueAt(completion, baseColour, finalColour, 0, 1);
}
}
private readonly CirclePiece circle;
private Color4 baseColour;
private Color4 finalColour;
public DrumRollCirclePiece(CirclePiece piece)
{
RelativeSizeAxes = Axes.X;
Add(circle = piece);
}
[BackgroundDependencyLoader]
private void load(OsuColour colours)
{
circle.AccentColour = baseColour = colours.YellowDark;
finalColour = colours.YellowDarker;
}
}
}

View File

@ -64,7 +64,6 @@
<Compile Include="Objects\Drawable\DrawableDrumRollTick.cs" /> <Compile Include="Objects\Drawable\DrawableDrumRollTick.cs" />
<Compile Include="Objects\Drawable\DrawableSwell.cs" /> <Compile Include="Objects\Drawable\DrawableSwell.cs" />
<Compile Include="Objects\Drawable\DrawableTaikoHitObject.cs" /> <Compile Include="Objects\Drawable\DrawableTaikoHitObject.cs" />
<Compile Include="Objects\Drawable\Pieces\DrumRollCirclePiece.cs" />
<Compile Include="Objects\Drawable\Pieces\RimHitSymbolPiece.cs" /> <Compile Include="Objects\Drawable\Pieces\RimHitSymbolPiece.cs" />
<Compile Include="Objects\Drawable\Pieces\StrongCirclePiece.cs" /> <Compile Include="Objects\Drawable\Pieces\StrongCirclePiece.cs" />
<Compile Include="Objects\Drawable\Pieces\CirclePiece.cs" /> <Compile Include="Objects\Drawable\Pieces\CirclePiece.cs" />