You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
2.5 KiB

# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
CDROM_OPTIONAL="yes"
MY_PN_DEMO="3dduke"
MY_PN_GOG="gog_duke_nukem_3d_atomic_edition"
MY_PV_DEMO="13"
MY_PV_GOG="2.0.0.9"
MY_P_DEMO="${MY_PN_DEMO}${MY_PV_DEMO}"
MY_P_GOG="${MY_PN_GOG}_${MY_PV_GOG}"
inherit cdrom
DESCRIPTION="Duke Nukem 3D (Atomic Edition) data files"
HOMEPAGE="https://www.3drealms.com/"
SRC_URI="
demo? ( "ftp://ftp.3drealms.com/share/${MY_P_DEMO}.zip" )
gog? ( "${MY_P_GOG}.sh" )
"
S="${WORKDIR}"
LICENSE="DUKE3D gog? ( GOG-EULA )"
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
IUSE="+demo gog"
REQUIRED_USE="^^ ( cdinstall demo gog )"
RESTRICT="bindist gog? ( fetch ) mirror"
BDEPEND="
demo? ( app-arch/unzip )
gog? ( app-arch/unzip )
"
pkg_nofetch() {
if use gog; then
einfo "Please download ${MY_P_GOG}.sh from your GOG.com account after"
einfo "buying Duke Nukem 3D and place it into your DISTDIR directory."
fi
}
src_unpack() {
if use cdinstall ; then
local CDROM_NAMES=(
"Existing installation"
"Duke Nukem 3D CD"
"Duke Nukem 3D Atomic Edition CD"
)
cdrom_get_cds duke3d.grp:dn3dinst/duke3d.grp:atominst/duke3d.grp
! [[ "${CDROM_SET}" -ge 0 && "${CDROM_SET}" -le 2 ]] && die "Could not locate data files."
fi
if use demo; then
# Use '-LL' to extract everything in lowercase.
unzip "${DISTDIR}/${MY_P_DEMO}.zip" || die
unzip -LL "DN3DSW${MY_PV_DEMO}.SHR" || die
fi
if use gog; then
# Since 'unpacker' eclass does not support options,
# doing manual unpack and checking for return code,
# as all non-fatal errors should be ignored, because
# it's a self-extracting archive and will fail otherwise.
# Also use '-LL' to extract everything in lowercase.
unzip -LL "${DISTDIR}/${MY_P_GOG}.sh"
[[ $? -le 1 ]] || die
fi
}
src_install() {
if use cdinstall; then
local DATAROOT
case ${CDROM_SET} in
0) DATAROOT="" ;;
1) DATAROOT="dn3dinst" ;;
2) DATAROOT="atominst" ;;
esac
pushd "${CDROM_ROOT}/${DATAROOT}" || die
fi
if use gog; then
pushd "${S}/data/noarch/data" || die
fi
insinto /usr/share/duke3d
for file in *.con *.dmo *.grp *.rts; do
newins "${file}" "${file,,}"
done
if ! use demo; then
if use cdinstall && [[ "${CDROM_SET}" -ne 0 ]]; then
doins ../goodies/build/*.map
else
doins *.map
fi
popd || die
fi
}
pkg_postinst() {
if use demo; then
einfo "Please keep in mind, that many addons for Duke Nukem 3D will require"
einfo "the registered version and will not work with the shareware version."
fi
}