added distribution menu

This commit is contained in:
2025-03-29 21:57:27 +01:00
parent 7151be0b1a
commit 314b7a8488
12 changed files with 207 additions and 40 deletions

View File

@@ -1,6 +1,7 @@
#include "GamePiecesAppMenu.h"
#include "AppMenu.h"
#include "GameDistributionAppMenu.h"
#include "../PlayerCursor.h"
#include <stack>
@@ -10,19 +11,61 @@
GamePiecesAppMenu::GamePiecesAppMenu(std::shared_ptr<MenuStack> menuStack, std::shared_ptr<Settings> settings, std::shared_ptr<sf::RenderWindow> renderWindow) :
AppMenu(menuStack, settings, renderWindow),
playerCursor({1}) {
playerCursor({1, 1}) {
for (int i = 1; i <= MAXIMUM_PIECES_SIZE; i++) {
this->playerCursor.addRow(i + 1, this->settings->getMenu().readPiecesList().getNumberOfPieces(i) + 4);
}
}
void GamePiecesAppMenu::computeFrame() {
this->updateMetaBinds();
this->playerCursor.updatePosition();
if (this->enterReleased) {
if (this->playerCursor.getPosition().y == 0) {
this->menuStack->push(std::make_shared<GameDistributionAppMenu>(this->menuStack, this->settings, this->renderWindow));
}
if (this->playerCursor.getPosition().y > 1) {
//TODO
}
}
if (this->escReleased) {
this->menuStack->pop();
if (this->playerCursor.getPosition().y == 1) {
//TODO
}
else {
this->menuStack->pop();
}
}
}
void GamePiecesAppMenu::drawFrame() const {
this->renderWindow->clear(sf::Color(200, 200, 200));
sf::Text text(this->pressStartFont, "", this->settings->getWindowSizeMultiplier() * 2);
text.setFillColor(sf::Color(0, 0, 0));
text.setOutlineColor(sf::Color(255, 255, 255));
this->placeTitle(text, {}, "PIECES SELECT", 5.f, {});
if (this->playerCursor.getPosition().y == 0) {
this->placeText(text, this->playerCursor, "PIECES DISTRIBUTION", 5.f, 15.f, sf::Vector2u{0, 0});
// draw pieces line
this->drawRow(1, 35.f);
this->drawRow(2, 45.f);
}
else {
// draw pieces line
int firstElem = std::clamp(((int) this->playerCursor.getPosition().y) - 2, 1, MAXIMUM_PIECES_SIZE - 1);
this->drawRow(firstElem, 25.f);
this->drawRow(firstElem, 35.f);
this->drawRow(firstElem, 45.f);
}
this->renderWindow->display();
}
void GamePiecesAppMenu::drawRow(int piecesSize, float yPos) const {
//TODO
}