# Copyright 1999-2006 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ inherit eutils flag-o-matic games MY_PV="${PV/_beta/b}" MY_SRC="${PN}-v${MY_PV}-source.zip" MY_URL="http://runecentral.com/${PN}" MY_WINDOWS="${PN}-v${MY_PV}-win32.zip" MY_WAD="${PN}_wad.zip" MY_HIPNOTIC="hipnotic_wad.zip" MY_LIGHTS="fuhquake-lits.rar" DESCRIPTION="Improved Quake 1 engine with ZQuake and FuhQuake graphical effects" HOMEPAGE="http://www.runecentral.com/joequake/" SRC_URI="${MY_URL}/${MY_SRC} ${MY_URL}/${MY_WAD} ${MY_URL}/${MY_WINDOWS} soa? ( ${MY_URL}/${MY_HIPNOTIC} ) lights? ( http://www.fuhquake.net/files/extras/${MY_LIGHTS} )" LICENSE="GPL-2" SLOT="0" KEYWORDS="~x86" # Info at http://www.freebsd.org/cgi/cvsweb.cgi/ports/games/joequake/Makefile # Is not compatible with the demo data. IUSE="cdinstall cdsound doe lights skins soa textures" UIDEPEND="media-libs/jpeg media-libs/libpng virtual/opengl x11-libs/libX11 x11-libs/libXau x11-libs/libXdmcp x11-libs/libXext x11-libs/libXxf86dga x11-libs/libXxf86vm" RDEPEND="${UIDEPEND} cdinstall? ( games-fps/quake1-data ) doe? ( games-fps/quake1-doe ) skins? ( games-fps/quake1-skins ) soa? ( games-fps/quake1-soa ) textures? ( >=games-fps/quake1-textures-20050820 )" DEPEND="${UIDEPEND} lights? ( app-arch/rar ) textures? ( app-arch/rar ) app-arch/unzip" S=${WORKDIR}/src dir=${GAMES_DATADIR}/quake1 QA_EXECSTACK=${GAMES_BINDIR:1}/${PN} src_unpack() { # Windows file is needed for pak0.pak and docs unpack "${MY_WINDOWS}" unpack "${MY_SRC}" rm *.exe ${PN}/*.dll mkdir -p ${PN}/textures cd ${PN}/textures unpack "${MY_WAD}" if use soa ; then mkdir hipnotic cd hipnotic unpack "${MY_HIPNOTIC}" mv wad/* . rmdir wad fi if use lights ; then cd "${WORKDIR}"/${PN} mkdir lits cd lits rar x "${DISTDIR}/${MY_LIGHTS}" \ || die "rar lights failed" fi cd "${S}" # -O6 & -O2 stop the OpenGL screen from updating properly between frames. # Only additional CFLAGS optimization is the -march flag. local march=$(get-flag -march) mv -f Makefile{.linux,} sed -i \ -e "s:-O6:-O0:" \ -e "s:-march=pentiumpro:${march}:" \ Makefile || die "sed Makefile failed" # Set shared & user directories. # Change default "-mem" parameter to cope with large maps. sed -i \ -e "s:com_argv\[i+1\]));:com_argv\[i+1\]));\n\n\tmkdir (va(\"%s/%s\", getenv (\"HOME\"), \".${PN}\"), 0755);\n\tCOM_AddGameDirectory (va(\"%s/%s\", getenv (\"HOME\"), \".${PN}\"));:" \ common.c || die "sed common.c failed" sed -i \ -e "s:basedir = \".\":basedir = \"${dir}\":" \ -e "s:parms.memsize = 16:parms.memsize = 64:" \ sys_linux.c || die "sed sys_linux.c failed" # Save all the cvars by default sed -i \ -e "s:savevars\", \"0:savevars\", \"1:" \ cvar.c || die "sed cvar.c failed" if ! use cdsound ; then # Turn the CD accesses off sed -i \ -e "s:/dev/cdrom:/dev/null:" \ -e 's:COM_CheckParm("-nocdaudio"):1:' \ cd_linux.c || die "sed cd_linux.c failed" fi } src_install() { newgamesbin release_glx/${PN}-gl.glx ${PN} \ || die "newgamesbin opengl failed" insinto "${dir}" doins -r "${WORKDIR}/${PN}" || die "doins failed" rm -r "${D}/${dir}/${PN}"/doc if use cdinstall ; then make_desktop_entry ${PN} "JoeQuake" ${PN}.png fi if use doe ; then games_make_wrapper ${PN}-doe "${PN} -rogue" make_desktop_entry ${PN}-doe "JoeQuake (Dissolution of Eternity)" ${PN}.png fi if use soa ; then games_make_wrapper ${PN}-soa "${PN} -hipnotic" make_desktop_entry ${PN}-soa "JoeQuake (Scourge of Armagon)" ${PN}.png fi dodoc "${WORKDIR}/${PN}"/doc/* prepgamesdirs } pkg_postinst() { games_pkg_postinst elog "To run the game most conveniently," elog "set up a ~/bin/joequake script containing e.g.:" elog elog "${GAMES_BINDIR}/${PN} -width 1024 -height 768 -fullscreen -bpp 32 -mem 128 +set s_khz 44 \$@" echo }