Example #1
0
bool runMultiPlayerMenu(void)
{
	UDWORD id;

	id = widgRunScreen(psWScreen);						// Run the current set of widgets
	switch(id)
	{
	case FRONTEND_HOST:
		// don't pretend we are running a network game. Really do it!
		NetPlay.bComms = true; // use network = true
		NETdiscoverUPnPDevices();
		ingame.bHostSetup = true;
		bMultiPlayer = true;
		bMultiMessages = true;
		game.type = SKIRMISH;		// needed?
		lastTitleMode = MULTI;
		changeTitleMode(MULTIOPTION);
		break;
	case FRONTEND_JOIN:
		ingame.bHostSetup = false;
		if (getLobbyError() != ERROR_CHEAT && getLobbyError() != ERROR_KICKED)
		{
			setLobbyError(ERROR_NOERROR);
		}
		changeTitleMode(PROTOCOL);
		break;

	case FRONTEND_QUIT:
		changeTitleMode(TITLE);
		break;
	default:
		break;
	}

	widgDisplayScreen(psWScreen); // show the widgets currently running

	if (CancelPressed())
	{
		changeTitleMode(TITLE);
	}

	return true;
}
Example #2
0
// ///////////////// /////////////////////////////////////////////////
// Main Front end game loop.
TITLECODE titleLoop(void)
{
	TITLECODE RetCode = TITLECODE_CONTINUE;

	pie_SetDepthBufferStatus(DEPTH_CMP_ALWAYS_WRT_ON);
	pie_SetFogStatus(false);
	screen_RestartBackDrop();
	wzShowMouse(true);

	// When we first init the game, firstcall is true.
	if (firstcall)
	{
		firstcall = false;
		// First check to see if --host was given as a command line option, if not,
		// then check --join and if neither, run the normal game menu.
		if (hostlaunch)
		{
			NetPlay.bComms = true; // use network = true
			NetPlay.isUPNP_CONFIGURED = false;
			NetPlay.isUPNP_ERROR = false;
			ingame.bHostSetup = true;
			bMultiPlayer = true;
			bMultiMessages = true;
			NETinit(true);
			NETdiscoverUPnPDevices();
			game.type = SKIRMISH;
			changeTitleMode(MULTIOPTION);
			hostlaunch = false;			// reset the bool to default state.
		}
		else if (strlen(iptoconnect))
		{
			NetPlay.bComms = true; // use network = true
			NETinit(true);
			joinGame(iptoconnect, 0);
		}
		else
		{
			changeTitleMode(TITLE);			// normal game, run main title screen.
		}
		// Using software cursors (when on) for these menus due to a bug in SDL's SDL_ShowCursor()
		wzSetCursor(CURSOR_DEFAULT);
	}

	if (titleMode != MULTIOPTION && titleMode != MULTILIMIT && titleMode != STARTGAME)
	{
		screen_disableMapPreview();
	}

	switch (titleMode) // run relevant title screen code.
	{
	// MULTIPLAYER screens
	case PROTOCOL:
		runConnectionScreen(); // multiplayer connection screen.
		break;
	case MULTIOPTION:
		runMultiOptions();
		break;
	case GAMEFIND:
		runGameFind();
		break;
	case MULTI:
		runMultiPlayerMenu();
		break;
	case MULTILIMIT:
		runLimitScreen();
		break;
	case KEYMAP:
		runKeyMapEditor();
		break;

	case TITLE:
		runTitleMenu();
		break;

	case CAMPAIGNS:
		runCampaignSelector();
		break;

	case SINGLE:
		runSinglePlayerMenu();
		break;

	case TUTORIAL:
		runTutorialMenu();
		break;

	case CREDITS:
		runCreditsScreen();
		break;

	case OPTIONS:
		runOptionsMenu();
		break;

	case GAME:
		runGameOptionsMenu();
		break;


	case GRAPHICS_OPTIONS:
		runGraphicsOptionsMenu();
		break;

	case AUDIO_OPTIONS:
		runAudioOptionsMenu();
		break;

	case VIDEO_OPTIONS:
		runVideoOptionsMenu();
		break;

	case MOUSE_OPTIONS:
		runMouseOptionsMenu();
		break;

	case QUIT:
		RetCode = TITLECODE_QUITGAME;
		break;

	case STARTGAME:
	case LOADSAVEGAME:
		if (titleMode == LOADSAVEGAME)
		{
			RetCode = TITLECODE_SAVEGAMELOAD;
		}
		else
		{
			RetCode = TITLECODE_STARTGAME;
		}
		return RetCode;			// don't flip!

	case SHOWINTRO:
		pie_SetFogStatus(false);
		pie_ScreenFlip(CLEAR_BLACK);
		changeTitleMode(TITLE);
		RetCode = TITLECODE_SHOWINTRO;
		break;

	default:
		debug(LOG_FATAL, "unknown title screen mode");
		abort();
	}
	NETflush();  // Send any pending network data.

	audio_Update();

	pie_SetFogStatus(false);
	pie_ScreenFlip(CLEAR_BLACK);//title loop

	if ((keyDown(KEY_LALT) || keyDown(KEY_RALT)) && keyPressed(KEY_RETURN))
	{
		war_setFullscreen(!war_getFullscreen());
		wzToggleFullscreen();
	}
	return RetCode;
}