summaryrefslogtreecommitdiff
blob: 0ee7bb0eb6997317256fd8af487b569b40e66ffc (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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=1

inherit eutils games

# define own package name
MY_PN="PenumbraCollection"

DESCRIPTION="Scary first-person adventure game trilogy which focuses on story, immersion and puzzles"
HOMEPAGE="http://www.penumbragame.com/"
SRC_URI="${MY_PN}-${PV}.sh"

LICENSE="PENUMBRA-COLLECTION"
SLOT="0"
KEYWORDS="~amd64"
IUSE=""
PROPERTIES="interactive"
RESTRICT="fetch strip"

DEPEND="app-arch/lzma-utils"
RDEPEND="virtual/opengl
	x86? (
		x11-libs/libXft
		media-libs/freealut
		media-gfx/nvidia-cg-toolkit
		x11-libs/fltk:1.1
		media-libs/sdl-image
		media-libs/sdl-ttf
		media-libs/libvorbis )
	amd64? (
		app-emulation/emul-linux-x86-sdl )"

GAMES_CHECK_LICENSE="yes"
dir=${GAMES_PREFIX_OPT}/${MY_PN}
INSTALL_KEY_FILE=${dir}/collectionkey

S=${WORKDIR}/${MY_PN}

pkg_nofetch() {
	einfo "Please buy & download ${SRC_URI} from:"
	einfo "  ${HOMEPAGE}"
	einfo "and move it to ${DISTDIR}"
	einfo
}

src_unpack() {
	unpack_makeself || die "unpack installator"

	# give proper extension to install archive so unpack recognizes it
	mv instarchive_all instarchive_all.tar.lzma || \
		die "rename instarchive_all"

	unpack ./instarchive_all.tar.lzma || die "unpack install archive"
}

src_install() {

	# perform instalation for each episode; note that Requiem is extension of
	# Black Plague so it has no dedicated directory at this level
	for episodeDir in Overture BlackPlague; do

		# install game data files
		insinto "${dir}/${episodeDir}"

		# >install every directory recursively except lib
		for directory in \
			$(find ${episodeDir}/* -maxdepth 0 -type d ! -name lib); do
			doins -r ${directory} || die "doins game data files"
		done

		# >install .cfg files
		doins ${episodeDir}/*.cfg || die "doins .cfg files"

		# install libraries and executables
		exeinto "${dir}/${episodeDir}"
		doexe ${episodeDir}/openurl.sh ${episodeDir}/*.bin || \
			die "doexe binaries"

		# >amd64 does not provide some libs, use bundled ones
		if use amd64 ; then
			exeinto "${dir}/${episodeDir}/lib"
			for library in \
				libfltk.so.1.1 \
				libopenal.so.1.3.253 \
				libCgGL.so \
				libCg.so; do
				doexe ${episodeDir}/lib/${library} || die "doexe libraries"
			done
			dosym libopenal.so.1.3.253 "${dir}/${episodeDir}/lib/libopenal.so.1"
		fi

	done

	# install icons
	newicon Overture/penumbra.png penumbra-overture.png || \
		die "newicon overture"
	newicon BlackPlague/penumbra.png penumbra-blackplague.png || \
		die "newicon black plague"
	newicon BlackPlague/requiem.png penumbra-requiem.png || \
		die "newicon requiem"

	# make game wrappers
	games_make_wrapper penumbra-overture ./penumbra.bin \
		"${dir}/Overture" "${dir}/Overture/lib" || \
		die "games_make_wrapper overture"
	games_make_wrapper penumbra-blackplague ./blackplague.bin \
		"${dir}/BlackPlague" "${dir}/BlackPlague/lib" || \
		die "games_make_wrapper black plague"
	games_make_wrapper penumbra-requiem ./requiem.bin \
		"${dir}/BlackPlague" "${dir}/BlackPlague/lib" || \
		die "games_make_wrapper requiem"

	# make desktop entries
	make_desktop_entry penumbra-overture "Penumbra: Overture" \
		penumbra-overture || die "make_desktop_entry overture"
	make_desktop_entry penumbra-blackplague "Penumbra: Black Plague" \
		penumbra-blackplague || die "make_desktop_entry black plague"
	make_desktop_entry penumbra-requiem "Penumbra: Requiem" \
		penumbra-requiem || die "make_desktop_entry requiem"

	# install documentation
	docinto Overture
	dodoc Overture/CHANGELOG.txt Overture/Manual.pdf Overture/README.linux || \
		die "dodoc overture"
	docinto BlackPlague
	dodoc BlackPlague/Manual.pdf BlackPlague/README.linux || \
		die "dodoc black plague"

	prepgamesdirs
}

pkg_postinst() {
	games_pkg_postinst

	if [[ -f "${INSTALL_KEY_FILE}" ]] ; then
		einfo "The installation key file already exists: ${INSTALL_KEY_FILE}"
	else
		ewarn "You MUST run this before playing the game:"
		ewarn "  emerge --config ${PN}"
		ewarn "To enter your installation key."
	fi
}

pkg_config() {
	local key1 key2

	ewarn "Your installation key is NOT checked for validity here."
	ewarn "Make sure you type it in correctly."
	ewarn "If you CTRL+C out of this, the game will not run!"
	echo
	einfo "The key format is: XXXX-XXXX-XXXX-XXXX"
	while true ; do
		einfo "Please enter your key:"
		read key1
		if [[ -z "${key1}" ]] ; then
			echo "You entered a blank key. Try again."
			continue
		fi
		einfo "Please re-enter your key:"
		read key2
		if [[ -z "${key2}" ]] ; then
			echo "You entered a blank key. Try again."
			continue
		fi

		if [[ "${key1}" == "${key2}" ]] ; then
			echo "${key1}" | tr a-z A-Z > "${INSTALL_KEY_FILE}"
			echo -e "// Do not give this file to ANYONE.\n// Frictional Games Support will NEVER ask for this file" \
				>> "${INSTALL_KEY_FILE}"
			einfo "Thanks, created ${INSTALL_KEY_FILE}"
			break
		else
			eerror "Your installation key entries do not match. Try again."
		fi
	done
}