From 69a810b5a1cf24e81981a080d09ea3eafc66a41f Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Tue, 18 Feb 2025 14:24:57 -0500 Subject: [PATCH] Combat UI can now send events to the GUIwhen they click on buttons, and I've got a crappy wood texture for the buttons to test that. --- assets/trash_button.png | Bin 0 -> 37424 bytes combat_ui.cpp | 8 +++++--- events.hpp | 2 +- guecs.cpp | 9 +++++++-- guecs.hpp | 6 +++++- gui.cpp | 32 +++++++++++++++++++------------- gui.hpp | 1 + 7 files changed, 38 insertions(+), 20 deletions(-) create mode 100644 assets/trash_button.png diff --git a/assets/trash_button.png b/assets/trash_button.png new file mode 100644 index 0000000000000000000000000000000000000000..ba823ae4d02c9525d730558bdc3b2afd20658b6d GIT binary patch literal 37424 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 mGA%JUR536*Gcr0eH7zhTIxsMcVHZ*W0000.%(100,50)label_hp | *%.(190,50)bar_hp | _ ]"); + "[ >.%(100,50)label_hp | *%.(198,50)bar_hp | _ ]"); } void CombatUI::render(TexturePack& textures) { @@ -22,8 +23,9 @@ namespace gui { auto button = $gui.entity(name); world.set(button, cell); world.set(button, {"trash_button"}); - world.set(button, {100}); - world.set(button, {"Button"}); + world.set(button, + guecs::make_action(*$level.world, Events::GUI::ATTACK)); + world.set(button, {"Attack"}); } else if(name.starts_with("bar_")) { $meter = $gui.entity(name); world.set($meter, cell); diff --git a/events.hpp b/events.hpp index cd44ffe..0db8821 100644 --- a/events.hpp +++ b/events.hpp @@ -3,7 +3,7 @@ namespace Events { enum GUI { START, COMBAT, LOOT, DEATH, STAIRS_UP, STAIRS_DOWN, TRAP, - COMBAT_START, NO_NEIGHBORS + COMBAT_START, NO_NEIGHBORS, ATTACK }; struct Combat { diff --git a/guecs.cpp b/guecs.cpp index 09913ce..c13fdaf 100644 --- a/guecs.cpp +++ b/guecs.cpp @@ -77,10 +77,15 @@ namespace guecs { (pos.y >= cell.y && pos.y <= cell.y + cell.h)) { auto& cn = $world.get(ent); - fmt::println("clicked on entity {} with name {} and event {}", - ent, cn.name, clicked.event); + clicked.action(ent, cn.name); } }); } } + + Clickable make_action(DinkyECS::World& target, Events::GUI event) { + return {[&, event](auto ent, auto&){ + target.send(event, ent, {}); + }}; + } } diff --git a/guecs.hpp b/guecs.hpp index fc1b1c8..337c8d1 100644 --- a/guecs.hpp +++ b/guecs.hpp @@ -6,6 +6,8 @@ #include #include #include "texture.hpp" +#include +#include "events.hpp" namespace guecs { using std::shared_ptr, std::make_shared; @@ -27,7 +29,7 @@ namespace guecs { }; struct Clickable { - int event = 0; + std::function action; }; struct Sprite { @@ -88,4 +90,6 @@ namespace guecs { void render(sf::RenderWindow& window); void mouse(sf::RenderWindow &window); }; + + Clickable make_action(DinkyECS::World& target, Events::GUI event); } diff --git a/gui.cpp b/gui.cpp index 7ce55bf..007f304 100644 --- a/gui.cpp +++ b/gui.cpp @@ -108,6 +108,9 @@ namespace gui { dbc::log("Exiting ATTACKING STATE"); state(State::IDLE); break; + case ATTACK: + // ignore these since they're just from SFML not having discrete events + break; default: dbc::log(fmt::format("In ATTACKING state, unhandled event {}", (int)ev)); } @@ -249,10 +252,6 @@ namespace gui { case KEY::A: event(Event::MOVE_LEFT); break; - case KEY::Space: - $rotation = 0; - event(Event::ATTACK); - break; case KEY::R: $stats.reset(); break; @@ -262,15 +261,8 @@ namespace gui { case KEY::Escape: event(Event::CLOSE); break; - case KEY::P: { - auto& debug = $level.world->get_the(); - debug.FPS = !debug.FPS; - debug.PATHS = !debug.PATHS; - auto player = $level.world->get_the(); - auto& player_combat = $level.world->get(player.entity); - player_combat.hp = player_combat.max_hp; - $combat_view.set_damage(float(player_combat.hp) / float(player_combat.max_hp)); - } break; + case KEY::P: + debug(); default: break; // ignored } @@ -278,6 +270,16 @@ namespace gui { } } + void FSM::debug() { + auto& debug = $level.world->get_the(); + debug.FPS = !debug.FPS; + debug.PATHS = !debug.PATHS; + auto player = $level.world->get_the(); + auto& player_combat = $level.world->get(player.entity); + player_combat.hp = player_combat.max_hp; + $combat_view.set_damage(float(player_combat.hp) / float(player_combat.max_hp)); + } + void FSM::draw_weapon() { return; auto weapon = $rayview.$textures.sword.sprite; @@ -426,6 +428,10 @@ namespace gui { $status_view.log("You picked up an item."); } break; + case eGUI::ATTACK: + $rotation = 0; + event(Event::ATTACK); + break; default: $status_view.log(fmt::format("INVALID EVENT! {},{}", evt, entity)); } diff --git a/gui.hpp b/gui.hpp index d761557..225a94b 100644 --- a/gui.hpp +++ b/gui.hpp @@ -81,6 +81,7 @@ namespace gui { void draw_stats(); void draw_gui(); void draw_blood(); + void debug(); void render(); void mouse(); void generate_map();