• Fichier: Main.cpp
  • Path: /dungeon_ascii/DungeonASCII/Main.cpp
  • File size: 2.74 KB
  • MIME-type: text/x-c
  • Charset: utf-8
 
Retour
#include "Main.h"
#include "Save.h"

int main()
{
	int key_code = 0;

	bool gameRun = true;
	short *gameState = new short(1);

	Player *player = 0;
	Sector *sector = 0;

	Save *save = new Save();

	Display *display = new Display();

	while (gameRun)
	{
		if (*gameState == 0)
		{
			if (_kbhit())
			{
				key_code = _getch();

				switch (key_code)
				{
				case KeyCode::LEFT:
					player->move(-1, 0, sector);
					display->render(sector, player);
					break;

				case KeyCode::RIGHT:
					player->move(1, 0, sector);
					display->render(sector, player);
					break;

				case KeyCode::UP:
					player->move(0, -1, sector);
					display->render(sector, player);
					break;

				case KeyCode::DOWN:
					player->move(0, 1, sector);
					display->render(sector, player);
					break;

				case KeyCode::ESCAPE:
					*gameState = 4;
					break;
				}
			}
		}
		else if(*gameState == 1)
		{
			std::string playerName;

			int menuOption = display->showHomePage(save);
			switch (menuOption)
			{
			case 1: // Créer nouvelle partie
				std::cin >> playerName;

				player = new Player(playerName, 9, 3);
				sector = new Sector("secteur1");
				sector->loadMap(player, gameState);

				save->saveGameFile(player, sector, true);

				display->render(sector, player);
				*gameState = 0;
			break;

			case 0: // Quitter
				gameRun = false;
				break;

			default: // Charger partie
				save->loadGameFile(&player, &sector, gameState, menuOption - 2);

				display->render(sector, player);
				*gameState = 0;
				break;
			}
		}
		else if (*gameState == 4)
		{
			int menuOption = display->showInGameMenu();
			switch (menuOption)
			{
			case 1:
				display->render(sector, player);
				*gameState = 0;
				break;
			case 2:
				save->loadGameFile(&player, &sector, gameState);
				display->render(sector, player);
				*gameState = 0;
				break;
			case 3:
				save->saveGameFile(player, sector);
				break;
			case 0:
				*gameState = 1;
				break;
			}
		}
		else
		{
			std::string playerName;

			int menuOption = display->showSuccessPage(gameState);
			switch (menuOption)
			{
			case 1: // Recommencer nouvelle partie (écrase la présente sauvegarde)
				std::cin >> playerName;

				*player = Player(playerName, 9, 3);
				*sector = Sector("secteur1");
				sector->loadMap(player, gameState);

				save->saveGameFile(player, sector);

				display->render(sector, player);
				*gameState = 0;
			break;
			
			case 0: // Retour accueil
				*gameState = 1;
				break;
			}
			
		}
	}

	delete player;
	delete sector;
	delete save;
	delete display;
	delete gameState;

	player = 0;
	sector = 0;
	save = 0;
	display = 0;
	gameState = 0;

	return 0;
}