#ifndef CONSOLE #define CONSOLE #define BLK "\033[0;30m" #define RED "\033[0;31m" #define GRN "\033[0;32m" #define WHT "\033[0;37m" #define BLKB "\033[40m" #define REDB "\033[41m" #define GRNB "\033[42m" #define WHTB "\033[47m" #define RESET "\033[0m" typedef enum ConsoleColors { CBLACK, CRED, CGREEN, CWHITE } consoleColor_t; typedef struct ConsoleLine { consoleColor_t color; char* content; /* set to NULL to use oninteract */ char* expansionContent; void (*onInteract)(void); char isExpanded; } consoleLine_t; consoleLine_t init_simple_consoleline(consoleColor_t color, char* content); consoleLine_t init_expandable_consoleline(consoleColor_t color, char* content, char* expansionContent); consoleLine_t init_interactable_consoleline(consoleColor_t color, char* content, void (*onInteract)(void)); typedef struct ConsoleLineSet { consoleLine_t* lines; int count; } consoleLineSet_t; consoleLineSet_t init_consolelineset(consoleLine_t* lines, int count); void set_cache(consoleLineSet_t lines); void clear_screen(void); void draw_screen(void); void move_selection(int amount); void interact_selected(void); #endif