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
|
|
@ -74,6 +74,55 @@ public sealed class RetailWindowLayoutPersistence : IDisposable
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>Force-save every attached window to the current automatic profile.</summary>
|
||||
public void SaveAll()
|
||||
{
|
||||
ObjectDisposedException.ThrowIf(_disposed, this);
|
||||
string character = _characterKey();
|
||||
if (!CanPersist(character)) return;
|
||||
var screen = ValidScreenSize();
|
||||
string resolution = ResolutionKey(screen);
|
||||
foreach (RetailWindowHandle handle in _attached)
|
||||
_store.SaveWindowLayout(character, resolution, handle.Name, Capture(handle));
|
||||
}
|
||||
|
||||
/// <summary>Save every attached window to a portable named retail UI profile.</summary>
|
||||
public void SaveNamed(string profileName)
|
||||
{
|
||||
ObjectDisposedException.ThrowIf(_disposed, this);
|
||||
ArgumentNullException.ThrowIfNull(profileName);
|
||||
foreach (RetailWindowHandle handle in _attached)
|
||||
_store.SaveNamedWindowLayout(profileName, handle.Name, Capture(handle));
|
||||
}
|
||||
|
||||
/// <summary>Restore every window found in a portable named retail UI profile.</summary>
|
||||
public void RestoreNamed(string profileName)
|
||||
{
|
||||
ObjectDisposedException.ThrowIf(_disposed, this);
|
||||
ArgumentNullException.ThrowIfNull(profileName);
|
||||
var screen = ValidScreenSize();
|
||||
|
||||
_restoring = true;
|
||||
try
|
||||
{
|
||||
foreach (RetailWindowHandle handle in _attached)
|
||||
{
|
||||
UiWindowLayout? saved = _store.LoadNamedWindowLayout(
|
||||
profileName, handle.Name, Capture(handle));
|
||||
if (saved is not { } layout) continue;
|
||||
Apply(
|
||||
handle,
|
||||
layout,
|
||||
screen,
|
||||
restoreVisibility: !_stateManagedVisibilityWindows.Contains(handle.Name));
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
_restoring = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void Attach(RetailWindowHandle handle)
|
||||
{
|
||||
_attached.Add(handle);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue