Example #1
0
void main(void)
{
	Model* model = new CMainMenuModel();
	View* view = new CMainMenuView(model); // this is the view that changes
	Controller* controller = new CMainMenuController(model, view);

	// Initialize GLFW
	if (!glfwInit()) exit(EXIT_FAILURE);
	controller->Init();
	glewExperimental = true; // Needed for core profile
	// Initialize GLEW
	if (glewInit() != GLEW_OK) exit(EXIT_FAILURE);
	view->Init();
	model->Init();

	GLFWwindow *window = view->getWindow();

	MenuBGM1->play2D("../irrKlang/media/Menu.mp3", true);

	int n = true;
	while(true)
	{
		try{
			controller->RunLoop();
		}
		catch (int state)
		{
			delete model; model = NULL;
			delete view; view = NULL;
			delete controller; controller = NULL;

			switch (state)
			{
			case -2:
				controller->ExitKey = true;
				n = false;
				break;
			case -1:
				MenuBGM1->stopAllSounds();
				model = new CMainMenuModel();
				view = new CMainMenuView(model);
				controller = new CMainMenuController(model, view);
				MenuBGM1->play2D("../irrKlang/media/Menu.mp3", true);
				break;
			case 0:
				MenuBGM1->stopAllSounds();
				model = new NDlvl();
				MenuBGM1->play2D("../irrKlang/media/Drums.mp3", true);
				break;
			case 1:
				MenuBGM1->stopAllSounds();
				model = new TutLvl2();
				MenuBGM1->play2D("../irrKlang/media/Drums.mp3", true);
				break;
			case 2:
				MenuBGM1->stopAllSounds();
				model = new TutLvl3();
				MenuBGM1->play2D("../irrKlang/media/Drums.mp3", true);
				break;
			case 3:
				MenuBGM1->stopAllSounds();
				model = new StoryModel1();
				MenuBGM1->play2D("../irrKlang/media/Drums.mp3", true);
				break;
			case 4:
				MenuBGM1->stopAllSounds();
				model = new JSlvl();
				MenuBGM1->play2D("../irrKlang/media/level5.mp3", true);
				break;
			case 5:
				MenuBGM1->stopAllSounds();
				model = new jslvl2();
				MenuBGM1->play2D("../irrKlang/media/level5.mp3", true);
				break;
			case 6:
				MenuBGM1->stopAllSounds();
				model = new RyLevel();
				MenuBGM1->play2D("../irrKlang/media/level5.mp3", true);
				break;
			}

			if(state > -1)
			{
				view = new GameView(model);
				controller = new GameController(model, view);
			}

			if (!n) break;

			// Initialize GLFW
			if (!glfwInit()) exit(EXIT_FAILURE);
			controller->Init(window);
			glewExperimental = true; // Needed for core profile
			// Initialize GLEW
			if (glewInit() != GLEW_OK) exit(EXIT_FAILURE);
			view->Init();
			model->Init();
		}
	}

	if (model != NULL) delete model;
	if (view != NULL) {delete view;}
	if (controller != NULL) delete controller;
	delete window;
	delete MenuBGM1;

}