refactor: optimize snake sprite rendering using preloaded directional assets and implement HUD caching
This commit is contained in:
1 parent
db9013c9c5
commit
60740a53c2
5 files changed
+268
-152
No files matched your search
+20
-4
@@ -5,22 +5,38 @@
|
||||
|
||||
#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 RenderAssets {
|
||||
PrintConsole *topScreen = nullptr;
|
||||
PrintConsole *bottomScreen = nullptr;
|
||||
|
||||
u16 *gfx_segment = nullptr;
|
||||
u16 *gfx_segment_small = nullptr;
|
||||
u16 *gfx_head = nullptr;
|
||||
u16 *gfx_head_h = nullptr;
|
||||
u16 *gfx_head_v = nullptr;
|
||||
u16 *gfx_apple = nullptr;
|
||||
u16 *gfx_tail = 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, bool internals, bool musicEnabled, uint8_t frame);
|
||||
void draw_menu(const GameState &state, const RenderAssets &assets, bool musicEnabled);
|
||||
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
|
||||
Reference in new issue
Block a user