#ifndef RENDER_H #define RENDER_H #include "common.h" // HUD colors #define HUD_BG (Color){25, 20, 15, 255} #define HUD_BORDER (Color){139, 119, 89, 255} #define HUD_LIGHT_LINE (Color){60, 55, 50, 255} #define HUD_DARK_LINE (Color){15, 12, 10, 255} #define TEXT_DIM (Color){160, 150, 140, 255} #define TEXT_BRIGHT (Color){240, 230, 220, 255} // HP bar colors #define HP_HIGH (Color){60, 180, 60, 255} #define HP_MED (Color){200, 180, 40, 255} #define HP_LOW (Color){200, 60, 60, 255} #define HP_BAR_BG (Color){20, 15, 15, 255} #define HP_BAR_BORDER (Color){80, 70, 60, 255} // Enemy type colors #define COLOR_ENEMY_GOBLIN (Color){150, 50, 50, 255} #define COLOR_ENEMY_SKELETON (Color){200, 200, 200, 255} #define COLOR_ENEMY_ORC (Color){50, 150, 50, 255} // Item type colors #define COLOR_ITEM_POTION (Color){255, 100, 100, 255} #define COLOR_ITEM_WEAPON (Color){255, 255, 100, 255} #define COLOR_ITEM_ARMOR (Color){100, 100, 255, 255} // Action log colors #define LOG_BG (Color){15, 12, 10, 230} #define LOG_BORDER (Color){100, 85, 65, 255} #define LOG_DARK (Color){60, 50, 40, 255} #define LOG_TITLE_BG (Color){30, 25, 20, 255} #define LOG_TEXT (Color){180, 160, 130, 255} #define LOG_NEWEST (Color){220, 210, 200, 255} #define LOG_RECENT (Color){180, 170, 160, 255} #define LOG_OLDER (Color){150, 140, 130, 230} #define LOG_OLDEST (Color){120, 110, 100, 200} // Inventory overlay colors #define INV_OVERLAY_BG (Color){12, 12, 12, 252} #define INV_BORDER (Color){70, 70, 70, 255} #define INV_SLOT_BG (Color){45, 45, 45, 255} #define INV_SELECTED (Color){180, 160, 80, 255} #define INV_EMPTY (Color){40, 40, 40, 255} #define INV_HINT (Color){65, 65, 65, 255} // Floating text colors #define FLOAT_DAMAGE (Color){255, 100, 100, 255} #define FLOAT_CRIT (Color){255, 200, 50, 255} #define FLOAT_DODGE (Color){160, 160, 160, 255} #define FLOAT_BLOCK (Color){80, 130, 220, 255} #define FLOAT_SLAIN (Color){220, 50, 50, 255} #define FLOAT_DEFAULT (Color){200, 200, 200, 255} // Floating label font sizes #define FONT_SIZE_FLOAT_LABEL 14 #define FONT_SIZE_FLOAT_CRIT 16 #define FONT_SIZE_FLOAT_DMG 18 // Message box colors #define MSG_BG (Color){45, 45, 45, 235} #define MSG_BORDER (Color){180, 180, 180, 255} // End screen colors #define END_OVERLAY (Color){0, 0, 0, 210} #define END_BOX_BG (Color){20, 20, 20, 240} #define END_BOX_BORDER (Color){100, 100, 100, 255} #define END_SEED (Color){150, 200, 255, 255} // Portrait placeholder // FIXME: remove when player sprites are available #define PORTRAIT_BG (Color){30, 30, 45, 255} // Render the map tiles void render_map(const Map *map); // Render the player void render_player(const Player *p); // Render all enemies void render_enemies(const Enemy *enemies, int count, const unsigned char visible[MAP_HEIGHT][MAP_WIDTH]); // Render all items void render_items(const Item *items, int count, const unsigned char visible[MAP_HEIGHT][MAP_WIDTH]); // Render UI overlay void render_ui(const Player *p); // Render action log (bottom left corner) void render_action_log(const char log[5][128], int count, int head); // Render inventory selection overlay void render_inventory_overlay(const Player *p, int selected); // Render floating damage text void render_floating_texts(FloatingText *texts, int count, int shake_x, int shake_y); // Render end screen (victory or death) with stats breakdown void render_end_screen(int is_victory, int kills, int items, int damage_dealt, int damage_taken, int crits, int times_hit, int potions, int floors, int turns, int score, unsigned int seed); // Render a message popup void render_message(const char *message); // Render seed display at top right of screen void render_seed_display(unsigned int seed); #endif // RENDER_H