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
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
|
|
}
|