]> git.pond.sub.org Git - empserver/commitdiff
fairland: Add print_own_map(), print_elev_map() for debugging
authorMarkus Armbruster <armbru@pond.sub.org>
Tue, 11 Aug 2020 06:26:36 +0000 (08:26 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Tue, 5 Jan 2021 09:41:35 +0000 (10:41 +0100)
Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
src/util/fairland.c

index c6eb29b3b2575846205ad14f36d2b7bfc1516864..072ce05ccc0c179a374ec23e03be6ecfca994c54 100644 (file)
@@ -166,6 +166,10 @@ static void print_vars(void);
 static void fl_move(int);
 static void grow_islands(void);
 
+/* Debugging aids: */
+void print_own_map(void);
+void print_elev_map(void);
+
 /****************************************************************************
   MAIN
 ****************************************************************************/
@@ -1139,6 +1143,68 @@ map_symbol(int x, int y)
     return own[x][y] >= nc ? '%' : '#';
 }
 
+/*
+ * Print a map to help visualize own[][].
+ * This is for debugging.
+ */
+void
+print_own_map(void)
+{
+    int sx, sy, x, y;
+
+    for (sy = -WORLD_Y / 2; sy < WORLD_Y / 2; sy++) {
+       y = YNORM(sy);
+       printf("%4d ", sy);
+       for (sx = -WORLD_X / 2; sx < WORLD_X / 2; sx++) {
+           x = XNORM(sx);
+           if ((x + y) & 1)
+               putchar(' ');
+           else if (own[x][y] == -1)
+               putchar('.');
+           else
+               putchar(numletter[own[x][y] % 62]);
+       }
+       putchar('\n');
+    }
+}
+
+/*
+ * Print a map to help visualize elev[][].
+ * This is for debugging.  It expects the terminal to understand
+ * 24-bit color escape sequences \e[48;2;$red;$green;$blue;m.
+ */
+void
+print_elev_map(void)
+{
+    int sx, sy, x, y, sat;
+
+    for (sy = -WORLD_Y / 2; sy < WORLD_Y / 2; sy++) {
+       y = YNORM(sy);
+       printf("%4d ", sy);
+       for (sx = -WORLD_X / 2; sx < WORLD_X / 2; sx++) {
+           x = XNORM(sx);
+           if ((x + y) & 1)
+               putchar(' ');
+           else if (!elev[x][y])
+               putchar(' ');
+           else if (elev[x][y] < 0) {
+               sat = 256 + elev[x][y] * 2;
+               printf("\033[48;2;%d;%d;%dm \033[0m", sat, sat, 255);
+           } else if (elev[x][y] < HIGHMIN / 2) {
+               sat = (HIGHMIN / 2 - elev[x][y]) * 4;
+               printf("\033[48;2;%d;%d;%dm \033[0m", sat, 255, sat);
+           } else if (elev[x][y] < HIGHMIN) {
+               sat = 128 + (HIGHMIN - elev[x][y]) * 2;
+               printf("\033[48;2;%d;%d;%dm \033[0m", sat, sat / 2, sat / 4);
+           } else {
+               sat = 128 + (elev[x][y] - HIGHMIN) * 4 / 5;
+               printf("\033[48;2;%d;%d;%dm^\033[0m", sat, sat, sat);
+           }
+       }
+       putchar('\n');
+    }
+}
+
 /***************************************************************************
   WRITE A SCRIPT FOR PLACING CAPITALS
 ****************************************************************************/