# Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ EAPI=2 inherit eutils games MY_PN="${PN//-/_}" DESCRIPTION="Amnesia: The Dark Descent is a first person survival horror. A game about immersion, discovery and living through a nightmare." HOMEPAGE="http://www.amnesiagame.com" SRC_URI="ftp://ftp.holarse-linuxgaming.de/native/Spiele/Amnesia:%20The%20Dark%20Descent/Demo/${MY_PN}_${PV}.sh ftp://kalasarn.se/pub/software/frictional/${MY_PN}_${PV}.sh" SLOT="0" KEYWORDS="x86 amd64" IUSE="doc linguas_de linguas_en linguas_es linguas_fr linguas_it" DEPEND="app-arch/xz-utils" RDEPEND="media-libs/freealut media-libs/glew media-libs/jpeg:62 media-libs/libogg media-libs/libvorbis media-libs/libpng:1.2 media-libs/libtheora media-libs/openal media-libs/sdl-image media-libs/sdl-ttf sys-libs/zlib || ( x11-base/xorg-drivers[video_cards_nvidia] x11-base/xorg-drivers[video_cards_fglrx] ) x11-libs/fltk:1.1 x11-libs/libX11 x11-libs/libXau x11-libs/libxcb x11-libs/libXdmcp x11-libs/libXext virtual/glu virtual/opengl " GAMEDIR="${GAMES_PREFIX_OPT}/${PN}" S="${WORKDIR}/${PN}" src_unpack() { mkdir "tmp" || die "mkdir \"tmp\" failed" cd "./tmp" || die "cd \"tmp\" failed" unpack_makeself || die "unpack_makeself failed" mv "subarch" "installer.tar.lzma" || die "move \"subarch\" failed" unpack "./installer.tar.lzma" || die "unpack \"subarch\" failed" mv "instarchive_all" "../${P}.tar.lzma" || die "move \"instarchive_all\" failed" if use x86 then mv "instarchive_all_x86" "../${P}-x86.tar.lzma" || die "move \"nstarchive_all_x86\" failed" fi if use amd64 then mv "instarchive_all_x86_64" "../${P}-amd64.tar.lzma" || die "move \"instarchive_all_x86_64\" failed" fi mv "icon.xpm" "../${PN}.xpm" cd "${WORKDIR}" || die "cd \"workdir\" failed" unpack ./*.tar.lzma || die "unpack failed" mv "AmnesiaDemo" "${PN}" || die "mv \"AmnesiaDemo\" failed" rm ./*.tar.lzma rm -r "./tmp" } src_prepare() { LINGUAS_ARRAY=() LANG_ARRAY=() LANGUAGE_ARRAY=() USE_ARRAY=() DOC_ARRAY=() REMOVE="libs*/all Amnesia.png AmnesiaPDF.png checklibs*.sh" local linguas_in_use="0" for use in ${IUSE} do if [[ "${use%%_*}" == "linguas" ]] then local tmp="${use}" LINGUAS_ARRAY=(${LINGUAS_ARRAY[@]} "${tmp}") tmp="${tmp##linguas_}" LANG_ARRAY=(${LANG_ARRAY[@]} "${tmp}") case "${tmp}" in "de") tmp="german";; "en") tmp="english";; "es") tmp="spanish";; "fr") tmp="french";; "it") tmp="italian";; *) tmp="";; esac LANGUAGE_ARRAY=(${LANGUAGE_ARRAY[@]} "${tmp}") if use ${use} then USE_ARRAY=(${USE_ARRAY[@]} "1") linguas_in_use="$(( ${linguas_in_use} + 1 ))" if use doc then DOC_ARRAY=(${DOC_ARRAY[@]} "1") else DOC_ARRAY=(${DOC_ARRAY[@]} "0") fi else USE_ARRAY=(${USE_ARRAY[@]} "0") DOC_ARRAY=(${DOC_ARRAY[@]} "0") fi fi done local n="0" while [[ "${n}" -lt "${#LINGUAS_ARRAY[@]}" ]] do if [[ "${USE_ARRAY[${n}]}" != "1" ]] then # If no linguas keep at least english. if [[ "${linguas_in_use}" == "0" && "${LINGUAS_ARRAY[${n}]}" == "linguas_en" ]] then if use doc then DOC_ARRAY[${n}]="1" fi else REMOVE="${REMOVE} config/base_${LANGUAGE_ARRAY[${n}]}.lang config/lang_main/${LANGUAGE_ARRAY[${n}]}.lang" fi else sed -e "s#english.lang#${LANGUAGE_ARRAY[${n}]}.lang#g" \ -i "./config/main_init.cfg" fi if [[ "${DOC_ARRAY[${n}]}" != "1" ]] then REMOVE="${REMOVE} EULA_${LANG_ARRAY[${n}]}.rtf Manual_${LANG_ARRAY[${n}]}.pdf" fi n="$(( ${n} + 1 ))" done einfo " Removing useless files ..." for remove in ${REMOVE} do rm -r "${S}/"${remove} || die "rm \"${remove}\" failed" done if use amd64 then mv "Amnesia.bin64" "Amnesia.bin" || die "mv \"Amnesia.bin64\" failed" mv "Launcher.bin64" "Launcher.bin" || die "mv \"Launcher.bin64\" failed" fi } src_install() { # Install data insinto "${GAMEDIR}" || die "insinto \"${GAMEDIR}\" failed" einfo " Installing game data files ..." for directory in $(find * -maxdepth 0 -type d ! -name libs*) do doins -r ${directory} || die "doins game data files failed" done einfo " Installing config files ..." doins *.cfg || die "doins \".cfg\" files failed" # Install libraries and executables einfo " Installing libraries ..." if use x86 then local libsdir="${GAMEDIR}/libs" fi if use amd64 then local libsdir="${GAMEDIR}/libs64" fi exeinto "${libsdir}" || die "exeinto \"${libsdir}\" failed" doexe libs*/* || die "doexe \"libs\" failed" einfo " Installing executables ..." exeinto "${GAMEDIR}" || die "exeinto \"${GAMEDIR}\" failed" doexe *.bin || die "doexe \".bin\" binaries failed" # Make game wrapper einfo " Installing wrapper ..." mkdir -p "${D}/${GAMES_BINDIR}" || die "mkdir \"${D}/${GAMES_BINDIR}\" failed" local wrapper="${D}/${GAMES_BINDIR}/${PN}" touch "${wrapper}" || die "touch \"${wrapper}\" failed" echo "#!/bin/sh" >> "${wrapper}" || die "echo failed" echo "cd \"${GAMEDIR}\"" >> "${wrapper}" || die "echo failed" echo "if [[ -d \"\${HOME}/.frictionalgames/Amnesia\" ]]" >> "${wrapper}" || die "echo failed" echo "then" >> "${wrapper}" || die "echo failed" echo " exec ./Amnesia.bin \"\${@}\"" >> "${wrapper}" || die "echo failed" echo "else" >> "${wrapper}" || die "echo failed" echo " exec ./Launcher.bin \"\${@}\"" >> "${wrapper}" || die "echo failed" echo "fi" >> "${wrapper}" || die "echo failed" # Install icon and desktop file einfo " Installing icon and desktop file ..." doicon "../${PN}.xpm" || die "newicon \"icon.xpm\" failed" make_desktop_entry "${PN}" "Amnesia: The Dark Descent - Demo" || die "make_desktop_entry failed" # Install documentation if use doc then einfo " Installing documentation ..." docinto ${PN} dodoc *.rtf *.pdf || die "dodoc failed" fi # Setting permissions. einfo " Setting permissions ..." prepgamesdirs # Most files need to be writable or there will be a segmentation fault/random errors/strange artifacts. Frictional Games will release a patch for this. cd "${D}/${GAMEDIR}" || die "cd \"${D}/${GAMEDIR}\" failed" find . -type f \( -name *.anm \ -o -name *.dae_anim \ -o -name *.dds \ -o -name *.jpg \ -o -name *.map_cache \ -o -name *.msh \ -o -name *.nodes \ -o -name *.png \ -o -name *.tga \ \) -exec chmod 660 {} \; || die "chmod failed" }