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
|
|
@ -169,6 +169,38 @@ public sealed class RetailActionMapReaderTests
|
|||
Assert.Empty(row.DefaultBindings);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Read_PreservesRetailInputMapConflictPolicy()
|
||||
{
|
||||
var actionMap = new ActionMap
|
||||
{
|
||||
InputMaps = new Dictionary<uint, Dictionary<uint, ActionMapValue>>(),
|
||||
ConflictingMaps = new Dictionary<uint, InputsConflictsValue>
|
||||
{
|
||||
[0x10000003u] = new InputsConflictsValue
|
||||
{
|
||||
InputMap = 0x10000003u,
|
||||
ConflictingInputMaps = new List<uint>
|
||||
{
|
||||
0x10000003u,
|
||||
0x10000002u,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
var dats = new FakeDatObjectSource();
|
||||
dats.Add(RetailActionMapIds.ActionMapId, actionMap);
|
||||
|
||||
RetailActionMapSnapshot snapshot = Assert.IsType<RetailActionMapSnapshot>(
|
||||
RetailActionMapReader.Read(dats));
|
||||
|
||||
Assert.True(snapshot.InputMapsConflict(0x10000003u, 0x10000003u));
|
||||
Assert.True(snapshot.InputMapsConflict(0x10000003u, 0x10000002u));
|
||||
Assert.False(snapshot.InputMapsConflict(0x10000003u, 0x10000004u));
|
||||
Assert.True(snapshot.InputMapsConflict(0xDEADBEEFu, 0xDEADBEEFu));
|
||||
Assert.False(snapshot.InputMapsConflict(0xDEADBEEFu, 0x10000003u));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RetailInputMapHeaders_HasAllNineteenByteVerifiedEntries()
|
||||
{
|
||||
|
|
@ -245,5 +277,12 @@ public sealed class RetailActionMapReader_LiveDatTests
|
|||
Assert.Equal(2, moveForward.DefaultBindings.Count);
|
||||
Assert.Contains(moveForward.DefaultBindings, c => c.Scan == 0x11u); // DIK_W
|
||||
Assert.Contains(moveForward.DefaultBindings, c => c.Scan == 0xC8u); // DIK_UPARROW
|
||||
|
||||
// The authored combat modes intentionally share the five attack/aim
|
||||
// keys. Retail's conflict table keeps those mode-local contexts apart;
|
||||
// Configure Keyboard must not erase one mode while editing another.
|
||||
Assert.False(snapshot.InputMapsConflict(0x10000003u, 0x10000004u));
|
||||
Assert.False(snapshot.InputMapsConflict(0x10000003u, 0x10000005u));
|
||||
Assert.False(snapshot.InputMapsConflict(0x10000004u, 0x10000005u));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue