修复特殊列逻辑

This commit is contained in:
LA
2025-07-06 17:07:41 +08:00
parent bfe675ce50
commit ba4e88a9c2
9 changed files with 24 additions and 20 deletions

View File

@@ -8,7 +8,6 @@ using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Rulesets.Mania.Beatmaps;
using osu.Game.Screens;
using osu.Game.Screens.LAsEzExtensions;
using osu.Game.Screens.Play.HUD;
using osuTK;
@@ -22,6 +21,9 @@ namespace osu.Game.Rulesets.Mania.LAsEZMania
[Resolved]
protected InputCountController Controller { get; private set; } = null!;
[Resolved]
private EzSkinSettingsManager ezSkinConfig { get; set; } = null!;
protected readonly FillFlowContainer<KeyCounter> KeyFlow;
private readonly IBindableList<InputTrigger> triggers = new BindableList<InputTrigger>();
@@ -41,7 +43,7 @@ namespace osu.Game.Rulesets.Mania.LAsEZMania
}
[BackgroundDependencyLoader]
private void load(EzSkinSettingsManager ezSkinConfig)
private void load()
{
columnWidth = ezSkinConfig.GetBindable<double>(EzSkinSetting.ColumnWidth);
specialFactor = ezSkinConfig.GetBindable<double>(EzSkinSetting.SpecialFactor);
@@ -65,7 +67,7 @@ namespace osu.Game.Rulesets.Mania.LAsEZMania
float width = (float)columnWidth.Value;
int index = KeyFlow.IndexOf(counter);
if (EzColumnTypeManager.GetColumnType(StageDefinition.Columns, index) == "S1")
if (ezSkinConfig.GetColumnType(StageDefinition.Columns, index) == "S1")
width *= (float)specialFactor.Value;
counter.Width = width;

View File

@@ -97,7 +97,7 @@ namespace osu.Game.Rulesets.Mania.Skinning.EzStylePro
private void updateY()
{
bool isSpecialColumn = EzColumnTypeManager.GetColumnType(stageDefinition.Columns, column.Index) == "S1";
bool isSpecialColumn = ezSkinConfig.GetColumnType(stageDefinition.Columns, column.Index) == "S1";
double columnWidth = columnWidthBindable.Value * (isSpecialColumn ? specialFactorBindable.Value : 1);
bool isSquare = factory.IsSquareNote("whitenote");

View File

@@ -84,14 +84,14 @@ namespace osu.Game.Rulesets.Mania.Skinning.EzStylePro
if (enabledColor.Value)
return "white";
if (EzColumnTypeManager.GetColumnType(stageDefinition.Columns, column.Index) == "S1")
if (ezSkinConfig.GetColumnType(stageDefinition.Columns, column.Index) == "S1")
return "green";
int logicalIndex = 0;
for (int i = 0; i < column.Index; i++)
{
if (EzColumnTypeManager.GetColumnType(stageDefinition.Columns, i) != "S1")
if (ezSkinConfig.GetColumnType(stageDefinition.Columns, i) != "S1")
logicalIndex++;
}

View File

@@ -129,7 +129,7 @@ namespace osu.Game.Rulesets.Mania.Skinning.EzStylePro
public void UpdateLNsLight()
{
bool isSpecialColumn = EzColumnTypeManager.GetColumnType(stageDefinition.Columns, column.Index) == "S1";
bool isSpecialColumn = ezSkinConfig.GetColumnType(stageDefinition.Columns, column.Index) == "S1";
double columnWidth = columnWidthBindable.Value * (isSpecialColumn ? specialFactorBindable.Value : 1);
bool isSquare = factory.IsSquareNote("whitenote");

View File

@@ -10,7 +10,6 @@ using osu.Framework.Graphics.Containers;
using osu.Game.Rulesets.Mania.Beatmaps;
using osu.Game.Rulesets.Mania.Objects.Drawables;
using osu.Game.Rulesets.Mania.Skinning.Default;
using osu.Game.Rulesets.Mania.Skinning.Legacy;
using osu.Game.Rulesets.Mania.UI;
using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Screens;
@@ -122,11 +121,15 @@ namespace osu.Game.Rulesets.Mania.Skinning.EzStylePro
Alpha = 0,
IsHitting = { BindTarget = isHitting }
};
lightContainer = new HitTargetInsetContainer
lightContainer = new Container
{
RelativeSizeAxes = Axes.Both,
Anchor = Anchor.BottomCentre,
Origin = Anchor.BottomCentre,
Alpha = 0,
Child = hittingLayer
};
hittingLayer.HitPosition.BindTo(hitPosition);
}
@@ -170,14 +173,14 @@ namespace osu.Game.Rulesets.Mania.Skinning.EzStylePro
if (enabledColor.Value)
return "white";
if (EzColumnTypeManager.GetColumnType(stageDefinition.Columns, column.Index) == "S1")
if (ezSkinConfig.GetColumnType(stageDefinition.Columns, column.Index) == "S1")
return "green";
int logicalIndex = 0;
for (int i = 0; i < column.Index; i++)
{
if (EzColumnTypeManager.GetColumnType(stageDefinition.Columns, column.Index) != "S1")
if (ezSkinConfig.GetColumnType(stageDefinition.Columns, column.Index) != "S1")
logicalIndex++;
}

View File

@@ -67,14 +67,14 @@ namespace osu.Game.Rulesets.Mania.Skinning.EzStylePro
{
get
{
if (EzColumnTypeManager.GetColumnType(stageDefinition.Columns, column.Index) == "S1")
if (ezSkinConfig.GetColumnType(stageDefinition.Columns, column.Index) == "S1")
return "02";
int logicalIndex = 0;
for (int i = 0; i < column.Index; i++)
{
if (EzColumnTypeManager.GetColumnType(stageDefinition.Columns, i) == "S1")
if (ezSkinConfig.GetColumnType(stageDefinition.Columns, i) == "S1")
logicalIndex++;
}

View File

@@ -87,14 +87,14 @@ namespace osu.Game.Rulesets.Mania.Skinning.EzStylePro
if (enabledColor.Value)
return "white";
if (EzColumnTypeManager.GetColumnType(stageDefinition.Columns, column.Index) == "S1")
if (ezSkinConfig.GetColumnType(stageDefinition.Columns, column.Index) == "S1")
return "green";
int logicalIndex = 0;
for (int i = 0; i < column.Index; i++)
{
if (EzColumnTypeManager.GetColumnType(stageDefinition.Columns, i) != "S1")
if (ezSkinConfig.GetColumnType(stageDefinition.Columns, i) != "S1")
logicalIndex++;
}

View File

@@ -11,7 +11,6 @@ using osu.Game.Rulesets.Mania.Skinning.Ez2;
using osu.Game.Rulesets.Mania.Skinning.Ez2HUD;
using osu.Game.Rulesets.Scoring;
using osu.Game.Screens;
using osu.Game.Screens.LAsEzExtensions;
using osu.Game.Screens.Play.HUD.HitErrorMeters;
using osu.Game.Skinning;
using osu.Game.Skinning.Components;
@@ -21,6 +20,7 @@ namespace osu.Game.Rulesets.Mania.Skinning.EzStylePro
{
public class ManiaEzStyleProSkinTransformer : SkinTransformer
{
private readonly EzSkinSettingsManager ezSkinConfig;
private readonly ManiaBeatmap beatmap;
private readonly IBindable<double> columnWidthBindable;
private readonly IBindable<double> specialFactorBindable;
@@ -32,7 +32,7 @@ namespace osu.Game.Rulesets.Mania.Skinning.EzStylePro
: base(skin)
{
this.beatmap = (ManiaBeatmap)beatmap;
this.ezSkinConfig = ezSkinConfig;
columnWidthBindable = ezSkinConfig.GetBindable<double>(EzSkinSetting.ColumnWidth);
specialFactorBindable = ezSkinConfig.GetBindable<double>(EzSkinSetting.SpecialFactor);
hitPosition = ezSkinConfig.GetBindable<double>(EzSkinSetting.HitPosition);
@@ -226,7 +226,7 @@ namespace osu.Game.Rulesets.Mania.Skinning.EzStylePro
{
int columnIndex = maniaLookup.ColumnIndex ?? 0;
var stage = beatmap.GetStageForColumnIndex(columnIndex);
bool isSpecialColumn = EzColumnTypeManager.GetColumnType(stage.Columns, columnIndex) == "S1";
bool isSpecialColumn = ezSkinConfig.GetColumnType(stage.Columns, columnIndex) == "S1";
float width = (float)columnWidthBindable.Value * (isSpecialColumn ? (float)specialFactorBindable.Value : 1f);
// float hitPositionValue = (float)hitPosition.Value; // + (float)virtualHitPosition.Value - 110f;

View File

@@ -13,7 +13,6 @@ using osu.Game.Rulesets.Mania.Beatmaps;
using osu.Game.Rulesets.Mania.Configuration;
using osu.Game.Rulesets.Mania.Skinning;
using osu.Game.Screens;
using osu.Game.Screens.LAsEzExtensions;
using osu.Game.Skinning;
using osuTK;
@@ -164,7 +163,7 @@ namespace osu.Game.Rulesets.Mania.UI
}
bool isSpecialColumn =
EzColumnTypeManager.GetColumnType(stageDefinition.Columns, i) == "S1";
ezSkinConfig.GetColumnType(stageDefinition.Columns, i) == "S1";
float ezWidth = (float)columnWidthBindable.Value * (isSpecialColumn ? (float)specialFactorBindable.Value : 1);
switch (ezColumnWidthStyle.Value)