mirror of
https://github.com/ppy/osu.git
synced 2024-11-06 06:57:39 +08:00
Make note height scale by minimum column width
This commit is contained in:
parent
1a1301b7fc
commit
3ecb99462f
@ -20,6 +20,8 @@ namespace osu.Game.Rulesets.Mania.Skinning
|
||||
private Container directionContainer;
|
||||
private Sprite noteSprite;
|
||||
|
||||
private float? minimumColumnWidth;
|
||||
|
||||
public LegacyNotePiece()
|
||||
{
|
||||
RelativeSizeAxes = Axes.X;
|
||||
@ -29,6 +31,8 @@ namespace osu.Game.Rulesets.Mania.Skinning
|
||||
[BackgroundDependencyLoader]
|
||||
private void load(ISkinSource skin, IScrollingInfo scrollingInfo)
|
||||
{
|
||||
minimumColumnWidth = skin.GetConfig<ManiaSkinConfigurationLookup, float>(new ManiaSkinConfigurationLookup(LegacyManiaSkinConfigurationLookups.MinimumColumnWidth))?.Value;
|
||||
|
||||
InternalChild = directionContainer = new Container
|
||||
{
|
||||
Origin = Anchor.BottomCentre,
|
||||
@ -47,8 +51,10 @@ namespace osu.Game.Rulesets.Mania.Skinning
|
||||
|
||||
if (noteSprite.Texture != null)
|
||||
{
|
||||
var scale = DrawWidth / noteSprite.Texture.DisplayWidth;
|
||||
noteSprite.Scale = new Vector2(scale);
|
||||
// The height is scaled to the minimum column width, if provided.
|
||||
float minimumWidth = minimumColumnWidth ?? DrawWidth;
|
||||
|
||||
noteSprite.Scale = Vector2.Divide(new Vector2(DrawWidth, minimumWidth), noteSprite.Texture.DisplayWidth);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using osu.Game.Beatmaps.Formats;
|
||||
using osuTK.Graphics;
|
||||
|
||||
@ -45,5 +46,13 @@ namespace osu.Game.Skinning
|
||||
ColumnLineWidth.AsSpan().Fill(2);
|
||||
ColumnWidth.AsSpan().Fill(DEFAULT_COLUMN_SIZE);
|
||||
}
|
||||
|
||||
private float? minimumColumnWidth;
|
||||
|
||||
public float MinimumColumnWidth
|
||||
{
|
||||
get => minimumColumnWidth ?? ColumnWidth.Min();
|
||||
set => minimumColumnWidth = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -36,6 +36,7 @@ namespace osu.Game.Skinning
|
||||
HoldNoteBodyImage,
|
||||
ExplosionImage,
|
||||
ExplosionScale,
|
||||
ColumnLineColour
|
||||
ColumnLineColour,
|
||||
MinimumColumnWidth
|
||||
}
|
||||
}
|
||||
|
@ -106,6 +106,10 @@ namespace osu.Game.Skinning
|
||||
case "LightingNWidth":
|
||||
parseArrayValue(pair.Value, currentConfig.ExplosionWidth);
|
||||
break;
|
||||
|
||||
case "WidthForNoteHeightScale":
|
||||
currentConfig.MinimumColumnWidth = float.Parse(pair.Value, CultureInfo.InvariantCulture) * LegacyManiaSkinConfiguration.POSITION_SCALE_FACTOR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -207,6 +207,9 @@ namespace osu.Game.Skinning
|
||||
|
||||
case LegacyManiaSkinConfigurationLookups.ColumnLineColour:
|
||||
return SkinUtils.As<TValue>(getCustomColour(existing, "ColourColumnLine"));
|
||||
|
||||
case LegacyManiaSkinConfigurationLookups.MinimumColumnWidth:
|
||||
return SkinUtils.As<TValue>(new Bindable<float>(existing.MinimumColumnWidth));
|
||||
}
|
||||
|
||||
return null;
|
||||
|
Loading…
Reference in New Issue
Block a user