<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>
  <ItemGroup>
    <!-- EngineGlobalInit reads the loader's card-master dump from AppContext.BaseDirectory/Data/cards.json
         to populate the engine's static CardMaster. Ship it in the node's output. -->
    <None Include="..\SVSim.Bootstrap\Data\cards.json" Link="Data\cards.json" CopyToOutputDirectory="PreserveNewest" />
  </ItemGroup>
</Project>
