You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.7 KiB
93 lines
2.7 KiB
#!/bin/sh |
|
|
|
get_library() |
|
{ |
|
if ! [ -f ./$1 ]; then |
|
echo "[SteamPlay-FTEQW] No game.so for $1 found, checking..." |
|
if ! [ -f ./$2 ]; then |
|
echo "[SteamPlay-FTEQW] Grabbing new library..." |
|
wget https://www.frag-net.com/dl/lib/$2 |
|
fi |
|
tar xvfz ./$2 |
|
fi |
|
} |
|
|
|
PLAY_RERELEASE=1 |
|
|
|
# there's run & wait-before-run, we only care about the latter. |
|
COMMANDTYPE=$1 |
|
|
|
# this is how Steam tries to run the game |
|
if [ "$COMMANDTYPE" == "wait-before-run" ]; then |
|
# dependency check... |
|
if ! [ -x "$(command -v wget)" ]; then |
|
xmessage "You don't have wget installed. Please install wget." |
|
exit |
|
fi |
|
if ! [ -x "$(command -v unzip)" ]; then |
|
xmessage "You don't have unzip installed. Please install unzip." |
|
exit |
|
fi |
|
|
|
# used to decipher which game we'll play |
|
GAMEBINARY=$(basename "$2") |
|
# steam game dir |
|
GAMEDIR=$(dirname "$2") |
|
|
|
# we have an unknown amount of parameters, let's make sure we get them |
|
# make sure this is quotes, because HeXen II has a space in its path |
|
PARMARR=( "$@" ) |
|
ARGLEN=${#PARMARR[@]} |
|
|
|
# get every parameter after the second (game location) and put it into |
|
# its own variable to pass over later |
|
GAMEARGS=${PARMARR[@]:2:$ARGLEN-1} |
|
|
|
# Do we have a system-wide install of FTEQW? |
|
if [ -x "$(command -v fteqw)" ]; then |
|
ENGINE=fteqw |
|
else |
|
# If we don't... use a SteamPlay-FTEQW one |
|
SCRPATH="$( cd "$( dirname $(readlink -nf $0) )" && pwd )" |
|
PATH="$SCRPATH":"$PATH" |
|
ENGINE=fteqw-sdl2 |
|
|
|
# If we don't have it, grab the latest version! |
|
if [ ! -f "$SCRPATH/fteqw-sdl2" ]; then |
|
cd "$SCRPATH" |
|
wget https://www.fteqw.org/dl/fteqw-sdl2-linux64.zip |
|
unzip fteqw-sdl2-linux64.zip |
|
rm fteqw-sdl2-linux64.zip readme.txt |
|
fi |
|
fi |
|
|
|
if [ "$GAMEBINARY" == "Quake_x64_steam.exe" ]; then |
|
if [ $PLAY_RERELEASE == 1 ]; then |
|
$ENGINE -basedir "$GAMEDIR" $GAMEARGS |
|
else |
|
NEWPATH=$(dirname "$GAMEDIR") |
|
$ENGINE -basedir "$NEWPATH" -quake $GAMEARGS |
|
fi |
|
elif [ "$GAMEBINARY" == "Winquake.exe" ]; then |
|
$ENGINE -basedir "$GAMEDIR" $GAMEARGS |
|
elif [ "$GAMEBINARY" == "qwcl.exe" ]; then |
|
$ENGINE -basedir "$GAMEDIR" -game qw $GAMEARGS |
|
elif [ "$GAMEBINARY" == "Glquake.exe" ]; then |
|
$ENGINE -basedir "$GAMEDIR" -quake $GAMEARGS |
|
elif [ "$GAMEBINARY" == "glqwcl.exe" ]; then |
|
$ENGINE -basedir "$GAMEDIR" -quake -game qw $GAMEARGS |
|
elif [ "$GAMEBINARY" == "quake3.exe" ]; then |
|
$ENGINE -basedir "$GAMEDIR" -quake3 $GAMEARGS |
|
elif [ "$GAMEBINARY" == "quake2.exe" ]; then |
|
cd "$GAMEDIR" |
|
get_library baseq2/game.so q2-baseq2.tgz |
|
get_library ctf/game.so q2-ctf.tgz |
|
get_library rogue/game.so q2-rogue.tgz |
|
get_library xatrix/game.so q2-xatrix.tgz |
|
$ENGINE -basedir "$GAMEDIR" -quake2 $GAMEARGS |
|
elif [ "$GAMEBINARY" == "glh2.exe" ]; then |
|
$ENGINE -basedir "$GAMEDIR" -hexen2 $GAMEARGS |
|
else |
|
$ENGINE -basedir "$GAMEDIR" $GAMEARGS |
|
fi |
|
fi
|
|
|