#ifndef STATE_H #define STATE_H #include #include #include #include class Application; class State { public: explicit State(sf::RenderWindow& window, Application *application); virtual ~State() = 0; virtual void draw() = 0; virtual bool update(const sf::Time& dt) = 0; virtual bool processInput() = 0; enum class Tag { Menu, Game }; protected: sf::RenderWindow& render_window; Application *app; }; using StateUPtr = std::unique_ptr; using StateSPtr = std::shared_ptr; #endif // STATE_H