#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; // 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 pieces list */ PiecesList& getPiecesList(); };