#ifndef GAME_RENDER_H #define GAME_RENDER_H #include #include "game_state.h" struct HudCache { int score = -1; bool cursed = false; bool paused = false; bool gameOver = false; bool musicEnabled = false; bool hardMode = false; bool dirty = true; }; struct BackgroundContext; struct RenderAssets { PrintConsole *topScreen = nullptr; PrintConsole *bottomScreen = nullptr; BackgroundContext *bg_context = nullptr; u16 *gfx_segment = nullptr; u16 *gfx_segment_small = nullptr; u16 *gfx_head_h = nullptr; u16 *gfx_head_v = nullptr; u16 *gfx_apple = nullptr; u16 *gfx_apple_blink = nullptr; u16 *gfx_tail_h[2] = {nullptr, nullptr}; u16 *gfx_tail_v[2] = {nullptr, nullptr}; u16 *gfx_apple_rotten = nullptr; u16 *gfx_apple_cursed = nullptr; HudCache hudCache; }; void invalidate_hud(RenderAssets &assets); void draw_game(const GameState &state, const RenderAssets &assets); void draw_stats(const GameState &state, RenderAssets &assets, bool internals, bool musicEnabled, uint8_t frame); void draw_menu(const GameState &state, RenderAssets &assets, bool musicEnabled); void blink_apples(const GameState &state, u16 *gfx_apple); #endif