#pragma once #include "constants.hpp" #include "stats.hpp" #include "levelmanager.hpp" #include "fsm.hpp" #include "main_ui.hpp" #include "combat_ui.hpp" #include "status_ui.hpp" #include "arena_ui.hpp" #include "map_view.hpp" #include "mini_map.hpp" namespace arena { enum class State { START, IDLE, END }; enum class Event { STARTED=0, TICK=1, CLOSE = 7, ATTACK = 10, QUIT = 14 }; class FSM : public DeadSimpleFSM { public: std::string $enemy_name; sf::RenderWindow $window; sf::Font $font; LevelManager $level_mgr; GameLevel $level; shared_ptr $arena_ui = nullptr; FSM(std::string enemy_name); void event(Event ev); void START(Event ); void IDLE(Event ev); void END(Event ev); void try_move(int dir, bool strafe); void keyboard_mouse(); void draw_gui(); void render(); bool active(); void run_systems(); void handle_world_events(); }; }