refactor(runtime): own inventory transaction state
Move the retail one-request-at-a-time gate, shared use busy references, external-container state, item mana, shortcuts, and desired-component snapshots into one Runtime-owned graph over J3's exact ClientObjectTable. Retained UI and session routing now borrow that owner; reset and shutdown preserve the existing order while failure/reentrancy tests protect the transaction boundary. Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
595d5e6b01
commit
011efbeaa7
18 changed files with 1337 additions and 406 deletions
|
|
@ -6,6 +6,7 @@ using AcDream.App.Rendering;
|
|||
using AcDream.App.UI;
|
||||
using AcDream.App.UI.Layout;
|
||||
using AcDream.App.UI.Testing;
|
||||
using AcDream.Core.Items;
|
||||
using AcDream.Core.Net;
|
||||
using AcDream.Core.Net.Messages;
|
||||
using AcDream.UI.Abstractions;
|
||||
|
|
@ -406,32 +407,6 @@ internal sealed class PlayerCharacterOptionsState
|
|||
public void Reset() => Options = PlayerDescriptionParser.CharacterOptions1.Default;
|
||||
}
|
||||
|
||||
internal sealed class ShortcutSnapshotState
|
||||
{
|
||||
private IReadOnlyList<AcDream.Core.Items.ShortcutEntry> _items =
|
||||
Array.Empty<AcDream.Core.Items.ShortcutEntry>();
|
||||
|
||||
public IReadOnlyList<AcDream.Core.Items.ShortcutEntry> Items
|
||||
{
|
||||
get => _items;
|
||||
set => _items = value ?? Array.Empty<AcDream.Core.Items.ShortcutEntry>();
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class DesiredComponentSnapshotState
|
||||
{
|
||||
private IReadOnlyList<(uint Id, uint Amount)> _items =
|
||||
Array.Empty<(uint Id, uint Amount)>();
|
||||
|
||||
public IReadOnlyList<(uint Id, uint Amount)> Items
|
||||
{
|
||||
get => _items;
|
||||
set => _items = value ?? Array.Empty<(uint Id, uint Amount)>();
|
||||
}
|
||||
|
||||
public void Clear() => _items = Array.Empty<(uint Id, uint Amount)>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Probe scripts are mounted in Phase 5; reveal/resource facts become valid in
|
||||
/// Phase 7. Calls remain inert and diagnostic until that exact owner binds.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue