#pragma once #include <stack> #include <memory> #include <functional> #include <SFML/Window/Event.hpp> class GUIState { 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() const = 0; virtual void enter() = 0; virtual void leave() = 0; };