mirror of
https://github.com/osukey/osukey.git
synced 2025-08-06 16:13:57 +09:00
Add method to get stage from column index
This commit is contained in:
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
@ -60,5 +61,18 @@ namespace osu.Game.Rulesets.Mania.Beatmaps
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public StageDefinition GetStageForColumnIndex(int column)
|
||||||
|
{
|
||||||
|
foreach (var stage in Stages)
|
||||||
|
{
|
||||||
|
if (column < stage.Columns)
|
||||||
|
return stage;
|
||||||
|
|
||||||
|
column -= stage.Columns;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new ArgumentOutOfRangeException(nameof(column), "Provided index exceeds all available stages");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,10 +69,10 @@ namespace osu.Game.Rulesets.Mania
|
|||||||
switch (skin)
|
switch (skin)
|
||||||
{
|
{
|
||||||
case TrianglesSkin:
|
case TrianglesSkin:
|
||||||
return new ManiaTrianglesSkinTransformer(skin);
|
return new ManiaTrianglesSkinTransformer(skin, beatmap);
|
||||||
|
|
||||||
case ArgonSkin:
|
case ArgonSkin:
|
||||||
return new ManiaArgonSkinTransformer(skin);
|
return new ManiaArgonSkinTransformer(skin, beatmap);
|
||||||
|
|
||||||
case DefaultLegacySkin:
|
case DefaultLegacySkin:
|
||||||
return new ManiaClassicSkinTransformer(skin, beatmap);
|
return new ManiaClassicSkinTransformer(skin, beatmap);
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Utils;
|
using osu.Framework.Utils;
|
||||||
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Rulesets.Mania.Beatmaps;
|
||||||
using osu.Game.Skinning;
|
using osu.Game.Skinning;
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
|
|
||||||
@ -11,9 +13,12 @@ namespace osu.Game.Rulesets.Mania.Skinning.Argon
|
|||||||
{
|
{
|
||||||
public class ManiaArgonSkinTransformer : SkinTransformer
|
public class ManiaArgonSkinTransformer : SkinTransformer
|
||||||
{
|
{
|
||||||
public ManiaArgonSkinTransformer(ISkin skin)
|
private readonly ManiaBeatmap beatmap;
|
||||||
|
|
||||||
|
public ManiaArgonSkinTransformer(ISkin skin, IBeatmap beatmap)
|
||||||
: base(skin)
|
: base(skin)
|
||||||
{
|
{
|
||||||
|
this.beatmap = (ManiaBeatmap)beatmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Drawable? GetDrawableComponent(ISkinComponent component)
|
public override Drawable? GetDrawableComponent(ISkinComponent component)
|
||||||
@ -44,7 +49,10 @@ namespace osu.Game.Rulesets.Mania.Skinning.Argon
|
|||||||
switch (maniaLookup.Lookup)
|
switch (maniaLookup.Lookup)
|
||||||
{
|
{
|
||||||
case LegacyManiaSkinConfigurationLookups.ColumnBackgroundColour:
|
case LegacyManiaSkinConfigurationLookups.ColumnBackgroundColour:
|
||||||
if (maniaLookup.StageDefinition.IsSpecialColumn(maniaLookup.ColumnIndex ?? 0))
|
int column = maniaLookup.ColumnIndex ?? 0;
|
||||||
|
var stage = beatmap.GetStageForColumnIndex(column);
|
||||||
|
|
||||||
|
if (stage.IsSpecialColumn(column))
|
||||||
return SkinUtils.As<TValue>(new Bindable<Color4>(Color4.Yellow));
|
return SkinUtils.As<TValue>(new Bindable<Color4>(Color4.Yellow));
|
||||||
|
|
||||||
// TODO: Add actual colours.
|
// TODO: Add actual colours.
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Rulesets.Mania.Beatmaps;
|
||||||
using osu.Game.Skinning;
|
using osu.Game.Skinning;
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
|
|
||||||
@ -10,9 +12,12 @@ namespace osu.Game.Rulesets.Mania.Skinning.Default
|
|||||||
{
|
{
|
||||||
public class ManiaTrianglesSkinTransformer : SkinTransformer
|
public class ManiaTrianglesSkinTransformer : SkinTransformer
|
||||||
{
|
{
|
||||||
public ManiaTrianglesSkinTransformer(ISkin skin)
|
private readonly ManiaBeatmap beatmap;
|
||||||
|
|
||||||
|
public ManiaTrianglesSkinTransformer(ISkin skin, IBeatmap beatmap)
|
||||||
: base(skin)
|
: base(skin)
|
||||||
{
|
{
|
||||||
|
this.beatmap = (ManiaBeatmap)beatmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly Color4 colourEven = new Color4(6, 84, 0, 255);
|
private readonly Color4 colourEven = new Color4(6, 84, 0, 255);
|
||||||
@ -28,10 +33,12 @@ namespace osu.Game.Rulesets.Mania.Skinning.Default
|
|||||||
case LegacyManiaSkinConfigurationLookups.ColumnBackgroundColour:
|
case LegacyManiaSkinConfigurationLookups.ColumnBackgroundColour:
|
||||||
int column = maniaLookup.ColumnIndex ?? 0;
|
int column = maniaLookup.ColumnIndex ?? 0;
|
||||||
|
|
||||||
if (maniaLookup.StageDefinition.IsSpecialColumn(column))
|
var stage = beatmap.GetStageForColumnIndex(column);
|
||||||
|
|
||||||
|
if (stage.IsSpecialColumn(column))
|
||||||
return SkinUtils.As<TValue>(new Bindable<Color4>(colourSpecial));
|
return SkinUtils.As<TValue>(new Bindable<Color4>(colourSpecial));
|
||||||
|
|
||||||
int distanceToEdge = Math.Min(column, (maniaLookup.StageDefinition.Columns - 1) - column);
|
int distanceToEdge = Math.Min(column, (stage.Columns - 1) - column);
|
||||||
return SkinUtils.As<TValue>(new Bindable<Color4>(distanceToEdge % 2 == 0 ? colourOdd : colourEven));
|
return SkinUtils.As<TValue>(new Bindable<Color4>(distanceToEdge % 2 == 0 ? colourOdd : colourEven));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@ using System.Collections.Generic;
|
|||||||
using osu.Framework.Audio.Sample;
|
using osu.Framework.Audio.Sample;
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Utils;
|
|
||||||
using osu.Game.Audio;
|
using osu.Game.Audio;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Rulesets.Mania.Beatmaps;
|
using osu.Game.Rulesets.Mania.Beatmaps;
|
||||||
|
@ -11,7 +11,6 @@ using osu.Framework.Graphics.Pooling;
|
|||||||
using osu.Framework.Input.Bindings;
|
using osu.Framework.Input.Bindings;
|
||||||
using osu.Framework.Input.Events;
|
using osu.Framework.Input.Events;
|
||||||
using osu.Game.Rulesets.Judgements;
|
using osu.Game.Rulesets.Judgements;
|
||||||
using osu.Game.Rulesets.Mania.Beatmaps;
|
|
||||||
using osu.Game.Rulesets.Mania.Objects;
|
using osu.Game.Rulesets.Mania.Objects;
|
||||||
using osu.Game.Rulesets.Mania.Objects.Drawables;
|
using osu.Game.Rulesets.Mania.Objects.Drawables;
|
||||||
using osu.Game.Rulesets.Mania.Skinning;
|
using osu.Game.Rulesets.Mania.Skinning;
|
||||||
@ -68,9 +67,6 @@ namespace osu.Game.Rulesets.Mania.UI
|
|||||||
[Resolved]
|
[Resolved]
|
||||||
private ISkinSource skin { get; set; }
|
private ISkinSource skin { get; set; }
|
||||||
|
|
||||||
[Resolved]
|
|
||||||
private StageDefinition stageDefinition { get; set; }
|
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load()
|
private void load()
|
||||||
{
|
{
|
||||||
@ -116,7 +112,7 @@ namespace osu.Game.Rulesets.Mania.UI
|
|||||||
|
|
||||||
private void onSourceChanged()
|
private void onSourceChanged()
|
||||||
{
|
{
|
||||||
AccentColour.Value = skin.GetManiaSkinConfig<Color4>(LegacyManiaSkinConfigurationLookups.ColumnBackgroundColour, stageDefinition, Index)?.Value ?? Color4.Black;
|
AccentColour.Value = skin.GetManiaSkinConfig<Color4>(LegacyManiaSkinConfigurationLookups.ColumnBackgroundColour, Index)?.Value ?? Color4.Black;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void LoadComplete()
|
protected override void LoadComplete()
|
||||||
|
Reference in New Issue
Block a user