#pragma once #include "simplefsm.hpp" #include "dinkyecs.hpp" #include "boss/ui.hpp" #include "gui/fsm_events.hpp" #include #include namespace boss { using std::shared_ptr; enum class State { START=0, BOSS_TURN=1, PLAYER_TURN=2, END=3 }; class Fight : public DeadSimpleFSM { public: shared_ptr $world = nullptr; DinkyECS::Entity $boss_id = NONE; boss::UI $ui; sf::Vector2f mouse_pos{0,0}; int run = 0; Fight(shared_ptr world, DinkyECS::Entity boss_id); bool handle_mouse(gui::Event ev); bool event(gui::Event ev, std::any data); void START(gui::Event ev, std::any data); void BOSS_TURN(gui::Event ev, std::any data); void PLAYER_TURN(gui::Event ev, std::any data); void END(gui::Event ev, std::any data); void render(sf::RenderWindow& window) { $ui.render(window); } void run_systems(); }; }