fix(client): restore retail interaction parity
Harden keyboard and camera routing, inventory and vendor interactions, chat/emotes, relog portal flow, and paperdoll rendering. Add retail research, connected gate coverage, and release-gate validation.
This commit is contained in:
parent
0c699240e0
commit
f6fe0f2a4f
151 changed files with 10162 additions and 1211 deletions
|
|
@ -54,9 +54,8 @@ public sealed class RetailKeyNamesTests
|
|||
[Fact]
|
||||
public void SelfModifier_ShowsOnlyTheKeyName_NeverShiftPlusShiftLeft()
|
||||
{
|
||||
// acdream's wire-side chord for retail's bare DIK_LSHIFT walk-mode row
|
||||
// carries the self-modifier bit; retail's QualifiedControl has
|
||||
// meta-mode 0 and displays just the key.
|
||||
// Also accept a legacy self-modifier bit while migrated JSON is read;
|
||||
// retail's exact row has meta-mode 0 and displays just the key.
|
||||
var names = new RetailKeyNames(
|
||||
NoStrings,
|
||||
osKeyName: (scan, _) => scan == 0x2A ? "SKIFT" : null);
|
||||
|
|
@ -130,15 +129,37 @@ public sealed class RetailKeyNamesTests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
public void ControlsOutsideTheDikTable_KeepTheEnumSpelling()
|
||||
public void KeymapInterchangeControls_UseTheirRetailDikNames()
|
||||
{
|
||||
var names = new RetailKeyNames(NoStrings, osKeyName: (_, _) => null);
|
||||
|
||||
// Key.F13 never appears in the DAT's 84 observed scan codes.
|
||||
Assert.Equal("F13", names.Describe(new KeyChord(Key.F13, ModifierMask.None)));
|
||||
Assert.Equal(
|
||||
"Shift+F13",
|
||||
"LSHIFT+F13",
|
||||
names.Describe(new KeyChord(Key.F13, ModifierMask.Shift)));
|
||||
Assert.Equal(
|
||||
"LWIN+F13",
|
||||
names.Describe(new KeyChord(Key.F13, ModifierMask.Win)));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MouseButtonUsesRetailSemanticTableThenReadableFallback()
|
||||
{
|
||||
var authored = new RetailKeyNames(
|
||||
Table((RetailKeyNames.KeyNameTableId, "DIMOFS_BUTTON0", "Primary Mouse")),
|
||||
osKeyName: (_, _) => null);
|
||||
var fallback = new RetailKeyNames(NoStrings, osKeyName: (_, _) => null);
|
||||
var left = new KeyChord(
|
||||
InputDispatcher.MouseButtonToKey(MouseButton.Left),
|
||||
ModifierMask.None,
|
||||
Device: 1);
|
||||
var rightWithCtrl = new KeyChord(
|
||||
InputDispatcher.MouseButtonToKey(MouseButton.Right),
|
||||
ModifierMask.Ctrl,
|
||||
Device: 1);
|
||||
|
||||
Assert.Equal("Primary Mouse", authored.Describe(left));
|
||||
Assert.Equal("LCONTROL+Mouse Button 2", fallback.Describe(rightWithCtrl));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue