feat(ui): finish retail toolbar controls
Discover all seven panel launchers from their DAT panel-id attributes, route mounted panels through event-driven retained window state, and ghost unavailable panels. Port Use and Examine selection/target behavior with exact Appraise dispatch and retail cursor modes. Co-Authored-By: Codex <codex@openai.com>
This commit is contained in:
parent
21fefce0e0
commit
d3d1c895a0
19 changed files with 478 additions and 72 deletions
|
|
@ -157,6 +157,33 @@ public sealed class CursorFeedbackControllerTests
|
|||
Assert.Equal(CursorFeedbackKind.TargetPending, c.Update(root).Kind);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenericUseAndExamineModes_driveRetailGlobalCursors()
|
||||
{
|
||||
var objects = SeedTargetObjects();
|
||||
var interaction = new ItemInteractionController(
|
||||
objects,
|
||||
playerGuid: () => Player,
|
||||
sendUse: null,
|
||||
sendUseWithTarget: null,
|
||||
sendWield: null,
|
||||
sendDrop: null);
|
||||
var c = new CursorFeedbackController(interaction);
|
||||
|
||||
Assert.True(interaction.UseSelectedOrEnterMode(0));
|
||||
Assert.Equal(RetailGlobalCursorKind.Use,
|
||||
c.Resolve(new CursorFeedbackSnapshot()).GlobalKind);
|
||||
Assert.Equal(RetailGlobalCursorKind.UseFound,
|
||||
c.Resolve(new CursorFeedbackSnapshot(HoverTargetGuid: Target)).GlobalKind);
|
||||
|
||||
interaction.CancelTargetMode();
|
||||
Assert.True(interaction.ExamineSelectedOrEnterMode(0));
|
||||
Assert.Equal(RetailGlobalCursorKind.Examine,
|
||||
c.Resolve(new CursorFeedbackSnapshot()).GlobalKind);
|
||||
Assert.Equal(RetailGlobalCursorKind.ExamineFound,
|
||||
c.Resolve(new CursorFeedbackSnapshot(HoverTargetGuid: Target)).GlobalKind);
|
||||
}
|
||||
|
||||
public static TheoryData<CursorFeedbackSnapshot, RetailGlobalCursorKind> GlobalCursorCases => new()
|
||||
{
|
||||
{ new(), RetailGlobalCursorKind.Default },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue