Files
jminos/src/Core/Menu.h
zulianc 8342bf3969
All checks were successful
Linux arm64 / Build (push) Successful in 12m30s
petits [[nodiscard]] pour le fun
2025-06-19 22:31:41 +02:00

74 lines
2.0 KiB
C++

#pragma once
#include "PiecesList.h"
#include "Player.h"
#include "Game.h"
static const int FRAMES_PER_SECOND = 60; // the number of frames per second, all the values in the app were choosen with this number in mind
/**
* The interface between an UI and the core of the app
*/
class Menu {
private:
std::shared_ptr<PiecesList> piecesList; // the list of pieces used by the app
Player playerControls; // the controls of the player
int boardWidth; // the width of the board for the next game
int boardHeight; // the height of the board for the next game
public:
/**
* Initializes the board size and player controls to their default values
*/
Menu();
/**
* Starts a new game with the current settings
* @return The game that has been created
*/
Game startGame(Gamemode gamemode) const;
/**
* Sets the width of the board, which must be greater than 0
* @return If the width has been changed
*/
bool setBoardWidth(int width);
/**
* Sets the height of the board, which must be greater than 0
* @return If the height has been changed
*/
bool setBoardHeight(int height);
/**
* @return The width of the board
*/
int getBoardWidth() const;
/**
* @return The height of the board
*/
int getBoardHeight() const;
/**
* @return A reference to the player's controls
*/
Player& getPlayerControls();
/**
* @return A reference to the player's controls
*/
const Player& readPlayerControls() const;
/**
* @return A reference to the pieces list
*/
PiecesList& getPiecesList();
/**
* @return A reference to the pieces list
*/
const PiecesList& readPiecesList() const;
};