feat(plugins): complete Campaign LA5 cross-host hosting
This commit is contained in:
parent
6c4cd2bbc6
commit
95f4be94db
26 changed files with 1630 additions and 99 deletions
|
|
@ -120,7 +120,16 @@ handlers and controllers translate those intents to `WorldSession`; panels
|
|||
never inspect or construct wire messages.
|
||||
Plugins register retained gameplay markup through the BCL-only
|
||||
`AcDream.Plugin.Abstractions.IUiRegistry`; they do not import App or
|
||||
presentation assemblies. Core `SelectionState` is the sole selected-object owner for world,
|
||||
presentation assemblies. `IPluginHost.HasUi` is the explicit capability edge:
|
||||
the graphical host supplies its retained registry, while no-window hosts
|
||||
return `false` and the BCL-only `NoOpUiRegistry`, which retains no plugin
|
||||
binding. Both hosts use Core's session-scoped discovery/lifetime orchestrator
|
||||
and the same config allow-list semantics (absent loads all; explicit empty
|
||||
loads none). The headless adapter projects entity snapshots on demand from the
|
||||
canonical Runtime view, subscribes to Runtime's ordered events, and borrows the
|
||||
exact Runtime selection owner; it does not mirror gameplay state.
|
||||
|
||||
Core `SelectionState` is the sole selected-object owner for world,
|
||||
radar, inventory, paperdoll, toolbar, use/examine consumers, and plugins;
|
||||
`IPluginHost.Selection` exposes that same state and retail-style old/new callback.
|
||||
Temporary pointer modes are separate App orchestration in `InteractionState` and
|
||||
|
|
@ -174,6 +183,9 @@ parallel window-lifecycle map.
|
|||
```
|
||||
src/
|
||||
AcDream.Core/ Layer 2-4: no Vulkan, no Silk.NET, pure logic
|
||||
Plugins/
|
||||
PluginSession.cs -> shared per-host allow-list, failure isolation,
|
||||
status outcome, and collectible ALC lifetime
|
||||
Physics/
|
||||
PhysicsBody.cs -> body state / integration foundation (done)
|
||||
CollisionPrimitives.cs -> retail primitive helpers (partial, active)
|
||||
|
|
@ -288,6 +300,8 @@ src/
|
|||
Configuration/ -> strict versioned process/session config
|
||||
Credentials/ -> redacted env/stdin/owner-only-file providers
|
||||
Hosting/ -> one GameRuntime/session/lease/policy lifetime
|
||||
Plugins/ -> no-window IPluginHost borrowing Runtime/Core;
|
||||
BCL no-op UI and per-session plugin lifetime
|
||||
Policies/ -> typed Runtime-view/command consumers
|
||||
-> references Runtime only; no presentation/backend package
|
||||
-> Slice K complete: portable single/multi-session production host,
|
||||
|
|
@ -298,6 +312,7 @@ src/
|
|||
AcDream.Plugin.Abstractions/ Layer 5: plugin interfaces
|
||||
IAcDreamPlugin.cs -> done
|
||||
IPluginHost.cs -> done
|
||||
IUiRegistry.cs -> capability-aware retained/no-op UI contract
|
||||
IGameState.cs -> done
|
||||
IEvents.cs -> done
|
||||
ISelectionService.cs -> done
|
||||
|
|
@ -352,6 +367,7 @@ src/
|
|||
PlayerMovementController.cs -> active movement driver
|
||||
Plugins/
|
||||
AppPluginHost.cs -> done
|
||||
GraphicalPluginSession.cs -> thin shared-session/root/status adapter
|
||||
```
|
||||
|
||||
The 4B2 production SetPosition routes and shared local-controller body remain
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue