#!/bin/sh
#
# darkplaces.SlackBuild
# 2014-06-24
#
# DarkPlaces is a Quake modification.

PRGNAM=darkplaces
VERSION=20140513

# automatically determine the architecture
if [ -z "$ARCH" ]; then
  case "$(uname -m)" in
    i686) ARCH=i686 ;;
    x86_64) ARCH=x86_64 ;;
       *) exit 1 ;;
  esac
fi

BUILD=${BUILD:-1}
TAG=${TAG:-scr}


QUAKE_DIR=${QUAKE_DIR:-"/mnt/ntfs/games/Quake"}

HOMEPAGE="http://icculus.org/twilight/darkplaces/"
SOURCE="darkplacesengine${VERSION}.zip"
DOWNLOAD="${HOMEPAGE}files/${SOURCE}"
MD5SUM="2ec56797b75465708c8495ef583d9c79"

MOD_SOURCE="darkplacesmod20130301.zip"
MOD_DOWNLOAD="${HOMEPAGE}files/${MOD_SOURCE}"
MOD_MD5SUM="2a1ce3fbc54ed75a1a9e5eab912543a2"

REQUIRES=""

MAINTAINER="Gernot Walzl"
EMAIL="gernot.walzl@gmx.at"

DESC="DarkPlaces

DarkPlaces is a Quake modification.

${HOMEPAGE}"

DOCS="$(pwd)/$0 *.txt"

# EOF info


# set initial variables
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

# exit on error
set -e

# download the source if needed
if [ ! -f $CWD/$SOURCE ]; then
  wget -O $CWD/$SOURCE $DOWNLOAD || exit 1
fi
if [ ! -f $CWD/$MOD_SOURCE ]; then
  wget -O $CWD/$MOD_SOURCE $MOD_DOWNLOAD || exit 1
fi

# check for correct source file
if [ "$(md5sum $CWD/$SOURCE | cut -f 1 -d ' ')" != "$MD5SUM" ]; then
  exit 1
fi
if [ "$(md5sum $CWD/$MOD_SOURCE | cut -f 1 -d ' ')" != "$MOD_MD5SUM" ]; then
  exit 1
fi

# extract the application source
cd $TMP || exit 1
mkdir -p $PRGNAM
cd $PRGNAM || exit 1
unzip $CWD/$SOURCE || exit 1
unzip $CWD/$MOD_SOURCE || exit 1

# fix permissions
chown -R root:root .
chmod -R u+w,go+r-w,a-s .

# install everything into the package directory
# http://www.tldp.org/HOWTO/Quake-HOWTO.html
rm -rf $PKG
mkdir -p $PKG/install
mkdir -p $PKG/usr/games/quake
if [ "$ARCH" = "i686" ]; then
  mv $PRGNAM-linux-686-* $PKG/usr/games/quake
  cat > $PKG/usr/games/$PRGNAM <<EOF
#!/bin/sh
cd /usr/games/quake
./darkplaces-linux-686-glx "\$@"
EOF
 elif [ "$ARCH" = "x86_64" ]; then
  mv $PRGNAM-linux-x86_64-* $PKG/usr/games/quake
  cat > $PKG/usr/games/$PRGNAM <<EOF
#!/bin/sh
cd /usr/games/quake
./darkplaces-linux-x86_64-glx "\$@"
EOF
fi
chmod +x $PKG/usr/games/$PRGNAM

# http://www.quaddicted.com/quake/installation
mkdir -p $PKG/usr/games/quake/id1
cat > $PKG/usr/games/quake/id1/CHECKSUMS.md5 <<EOF
5906e5998fc3d896ddaf5e6a62e03abb  pak0.pak
d76b3e5678f0b64ac74ce5e340e6a685  pak1.pak
EOF
# http://www.quaddicted.com/quake/soundtrack
mkdir -p $PKG/usr/games/quake/id1/sound/cdtracks
# mission packs
mkdir -p $PKG/usr/games/quake/hipnotic
mkdir -p $PKG/usr/games/quake/rogue
# darkplaces mod
mv dpmod $PKG/usr/games/quake

# add documentation
if [ "$DOCS" != "" ]; then
  mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
  cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
  find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 644 {} \;
fi

# add some description to the package
if [ "$DESC" != "" ]; then
  echo "$DESC" | sed 's/^/'$PRGNAM': /g' > $PKG/install/slack-desc
fi

# append dependency information to the package
if [ "$REQUIRES" != "" ]; then
  for REQ in $REQUIRES; do
    echo "$REQ" >> $PKG/install/slack-required
  done
fi

# doinst.sh
cat > $PKG/install/doinst.sh <<EOF
#!/bin/sh
EOF
for I in $(seq 0 1); do
  cat >> $PKG/install/doinst.sh <<EOF
( cd usr/games/quake/id1 ; ln -s "${QUAKE_DIR}/ID1/PAK${I}.PAK" pak${I}.pak )
EOF
done
for I in $(seq -w 2 11); do
  cat >> $PKG/install/doinst.sh <<EOF
( cd usr/games/quake/id1/sound/cdtracks ; ln -s "${QUAKE_DIR}/ID1/sound/cdtracks/track0${I}.ogg" track0${I}.ogg )
EOF
done
cat >> $PKG/install/doinst.sh <<EOF
( cd usr/games/quake/hipnotic ; ln -s "${QUAKE_DIR}/HIPNOTIC/PAK0.PAK" pak0.pak )
( cd usr/games/quake/rogue ; ln -s "${QUAKE_DIR}/ROGUE/PAK0.PAK" pak0.pak )
EOF

# build the package
cd $PKG
PKGVERSION=$(echo $VERSION | sed 's/-/./g')
makepkg -l y -c n \
  $OUTPUT/$PRGNAM-$PKGVERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} \
  || exit 1

# make everything clean
cd $CWD
rm -rf $PKG
rm -rf $TMP/$PRGNAM
