#pragma once #include "../Settings.h" #include "../PlayerCursor.h" #include #include #include #include class AppMenu; using MenuStack = std::stack>; class AppMenu { protected: std::shared_ptr menuStack; std::shared_ptr settings; std::shared_ptr renderWindow; bool enterPressed = false; bool enterReleased = false; bool escPressed = false; bool escReleased = false; sf::Font pressStartFont; public: AppMenu(std::shared_ptr menuStack, std::shared_ptr settings, std::shared_ptr renderWindow); virtual void computeFrame() = 0; virtual void drawFrame() const = 0; protected: void updateMetaBinds(); void placeText(sf::Text& text, const std::optional& playerCursor, const sf::String& string, float xPos, float yPos, const std::optional& cursorPos) const; void placeTitle(sf::Text& text, const std::optional& playerCursor, const sf::String& string, float yPos, const std::optional& cursorPos) const; sf::Color getColorOfBlock(Block block, int luminosityShift) const; };