summaryrefslogtreecommitdiff
blob: d7eda87478291624cc37d15dd85b16e53fdee3e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=5
inherit unpacker eutils cdrom games

DESCRIPTION="iD Software's Quake 2 ... the data files"
HOMEPAGE="https://www.idsoftware.com/"
SRC_URI="mirror://idsoftware/quake2/q2-${PV}-x86-full-ctf.exe"

LICENSE="Q2EULA"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~x86"
IUSE="videos"

DEPEND="app-arch/unzip"
RDEPEND=""

S=${WORKDIR}

pkg_setup() {
	games_pkg_setup
	if has_version "games-fps/quake2-demodata[symlink]" ; then
		eerror "The symlink for the demo data conflicts with the cdinstall data"
		die "Unmerge games-fps/quake2-demodata to remove the conflict"
	fi
}

src_unpack() {
	export CDROM_NAME_SET=("Existing Install" "Ultimate Quake Edition" "Quake2 CD" "Quake4 Bonus DVD")
	cdrom_get_cds baseq2:Install/patch:Install:Movies
	# The .exe is just a self-extracting .zip
	unpack_zip ${A}
}

src_install() {
	dodoc DOCS/* 3.20_Changes.txt
	newdoc ctf/readme.txt ctf-readme.txt
	case ${CDROM_SET} in
		0) dohtml -r "${CDROM_ROOT}"/Install/DOCS/quake2_manual/* ;;
		1) dohtml -r "${CDROM_ROOT}"/Install/Docs/quake2_manual/* ;;
		2) dohtml -r "${CDROM_ROOT}"/Install/DOCS/quake2_manual/* ;;
		3) dodoc "${CDROM_ROOT}"/Docs/* ;;
	esac

	local baseq2_cdpath
	case ${CDROM_SET} in
		0) baseq2_cdpath=${CDROM_ROOT}/baseq2;;
		1) baseq2_cdpath=${CDROM_ROOT}/Install/Data/baseq2;;
		2) baseq2_cdpath=${CDROM_ROOT}/Install/Data/baseq2;;
		3) baseq2_cdpath=${CDROM_ROOT}/setup/Data/baseq2;;
	esac

	dodir "${GAMES_DATADIR}"/quake2/baseq2

	if use videos ; then
		insinto "${GAMES_DATADIR}"/quake2/baseq2/video
		doins "${baseq2_cdpath}"/video/*
	fi

	insinto "${GAMES_DATADIR}"/quake2/baseq2
	doins "${baseq2_cdpath}"/pak0.pak
	doins baseq2/*.pak baseq2/maps.lst
	dodir "${GAMES_DATADIR}"/quake2/baseq2/players
	cp -R "${baseq2_cdpath}"/players/* baseq2/players/* \
		"${D}/${GAMES_DATADIR}"/quake2/baseq2/players/ || die

	for mod in ctf rogue xatrix ; do
		if [[ -d ${baseq2_cdpath}/../${mod} ]] ; then
			if use videos && [[ -d ${baseq2_cdpath}/../${mod}/video ]] ; then
				insinto "${GAMES_DATADIR}"/quake2/${mod}/video
				doins "${baseq2_cdpath}"/../${mod}/video/* 2>/dev/null
			fi
			if [[ -n $(ls "${baseq2_cdpath}"/../${mod}/*.pak 2>/dev/null) ]] ; then
				insinto "${GAMES_DATADIR}"/quake2/${mod}
				doins "${baseq2_cdpath}"/../${mod}/*.pak
			fi
		fi
	done

	insinto "${GAMES_DATADIR}"/quake2/ctf
	doins ctf/*.{cfg,ico,pak}

	prepgamesdirs
}