mirror of https://github.com/ppy/osu
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 @@ public DrawableSwell(Swell swell)
|
|||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Alpha = 0,
|
||||
Size = new Vector2(TaikoHitObject.CIRCLE_RADIUS * 2),
|
||||
Size = new Vector2(TaikoHitObject.DEFAULT_CIRCLE_DIAMETER),
|
||||
BlendingMode = BlendingMode.Additive,
|
||||
Masking = true,
|
||||
Children = new []
|
||||
|
@ -82,7 +82,7 @@ public DrawableSwell(Swell swell)
|
|||
Name = "Target ring (thick border)",
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Size = new Vector2(TaikoHitObject.CIRCLE_RADIUS * 2),
|
||||
Size = new Vector2(TaikoHitObject.DEFAULT_CIRCLE_DIAMETER),
|
||||
Masking = true,
|
||||
BorderThickness = target_ring_thick_border,
|
||||
BlendingMode = BlendingMode.Additive,
|
||||
|
|
|
@ -19,15 +19,10 @@ namespace osu.Game.Modes.Taiko.Objects.Drawables.Pieces
|
|||
/// </summary>
|
||||
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_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>
|
||||
/// The colour of the inner circle and outer glows.
|
||||
/// </summary>
|
||||
|
@ -129,10 +124,10 @@ public CirclePiece(bool isStrong = false)
|
|||
|
||||
if (isStrong)
|
||||
{
|
||||
Size *= strong_scale;
|
||||
Size *= TaikoHitObject.STRONG_CIRCLE_DIAMETER_SCALE;
|
||||
|
||||
//default for symbols etc.
|
||||
Content.Scale *= strong_scale;
|
||||
Content.Scale *= TaikoHitObject.STRONG_CIRCLE_DIAMETER_SCALE;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ public virtual bool KiaiMode
|
|||
public TaikoPiece()
|
||||
{
|
||||
//just a default
|
||||
Size = new Vector2(TaikoHitObject.CIRCLE_RADIUS * 2);
|
||||
Size = new Vector2(TaikoHitObject.DEFAULT_CIRCLE_DIAMETER);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,12 +15,12 @@ public class TickPiece : TaikoPiece
|
|||
/// 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.
|
||||
/// </summary>
|
||||
private const float tick_border_width = TaikoHitObject.CIRCLE_RADIUS / 2 / 4;
|
||||
private const float tick_border_width = TaikoHitObject.DEFAULT_CIRCLE_DIAMETER / 16;
|
||||
|
||||
/// <summary>
|
||||
/// The size of a tick.
|
||||
/// </summary>
|
||||
private const float tick_size = TaikoHitObject.CIRCLE_RADIUS / 2;
|
||||
private const float tick_size = TaikoHitObject.DEFAULT_CIRCLE_DIAMETER / 4;
|
||||
|
||||
private bool filled;
|
||||
public bool Filled
|
||||
|
|
|
@ -4,15 +4,31 @@
|
|||
using osu.Game.Beatmaps.Timing;
|
||||
using osu.Game.Database;
|
||||
using osu.Game.Modes.Objects;
|
||||
using osu.Game.Modes.Taiko.UI;
|
||||
|
||||
namespace osu.Game.Modes.Taiko.Objects
|
||||
{
|
||||
public abstract class TaikoHitObject : HitObject
|
||||
{
|
||||
/// <summary>
|
||||
/// HitCircle radius.
|
||||
/// Diameter of a circle relative to the size of the <see cref="TaikoPlayfield"/>.
|
||||
/// </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>
|
||||
/// 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>
|
||||
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>
|
||||
/// The judgement this hit explosion visualises.
|
||||
/// </summary>
|
||||
|
@ -34,7 +29,7 @@ public HitExplosion(TaikoJudgement judgement)
|
|||
{
|
||||
Judgement = judgement;
|
||||
|
||||
Size = new Vector2(TaikoHitObject.CIRCLE_RADIUS * 2);
|
||||
Size = new Vector2(TaikoHitObject.DEFAULT_CIRCLE_DIAMETER);
|
||||
|
||||
Anchor = Anchor.Centre;
|
||||
Origin = Anchor.Centre;
|
||||
|
@ -85,7 +80,7 @@ protected override void LoadComplete()
|
|||
/// </summary>
|
||||
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>
|
||||
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>
|
||||
/// The 1px inner border of the taiko playfield.
|
||||
/// </summary>
|
||||
|
@ -47,7 +37,7 @@ public HitTarget()
|
|||
Anchor = Anchor.TopCentre,
|
||||
Origin = Anchor.TopCentre,
|
||||
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
|
||||
},
|
||||
new CircularContainer
|
||||
|
@ -55,7 +45,7 @@ public HitTarget()
|
|||
Name = "Strong Hit Ring",
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Size = new Vector2(strong_hit_diameter),
|
||||
Size = new Vector2(TaikoHitObject.DEFAULT_STRONG_CIRCLE_DIAMETER),
|
||||
Masking = true,
|
||||
BorderColour = Color4.White,
|
||||
BorderThickness = border_thickness,
|
||||
|
@ -75,7 +65,7 @@ public HitTarget()
|
|||
Name = "Normal Hit Ring",
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Size = new Vector2(normal_diameter),
|
||||
Size = new Vector2(TaikoHitObject.DEFAULT_CIRCLE_DIAMETER),
|
||||
Masking = true,
|
||||
BorderColour = Color4.White,
|
||||
BorderThickness = border_thickness,
|
||||
|
@ -96,7 +86,7 @@ public HitTarget()
|
|||
Anchor = Anchor.BottomCentre,
|
||||
Origin = Anchor.BottomCentre,
|
||||
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
|
||||
},
|
||||
};
|
||||
|
|
|
@ -25,12 +25,12 @@ public class TaikoPlayfield : Playfield<TaikoHitObject, TaikoJudgement>
|
|||
/// 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.
|
||||
/// </summary>
|
||||
public const float DEFAULT_PLAYFIELD_HEIGHT = TaikoHitObject.CIRCLE_RADIUS * 2 * 2;
|
||||
public const float DEFAULT_PLAYFIELD_HEIGHT = 168f;
|
||||
|
||||
/// <summary>
|
||||
/// The offset from <see cref="left_area_size"/> which the center of the hit target lies at.
|
||||
/// </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>
|
||||
/// The size of the left area of the playfield. This area contains the input drum.
|
||||
|
|
Loading…
Reference in New Issue