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
45
tests/AcDream.App.Tests/Input/RetailEmoteMotionTableTests.cs
Normal file
45
tests/AcDream.App.Tests/Input/RetailEmoteMotionTableTests.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
using AcDream.App.Input;
|
||||
using AcDream.UI.Abstractions.Input;
|
||||
|
||||
namespace AcDream.App.Tests.Input;
|
||||
|
||||
public sealed class RetailEmoteMotionTableTests
|
||||
{
|
||||
[Fact]
|
||||
public void EveryRetailEmoteActionHasExactMotionConsumer()
|
||||
{
|
||||
InputAction[] emotes = RetailActionIdentityTable.Map
|
||||
.Where(entry => entry.Key.InputMapId == 0x10000006u)
|
||||
.OrderBy(entry => entry.Key.ActionId)
|
||||
.Select(entry => entry.Value)
|
||||
.ToArray();
|
||||
|
||||
Assert.Equal(87, RetailEmoteMotionTable.Count);
|
||||
Assert.Equal(87, emotes.Length);
|
||||
foreach (InputAction emote in emotes)
|
||||
Assert.True(RetailEmoteMotionTable.TryGetMotion(emote, out _));
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(InputAction.EmoteAfkState, 0x43000118u)]
|
||||
[InlineData(InputAction.Cheer, 0x1300004Cu)]
|
||||
[InlineData(InputAction.Cry, 0x1300007Fu)]
|
||||
[InlineData(InputAction.Laugh, 0x13000080u)]
|
||||
[InlineData(InputAction.PointState, 0x430000F0u)]
|
||||
[InlineData(InputAction.Wave, 0x13000087u)]
|
||||
[InlineData(InputAction.EmoteYmca, 0x1200009Bu)]
|
||||
public void RepresentativeActionsMatchNamedRetailGlobals(
|
||||
InputAction action,
|
||||
uint expectedMotion)
|
||||
{
|
||||
Assert.True(RetailEmoteMotionTable.TryGetMotion(action, out uint motion));
|
||||
Assert.Equal(expectedMotion, motion);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(InputAction.Ready)]
|
||||
[InlineData(InputAction.ToggleOptionsPanel)]
|
||||
[InlineData(InputAction.UseQuickSlot_1)]
|
||||
public void NonEmoteActionsAreRejected(InputAction action) =>
|
||||
Assert.False(RetailEmoteMotionTable.TryGetMotion(action, out _));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue