From 89cae24c03f02d4d8144bf1fd80deed6a5105895 Mon Sep 17 00:00:00 2001 From: codegirl-007 Date: Sun, 14 Jun 2026 00:44:38 -0700 Subject: [PATCH] refactor rendering of hud --- game/hud.odin | 23 +++++++++++++++++++++++ game/map.odin | 9 +++++++++ game/render.odin | 28 ++-------------------------- 3 files changed, 34 insertions(+), 26 deletions(-) create mode 100644 game/hud.odin diff --git a/game/hud.odin b/game/hud.odin new file mode 100644 index 0000000..5c4b6a3 --- /dev/null +++ b/game/hud.odin @@ -0,0 +1,23 @@ +package game + +import "core:fmt" +import rl "vendor:raylib" + +render_hud :: proc(world: ^World) { + rl.DrawText(fmt.ctprintf("Gold: %d", world.gold), 10, 10, 22, rl.BLACK) // Gold HUD + rl.DrawText(fmt.ctprintf("Base HP: %d", world.base_health), 10, 32, 22, rl.BLACK) // HP HUD + rl.DrawText(fmt.ctprintf("Enemies: %d", active_enemy_count(world)), 10, 54, 22, rl.BLACK) + rl.DrawText(fmt.ctprintf("Wave: %d / %d", world.wave, MAX_WAVES), 10, 76, 22, rl.BLACK) + + switch world.phase { + case .Build: + rl.DrawText("Build - click towers, N = start wave", 10, 98, 22, rl.BLACK) + case .Combat: + rl.DrawText("Combat!", 10, 98, 22, rl.MAROON) + case .Game_Over: + rl.DrawText("GAME_OVER", 260, 280, 40, rl.RED) + case .Victory: + rl.DrawText("Victory!", 260, 280, 40, rl.GREEN) + } +} + diff --git a/game/map.odin b/game/map.odin index 969aba0..5a5375e 100644 --- a/game/map.odin +++ b/game/map.odin @@ -54,3 +54,12 @@ can_build_at :: proc(world_map: ^Map, gx, gy: int) -> bool { return world_map.tiles[gy][gx] == .Build } +render_map :: proc(world: ^World) { + for y in 0 ..< MAP_H { + for x in 0 ..< MAP_W { + c := tile_color(world.world_map.tiles[y][x]) + rl.DrawRectangle(i32(x * TILE_SIZE), i32(y * TILE_SIZE), TILE_SIZE, TILE_SIZE, c) + } + } +} + diff --git a/game/render.odin b/game/render.odin index b6f9698..ad32017 100644 --- a/game/render.odin +++ b/game/render.odin @@ -1,34 +1,10 @@ package game -import "core:fmt" -import rl "vendor:raylib" - render_world :: proc(world: ^World) { - for y in 0 ..< MAP_H { - for x in 0 ..< MAP_W { - c := tile_color(world.world_map.tiles[y][x]) - rl.DrawRectangle(i32(x * TILE_SIZE), i32(y * TILE_SIZE), TILE_SIZE, TILE_SIZE, c) - } - } - + render_map(world) render_enemies(world) render_towers(world) render_projectiles(world) - - rl.DrawText(fmt.ctprintf("Gold: %d", world.gold), 10, 10, 22, rl.BLACK) // Gold HUD - rl.DrawText(fmt.ctprintf("Base HP: %d", world.base_health), 10, 32, 22, rl.BLACK) // HP HUD - rl.DrawText(fmt.ctprintf("Enemies: %d", active_enemy_count(world)), 10, 54, 22, rl.BLACK) - rl.DrawText(fmt.ctprintf("Wave: %d / %d", world.wave, MAX_WAVES), 10, 76, 22, rl.BLACK) - - switch world.phase { - case .Build: - rl.DrawText("Build - click towers, N = start wave", 10, 98, 22, rl.BLACK) - case .Combat: - rl.DrawText("Combat!", 10, 98, 22, rl.MAROON) - case .Game_Over: - rl.DrawText("GAME_OVER", 260, 280, 40, rl.RED) - case .Victory: - rl.DrawText("Victory!", 260, 280, 40, rl.GREEN) - } + render_hud(world) }