Beispiel #1
0
void Drawer::processLoadingScreen(irr::f32 p,const wchar_t* msg,bool update){
	if(msg)
		this->msg = msg;
	process += p;
	if(process > 100){
		process = 100;
	}
	if(update)
		drawLoadingScreen();
}
//Pelin päälooppi, koko peli pyörii tässä.
void StateHandler::loopGame()
{	
	Event currentEvent;
	if (window.pollEvent(currentEvent))
	{
		if (currentEvent.type == Event::Closed)
			state = exit;
	}

	Controls::get()->update(window);
	switch (state)
	{
		case menu:
		{
			
			MainMenuState menuMode;
			menuMode.runMainMenuState();
			MainMenuState::gameState result = menuMode.state;

			if (result != MainMenuState::exit){
				drawLoadingScreen();
				merge = new Merge();
			}
				

			switch (result)
			{
			case MainMenuState::play:
				state = play;
				break;
			case MainMenuState::edit:
				state = edit;
				break;
			case MainMenuState::mergeState:
				state = mergeState;
				break;
			case MainMenuState::exit:
				state = exit;
				break;
			}
			break;
		}

		case play:
		{
			PlayState playMode;
			if (playMode.runPlayState())
				state = menu;
			else
				state = exit;
			break;
		}
		case edit:
		{
			editState->loop();
				if (Controls::get()->kIsPressed(sf::Keyboard().Escape))
				{
					state = menu;
				}
				break;
		}
		case mergeState:
			
			merge->loop(dt);
			handleTime();
			if (Controls::get()->kIsPressed(sf::Keyboard().Escape))
			{
				state = menu;
			}
			break;
	}
	
}