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