#pragma once #include "levelmanager.hpp" #include "constants.hpp" #include #include "textures.hpp" #include "guecs.hpp" #include "rituals.hpp" #include "fsm.hpp" namespace gui { namespace ritual { enum class State { START=0, OPENED=1, CLOSED=2, OPENING=3, CLOSING=4 }; enum class Event { STARTED=0, TOGGLE=1, TICK=2 }; class UI : public DeadSimpleFSM{ public: sf::IntRect $ritual_closed_rect{{0,0},{380,720}}; sf::IntRect $ritual_open_rect{{380 * 2,0},{380,720}}; components::Animation $ritual_anim; guecs::UI $gui; GameLevel $level; textures::SpriteTexture $ritual_ui; UI(GameLevel level); void event(Event ev); void START(Event); void OPENED(Event); void CLOSED(Event); void OPENING(Event); void CLOSING(Event); bool mouse(float x, float y, bool hover); void render(sf::RenderWindow &window); bool is_open(); }; } }