<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net48</TargetFramework>
    <LangVersion>9.0</LangVersion>
    <Nullable>enable</Nullable>
    <RootNamespace>Panel.BloodMoonAgent</RootNamespace>
    <AssemblyName>PanelBloodMoonAgent</AssemblyName>
    <OutputType>Library</OutputType>
    <!--
      We reference Assembly-CSharp.dll ONLY to bind IModApi + Mod at compile
      time so the 7DTD loader's reflection probe finds our entry point. All
      game DATA access (GamePrefs, World, AIDirector, etc.) goes through
      string-keyed reflection (see BloodMoonAgent.cs) to dodge the
      EnumGamePrefs landmine where a missing enum member stops Mono from
      loading the whole assembly. The two-type binding is stable across 7DTD
      versions — IModApi has had the same shape since A19.

      Private=false means we don't ship Assembly-CSharp.dll alongside our DLL;
      it's resolved at runtime from the game's own Managed folder.

      Override LocalAssemblyCSharp on the command line to point at a different
      game install:
        dotnet build -p:LocalAssemblyCSharp=D:\path\to\Assembly-CSharp.dll
    -->
    <LocalAssemblyCSharp Condition="'$(LocalAssemblyCSharp)' == ''">C:\7dtdserver\7DaysToDieServer_Data\Managed\Assembly-CSharp.dll</LocalAssemblyCSharp>
    <NoWarn>$(NoWarn);CS8632</NoWarn>
  </PropertyGroup>

  <ItemGroup>
    <Reference Include="Assembly-CSharp">
      <HintPath>$(LocalAssemblyCSharp)</HintPath>
      <Private>false</Private>
    </Reference>
  </ItemGroup>
</Project>
