mirror of
https://github.com/ppy/osu.git
synced 2025-01-12 20:22:55 +08:00
Fix keybinding offsets due to special keys
This commit is contained in:
parent
feb79ff9e7
commit
293023d99a
@ -155,7 +155,7 @@ namespace osu.Game.Rulesets.Mania
|
||||
SpecialKey = InputKey.Space,
|
||||
SpecialAction = ManiaAction.Special1,
|
||||
NormalActionStart = ManiaAction.Key1,
|
||||
}.GenerateKeyBindingsFor(variant);
|
||||
}.GenerateKeyBindingsFor(variant, out _);
|
||||
case ManiaKeyBindingVariantType.Coop:
|
||||
case ManiaKeyBindingVariantType.Versus:
|
||||
getMultiVariantKeyCounts(variant, out int p1K, out int p2K);
|
||||
@ -179,7 +179,7 @@ namespace osu.Game.Rulesets.Mania
|
||||
SpecialKey = InputKey.Tilde,
|
||||
SpecialAction = ManiaAction.Special1,
|
||||
NormalActionStart = ManiaAction.Key1
|
||||
}.GenerateKeyBindingsFor(p1K);
|
||||
}.GenerateKeyBindingsFor(p1K, out var nextNormal);
|
||||
|
||||
var player2Bindings = new VariantMappingGenerator
|
||||
{
|
||||
@ -199,8 +199,8 @@ namespace osu.Game.Rulesets.Mania
|
||||
},
|
||||
SpecialKey = InputKey.BackSlash,
|
||||
SpecialAction = ManiaAction.Special2,
|
||||
NormalActionStart = ManiaAction.Key1 + p1K
|
||||
}.GenerateKeyBindingsFor(p2K);
|
||||
NormalActionStart = nextNormal
|
||||
}.GenerateKeyBindingsFor(p2K, out _);
|
||||
|
||||
return player1Bindings.Concat(player2Bindings);
|
||||
}
|
||||
@ -300,8 +300,9 @@ namespace osu.Game.Rulesets.Mania
|
||||
/// Generates a list of <see cref="KeyBinding"/>s for a specific number of columns.
|
||||
/// </summary>
|
||||
/// <param name="columns">The number of columns that need to be bound.</param>
|
||||
/// <param name="nextNormalAction">The next <see cref="ManiaAction"/> to use for normal columns.</param>
|
||||
/// <returns>The keybindings.</returns>
|
||||
public IEnumerable<KeyBinding> GenerateKeyBindingsFor(int columns)
|
||||
public IEnumerable<KeyBinding> GenerateKeyBindingsFor(int columns, out ManiaAction nextNormalAction)
|
||||
{
|
||||
ManiaAction currentNormalAction = NormalActionStart;
|
||||
|
||||
@ -316,6 +317,7 @@ namespace osu.Game.Rulesets.Mania
|
||||
if (columns % 2 == 1)
|
||||
bindings.Add(new KeyBinding(SpecialKey, SpecialAction));
|
||||
|
||||
nextNormalAction = currentNormalAction;
|
||||
return bindings;
|
||||
}
|
||||
}
|
||||
|
@ -48,10 +48,12 @@ namespace osu.Game.Rulesets.Mania.UI
|
||||
Content = new[] { new Drawable[stageDefinitions.Count] }
|
||||
};
|
||||
|
||||
var normalColumnAction = ManiaAction.Key1;
|
||||
var specialColumnAction = ManiaAction.Special1;
|
||||
int firstColumnIndex = 0;
|
||||
for (int i = 0; i < stageDefinitions.Count; i++)
|
||||
{
|
||||
var newStage = new ManiaStage(i, firstColumnIndex, stageDefinitions[i]);
|
||||
var newStage = new ManiaStage(firstColumnIndex, stageDefinitions[i], ref normalColumnAction, ref specialColumnAction);
|
||||
newStage.SpecialColumn.BindTo(SpecialColumnPosition);
|
||||
newStage.VisibleTimeRange.BindTo(VisibleTimeRange);
|
||||
newStage.Inverted.BindTo(Inverted);
|
||||
|
@ -49,14 +49,12 @@ namespace osu.Game.Rulesets.Mania.UI
|
||||
private List<Color4> normalColumnColours = new List<Color4>();
|
||||
private Color4 specialColumnColour;
|
||||
|
||||
private readonly int stageIndex;
|
||||
private readonly int firstColumnIndex;
|
||||
private readonly StageDefinition definition;
|
||||
|
||||
public ManiaStage(int stageIndex, int firstColumnIndex, StageDefinition definition)
|
||||
public ManiaStage(int firstColumnIndex, StageDefinition definition, ref ManiaAction normalColumnStartAction, ref ManiaAction specialColumnStartAction)
|
||||
: base(ScrollingDirection.Up)
|
||||
{
|
||||
this.stageIndex = stageIndex;
|
||||
this.firstColumnIndex = firstColumnIndex;
|
||||
this.definition = definition;
|
||||
|
||||
@ -134,7 +132,16 @@ namespace osu.Game.Rulesets.Mania.UI
|
||||
};
|
||||
|
||||
for (int i = 0; i < definition.Columns; i++)
|
||||
AddColumn(new Column());
|
||||
{
|
||||
var isSpecial = isSpecialColumn(i);
|
||||
var column = new Column
|
||||
{
|
||||
IsSpecial = isSpecial,
|
||||
Action = isSpecial ? specialColumnStartAction++ : normalColumnStartAction++
|
||||
};
|
||||
|
||||
AddColumn(column);
|
||||
}
|
||||
|
||||
Inverted.ValueChanged += invertedChanged;
|
||||
Inverted.TriggerChange();
|
||||
@ -153,13 +160,6 @@ namespace osu.Game.Rulesets.Mania.UI
|
||||
topLevelContainer.Add(c.TopLevelContainer.CreateProxy());
|
||||
columnFlow.Add(c);
|
||||
AddNested(c);
|
||||
|
||||
c.IsSpecial = isSpecialColumn(Columns.Count - 1);
|
||||
|
||||
if (c.IsSpecial)
|
||||
c.Action = ManiaAction.Special1 + stageIndex;
|
||||
else
|
||||
c.Action = ManiaAction.Key1 + firstColumnIndex + Columns.Count - 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
Loading…
Reference in New Issue
Block a user