<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <RootNamespace>Barotrauma</RootNamespace>
    <Authors>FakeFish, Undertow Games</Authors>
    <Product>Barotrauma</Product>
    <Version>1.0.13.2</Version>
    <Copyright>Copyright © FakeFish 2018-2023</Copyright>
    <Platforms>AnyCPU;x64</Platforms>
    <AssemblyName>Barotrauma</AssemblyName>
    <ApplicationIcon>..\BarotraumaShared\Icon.ico</ApplicationIcon>
    <Configurations>Debug;Release;Unstable</Configurations>
    <InvariantGlobalization>true</InvariantGlobalization>
    <WarningsAsErrors>;NU1605;CS0114;CS0108;CS8597;CS8600;CS8601;CS8602;CS8603;CS8604;CS8605;CS8606;CS8607;CS8608;CS8609;CS8610;CS8611;CS8612;CS8613;CS8614;CS8615;CS8616;CS8617;CS8618;CS8619;CS8620;CS8621;CS8622;CS8624;CS8625;CS8626;CS8629;CS8631;CS8632;CS8633;CS8634;CS8638;CS8643;CS8644;CS8645;CS8653;CS8654;CS8655;CS8667;CS8669;CS8670;CS8714;CS8717;CS8765</WarningsAsErrors>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <DefineConstants>TRACE;CLIENT;OSX;USE_STEAM;DEBUG;NETCOREAPP;NETCOREAPP3_0</DefineConstants>
    <PlatformTarget>x64</PlatformTarget>
    <OutputPath>..\bin\$(Configuration)Mac</OutputPath>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <DefineConstants>TRACE;DEBUG;CLIENT;OSX;X64;USE_STEAM</DefineConstants>
    <PlatformTarget>x64</PlatformTarget>
    <OutputPath>..\bin\$(Configuration)Mac\</OutputPath>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <DefineConstants>TRACE;CLIENT;OSX;USE_STEAM;RELEASE;NETCOREAPP;NETCOREAPP3_0</DefineConstants>
    <PlatformTarget>x64</PlatformTarget>
    <DebugType></DebugType>
    <OutputPath>..\bin\$(Configuration)Mac</OutputPath>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unstable|AnyCPU'">
    <DefineConstants>TRACE;CLIENT;OSX;USE_STEAM;RELEASE;NETCOREAPP;NETCOREAPP3_0;UNSTABLE</DefineConstants>
    <PlatformTarget>x64</PlatformTarget>
    <DebugType />
    <OutputPath>..\bin\$(Configuration)Mac</OutputPath>    
    <Optimize>true</Optimize>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <DefineConstants>TRACE;CLIENT;OSX;X64;USE_STEAM</DefineConstants>
    <PlatformTarget>x64</PlatformTarget>
    <OutputPath>..\bin\$(Configuration)Mac\</OutputPath>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unstable|x64'">
    <DefineConstants>TRACE;CLIENT;OSX;X64;USE_STEAM;UNSTABLE</DefineConstants>
    <PlatformTarget>x64</PlatformTarget>
    <OutputPath>..\bin\$(Configuration)Mac\</OutputPath>
    <Optimize>true</Optimize>
  </PropertyGroup>

  <ItemGroup Condition="'$(Configuration)'!='Debug'">
    <Content Include="..\BarotraumaShared\**\*" CopyToOutputDirectory="PreserveNewest" Exclude="..\BarotraumaShared\Data\Saves\*.save;..\BarotraumaShared\ModLists\*.xml" />
  </ItemGroup>
  <ItemGroup Condition="'$(Configuration)'=='Debug'">
    <Content Include="..\BarotraumaShared\**\*" CopyToOutputDirectory="PreserveNewest" />
  </ItemGroup>
  
  <ItemGroup>
    <Content Remove="..\BarotraumaShared\**\*.cs" />
    <Content Remove="..\BarotraumaShared\**\*.props" />
    <Compile Include="..\BarotraumaShared\**\*.cs" />
    <Compile Remove="..\BarotraumaShared\Content\**\*.cs" />
    <Content Remove="..\BarotraumaShared\libsteam_api64.dylib" />
    <Content Remove="..\BarotraumaShared\libsteam_api64.so" />
  </ItemGroup>

  <ItemGroup>
    <None Remove="freetype6.dll" />
    <None Remove="soft_oal_x64.dll" />
    <None Remove="x64\SDL2.dll" />
    <None Remove="webm_mem_playback_x64.dll" />
    <None Remove="libfreetype6.so" />
    <None Remove="libopenal.so.1" />
    <None Remove="libSDL2-2.0.so.0" />
    <None Remove="webm_mem_playback_x64.so" />
    <None Remove="libopenal.1.dylib" />
    <None Remove="libSDL2-2.0.0.dylib" />
    <None Remove="libwebm_mem_playback_x64.dylib" />
  </ItemGroup>

  <ItemGroup>
    <Content Include="libopenal.1.dylib">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="libSDL2-2.0.0.dylib">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="libwebm_mem_playback_x64.dylib">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="Content\**\*">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Compile Remove="ClientSource\GUI\GUITextBoxIME.cs" />

    <EmbeddedResource Include="Icon.bmp">
      <LogicalName>Icon.bmp</LogicalName>
    </EmbeddedResource>
  </ItemGroup>

  <ItemGroup Condition="'$(Configuration)'!='Debug'">
    <ProjectReference Include="..\..\Libraries\Concentus\CSharp\Concentus\Concentus.NetStandard.csproj" AdditionalProperties="Configuration=Release" />
    <ProjectReference Include="..\..\Libraries\Facepunch.Steamworks\Facepunch.Steamworks.Posix.csproj" AdditionalProperties="Configuration=Release" />
    <ProjectReference Include="..\..\Libraries\Farseer Physics Engine 3.5\Farseer.NetStandard.csproj" AdditionalProperties="Configuration=Release" />
    <ProjectReference Include="..\..\Libraries\Hyper.ComponentModel\Hyper.ComponentModel.NetStandard.csproj" AdditionalProperties="Configuration=Release" />
    <ProjectReference Include="..\..\Libraries\Lidgren.Network\Lidgren.NetStandard.csproj" AdditionalProperties="Configuration=Release" />
    <ProjectReference Include="..\..\Libraries\SharpFont\Source\SharpFont\SharpFont.NetStandard.csproj" AdditionalProperties="Configuration=Release" />
    <ProjectReference Include="..\..\Libraries\MonoGame.Framework\Src\MonoGame.Framework\MonoGame.Framework.MacOS.NetStandard.csproj" AdditionalProperties="Configuration=Release" />
  </ItemGroup>
  <ItemGroup Condition="'$(Configuration)'=='Debug'">
    <ProjectReference Include="..\..\Libraries\Concentus\CSharp\Concentus\Concentus.NetStandard.csproj" AdditionalProperties="Configuration=Debug" />
    <ProjectReference Include="..\..\Libraries\Facepunch.Steamworks\Facepunch.Steamworks.Posix.csproj" AdditionalProperties="Configuration=Debug" />
    <ProjectReference Include="..\..\Libraries\Farseer Physics Engine 3.5\Farseer.NetStandard.csproj" AdditionalProperties="Configuration=Debug" />
    <ProjectReference Include="..\..\Libraries\Hyper.ComponentModel\Hyper.ComponentModel.NetStandard.csproj" AdditionalProperties="Configuration=Debug" />
    <ProjectReference Include="..\..\Libraries\Lidgren.Network\Lidgren.NetStandard.csproj" AdditionalProperties="Configuration=Debug" />
    <ProjectReference Include="..\..\Libraries\SharpFont\Source\SharpFont\SharpFont.NetStandard.csproj" AdditionalProperties="Configuration=Debug" />
    <ProjectReference Include="..\..\Libraries\MonoGame.Framework\Src\MonoGame.Framework\MonoGame.Framework.MacOS.NetStandard.csproj" AdditionalProperties="Configuration=Debug" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Properties\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="NVorbis" Version="0.8.6" />
    <PackageReference Include="RestSharp" Version="106.13.0" />
  </ItemGroup>

  <!-- Sourced from https://stackoverflow.com/a/45248069 -->
  <ItemGroup>
    <None Include="..\BarotraumaShared\libsteam_api64.dylib">
      <Link>libsteam_api64.dylib</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
  <ItemGroup>
    <None Update="libfreetype6.dylib">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
  <Target Name="GetGitRevision" BeforeTargets="WriteGitRevision" Condition="'$(BuildHash)' == ''">
    <PropertyGroup>
      <!-- temp file for the git version (lives in "obj" folder)-->
      <VerFile>$(IntermediateOutputPath)gitver</VerFile>
      <BranchFile>$(IntermediateOutputPath)gitbranch</BranchFile>
    </PropertyGroup>

    <!-- write the hash to the temp file.-->
    <Exec Command="git -C $(ProjectDir) rev-parse --short HEAD &gt; $(VerFile)" ContinueOnError="true">
      <Output TaskParameter="exitcode" ItemName="exitcodes" />
    </Exec>
    <Exec Command="git -C $(ProjectDir) rev-parse --short HEAD --symbolic-full-name --abbrev-ref=strict &gt; $(BranchFile)" ContinueOnError="true" />

    <Exec Command="echo GIT_UNAVAILABLE &gt; $(VerFile)" Condition="'%(exitcodes.identity)'&gt;0" />
    <Exec Command="echo GIT_UNAVAILABLE &gt; $(BranchFile)" Condition="'%(exitcodes.identity)'&gt;0" />
    
    <!-- read the version into the GitVersion itemGroup-->
    <ReadLinesFromFile File="$(VerFile)">
      <Output TaskParameter="Lines" ItemName="GitVersion" />
    </ReadLinesFromFile>
    <!-- Set the BuildHash property to contain the GitVersion, if it wasn't already set.-->
    <PropertyGroup>
      <BuildHash>@(GitVersion)</BuildHash>
    </PropertyGroup>

    <!-- read the branch into the GitBranch itemGroup-->
    <ReadLinesFromFile File="$(BranchFile)">
      <Output TaskParameter="Lines" ItemName="GitBranch" />
    </ReadLinesFromFile>
    <!-- Set the BuildHash property to contain the GitVersion, if it wasn't already set.-->
    <PropertyGroup>
      <BuildBranch>@(GitBranch)</BuildBranch>
    </PropertyGroup>
  </Target>

  <Target Name="WriteGitRevision" BeforeTargets="CoreCompile">
    <!-- names the obj/.../CustomAssemblyInfo.cs file -->
    <PropertyGroup>
      <CustomAssemblyInfoFile>$(IntermediateOutputPath)CustomAssemblyInfo.cs</CustomAssemblyInfoFile>
    </PropertyGroup>
    <!-- includes the CustomAssemblyInfo for compilation into your project -->
    <ItemGroup>
      <Compile Include="$(CustomAssemblyInfoFile)" />
    </ItemGroup>
    <!-- defines the AssemblyMetadata attribute that will be written -->
    <ItemGroup>
      <AssemblyAttributes Include="AssemblyMetadata">
        <_Parameter1>GitRevision</_Parameter1>
        <_Parameter2>$(BuildHash)</_Parameter2>
      </AssemblyAttributes>
      <AssemblyAttributes Include="AssemblyMetadata">
        <_Parameter1>GitBranch</_Parameter1>
        <_Parameter2>$(BuildBranch)</_Parameter2>
      </AssemblyAttributes>
      <AssemblyAttributes Include="AssemblyMetadata">
        <_Parameter1>ProjectDir</_Parameter1>
        <_Parameter2>$(ProjectDir)</_Parameter2>
      </AssemblyAttributes>
    </ItemGroup>
    <!-- writes the attribute to the customAssemblyInfo file -->
    <WriteCodeFragment Language="C#" OutputFile="$(CustomAssemblyInfoFile)" AssemblyAttributes="@(AssemblyAttributes)" />
  </Target>

  <PropertyGroup>
    <GARuntime>osx-x64</GARuntime>
  </PropertyGroup>
  <Import Project="../BarotraumaShared/DeployGameAnalytics.props" />

  <Import Project="../BarotraumaShared/Luatrauma.props" />
  <ItemGroup>
    <None Include="../BarotraumaShared/Luatrauma.props" />
  </ItemGroup>

</Project>
