Files
UT99-Mod-UltimateNewNet/Run.sh
2026-01-26 22:06:21 +00:00

157 lines
3.9 KiB
Bash
Executable File

#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
OUTPUT_DIR="$2"
DEFAULT_CFG_FILE=UnrealTournament.ini
CFG_FILE="${3:-$DEFAULT_CFG_FILE}"
function add_iniKeyEx() {
crudini --set $OUTPUT_DIR/System/$1 $2 __$3 $4
# Warning: ugly hack with sed to allow multiple key instances + to remove space around '='
sed -i "s/[[:space:]]*__$(echo $3 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')[[:space:]]*=[[:space:]]*/$(echo $3 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')=/g" $OUTPUT_DIR/System/$1
}
# !!Warning!! section is not considered
function del_iniKeyEx() {
sed -i "/[[:space:]]*$(echo $3 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')[[:space:]]*=[[:space:]]*$(echo $4 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')/d" $OUTPUT_DIR/System/$1
}
function add_iniKey() {
add_iniKeyEx $CFG_FILE $1 $2 $3
}
# !!Warning!! section is not considered
function del_iniKey() {
del_iniKeyEx $CFG_FILE $1 $2 $3
}
function add_ServerPackage() {
add_iniKey 'Engine.GameEngine' ServerPackages $1
add_iniKey 'XC_Engine.XC_GameEngine' ServerPackages $1
}
function del_ServerPackage() {
del_iniKey 'Engine.GameEngine' ServerPackages $1
del_iniKey 'XC_Engine.XC_GameEngine' ServerPackages $1
}
function add_ServerActors() {
add_iniKey 'Engine.GameEngine' ServerActors $1
add_iniKey 'XC_Engine.XC_GameEngine' ServerActors $1
}
function del_ServerActors() {
del_iniKey 'Engine.GameEngine' ServerActors $1
del_iniKey 'XC_Engine.XC_GameEngine' ServerActors $1
}
function getmodprefix() {
UNUFile=$(find $OUTPUT_DIR/System -type f -name "UN*.u" ! -name "UNS.u" -exec basename {} \;)
UNBaseName="${UNUFile%.*}"
echo "$UNBaseName"
}
function install() {
rsync -a $SCRIPT_DIR/Help/ $OUTPUT_DIR/Help --exclude '.git'
rsync -a $SCRIPT_DIR/System/ $OUTPUT_DIR/System --exclude '.git'
echo install ok
}
function enable() {
UNBaseName="$(getmodprefix)"
VAUFile=$(find $OUTPUT_DIR/System -type f -name "VAH*.u" -exec basename {} \;)
VABaseName="${VAUFile%.*}"
BP1UFile=$(find $OUTPUT_DIR/System -type f -name "BP1H*.u" -exec basename {} \;)
BP1BaseName="${BP1UFile%.*}"
BP4UFile=$(find $OUTPUT_DIR/System -type f -name "BP4H*.u" -exec basename {} \;)
BP4BaseName="${BP4UFile%.*}"
add_ServerPackage $UNBaseName
add_ServerActors UNS.NewNetServer
add_ServerPackage $BP1BaseName
add_ServerPackage $BP4BaseName
#add_ServerPackage $VABaseName
#add_ServerPackage VAData
echo enable ok
}
function disable() {
UNBaseName="$(getmodprefix)"
VAUFile=$(find $OUTPUT_DIR/System -type f -name "VAH*.u" -exec basename {} \;)
VABaseName="${VAUFile%.*}"
BP1UFile=$(find $OUTPUT_DIR/System -type f -name "BP1H*.u" -exec basename {} \;)
BP1BaseName="${BP1UFile%.*}"
BP4UFile=$(find $OUTPUT_DIR/System -type f -name "BP4H*.u" -exec basename {} \;)
BP4BaseName="${BP4UFile%.*}"
del_ServerPackage $UNBaseName
del_ServerActors UNS.NewNetServer
del_ServerPackage $BP1BaseName
del_ServerPackage $BP4BaseName
#del_ServerPackage $VABaseName
#del_ServerPackage VAData
echo disable ok
}
function show_help() {
echo
echo "Usage: $0 { getmodprefix |install | enable | disable } <UT99_INSTALL_DIR> [<UT99_CONFIG_FILE>]"
echo
}
function check_cfg_file() {
if [ -z ${CFG_FILE} ]
then
echo "CFG_FILE is unset, setting it to $DEFAULT_CFG_FILE"
CFG_FILE=$DEFAULT_CFG_FILE
else
echo "CFG_FILE is set to '$CFG_FILE'"
fi
if [ ! -f $OUTPUT_DIR/System/$CFG_FILE ]
then
echo "$OUTPUT_DIR/System/$CFG_FILE does not exist"
show_help
exit 9999 # die with error code 9999
fi
}
function check_game_dir() {
### Check if a directory does not exist ###
if [ -z $OUTPUT_DIR ]
then
echo "incorrect <UT99_INSTALL_DIR>"
show_help
exit 9999 # die with error code 9999
fi
}
case "$1" in
'getmodprefix')
check_game_dir
getmodprefix
;;
'install')
check_game_dir
install
;;
'enable')
check_game_dir
check_cfg_file
disable
enable
;;
'disable')
check_game_dir
check_cfg_file
disable
;;
*)
show_help
exit 1
;;
esac
exit 0