aboutsummaryrefslogtreecommitdiff
path: root/analyzer/render.h
diff options
context:
space:
mode:
authorMaciej Borowiec <81316152+Mosder@users.noreply.github.com>2026-07-23 20:17:15 +0200
committerGitHub <noreply@github.com>2026-07-23 20:17:15 +0200
commit3419cad016b3c34d0630456d4390c70063462d91 (patch)
tree3a1aa4416e45f134d38f83d4ea2285f1972f9391 /analyzer/render.h
parent2e3f7fe39791cd671a68330f7ba7a5bb5fc6f9ae (diff)
parent682f9fc8288fdd01de1d88af87495d9e43f56b06 (diff)
LGTM
Diffstat (limited to 'analyzer/render.h')
-rw-r--r--analyzer/render.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/analyzer/render.h b/analyzer/render.h
new file mode 100644
index 0000000..911ca76
--- /dev/null
+++ b/analyzer/render.h
@@ -0,0 +1,55 @@
+// render.h
+// functions for "rendering" data onto the terminal
+
+#include "parser/fight_results/fight_results.h"
+#include "utils/memory.h"
+
+// ANSI escape sequence colors
+#define COLOR_GOLD 33
+#define COLOR_GRAY 90
+#define COLOR_RED 91
+#define COLOR_GREEN 92
+#define COLOR_YELLOW 93
+#define COLOR_BLUE 94
+#define COLOR_PURPLE 95
+#define COLOR_AQUA 96
+#define COLOR_WHITE 97
+
+#define TABLE_ROW_SEPARATOR_CHAR '-'
+
+#define TABLE_LINE_START "| "
+#define TABLE_LINE_END " |"
+#define TABLE_LINE_SEPARATOR " | "
+#define TABLE_LINE_START_WIDTH (sizeof(TABLE_LINE_START) - 1)
+#define TABLE_LINE_END_WIDTH (sizeof(TABLE_LINE_END) - 1)
+#define TABLE_LINE_SEPARATOR_WIDTH (sizeof(TABLE_LINE_SEPARATOR) - 1)
+
+// column info
+typedef struct {
+ char *name;
+ size_t width;
+ int color;
+} ColumnInfo;
+static const ColumnInfo columns[] = {
+ {"Nick (LVL)", 17, COLOR_WHITE},
+ {"EXP", 7, COLOR_WHITE},
+ {"Gold", 7, COLOR_YELLOW},
+ {"Psycho", 6, COLOR_AQUA},
+ {"Saturation", 13, COLOR_GREEN},
+ {"Splinters", 9, COLOR_BLUE},
+};
+static const inline size_t sum_col_widths() {
+ size_t sum = 0;
+ for (size_t i = 0; i < ARR_LEN(columns); i++)
+ sum += columns[i].width;
+ return sum;
+}
+
+#define TABLE_LINE_WIDTH (TABLE_LINE_START_WIDTH + sum_col_widths() + (ARR_LEN(columns) - 1) * TABLE_LINE_SEPARATOR_WIDTH + TABLE_LINE_END_WIDTH)
+
+#define TABLE_ITEMS_WIDTH (TABLE_LINE_WIDTH - TABLE_LINE_START_WIDTH - TABLE_LINE_END_WIDTH)
+
+// render fight results onto the terminal
+// params:
+// - results - fight results to render
+extern void render_fight_results(FightResults results);