X-Git-Url: https://plomlompom.com/repos/?p=plomrogue;a=blobdiff_plain;f=start_server_client_union.sh;h=a6fe32ad4fbec901ea611f02b4f637299f64aa96;hp=ac161b5d596fe0d74432c634772a2ea9b60a4290;hb=HEAD;hpb=621b0c375b81bfb96473638dcdb231f721f31d4a diff --git a/start_server_client_union.sh b/start_server_client_union.sh index ac161b5..a6fe32a 100755 --- a/start_server_client_union.sh +++ b/start_server_client_union.sh @@ -3,26 +3,37 @@ # Abort the script on error. set -e -# Give helpful message to players that want to start without compiling first. -if [ ! -e ./roguelike-server ] +# Run script in its own process group so SIGINT doesn't kill parent script. +set -m + +# Don't let any log leftovers from before interfere. +if [ -e ./log ] then - echo 'No ./roguelike-server file found to execute. Try "make" first?' - false + rm log fi -if [ ! -e ./roguelike-client ] + +# Abort if no proper Python version installed. +test=`command -v python3 | wc -l` +if [ 1 -gt $test ] then - echo 'No ./roguelike-client file found to execute. Try "make" first?' - false + echo "FAILURE:" + echo "No python3 installed, but it's needed!" + exit 1 +fi + +# Give helpful message to players that want to start without compiling first. +if [ ! -e ./libplomrogue.so ] +then + echo 'No ./libplomrogue.so library found. Building …' + ./build.sh fi # Use shell script's arguments for server and pipe server output to log file. # This script's wrapper script will read it out on exit. -./roguelike-server "$@" > log 2>&1 & - -echo TEST >> log +python3 ./roguelike-server "$@" > log 2>&1 & # Give server some time to start up and exit on error. -sleep 0.01 +sleep 0.1 # The client should not start if the server is not running. (If the server was # running in the foreground, any error exit of it so far would be caught by "set @@ -31,17 +42,22 @@ kill -0 $! 2> /dev/null # Give server some time (max. 10 seconds) to generate its worldstate file. i=0 -while [ ! -e server/worldstate ] && [ $i -le 1000 ] +echo -n "Waiting for server to set up world: " +while [ ! -e server_run/worldstate ] && [ $i -le 100 ] do - sleep 0.01 + echo -n '.' + sleep 0.1 i=`expr $i + 1` done -if [ ! -e server/worldstate ] +echo +if [ ! -e server_run/worldstate ] then - echo "Server failed generating worldstate file within given time limit." + kill -9 $! + rm -rf server_run + echo "Server failed generating worldstate file within time limit." false fi # Only start the interface when everything else went well. kill -0 $! 2> /dev/null -./roguelike-client +python3 ./roguelike-client