#include "GameSettingsAppMenu.h" #include "AppMenu.h" #include "GamePlayingAppMenu.h" #include "PlayerCursor.h" #include #include #include #include GameSettingsAppMenu::GameSettingsAppMenu(std::shared_ptr menuStack, std::shared_ptr settings, std::shared_ptr renderWindow) : AppMenu(menuStack, settings, renderWindow), playerCursor(std::vector({2, 3, 1})) { } void GameSettingsAppMenu::computeFrame() { this->updateMetaBinds(); this->playerCursor.updatePosition(); switch (this->playerCursor.getPosition().y) { case 1 : { switch (this->playerCursor.getPosition().x) { case 0 : {this->settings->setGamemode(SPRINT); break;} case 1 : {this->settings->setGamemode(MARATHON); break;} case 2 : {this->settings->setGamemode(ULTRA); break;} } break; } case 2 : { switch (this->playerCursor.getPosition().x) { case 0 : {this->settings->setGamemode(MASTER); break;} case 1 : break; //TODO case 2 : break; //TODO } break; } } if (this->enterReleased) { if (this->playerCursor.getPosition().y == 0) { //TODO } if (this->playerCursor.getPosition().y > 0) { this->menuStack->push(std::make_shared(this->menuStack, this->settings, this->renderWindow)); } } if (this->escReleased) { this->menuStack->pop(); } } void GameSettingsAppMenu::drawFrame() const { this->renderWindow->clear(sf::Color(200, 200, 200)); sf::Font font("data/fonts/pressstart/prstartk.ttf"); sf::Text text(font, "", this->settings->getWindowSizeMultiplier() * 2); text.setFillColor(sf::Color(0, 0, 0)); text.setOutlineColor(sf::Color(255, 255, 255)); text.setString("GAME SETTINGS"); text.setOrigin(text.getLocalBounds().getCenter()); text.setPosition(sf::Vector2f({(float) this->settings->getWindowSizeMultiplier() * 40, (float) this->settings->getWindowSizeMultiplier() * 5})); this->renderWindow->draw(text); this->placeText(text, "PIECES SELECT", 5.f, 15.f, 0, 0); this->placeText(text, "BOARD SELECT", 40.f, 15.f, 1, 0); this->placeText(text, "SPRINT", 5.f, 25.f, 0, 1); this->placeText(text, "MARATHON", 25.f, 25.f, 1, 1); this->placeText(text, "ULTRA", 50.f, 25.f, 2, 1); this->placeText(text, "MASTER", 5.f, 35.f, 0, 2); this->placeText(text, "TODO", 25.f, 35.f, 1, 2); this->placeText(text, "TODO", 50.f, 35.f, 2, 2); this->renderWindow->display(); } void GameSettingsAppMenu::placeText(sf::Text& text, const sf::String& string, float xPos, float yPos, unsigned int xCursorOutline, unsigned int yCursorOutline) const { float sizeMultiplier = this->settings->getWindowSizeMultiplier(); text.setString(string); text.setOutlineThickness((this->playerCursor.getPosition().x == xCursorOutline && this->playerCursor.getPosition().y == yCursorOutline) ? (sizeMultiplier / 2) : 0); text.setOrigin(sf::Vector2f({0, text.getLocalBounds().size.y / 2})); text.setPosition(sf::Vector2f({sizeMultiplier * xPos, sizeMultiplier * yPos})); this->renderWindow->draw(text); }