mirror of
https://github.com/ppy/osu.git
synced 2025-01-06 09:03:01 +08:00
Add animation support for legacy osu!mania column lights
This commit is contained in:
parent
517d0f65b6
commit
491f119988
Binary file not shown.
After Width: | Height: | Size: 5.0 KiB |
Binary file not shown.
After Width: | Height: | Size: 5.0 KiB |
Binary file not shown.
After Width: | Height: | Size: 5.0 KiB |
Binary file not shown.
After Width: | Height: | Size: 5.0 KiB |
@ -4,6 +4,7 @@ Version: 2.5
|
|||||||
[Mania]
|
[Mania]
|
||||||
Keys: 4
|
Keys: 4
|
||||||
ColumnLineWidth: 3,1,3,1,1
|
ColumnLineWidth: 3,1,3,1,1
|
||||||
|
LightFramePerSecond: 15
|
||||||
// some skins found in the wild had configuration keys where the @2x suffix was included in the values.
|
// some skins found in the wild had configuration keys where the @2x suffix was included in the values.
|
||||||
// the expected compatibility behaviour is that the presence of the @2x suffix shouldn't change anything
|
// the expected compatibility behaviour is that the presence of the @2x suffix shouldn't change anything
|
||||||
// if @2x assets are present.
|
// if @2x assets are present.
|
||||||
@ -15,5 +16,6 @@ Hit300: mania/hit300@2x
|
|||||||
Hit300g: mania/hit300g@2x
|
Hit300g: mania/hit300g@2x
|
||||||
StageLeft: mania/stage-left
|
StageLeft: mania/stage-left
|
||||||
StageRight: mania/stage-right
|
StageRight: mania/stage-right
|
||||||
|
StageLight: mania/stage-light
|
||||||
NoteImage0L: LongNoteTailWang
|
NoteImage0L: LongNoteTailWang
|
||||||
NoteImage1L: LongNoteTailWang
|
NoteImage1L: LongNoteTailWang
|
||||||
|
@ -5,7 +5,6 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
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.Input.Bindings;
|
using osu.Framework.Input.Bindings;
|
||||||
using osu.Framework.Input.Events;
|
using osu.Framework.Input.Events;
|
||||||
using osu.Game.Rulesets.UI.Scrolling;
|
using osu.Game.Rulesets.UI.Scrolling;
|
||||||
@ -20,7 +19,7 @@ namespace osu.Game.Rulesets.Mania.Skinning.Legacy
|
|||||||
private readonly IBindable<ScrollingDirection> direction = new Bindable<ScrollingDirection>();
|
private readonly IBindable<ScrollingDirection> direction = new Bindable<ScrollingDirection>();
|
||||||
|
|
||||||
private Container lightContainer = null!;
|
private Container lightContainer = null!;
|
||||||
private Sprite light = null!;
|
private Drawable? light = null!;
|
||||||
|
|
||||||
public LegacyColumnBackground()
|
public LegacyColumnBackground()
|
||||||
{
|
{
|
||||||
@ -39,6 +38,8 @@ namespace osu.Game.Rulesets.Mania.Skinning.Legacy
|
|||||||
Color4 lightColour = GetColumnSkinConfig<Color4>(skin, LegacyManiaSkinConfigurationLookups.ColumnLightColour)?.Value
|
Color4 lightColour = GetColumnSkinConfig<Color4>(skin, LegacyManiaSkinConfigurationLookups.ColumnLightColour)?.Value
|
||||||
?? Color4.White;
|
?? Color4.White;
|
||||||
|
|
||||||
|
int lightFramePerSecond = skin.GetManiaSkinConfig<int>(LegacyManiaSkinConfigurationLookups.LightFramePerSecond)?.Value ?? 60;
|
||||||
|
|
||||||
InternalChildren = new[]
|
InternalChildren = new[]
|
||||||
{
|
{
|
||||||
lightContainer = new Container
|
lightContainer = new Container
|
||||||
@ -46,16 +47,15 @@ namespace osu.Game.Rulesets.Mania.Skinning.Legacy
|
|||||||
Origin = Anchor.BottomCentre,
|
Origin = Anchor.BottomCentre,
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Padding = new MarginPadding { Bottom = lightPosition },
|
Padding = new MarginPadding { Bottom = lightPosition },
|
||||||
Child = light = new Sprite
|
Child = light = skin.GetAnimation(lightImage, true, true, frameLength: 1000d / lightFramePerSecond)?.With(l =>
|
||||||
{
|
{
|
||||||
Anchor = Anchor.BottomCentre,
|
l.Anchor = Anchor.BottomCentre;
|
||||||
Origin = Anchor.BottomCentre,
|
l.Origin = Anchor.BottomCentre;
|
||||||
Colour = LegacyColourCompatibility.DisallowZeroAlpha(lightColour),
|
l.Colour = LegacyColourCompatibility.DisallowZeroAlpha(lightColour);
|
||||||
Texture = skin.GetTexture(lightImage),
|
l.RelativeSizeAxes = Axes.X;
|
||||||
RelativeSizeAxes = Axes.X,
|
l.Width = 1;
|
||||||
Width = 1,
|
l.Alpha = 0;
|
||||||
Alpha = 0
|
}) ?? Empty(),
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -40,6 +40,7 @@ namespace osu.Game.Skinning
|
|||||||
public float ScorePosition = 300 * POSITION_SCALE_FACTOR;
|
public float ScorePosition = 300 * POSITION_SCALE_FACTOR;
|
||||||
public bool ShowJudgementLine = true;
|
public bool ShowJudgementLine = true;
|
||||||
public bool KeysUnderNotes;
|
public bool KeysUnderNotes;
|
||||||
|
public int LightFramePerSecond = 60;
|
||||||
|
|
||||||
public LegacyNoteBodyStyle? NoteBodyStyle;
|
public LegacyNoteBodyStyle? NoteBodyStyle;
|
||||||
|
|
||||||
|
@ -74,6 +74,7 @@ namespace osu.Game.Skinning
|
|||||||
Hit50,
|
Hit50,
|
||||||
Hit0,
|
Hit0,
|
||||||
KeysUnderNotes,
|
KeysUnderNotes,
|
||||||
NoteBodyStyle
|
NoteBodyStyle,
|
||||||
|
LightFramePerSecond
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -123,6 +123,11 @@ namespace osu.Game.Skinning
|
|||||||
currentConfig.WidthForNoteHeightScale = (float.Parse(pair.Value, CultureInfo.InvariantCulture)) * LegacyManiaSkinConfiguration.POSITION_SCALE_FACTOR;
|
currentConfig.WidthForNoteHeightScale = (float.Parse(pair.Value, CultureInfo.InvariantCulture)) * LegacyManiaSkinConfiguration.POSITION_SCALE_FACTOR;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "LightFramePerSecond":
|
||||||
|
int lightFramePerSecond = int.Parse(pair.Value, CultureInfo.InvariantCulture);
|
||||||
|
currentConfig.LightFramePerSecond = lightFramePerSecond > 0 ? lightFramePerSecond : 24;
|
||||||
|
break;
|
||||||
|
|
||||||
case string when pair.Key.StartsWith("Colour", StringComparison.Ordinal):
|
case string when pair.Key.StartsWith("Colour", StringComparison.Ordinal):
|
||||||
HandleColours(currentConfig, line, true);
|
HandleColours(currentConfig, line, true);
|
||||||
break;
|
break;
|
||||||
|
@ -273,6 +273,9 @@ namespace osu.Game.Skinning
|
|||||||
|
|
||||||
case LegacyManiaSkinConfigurationLookups.KeysUnderNotes:
|
case LegacyManiaSkinConfigurationLookups.KeysUnderNotes:
|
||||||
return SkinUtils.As<TValue>(new Bindable<bool>(existing.KeysUnderNotes));
|
return SkinUtils.As<TValue>(new Bindable<bool>(existing.KeysUnderNotes));
|
||||||
|
|
||||||
|
case LegacyManiaSkinConfigurationLookups.LightFramePerSecond:
|
||||||
|
return SkinUtils.As<TValue>(new Bindable<int>(existing.LightFramePerSecond));
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
Loading…
Reference in New Issue
Block a user