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

EAPI=8

inherit desktop

HOMEPAGE="https://codename-engine.com/"
DESCRIPTION="awesome fnf engine :D"
SRC_URI="https://github.com/CodenameCrew/CodenameEngine/releases/download/v${PV}/Codename.Engine-Linux.zip -> ${P}.zip"

S="${WORKDIR}"

LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"

BDEPEND="app-arch/unzip"
RDEPEND="
    media-libs/alsa-lib
    media-libs/mesa
    sys-apps/util-linux
    x11-libs/libX11
    =media-video/vlc-3.0.23-r1*
"

src_install() {
    insinto /opt/codename-engine
    doins -r *

    fperms +x /opt/codename-engine/CodenameEngine

    cat <<'EOF' > "${T}/codename-engine"
#!/usr/bin/env bash
REAL_USER="${SUDO_USER:-$USER}"
USER_HOME=$(getent passwd "$REAL_USER" | cut -d: -f6)
DATA_DIR="${USER_HOME}/.local/share/codename-engine"

mkdir -p "${DATA_DIR}"

if [[ "$(stat -c '%U' "${DATA_DIR}" 2>/dev/null)" == "root" ]]; then
    chown -R "$REAL_USER:$REAL_USER" "${DATA_DIR}"
fi

if [[ ! -d "${DATA_DIR}/mods" ]]; then
    mkdir -p "${DATA_DIR}/mods"
    if [[ -d "/opt/codename-engine/mods" && -n "$(ls -A "/opt/codename-engine/mods" 2>/dev/null)" ]]; then
        cp -r "/opt/codename-engine/mods/." "${DATA_DIR}/mods/"
    fi
fi

if [[ ! -d "${DATA_DIR}/addons" ]]; then
    mkdif -p "${DATA_DIR}/addons"
    if [[ -d "/opt/codename-engine/addons" && -n "$(ls -A "/opt/codename-engine/addons" 2>/dev/null)" ]]; then
        cp -r "/opt/codename-engine/addons/." "${DATA_DIR}/mods/"
    fi
fi

for item in /opt/codename-engine/*; do
    base=$(basename "${item}")
    case "${base}" in
        mods)
            ;;
        *)
            if [[ ! -e "${DATA_DIR}/${base}" ]]; then
                ln -s "${item}" "${DATA_DIR}/${base}"
            fi
            ;;
    esac
done

cd "${DATA_DIR}" || exit 1
exec ./CodenameEngine "$@"
EOF

    dobin "${T}/codename-engine"
    make_desktop_entry codename-engine "FNF: Codename Engine" application-games "Game;"
}

pkg_postinst() {
    elog "Codename Engine's main folder should be located in"
    elog " '~/.local/share' folder!" 
}