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
|
|
@ -48,7 +48,7 @@ internal sealed record SessionPlayerDependencies(
|
|||
PhysicsDataCache PhysicsDataCache,
|
||||
WorldGameState WorldGameState,
|
||||
WorldEvents WorldEvents,
|
||||
SelectionState Selection,
|
||||
RuntimeActionState Actions,
|
||||
RuntimeEntityObjectLifetime EntityObjects,
|
||||
EntityClassificationCache ClassificationCache,
|
||||
LiveEntityRuntimeSlot RuntimeSlot,
|
||||
|
|
@ -80,7 +80,6 @@ internal sealed record SessionPlayerDependencies(
|
|||
UpdateFrameClock UpdateClock,
|
||||
MovementTruthDiagnosticController MovementDiagnostics,
|
||||
CombatAttackOperationsSlot CombatAttackOperations,
|
||||
CombatState Combat,
|
||||
CombatFeedbackSlot CombatFeedback,
|
||||
RuntimeCommunicationState Communication,
|
||||
RuntimeCharacterState Character,
|
||||
|
|
@ -326,7 +325,7 @@ internal sealed class SessionPlayerCompositionPhase
|
|||
d.DatLock);
|
||||
var worldQuiescence = new WorldGenerationQuiescence(
|
||||
live.WorldAvailability,
|
||||
d.Selection,
|
||||
d.Actions.Selection,
|
||||
live.WorldState,
|
||||
guid => live.LiveEntities.TryGetProjectionKey(
|
||||
guid,
|
||||
|
|
@ -455,7 +454,7 @@ internal sealed class SessionPlayerCompositionPhase
|
|||
live.EntityEffects,
|
||||
live.RemoteTeleport,
|
||||
live.SelectionInteractions,
|
||||
d.Selection,
|
||||
d.Actions.Selection,
|
||||
d.AnimatedEntities,
|
||||
d.RemoteMovementObservations,
|
||||
d.TranslucencyFades,
|
||||
|
|
@ -563,9 +562,9 @@ internal sealed class SessionPlayerCompositionPhase
|
|||
"combat attack operations",
|
||||
d.CombatAttackOperations.BindOwned(
|
||||
new LiveCombatAttackOperations(
|
||||
d.Combat,
|
||||
d.Actions.Combat,
|
||||
new CombatAttackTargetSource(
|
||||
d.Selection,
|
||||
d.Actions.Selection,
|
||||
live.LiveEntities,
|
||||
d.EntityObjects.Objects,
|
||||
d.PlayerIdentity),
|
||||
|
|
@ -798,7 +797,7 @@ internal sealed class SessionPlayerCompositionPhase
|
|||
new LiveSessionDomainRuntime(
|
||||
d.EntityObjects,
|
||||
d.Character,
|
||||
d.Combat,
|
||||
d.Actions,
|
||||
d.Inventory,
|
||||
d.Communication),
|
||||
new LiveSessionUiRuntime(
|
||||
|
|
@ -856,7 +855,7 @@ internal sealed class SessionPlayerCompositionPhase
|
|||
new LocalPlayerCombatEquipmentSource(
|
||||
d.EntityObjects.Objects,
|
||||
d.PlayerIdentity),
|
||||
d.Combat,
|
||||
d.Actions.Combat,
|
||||
new ItemInteractionCombatModeIntentSink(
|
||||
interaction.ItemInteraction),
|
||||
d.Log,
|
||||
|
|
@ -875,10 +874,10 @@ internal sealed class SessionPlayerCompositionPhase
|
|||
d.Inventory,
|
||||
d.Character,
|
||||
d.Communication,
|
||||
d.Actions,
|
||||
d.PlayerController,
|
||||
worldReveal,
|
||||
d.UpdateClock,
|
||||
d.Selection,
|
||||
live.SelectionInteractions,
|
||||
gameplayInput,
|
||||
combatCommand);
|
||||
|
|
@ -940,7 +939,7 @@ internal sealed class SessionPlayerCompositionPhase
|
|||
GameplayInputActionRouter gameplayActions =
|
||||
GameplayInputActionRouter.Create(
|
||||
dispatcher,
|
||||
d.Combat,
|
||||
d.Actions.Combat,
|
||||
targets,
|
||||
d.HostQuiescence,
|
||||
d.Log);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue