Finally unified all of my events into one place.

This commit is contained in:
Zed A. Shaw 2025-12-17 12:51:15 -05:00
parent 6c34fea64a
commit c618a4828f
30 changed files with 215 additions and 216 deletions

View file

@ -6,7 +6,6 @@
#include "components.hpp"
#include <numbers>
#include "systems.hpp"
#include "gui/fsm_events.hpp"
#include "events.hpp"
#include "sound.hpp"
#include "shaders.hpp"
@ -17,6 +16,7 @@
namespace gui {
using namespace components;
using game::Event;
FSM::FSM() :
$window(sf::VideoMode({SCREEN_WIDTH, SCREEN_HEIGHT}), "Zed's Raycaster Thing"),
@ -83,7 +83,7 @@ namespace gui {
run_systems();
state(State::IN_COMBAT);
} break;
case STOP_COMBAT:
case COMBAT_STOP:
state(State::IDLE);
break;
case ATTACK: {
@ -165,7 +165,7 @@ namespace gui {
case ATTACK:
state(State::ATTACKING);
break;
case START_COMBAT:
case COMBAT_START:
$map_open = false;
state(State::IN_COMBAT);
break;
@ -215,7 +215,7 @@ namespace gui {
dbc::check($boss_fight != nullptr, "$boss_fight not initialized");
if($boss_scene->playing()) {
if(ev == gui::Event::MOUSE_CLICK) {
if(ev == game::Event::MOUSE_CLICK) {
$boss_scene->mouse(0,0, 0);
}
return;
@ -223,7 +223,7 @@ namespace gui {
$boss_fight->mouse_pos = mouse_position();
if(ev == gui::Event::QUIT) {
if(ev == game::Event::QUIT) {
// just epsilon straight to the exit
IDLE(ev, data);
} if($boss_fight->event(ev, data)) {
@ -260,7 +260,7 @@ namespace gui {
$main_ui.plan_rotate(1, DEFAULT_ROTATE);
state(State::COMBAT_ROTATE);
break;
case STOP_COMBAT:
case COMBAT_STOP:
$main_ui.$overlay_ui.close_sprite("top_right");
state(State::IDLE);
break;
@ -436,7 +436,7 @@ namespace gui {
}
void FSM::handle_world_events() {
using eGUI = Events::GUI;
using eGUI = game::Event;
auto world = GameDB::current_world();
while(world->has_event<eGUI>()) {
@ -447,7 +447,7 @@ namespace gui {
switch(evt) {
case eGUI::COMBAT: {
auto &damage = std::any_cast<Events::Combat&>(data);
auto &damage = std::any_cast<components::CombatResult&>(data);
if(damage.enemy_did > 0) {
$map_ui.log(fmt::format(L"Enemy HIT YOU for {} damage!", damage.enemy_did));
@ -463,7 +463,7 @@ namespace gui {
}
break;
case eGUI::COMBAT_START:
event(Event::START_COMBAT);
event(Event::COMBAT_START);
break;
case eGUI::ENTITY_SPAWN: {
auto& sprite = world->get<components::Sprite>(entity);
@ -472,7 +472,7 @@ namespace gui {
run_systems();
} break;
case eGUI::NO_NEIGHBORS:
event(Event::STOP_COMBAT);
event(Event::COMBAT_STOP);
break;
case eGUI::LOOT_CLOSE:
// BUG: need to resolve GUI events vs. FSM events better