Skip to content
Snippets Groups Projects
Commit ce0622fd authored by Lenny Siol's avatar Lenny Siol
Browse files

Add: Menu class, displays a small console menu

parent 79080a4b
No related branches found
No related tags found
1 merge request!16Feature: Console start menu
#include "Menu.h"
Menu::Menu()
{
//ctor
}
Menu::~Menu()
{
//dtor
}
void Menu::init()
{
savesystem = Savesystem::Instance();
}
void Menu::displayMenu()
{
std::cout<<"------------------"<<std::endl;
std::cout<<"[1] Start Game"<<std::endl;
std::cout<<"[2] Highscores"<<std::endl;
std::cout<<"[3] Settings"<<std::endl;
std::cout<<"[4] Quit"<<std::endl;
std::cout<<"------------------"<<std::endl;
int i;
std::cin >> i;
switch(i)
{
case 1:
runGame();
break;
case 2:
highscores();
break;
case 3:
settings();
break;
case 4:
quit();
}
}
void Menu::runGame()
{
//Start clock
auto start = std::chrono::system_clock::now();
//FrameTimer
Timer* mTimer;
const int FRAME_RATE = 120;
mTimer = Timer::Instance();
//Init new game
game = new Game();
game->init("Space-Shooter", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, false);
//Game loop
while(game->running()){
//Cap framerate
mTimer->update();
//handle input
game->handleEvent();
//Render with set framerate
if(mTimer->getDeltaTime() >= 1.0f/FRAME_RATE)
{
game->update();
game->render();
mTimer->reset();
}
}
//cleanup
mTimer->release();
mTimer = NULL;
game->clean();
//Stop clock
auto end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds = (end-start);
std::time_t endTime = std::chrono::system_clock::to_time_t(end);
//Formatting
const char *s = std::ctime(&endTime);
std::string timeAndDate(s);
timeAndDate = savesystem->removeChar(timeAndDate);
std::cout<<"Please enter your name"<<std::endl;
std::string str;
std::getline(std::cin, str);
savesystem->load();
Score *score = new Score(game->getGameScore(), str, timeAndDate);
savesystem->add(score);
savesystem->save();
savesystem->release();
savesystem = NULL;
displayMenu();
}
void Menu::highscores()
{
savesystem->load();
std::cout<<"------------------"<<std::endl;
std::cout<<"[01] "<< savesystem->scores[0]->currentScore <<" "<< savesystem->scores[0]->playerName << " " << savesystem->scores[0]->timeAndDate << std::endl;
std::cout<<"[02] "<< savesystem->scores[1]->currentScore <<" "<< savesystem->scores[1]->playerName << " " << savesystem->scores[1]->timeAndDate << std::endl;
std::cout<<"[03] "<< savesystem->scores[2]->currentScore <<" "<< savesystem->scores[2]->playerName << " " << savesystem->scores[2]->timeAndDate << std::endl;
std::cout<<"[04] "<< savesystem->scores[3]->currentScore <<" "<< savesystem->scores[3]->playerName << " " << savesystem->scores[3]->timeAndDate << std::endl;
std::cout<<"[05] "<< savesystem->scores[4]->currentScore <<" "<< savesystem->scores[4]->playerName << " " << savesystem->scores[4]->timeAndDate << std::endl;
std::cout<<"[06] "<< savesystem->scores[5]->currentScore <<" "<< savesystem->scores[5]->playerName << " " << savesystem->scores[5]->timeAndDate << std::endl;
std::cout<<"[07] "<< savesystem->scores[6]->currentScore <<" "<< savesystem->scores[6]->playerName << " " << savesystem->scores[6]->timeAndDate << std::endl;
std::cout<<"[08] "<< savesystem->scores[7]->currentScore <<" "<< savesystem->scores[7]->playerName << " " << savesystem->scores[7]->timeAndDate << std::endl;
std::cout<<"[09] "<< savesystem->scores[8]->currentScore <<" "<< savesystem->scores[8]->playerName << " " << savesystem->scores[8]->timeAndDate << std::endl;
std::cout<<"[10] "<< savesystem->scores[9]->currentScore <<" "<< savesystem->scores[9]->playerName << " " << savesystem->scores[9]->timeAndDate << std::endl;
std::cout<<"------------------"<<std::endl;
savesystem->release();
savesystem = NULL;
std::cout<<"------------------"<<std::endl;
std::cout<<"[0] Back"<<std::endl;
int i = 1;
while(i != 0)
{
std::cin >> i;
}
displayMenu();
}
void Menu::settings()
{
std::cout<<"------------------"<<std::endl;
std::cout<<"Set window width: (-1 leave as is)"<<std::endl;
int i;
std::cin >> i;
if(i =! -1)
{
width = i;
}
std::cout<<"------------------"<<std::endl;
std::cout<<"Set window height: (-1 leave as is)"<<std::endl;
int j;
std::cin >> j;
if(j =! -1)
{
height = j;
}
std::cout<<"------------------"<<std::endl;
std::cout<<"Enable fullscreen: (1 = true | 0 = false)"<<std::endl;
int k;
std::cin >> k;
k = k%2;
fullscreen = k;
displayMenu();
}
void Menu::quit()
{
isRunning = false;
}
#ifndef MENU_H
#define MENU_H
#include <chrono>
#include <ctime>
#include "../Savesystem/Savesystem.h"
#include "../Rendering/Timer.h"
#include "../Game/Game.h"
class Menu
{
public:
Menu();
virtual ~Menu();
void init();
void displayMenu();
void runGame();
void highscores();
void settings();
void quit();
bool isRunning = true;
private:
int width = 1280;
int height = 720;
bool fullscreen = false;
Game *game = nullptr;
Savesystem* savesystem;
};
#endif // MENU_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment