home · contact · privacy
Fix buggy healthy_addch().
[plomrogue] / start_server_client_union.sh
index c56bf06cfa370b21dfde7024d5bcab4922151ced..a6fe32ad4fbec901ea611f02b4f637299f64aa96 100755 (executable)
@@ -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
@@ -19,15 +22,10 @@ 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.
@@ -35,7 +33,7 @@ fi
 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