mirror of
https://github.com/ppy/osu.git
synced 2025-02-21 07:33:15 +08:00
Make hit objects default size relative to play field size, not the other way around.
This commit is contained in:
parent
c882b9bafd
commit
88666c865f
@ -65,7 +65,7 @@ namespace osu.Game.Modes.Taiko.Objects.Drawables
|
|||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
Alpha = 0,
|
Alpha = 0,
|
||||||
Size = new Vector2(TaikoHitObject.CIRCLE_RADIUS * 2),
|
Size = new Vector2(TaikoHitObject.DEFAULT_CIRCLE_DIAMETER),
|
||||||
BlendingMode = BlendingMode.Additive,
|
BlendingMode = BlendingMode.Additive,
|
||||||
Masking = true,
|
Masking = true,
|
||||||
Children = new []
|
Children = new []
|
||||||
@ -82,7 +82,7 @@ namespace osu.Game.Modes.Taiko.Objects.Drawables
|
|||||||
Name = "Target ring (thick border)",
|
Name = "Target ring (thick border)",
|
||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
Size = new Vector2(TaikoHitObject.CIRCLE_RADIUS * 2),
|
Size = new Vector2(TaikoHitObject.DEFAULT_CIRCLE_DIAMETER),
|
||||||
Masking = true,
|
Masking = true,
|
||||||
BorderThickness = target_ring_thick_border,
|
BorderThickness = target_ring_thick_border,
|
||||||
BlendingMode = BlendingMode.Additive,
|
BlendingMode = BlendingMode.Additive,
|
||||||
|
@ -19,15 +19,10 @@ namespace osu.Game.Modes.Taiko.Objects.Drawables.Pieces
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class CirclePiece : TaikoPiece
|
public class CirclePiece : TaikoPiece
|
||||||
{
|
{
|
||||||
public const float SYMBOL_SIZE = TaikoHitObject.CIRCLE_RADIUS * 2f * 0.45f;
|
public const float SYMBOL_SIZE = TaikoHitObject.DEFAULT_CIRCLE_DIAMETER * 0.45f;
|
||||||
public const float SYMBOL_BORDER = 8;
|
public const float SYMBOL_BORDER = 8;
|
||||||
public const float SYMBOL_INNER_SIZE = SYMBOL_SIZE - 2 * SYMBOL_BORDER;
|
public const float SYMBOL_INNER_SIZE = SYMBOL_SIZE - 2 * SYMBOL_BORDER;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The amount to scale up the base circle to show it as a "strong" piece.
|
|
||||||
/// </summary>
|
|
||||||
private const float strong_scale = 1.5f;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The colour of the inner circle and outer glows.
|
/// The colour of the inner circle and outer glows.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -129,10 +124,10 @@ namespace osu.Game.Modes.Taiko.Objects.Drawables.Pieces
|
|||||||
|
|
||||||
if (isStrong)
|
if (isStrong)
|
||||||
{
|
{
|
||||||
Size *= strong_scale;
|
Size *= TaikoHitObject.STRONG_CIRCLE_DIAMETER_SCALE;
|
||||||
|
|
||||||
//default for symbols etc.
|
//default for symbols etc.
|
||||||
Content.Scale *= strong_scale;
|
Content.Scale *= TaikoHitObject.STRONG_CIRCLE_DIAMETER_SCALE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ namespace osu.Game.Modes.Taiko.Objects.Drawables.Pieces
|
|||||||
public TaikoPiece()
|
public TaikoPiece()
|
||||||
{
|
{
|
||||||
//just a default
|
//just a default
|
||||||
Size = new Vector2(TaikoHitObject.CIRCLE_RADIUS * 2);
|
Size = new Vector2(TaikoHitObject.DEFAULT_CIRCLE_DIAMETER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,12 +15,12 @@ namespace osu.Game.Modes.Taiko.Objects.Drawables.Pieces
|
|||||||
/// Any tick that is not the first for a drumroll is not filled, but is instead displayed
|
/// Any tick that is not the first for a drumroll is not filled, but is instead displayed
|
||||||
/// as a hollow circle. This is what controls the border width of that circle.
|
/// as a hollow circle. This is what controls the border width of that circle.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private const float tick_border_width = TaikoHitObject.CIRCLE_RADIUS / 2 / 4;
|
private const float tick_border_width = TaikoHitObject.DEFAULT_CIRCLE_DIAMETER / 16;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The size of a tick.
|
/// The size of a tick.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private const float tick_size = TaikoHitObject.CIRCLE_RADIUS / 2;
|
private const float tick_size = TaikoHitObject.DEFAULT_CIRCLE_DIAMETER / 4;
|
||||||
|
|
||||||
private bool filled;
|
private bool filled;
|
||||||
public bool Filled
|
public bool Filled
|
||||||
|
@ -4,15 +4,31 @@
|
|||||||
using osu.Game.Beatmaps.Timing;
|
using osu.Game.Beatmaps.Timing;
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
using osu.Game.Modes.Objects;
|
using osu.Game.Modes.Objects;
|
||||||
|
using osu.Game.Modes.Taiko.UI;
|
||||||
|
|
||||||
namespace osu.Game.Modes.Taiko.Objects
|
namespace osu.Game.Modes.Taiko.Objects
|
||||||
{
|
{
|
||||||
public abstract class TaikoHitObject : HitObject
|
public abstract class TaikoHitObject : HitObject
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// HitCircle radius.
|
/// Diameter of a circle relative to the size of the <see cref="TaikoPlayfield"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const float CIRCLE_RADIUS = 42f;
|
public const float PLAYFIELD_RELATIVE_DIAMETER = 0.5f;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Scale multiplier for a strong circle.
|
||||||
|
/// </summary>
|
||||||
|
public const float STRONG_CIRCLE_DIAMETER_SCALE = 1.5f;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Default circle diameter.
|
||||||
|
/// </summary>
|
||||||
|
public const float DEFAULT_CIRCLE_DIAMETER = TaikoPlayfield.DEFAULT_PLAYFIELD_HEIGHT * PLAYFIELD_RELATIVE_DIAMETER;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Default strong circle diameter.
|
||||||
|
/// </summary>
|
||||||
|
public const float DEFAULT_STRONG_CIRCLE_DIAMETER = DEFAULT_CIRCLE_DIAMETER * STRONG_CIRCLE_DIAMETER_SCALE;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The time taken from the initial (off-screen) spawn position to the centre of the hit target for a <see cref="ControlPoint.BeatLength"/> of 1000ms.
|
/// The time taken from the initial (off-screen) spawn position to the centre of the hit target for a <see cref="ControlPoint.BeatLength"/> of 1000ms.
|
||||||
|
@ -18,11 +18,6 @@ namespace osu.Game.Modes.Taiko.UI
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
internal class HitExplosion : CircularContainer
|
internal class HitExplosion : CircularContainer
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// The size multiplier of a hit explosion if a hit object has been hit with the second key.
|
|
||||||
/// </summary>
|
|
||||||
private const float secondhit_size_multiplier = 1.5f;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The judgement this hit explosion visualises.
|
/// The judgement this hit explosion visualises.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -34,7 +29,7 @@ namespace osu.Game.Modes.Taiko.UI
|
|||||||
{
|
{
|
||||||
Judgement = judgement;
|
Judgement = judgement;
|
||||||
|
|
||||||
Size = new Vector2(TaikoHitObject.CIRCLE_RADIUS * 2);
|
Size = new Vector2(TaikoHitObject.DEFAULT_CIRCLE_DIAMETER);
|
||||||
|
|
||||||
Anchor = Anchor.Centre;
|
Anchor = Anchor.Centre;
|
||||||
Origin = Anchor.Centre;
|
Origin = Anchor.Centre;
|
||||||
@ -85,7 +80,7 @@ namespace osu.Game.Modes.Taiko.UI
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void VisualiseSecondHit()
|
public void VisualiseSecondHit()
|
||||||
{
|
{
|
||||||
ResizeTo(Size * secondhit_size_multiplier, 50);
|
ResizeTo(Size * TaikoHitObject.STRONG_CIRCLE_DIAMETER_SCALE, 50);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,16 +15,6 @@ namespace osu.Game.Modes.Taiko.UI
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
internal class HitTarget : Container
|
internal class HitTarget : Container
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// Diameter of normal hit object circles.
|
|
||||||
/// </summary>
|
|
||||||
private const float normal_diameter = TaikoHitObject.CIRCLE_RADIUS * 2;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Diameter of strong hit object circles.
|
|
||||||
/// </summary>
|
|
||||||
private const float strong_hit_diameter = normal_diameter * 1.5f;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The 1px inner border of the taiko playfield.
|
/// The 1px inner border of the taiko playfield.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -47,7 +37,7 @@ namespace osu.Game.Modes.Taiko.UI
|
|||||||
Anchor = Anchor.TopCentre,
|
Anchor = Anchor.TopCentre,
|
||||||
Origin = Anchor.TopCentre,
|
Origin = Anchor.TopCentre,
|
||||||
Y = border_offset,
|
Y = border_offset,
|
||||||
Size = new Vector2(border_thickness, (TaikoPlayfield.DEFAULT_PLAYFIELD_HEIGHT - strong_hit_diameter) / 2f - border_offset),
|
Size = new Vector2(border_thickness, (TaikoPlayfield.DEFAULT_PLAYFIELD_HEIGHT - TaikoHitObject.DEFAULT_STRONG_CIRCLE_DIAMETER) / 2f - border_offset),
|
||||||
Alpha = 0.1f
|
Alpha = 0.1f
|
||||||
},
|
},
|
||||||
new CircularContainer
|
new CircularContainer
|
||||||
@ -55,7 +45,7 @@ namespace osu.Game.Modes.Taiko.UI
|
|||||||
Name = "Strong Hit Ring",
|
Name = "Strong Hit Ring",
|
||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
Size = new Vector2(strong_hit_diameter),
|
Size = new Vector2(TaikoHitObject.DEFAULT_STRONG_CIRCLE_DIAMETER),
|
||||||
Masking = true,
|
Masking = true,
|
||||||
BorderColour = Color4.White,
|
BorderColour = Color4.White,
|
||||||
BorderThickness = border_thickness,
|
BorderThickness = border_thickness,
|
||||||
@ -75,7 +65,7 @@ namespace osu.Game.Modes.Taiko.UI
|
|||||||
Name = "Normal Hit Ring",
|
Name = "Normal Hit Ring",
|
||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
Size = new Vector2(normal_diameter),
|
Size = new Vector2(TaikoHitObject.DEFAULT_CIRCLE_DIAMETER),
|
||||||
Masking = true,
|
Masking = true,
|
||||||
BorderColour = Color4.White,
|
BorderColour = Color4.White,
|
||||||
BorderThickness = border_thickness,
|
BorderThickness = border_thickness,
|
||||||
@ -96,7 +86,7 @@ namespace osu.Game.Modes.Taiko.UI
|
|||||||
Anchor = Anchor.BottomCentre,
|
Anchor = Anchor.BottomCentre,
|
||||||
Origin = Anchor.BottomCentre,
|
Origin = Anchor.BottomCentre,
|
||||||
Y = -border_offset,
|
Y = -border_offset,
|
||||||
Size = new Vector2(border_thickness, (TaikoPlayfield.DEFAULT_PLAYFIELD_HEIGHT - strong_hit_diameter) / 2f - border_offset),
|
Size = new Vector2(border_thickness, (TaikoPlayfield.DEFAULT_PLAYFIELD_HEIGHT - TaikoHitObject.DEFAULT_STRONG_CIRCLE_DIAMETER) / 2f - border_offset),
|
||||||
Alpha = 0.1f
|
Alpha = 0.1f
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -25,12 +25,12 @@ namespace osu.Game.Modes.Taiko.UI
|
|||||||
/// The play field height. This is relative to the size of hit objects
|
/// The play field height. This is relative to the size of hit objects
|
||||||
/// such that the playfield is just a bit larger than strong hits.
|
/// such that the playfield is just a bit larger than strong hits.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const float DEFAULT_PLAYFIELD_HEIGHT = TaikoHitObject.CIRCLE_RADIUS * 2 * 2;
|
public const float DEFAULT_PLAYFIELD_HEIGHT = 168f;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The offset from <see cref="left_area_size"/> which the center of the hit target lies at.
|
/// The offset from <see cref="left_area_size"/> which the center of the hit target lies at.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private const float hit_target_offset = TaikoHitObject.CIRCLE_RADIUS * 1.5f + 40;
|
private const float hit_target_offset = TaikoHitObject.DEFAULT_STRONG_CIRCLE_DIAMETER / 2f + 40;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The size of the left area of the playfield. This area contains the input drum.
|
/// The size of the left area of the playfield. This area contains the input drum.
|
||||||
|
Loading…
Reference in New Issue
Block a user