# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

DOTNET_PKG_COMPAT="10.0"
NUGETS="
      acornima@1.7.0
	    cyotek.drawing.bitmapfont@2.0.4
	    extendednumerics.bigdecimal@3003.2.0.161
	    fontstashsharp.base@1.2.9
	    fontstashsharp.platformagnostic@1.6.1
	    fontstashsharp.rasterizers.sharpastro@1.2.9
	    fontstashsharp.rasterizers.stbtruetypesharp@1.2.9
	    harmonyx@2.16.1
	    htmlagilitypack@1.13.1
	    jint@4.17.0
	    markdig@1.4.0
	    microsoft.dotnet.platformabstractions@3.1.6
	    microsoft.extensions.dependencyinjection.abstractions@10.0.12
	    microsoft.extensions.dependencyinjection.abstractions@7.0.0
	    microsoft.extensions.dependencymodel@10.0.12
	    microsoft.extensions.dependencymodel@9.0.9
	    microsoft.extensions.logging.abstractions@10.0.12
	    microsoft.netcore.platforms@1.1.0
	    microsoft.netcore.platforms@1.1.1
	    microsoft.netcore.targets@1.1.0
	    microsoft.netcore.targets@1.1.3
	    mono.cecil@0.11.6
	    monomod.backports@1.1.2
	    monomod.core@1.3.4
	    monomod.ilhelpers@1.1.0
	    monomod.runtimedetour@25.3.4
	    monomod.utils@25.0.12
	    nativefiledialogcore@1.0.3
	    naudio.core@3.0.1
	    naudio.core@3.1.0
	    naudio.flac.unknown.mod@1.0.5
	    ncalc.core@7.2.0
	    ncalc.domain@7.2.0
	    ncalc.parser@7.2.0
	    ncalcsync@7.2.0
	    nlayer@3.0.0
	    nlayer.naudiosupport@3.0.0
	    nuget.versioning@7.9.0
	    nvorbis@0.10.5
	    parlot@1.5.9
	    runtime.native.system@4.3.0
	    runtime.native.system.net.http@4.3.0
	    runtime.native.system.security.cryptography.openssl@4.3.2
	    sharpastro.codecs.abstractions@3.14.891
	    sharpastro.color.icc@3.14.891
	    sharpastro.fonts@1.11.851
	    sharpastro.fonts@1.13.931
	    sharpastro.png@3.14.891
	    sharpgltf.core@1.0.7
	    silk.net.core@2.23.0
	    silk.net.glfw@2.23.0
	    silk.net.input@2.23.0
	    silk.net.input.common@2.23.0
	    silk.net.input.glfw@2.23.0
	    silk.net.maths@2.23.0
	    silk.net.openal@2.23.0
	    silk.net.opengles@2.23.0
	    silk.net.windowing@2.23.0
	    silk.net.windowing.common@2.23.0
	    silk.net.windowing.glfw@2.23.0
	    sixlabors.imagesharp@3.1.12
	    stbimagesharp@2.30.16
	    stbtruetypesharp@1.26.13
	    system.net.http@4.3.4
	    system.numerics.tensors@9.0.0
	    system.private.uri@4.3.2
	    system.text.regularexpressions@4.3.1
	    textcopy@6.2.1
	    ultz.native.glfw@3.4.0
"
NUGET_APIS=( "https://api.nuget.org/v3-flatcontainer" )

inherit git-r3 dotnet-pkg desktop

_FLAC_OLD="https://api.nuget.org/v3-flatcontainer/naudio.flac.unknown.mod/"
_FLAC_NEW="https://nuget.fury.io/survivalcraftapi/v3/flat/naudio.flac.unknown.mod/"
NUGET_URIS="${NUGET_URIS//"${_FLAC_OLD}"/${_FLAC_NEW}}"
unset _FLAC_OLD _FLAC_NEW

DESCRIPTION="SurvivalCraft 2 API (a fork that brings modding support)"
HOMEPAGE="https://atomgit.com/SC-SPM/SurvivalcraftApi"
EGIT_REPO_URI="https://atomgit.com/SC-SPM/SurvivalcraftApi.git"
EGIT_BRANCH="SCAPI1.9"
SRC_URI="${NUGET_URIS}"

DOTNET_PKG_BAD_PROJECTS=(
	"${S}/Engine.Android/Engine.Android.csproj"
	"${S}/Engine.Browser/Engine.Browser.csproj"
	"${S}/Engine.IOS/Engine.IOS.csproj"
	"${S}/Engine.Windows/Engine.Windows.csproj"
	"${S}/EntitySystem.Android/EntitySystem.Android.csproj"
	"${S}/EntitySystem.Browser/EntitySystem.Browser.csproj"
	"${S}/EntitySystem.IOS/EntitySystem.IOS.csproj"
	"${S}/EntitySystem.Windows/EntitySystem.Windows.csproj"
	"${S}/Survivalcraft.Android/Survivalcraft.Android.csproj"
	"${S}/Survivalcraft.Browser/Survivalcraft.Browser.csproj"
	"${S}/Survivalcraft.IOS/Survivalcraft.IOS.csproj"
	"${S}/Survivalcraft.Windows/Survivalcraft.Windows.csproj"
)

LICENSE="all-rights-reserved"
SLOT="0"
KEYWORDS=""
RESTRICT="bindist mirror"

RDEPEND+="
  media-libs/libglvnd
  media-libs/openal
  x11-libs/gtk+:3
  x11-misc/xsel
"
BDEPEND+="
    app-arch/zip
    media-libs/libwebp
"

DOTNET_PKG_PROJECTS=( Survivalcraft.Linux/Survivalcraft.Linux.csproj )

QA_PREBUILT="usr/share/${P}/*"

src_unpack() {
    git-r3_src_unpack
    dotnet-pkg_src_unpack
}

src_compile() {
    pushd Survivalcraft/Content >/dev/null || die
    zip -qr ../Content.zip * || die
    popd >/dev/null || die

    dotnet-pkg_src_compile
}

src_install() {
    dotnet-pkg-base_install

    insinto "/usr/share/${P}"
    doins -r Survivalcraft/Content

    cat << 'EOF' > "${T}"/${PN}
#!/bin/sh
USER_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/survivalcraft-api"
mkdir -p "${USER_DIR}/Bugs" "${USER_DIR}/Mods" "${USER_DIR}/doc"

if [ ! -f "${USER_DIR}/Survivalcraft" ]; then
    cp -r /usr/share/survivalcraft-api-1.9.5.1/* "${USER_DIR}/"
fi

cd "${USER_DIR}"
exec ./Survivalcraft "${@}"
EOF

    dobin "${T}"/${PN}

    dwebp "${S}/Survivalcraft/Content/icon.webp" -o "${T}/${PN}.png" || die "Failed to convert WEBP to PNG!"
    newicon "${T}/${PN}.png" "${PN}.png"
    make_desktop_entry "${PN}" "SurvivalCraft2 API" "${PN}" "Game;AdventureGame;"
}