mirror of
https://github.com/ppy/osu.git
synced 2024-09-22 01:27:29 +08:00
Rewrite notes to have time-relative position and length.
This commit is contained in:
parent
ea76eff1e1
commit
d852567d1d
@ -1 +1 @@
|
|||||||
Subproject commit cebdfb1bbb260e5aaca0a01e06d7128b3d1faae4
|
Subproject commit cd37a9cad9aaede267152cf3753cd31fe697cec4
|
@ -34,32 +34,40 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
{
|
{
|
||||||
new Container
|
new Container
|
||||||
{
|
{
|
||||||
|
Name = "Normal note column",
|
||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
RelativeSizeAxes = Axes.Y,
|
RelativeSizeAxes = Axes.Y,
|
||||||
Width = 50,
|
Width = 50,
|
||||||
|
RelativeCoordinateSpace = new Vector2(1, 10000),
|
||||||
Children = new[]
|
Children = new[]
|
||||||
{
|
{
|
||||||
new DrawableNote(new Note())
|
new DrawableNote(new Note
|
||||||
|
{
|
||||||
|
StartTime = 5000
|
||||||
|
})
|
||||||
{
|
{
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
AccentColour = Color4.Red
|
AccentColour = Color4.Red
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
new Container
|
new Container
|
||||||
{
|
{
|
||||||
|
Name = "Hold note column",
|
||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
RelativeSizeAxes = Axes.Y,
|
RelativeSizeAxes = Axes.Y,
|
||||||
Width = 50,
|
Width = 50,
|
||||||
|
RelativeCoordinateSpace = new Vector2(1, 10000),
|
||||||
Children = new[]
|
Children = new[]
|
||||||
{
|
{
|
||||||
new DrawableHoldNote(new HoldNote())
|
new DrawableHoldNote(new HoldNote
|
||||||
|
{
|
||||||
|
StartTime = 5000,
|
||||||
|
Duration = 1000,
|
||||||
|
|
||||||
|
})
|
||||||
{
|
{
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
AccentColour = Color4.Red,
|
AccentColour = Color4.Red,
|
||||||
Length = 0.4f
|
Length = 0.4f
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Game.Rulesets.Mania.Objects.Drawables.Pieces;
|
using osu.Game.Rulesets.Mania.Objects.Drawables.Pieces;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Mania.Objects.Drawables
|
namespace osu.Game.Rulesets.Mania.Objects.Drawables
|
||||||
{
|
{
|
||||||
@ -24,24 +25,31 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
|
|||||||
public DrawableHoldNote(HoldNote hitObject)
|
public DrawableHoldNote(HoldNote hitObject)
|
||||||
: base(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
|
bodyPiece = new BodyPiece
|
||||||
{
|
{
|
||||||
Anchor = Anchor.BottomCentre,
|
Anchor = Anchor.BottomCentre,
|
||||||
Origin = Anchor.BottomCentre,
|
Origin = Anchor.BottomCentre,
|
||||||
},
|
},
|
||||||
tailPiece = new NotePiece
|
headPiece = new NotePiece
|
||||||
{
|
{
|
||||||
Anchor = Anchor.BottomCentre,
|
Anchor = Anchor.BottomCentre,
|
||||||
Origin = 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
|
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)
|
protected override void UpdateState(ArmedState state)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
// 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 OpenTK.Graphics;
|
||||||
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
@ -17,44 +18,31 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
|
|||||||
|
|
||||||
private readonly Container glowContainer;
|
private readonly Container glowContainer;
|
||||||
|
|
||||||
protected override Container<Drawable> Content => noteFlow;
|
|
||||||
private readonly FlowContainer<Drawable> noteFlow;
|
|
||||||
|
|
||||||
public DrawableManiaHitObject(TObject hitObject)
|
public DrawableManiaHitObject(TObject hitObject)
|
||||||
: base(hitObject)
|
: base(hitObject)
|
||||||
{
|
{
|
||||||
HitObject = hitObject;
|
HitObject = hitObject;
|
||||||
|
|
||||||
RelativeSizeAxes = Axes.X;
|
Anchor = Anchor.TopCentre;
|
||||||
AutoSizeAxes = Axes.Y;
|
Origin = Anchor.BottomCentre;
|
||||||
|
|
||||||
InternalChildren = new Drawable[]
|
RelativePositionAxes = Axes.Y;
|
||||||
|
Y = (float)HitObject.StartTime;
|
||||||
|
|
||||||
|
Add(glowContainer = new Container
|
||||||
{
|
{
|
||||||
glowContainer = new Container
|
RelativeSizeAxes = Axes.Both,
|
||||||
{
|
Masking = true,
|
||||||
Anchor = Anchor.Centre,
|
Children = new[]
|
||||||
Origin = Anchor.Centre,
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
Masking = true,
|
|
||||||
Children = new[]
|
|
||||||
{
|
{
|
||||||
new Box
|
new Box
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
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
|
public override Color4 AccentColour
|
||||||
|
@ -18,7 +18,14 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
|
|||||||
public DrawableNote(Note hitObject)
|
public DrawableNote(Note hitObject)
|
||||||
: base(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
|
public override Color4 AccentColour
|
||||||
|
@ -17,7 +17,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables.Pieces
|
|||||||
|
|
||||||
public BodyPiece()
|
public BodyPiece()
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.X;
|
RelativeSizeAxes = Axes.Both;
|
||||||
Masking = true;
|
Masking = true;
|
||||||
|
|
||||||
Children = new[]
|
Children = new[]
|
||||||
|
Loading…
Reference in New Issue
Block a user