-void ShowPause(int playa)
-{ //put paused over player's field
- if (Players[playa].alive > 0)
- if (Players[playa].flags & SCF_paused)
+void window_msg_wide(int player, char *message)
+{
+ int i;
+ char *messagewide = malloc(strlen(message) * 2); // max += strlen - 1
+ const int fieldsize = Players[player].boardWidth * window[player].size;
+
+ const bool sep = strchr(message, ' ') != NULL;
+ // whitespace to pad at convenience
+ const bool pad = strlen(message) * 2 - sep <= fieldsize;
+ // (space to) put whitespace between all characters
+ bool odd = fieldsize & 1;
+ // odd number of characters (center off; try to change padding at sep)
+ if (!pad) odd ^= strlen(message) & 1;
+ // for odd strings, check for even fieldsize instead
+
+ if (pad || (sep && odd && strlen(message) < fieldsize)) {
+ // generate padded message in messagewide
+ for (i = 0; ; message++) {
+ messagewide[i++] = *message;
+ if (message[1] == 0) {
+ messagewide[i] = 0;
+ break;
+ }
+ if (pad ? (*message != ' ' || odd) : (*message == ' ' && odd)) {
+ // add padding if wide; different padding at space if odd
+ messagewide[i++] = ' ';
+ odd = 0;
+ }
+ }
+ message = messagewide;
+ }
+ window_msg(player, message);
+}
+
+void window_msg_status(int player)
+{ //put status (pause, readiness, game over) over player's field
+ if (Players[player].alive > 0)
+ if (Players[player].flags & SCF_paused)