#pragma once #include "raycaster.hpp" #include "constants.hpp" #include "stats.hpp" #include "levelmanager.hpp" #include "camera.hpp" #include "fsm.hpp" #include "render.hpp" #include "map_view.hpp" #include "combat_ui.hpp" #include "status_ui.hpp" namespace gui { enum class State { START, MOVING, IN_COMBAT, COMBAT_ROTATE, ATTACKING, MAPPING, ROTATING, IDLE, END }; enum class Event { STARTED, TICK, MOVE_FORWARD, MOVE_BACK, MOVE_LEFT, MOVE_RIGHT, MAP_OPEN, CLOSE, ROTATE_LEFT, ROTATE_RIGHT, ATTACK, START_COMBAT, STOP_COMBAT, QUIT }; class FSM : public DeadSimpleFSM { public: // ZED: these two will go away soon int $rotation_count = 0; float $rotation = -10.0f; bool $draw_stats = false; Point $player{0,0}; LevelManager $levels; sf::RenderWindow $window; SFMLRender $renderer; GameLevel $level; MapViewUI $map_view; CombatUI $combat_view; StatusUI $status_view; CameraLOL $camera; sf::Font $font; sf::Text $text; Stats $stats; TexturePack $textures; Raycaster $rayview; FSM(); void event(Event ev); void START(Event ); void MOVING(Event ); void ATTACKING(Event ); void MAPPING(Event); void ROTATING(Event ); void IDLE(Event ev); void IN_COMBAT(Event ev); void COMBAT_ROTATE(Event ev); void END(Event ev); void try_move(int dir, bool strafe); void keyboard(); void draw_weapon(); void draw_stats(); void draw_gui(); void draw_blood(); void render(); void mouse(); void generate_map(); bool active(); void run_systems(); void handle_world_events(); }; }