refactor(runtime): own canonical action state
Move selection, combat, and interaction target mode under one Runtime owner; make plugins, retained UI, session routing, and typed runtime views borrow its exact children; and add failure-safe reset, instance isolation, source ownership, and normalized checkpoint coverage without changing retail ordering. Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
bb45afef33
commit
b298f99f91
38 changed files with 711 additions and 93 deletions
|
|
@ -38,7 +38,6 @@ public sealed class GameWindow :
|
|||
private readonly string _datDir;
|
||||
private readonly WorldGameState _worldGameState;
|
||||
private readonly WorldEvents _worldEvents;
|
||||
private readonly AcDream.Core.Selection.SelectionState _selection;
|
||||
private readonly HostQuiescenceGate _hostQuiescence = new();
|
||||
private IWindow? _window;
|
||||
private SilkWindowCallbackBinding? _windowCallbacks;
|
||||
|
|
@ -324,9 +323,12 @@ public sealed class GameWindow :
|
|||
private AcDream.App.World.LiveEntityRuntime? _liveEntities;
|
||||
private AcDream.App.World.LiveEntityLivenessController? _liveEntityLiveness;
|
||||
|
||||
// J4.1: Runtime owns communication/social state. App, UI, plugins, and
|
||||
// live-session routing borrow these exact instances.
|
||||
// J4/J5.1: Runtime owns communication, selection, combat, and target-mode
|
||||
// state. App, UI, plugins, and live-session routing borrow exact children.
|
||||
private readonly RuntimeCommunicationState _runtimeCommunication = new();
|
||||
private readonly RuntimeActionState _runtimeActions = new();
|
||||
public AcDream.Core.Selection.SelectionState Selection =>
|
||||
_runtimeActions.Selection;
|
||||
public AcDream.Core.Chat.ChatLog Chat => _runtimeCommunication.Chat;
|
||||
public AcDream.Core.Chat.TurbineChatState TurbineChat =>
|
||||
_runtimeCommunication.TurbineChat;
|
||||
|
|
@ -334,7 +336,8 @@ public sealed class GameWindow :
|
|||
_runtimeCommunication.Friends;
|
||||
public AcDream.Core.Social.SquelchState Squelch =>
|
||||
_runtimeCommunication.Squelch;
|
||||
public readonly AcDream.Core.Combat.CombatState Combat = new();
|
||||
public AcDream.Core.Combat.CombatState Combat =>
|
||||
_runtimeActions.Combat;
|
||||
private readonly RuntimeEntityObjectLifetime _runtimeEntityObjects = new();
|
||||
private readonly RuntimeInventoryState _runtimeInventory;
|
||||
private readonly RuntimeCharacterState _runtimeCharacter;
|
||||
|
|
@ -554,7 +557,6 @@ public sealed class GameWindow :
|
|||
AcDream.App.RuntimeOptions options,
|
||||
WorldGameState worldGameState,
|
||||
WorldEvents worldEvents,
|
||||
AcDream.Core.Selection.SelectionState selection,
|
||||
AcDream.App.Plugins.BufferedUiRegistry? uiRegistry = null)
|
||||
{
|
||||
_options = options ?? throw new System.ArgumentNullException(nameof(options));
|
||||
|
|
@ -584,7 +586,6 @@ public sealed class GameWindow :
|
|||
new JsonRuntimeSettingsStorage(
|
||||
AcDream.UI.Abstractions.Panels.Settings.SettingsStore.DefaultPath()),
|
||||
log: Console.WriteLine);
|
||||
_selection = selection ?? throw new System.ArgumentNullException(nameof(selection));
|
||||
_animationDiagnostics = AnimationPresentationDiagnostics.FromEnvironment();
|
||||
_uiRegistry = uiRegistry;
|
||||
_animatedEntities = new LiveEntityAnimationRuntimeView<LiveEntityAnimationState>(
|
||||
|
|
@ -1252,9 +1253,8 @@ public sealed class GameWindow :
|
|||
_retainedInputCapture,
|
||||
hostInputCamera.InputDispatcher,
|
||||
_runtimeSettings,
|
||||
Combat,
|
||||
_runtimeActions,
|
||||
_combatAttackOperations,
|
||||
_selection,
|
||||
_runtimeInventory,
|
||||
contentEffectsAudio.MagicCatalog,
|
||||
_runtimeCharacter,
|
||||
|
|
@ -1304,7 +1304,7 @@ public sealed class GameWindow :
|
|||
_physicsDataCache,
|
||||
_worldGameState,
|
||||
_worldEvents,
|
||||
_selection,
|
||||
Selection,
|
||||
_runtimeEntityObjects,
|
||||
_liveEntityRuntimeSlot,
|
||||
_liveEntityMotionBindings,
|
||||
|
|
@ -1362,7 +1362,7 @@ public sealed class GameWindow :
|
|||
_physicsDataCache,
|
||||
_worldGameState,
|
||||
_worldEvents,
|
||||
_selection,
|
||||
_runtimeActions,
|
||||
_runtimeEntityObjects,
|
||||
_classificationCache,
|
||||
_liveEntityRuntimeSlot,
|
||||
|
|
@ -1394,7 +1394,6 @@ public sealed class GameWindow :
|
|||
_updateFrameClock,
|
||||
_movementTruthDiagnostics,
|
||||
_combatAttackOperations,
|
||||
Combat,
|
||||
_combatFeedback,
|
||||
_runtimeCommunication,
|
||||
_runtimeCharacter,
|
||||
|
|
@ -1444,7 +1443,7 @@ public sealed class GameWindow :
|
|||
_debugVmRenderFacts,
|
||||
_inputCapture,
|
||||
_cameraInput,
|
||||
_selection,
|
||||
Selection,
|
||||
_animatedEntities,
|
||||
_updateFrameClock,
|
||||
Combat,
|
||||
|
|
@ -1575,6 +1574,7 @@ public sealed class GameWindow :
|
|||
_runtimeInventory,
|
||||
_runtimeCharacter,
|
||||
_runtimeCommunication,
|
||||
_runtimeActions,
|
||||
_renderSceneShadow,
|
||||
_livePresentationBindings,
|
||||
_entityEffectAdvance,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue