feat(chat): port retail client command families
Expand the typed client-command boundary across travel, character queries, local UI and layout controls, AFK and consent, emotes, friends, squelch and filters, and fill-components. Preserve retail packet layouts and queue ownership, import the confirmation dialog, and keep authoritative social state in Core. Co-Authored-By: Codex <codex@openai.com>
This commit is contained in:
parent
5a45a7ac7f
commit
9ea579bdd0
47 changed files with 6659 additions and 99 deletions
|
|
@ -99,6 +99,31 @@ public sealed class RetailWindowLayoutPersistenceTests : IDisposable
|
|||
Assert.False(saved.Visible);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NamedProfile_SaveAndRestore_AppliesEveryMountedWindow()
|
||||
{
|
||||
var store = new SettingsStore(PathName);
|
||||
var root = new UiRoot { Width = 800, Height = 600 };
|
||||
RetailWindowHandle chat = Mount(root, "chat");
|
||||
RetailWindowHandle radar = Mount(root, "radar");
|
||||
using var persistence = new RetailWindowLayoutPersistence(
|
||||
root.WindowManager, store, () => "Alice", () => (800, 600));
|
||||
|
||||
chat.MoveTo(44f, 55f);
|
||||
radar.MoveTo(300f, 120f);
|
||||
radar.Hide();
|
||||
persistence.SaveNamed("hunting");
|
||||
|
||||
chat.MoveTo(1f, 2f);
|
||||
radar.MoveTo(3f, 4f);
|
||||
radar.Show();
|
||||
persistence.RestoreNamed("hunting");
|
||||
|
||||
Assert.Equal((44f, 55f), (chat.Left, chat.Top));
|
||||
Assert.Equal((300f, 120f), (radar.Left, radar.Top));
|
||||
Assert.False(radar.IsVisible);
|
||||
}
|
||||
|
||||
private static RetailWindowHandle Mount(
|
||||
UiRoot root,
|
||||
string name,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue