From 6ec43026b648624314dbdce3cd10ceccfed9d78c Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Wed, 24 Sep 2025 02:17:38 -0400 Subject: [PATCH] Boss UI buttons in place and ready to work. --- boss/ui.cpp | 48 ++++++++++++++++++++++++++++++++++++------------ boss/ui.hpp | 3 ++- 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/boss/ui.cpp b/boss/ui.cpp index cdb9a4e..0ad6174 100644 --- a/boss/ui.cpp +++ b/boss/ui.cpp @@ -14,12 +14,12 @@ namespace boss { } void UI::init() { - $gui.position(SCREEN_WIDTH-BOSS_VIEW_WIDTH,0, BOSS_VIEW_WIDTH, SCREEN_HEIGHT); - $gui.set($gui.MAIN, {$gui.$parser, THEME.DARK_MID}); - auto& background = $gui.get($gui.MAIN); + $arena.position(SCREEN_WIDTH-BOSS_VIEW_WIDTH,0, BOSS_VIEW_WIDTH, SCREEN_HEIGHT); + $arena.set($arena.MAIN, {$arena.$parser, THEME.DARK_MID}); + auto& background = $arena.get($arena.MAIN); background.set_sprite("test_background", true); - $gui.layout( + $arena.layout( "[a1|boss1|boss2|boss3|e1|f1]" "[a2|b2|c2|d2|e2|f2]" "[floor2|b3|c3|d3|e3|f3]" @@ -28,16 +28,39 @@ namespace boss { "[a6|b6|c6|d6|e6|f6]" ); - - position_sprite($boss_sprite, "boss2", 0.4, true); + position_sprite($boss_sprite, "boss2", 0.7, true); position_sprite($player_sprite, "player1", 0.5, true); position_sprite($floor_sprite, "floor2", 1.0, false); - $gui.init(); + $arena.init(); + + $actions.position(0,0, SCREEN_WIDTH-BOSS_VIEW_WIDTH, SCREEN_HEIGHT); + $actions.layout( + "[action1|action2]" + "[action3|action4]" + "[action5|action6]" + "[*(200)dodge]" + "[*(200,300)stats]" + "[_]" + "[_]"); + + for(auto& [name, cell] : $actions.cells()) { + auto id = $actions.entity(name); + $actions.set(id, {}); + $actions.set(id, {guecs::to_wstring(name)}); + + if(name != "stats") { + $actions.set(id, { + [name](auto){ fmt::println("clicked {}", name); } + }); + } + } + + $actions.init(); } void UI::position_sprite(textures::SpriteTexture& st, const std::string& name, float scale, bool at_mid) { - auto& cell = $gui.cell_for(name); + auto& cell = $arena.cell_for(name); float x = float(at_mid ? cell.mid_x : cell.x); float y = float(at_mid ? cell.mid_y : cell.y); @@ -46,18 +69,19 @@ namespace boss { } void UI::render(sf::RenderWindow& window) { - $gui.render(window); + $arena.render(window); + $actions.render(window); window.draw(*$floor_sprite.sprite); window.draw(*$boss_sprite.sprite); window.draw(*$player_sprite.sprite); - // $gui.debug_layout(window); + // $arena.debug_layout(window); } bool UI::mouse(float x, float y, Modifiers mods) { - return $gui.mouse(x, y, mods); + return $actions.mouse(x, y, mods); } bool UI::boss_dead() { - return true; + return false; } } diff --git a/boss/ui.hpp b/boss/ui.hpp index c03d281..20ab6ee 100644 --- a/boss/ui.hpp +++ b/boss/ui.hpp @@ -16,7 +16,8 @@ namespace boss { SpriteTexture $boss_sprite; SpriteTexture $player_sprite; SpriteTexture $floor_sprite; - guecs::UI $gui; + guecs::UI $arena; + guecs::UI $actions; UI(shared_ptr world, Entity boss_id);