The engine is constructed per session, seated once from the master seed + both shuffled decks (F-N-5), and fed each frame via ShadowIngest — all inside a try/catch in ComputeFrames so a shadow failure can never break live dispatch (ND1/ND6). Routes still come from the existing handlers: wire output is byte-for-byte unchanged. FrameDispatchContext gains the Engine ref for N2+. csproj: PrivateAssets=compile on the engine ref so its global-namespace type surface (MessagePackSerializer, UserConfig, UserCard, ChallengeConfig, ...) does not leak transitively into SVSim.EmulatedEntrypoint (which references BattleNode) and collide with that project's own types; the runtime DLL still flows. All 238 BattleNode unit tests pass; EmulatedEntrypoint builds clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
26 lines
1.3 KiB
XML
26 lines
1.3 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
<PropertyGroup>
|
|
<TargetFramework>net8.0</TargetFramework>
|
|
<Nullable>enable</Nullable>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
</PropertyGroup>
|
|
<ItemGroup>
|
|
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
|
<PackageReference Include="MessagePack" Version="2.5.172" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<!-- Aliased: the copied decompiled engine puts a huge type surface in the GLOBAL namespace
|
|
(BattlePlayer, MessagePackSerializer, ...) which would otherwise leak into and collide
|
|
with every node file. The extern alias confines it; only Sessions/Engine/* opts in.
|
|
PrivateAssets=compile: the engine is an implementation detail of the node — hide its TYPES
|
|
from the COMPILE closure of consumers (SVSim.EmulatedEntrypoint references BattleNode and
|
|
would otherwise re-hit the MessagePackSerializer global-namespace collision), while still
|
|
flowing the RUNTIME asset so SVSim.BattleEngine.dll deploys into consumers' output. -->
|
|
<ProjectReference Include="..\SVSim.BattleEngine\SVSim.BattleEngine.csproj" Aliases="engine" PrivateAssets="compile" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<InternalsVisibleTo Include="SVSim.UnitTests" />
|
|
<InternalsVisibleTo Include="SVSim.BattleEngine.Tests" />
|
|
</ItemGroup>
|
|
</Project>
|