fix(client): restore retail interaction parity
All checks were successful
CI / linux-portable (push) Successful in 3m27s
CI / windows-gate (push) Successful in 6m42s
CI / release (push) Successful in 2m12s

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:
Erik 2026-08-26 20:45:11 +02:00
parent 0c699240e0
commit f6fe0f2a4f
151 changed files with 10162 additions and 1211 deletions

View file

@ -63,6 +63,36 @@ internal sealed class FrameScreenshotController
return true;
}
/// <summary>
/// Queues the first free retail-style screenshot name. Retail scans
/// <c>ScreenShot00000.jpg</c> through <c>ScreenShot99999.jpg</c> beside
/// its preferences file; acdream keeps the exact stem/numbering while
/// writing lossless PNGs in the portable screenshots directory.
/// </summary>
public bool TryRequestRetailScreenshot(out string path, out string error)
{
for (int index = 0; index < 100_000; index++)
{
string name = $"ScreenShot{index:D5}";
string candidate = Path.Combine(_directory, name + ".png");
if (File.Exists(candidate) || _status.ContainsKey(name))
continue;
if (TryRequest(name, out error))
{
path = candidate;
return true;
}
path = string.Empty;
return false;
}
path = string.Empty;
error = "all retail screenshot names ScreenShot00000 through ScreenShot99999 are in use";
return false;
}
public bool IsComplete(string name) =>
_status.TryGetValue(name, out CaptureStatus? status)
&& status.State == CaptureState.Complete;