X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;ds=sidebyside;f=start_server_client_union.sh;h=a6fe32ad4fbec901ea611f02b4f637299f64aa96;hb=8c88406d32ad014785ffb195fd34e0b7502ccfc6;hp=ad05038c54ff3d3ad4908315260d213d3f1b0181;hpb=033d9244b2685c72d7934dbaaf8288b0f66c5230;p=plomrogue
diff --git a/start_server_client_union.sh b/start_server_client_union.sh
index ad05038..a6fe32a 100755
--- a/start_server_client_union.sh
+++ b/start_server_client_union.sh
@@ -3,6 +3,9 @@
# Abort the script on error.
set -e
+# 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
@@ -11,7 +14,7 @@ fi
# Abort if no proper Python version installed.
test=`command -v python3 | wc -l`
-if [ 1 != $test ]
+if [ 1 -gt $test ]
then
echo "FAILURE:"
echo "No python3 installed, but it's needed!"
@@ -19,23 +22,18 @@ then
fi
# Give helpful message to players that want to start without compiling first.
-if [ ! -e ./roguelike-client ]
-then
- echo 'No ./roguelike-client executable found. Try "./redo" first?'
- false
-fi
if [ ! -e ./libplomrogue.so ]
then
- echo 'No ./libplomrogue.so library found. Try "./redo" first?'
- false
+ 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 &
+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
@@ -44,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