#pragma once #include #include #include #include #include #include class GUIState : public sf::Drawable { public: enum Tag { SPLASH_SCREEN, MAIN_MENU, GAME_PICKER, GAME, EDITOR_PICKER, EDITOR, SETTINGS, AMOUNT }; virtual ~GUIState() = default; virtual void input(const sf::Event& event) = 0; virtual void update(const sf::Time& dt) = 0; virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const override = 0; virtual void enter(sf::Vector2u&& render_size) = 0; virtual void leave() = 0; };