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