59 lines
1.2 KiB
C++
59 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include "../Core/Menu.h"
|
|
|
|
#include <map>
|
|
#include <string>
|
|
|
|
|
|
/**
|
|
* Textual interface for the app
|
|
*/
|
|
class TextApp {
|
|
private:
|
|
Menu gameMenu; // the interface with the core of the app
|
|
std::map<std::string, Action> keybinds; // what the player needs to type to perform in-game actions
|
|
|
|
public:
|
|
/**
|
|
* Initializes the app with default settings
|
|
*/
|
|
TextApp();
|
|
|
|
/**
|
|
* Runs the app
|
|
*/
|
|
void run();
|
|
|
|
private:
|
|
/**
|
|
* Sub-menu to select which pieces to play with
|
|
*/
|
|
void choosePieces();
|
|
|
|
/**
|
|
* Sub-menu to change the size of the board
|
|
*/
|
|
void chooseBoardSize();
|
|
|
|
/**
|
|
* Sub-menu to see the in-game controls
|
|
*/
|
|
void seeKeybinds() const;
|
|
|
|
/**
|
|
* Sets the controls to their default values
|
|
*/
|
|
void defaultKeybinds();
|
|
|
|
/**
|
|
* Starts a new game with the current settings
|
|
*/
|
|
void startGame() const;
|
|
|
|
/**
|
|
* Prints the current state of a game to the console
|
|
*/
|
|
void printGame(const Game& game) const;
|
|
};
|