1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-11 13:37:25 +08:00

Rewrite notes to have time-relative position and length.

This commit is contained in:
smoogipooo 2017-05-09 20:33:59 +09:00
parent ea76eff1e1
commit d852567d1d
6 changed files with 53 additions and 48 deletions

@ -1 +1 @@
Subproject commit cebdfb1bbb260e5aaca0a01e06d7128b3d1faae4
Subproject commit cd37a9cad9aaede267152cf3753cd31fe697cec4

View File

@ -34,32 +34,40 @@ namespace osu.Desktop.VisualTests.Tests
{
new Container
{
Name = "Normal note column",
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
RelativeSizeAxes = Axes.Y,
Width = 50,
RelativeCoordinateSpace = new Vector2(1, 10000),
Children = new[]
{
new DrawableNote(new Note())
new DrawableNote(new Note
{
StartTime = 5000
})
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
AccentColour = Color4.Red
}
}
},
new Container
{
Name = "Hold note column",
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
RelativeSizeAxes = Axes.Y,
Width = 50,
RelativeCoordinateSpace = new Vector2(1, 10000),
Children = new[]
{
new DrawableHoldNote(new HoldNote())
new DrawableHoldNote(new HoldNote
{
StartTime = 5000,
Duration = 1000,
})
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
AccentColour = Color4.Red,
Length = 0.4f
}

View File

@ -7,6 +7,7 @@ using osu.Framework.Graphics;
using osu.Framework.Allocation;
using osu.Game.Rulesets.Mania.Objects.Drawables.Pieces;
using OpenTK.Graphics;
using osu.Framework.Graphics.Containers;
namespace osu.Game.Rulesets.Mania.Objects.Drawables
{
@ -24,24 +25,31 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
public DrawableHoldNote(HoldNote hitObject)
: base(hitObject)
{
Children = new Drawable[]
RelativeSizeAxes = Axes.Both;
Height = (float)HitObject.Duration;
Add(new Drawable[]
{
headPiece = new NotePiece
{
Anchor = Anchor.BottomCentre,
Origin = Anchor.BottomCentre
},
bodyPiece = new BodyPiece
{
Anchor = Anchor.BottomCentre,
Origin = Anchor.BottomCentre,
},
tailPiece = new NotePiece
headPiece = new NotePiece
{
Anchor = Anchor.BottomCentre,
Origin = Anchor.BottomCentre
},
tailPiece = new NotePiece
{
Anchor = Anchor.TopCentre,
Origin = Anchor.TopCentre
}
};
});
// The "length" of the hold note stops at the "base" of the tail piece
// but we want to contain the tail piece within our bounds
Height += (float)HitObject.Duration / headPiece.Height;
}
public override Color4 AccentColour
@ -59,12 +67,6 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
}
}
protected override void Update()
{
bodyPiece.Height = Parent.DrawSize.Y * Length;
}
protected override void UpdateState(ArmedState state)
{
}

View File

@ -2,6 +2,7 @@
// 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.Containers;
using osu.Framework.Graphics.Sprites;
@ -17,44 +18,31 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
private readonly Container glowContainer;
protected override Container<Drawable> Content => noteFlow;
private readonly FlowContainer<Drawable> noteFlow;
public DrawableManiaHitObject(TObject hitObject)
: base(hitObject)
{
HitObject = hitObject;
RelativeSizeAxes = Axes.X;
AutoSizeAxes = Axes.Y;
Anchor = Anchor.TopCentre;
Origin = Anchor.BottomCentre;
InternalChildren = new Drawable[]
RelativePositionAxes = Axes.Y;
Y = (float)HitObject.StartTime;
Add(glowContainer = new Container
{
glowContainer = new Container
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
RelativeSizeAxes = Axes.Both,
Masking = true,
Children = new[]
RelativeSizeAxes = Axes.Both,
Masking = true,
Children = new[]
{
new Box
{
RelativeSizeAxes = Axes.Both,
AlwaysPresent = true,
Alpha = 0
Alpha = 0,
AlwaysPresent = true
}
}
},
noteFlow = new FillFlowContainer<Drawable>
{
Name = "Main container",
Anchor = Anchor.BottomCentre,
Origin = Anchor.BottomCentre,
RelativeSizeAxes = Axes.X,
AutoSizeAxes = Axes.Y
}
};
});
}
public override Color4 AccentColour

View File

@ -18,7 +18,14 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
public DrawableNote(Note hitObject)
: base(hitObject)
{
Add(headPiece = new NotePiece());
RelativeSizeAxes = Axes.X;
AutoSizeAxes = Axes.Y;
Add(headPiece = new NotePiece
{
Anchor = Anchor.BottomCentre,
Origin = Anchor.BottomCentre
});
}
public override Color4 AccentColour

View File

@ -17,7 +17,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables.Pieces
public BodyPiece()
{
RelativeSizeAxes = Axes.X;
RelativeSizeAxes = Axes.Both;
Masking = true;
Children = new[]