Ejemplo n.º 1
0
void AGOL_MainWindow::OnLaunch(AG_Event *event)
{
	GameCommand cmd;
	string      sAddr;
	string      waddirs;
	string      extraParams;
	int         ndx = GetSelectedServerArrayIndex();

	// No selection
	if(ndx < 0)
		return;

	if(GuiConfig::Read("WadDirs", waddirs))
	{
		char cwd[AG_PATHNAME_MAX];

		if(!AG_GetCWD(cwd, AG_PATHNAME_MAX))
			cmd.AddParameter("-waddir", cwd);
	}
	else
		cmd.AddParameter("-waddir", waddirs);

	if(!GuiConfig::Read("ExtraParams", extraParams))
		cmd.AddParameter(extraParams);


	QServer[ndx].GetLock();
	sAddr = QServer[ndx].GetAddress();
	QServer[ndx].Unlock();

	if(!sAddr.size())
		return;

	cmd.AddParameter("-connect", sAddr);

	cmd.Launch();
}
Ejemplo n.º 2
0
void AGOL_Solo::OnLaunch(AG_Event *event)
{
	AG_TlistItem *selitem;
	GameCommand   cmd;
	string        wad;
	string        waddirs;
	string        extraParams;

	// Add the iwad parameter
	if(((selitem = AG_TlistSelectedItem(IwadList)) != NULL) && (strlen(selitem->text) > 0))
		cmd.AddParameter("-iwad", selitem->text);
	else // We can't continue if no iwad is selected
	{
		AG_TextErrorS("You must choose an IWAD!");
		return;
	}

	// Get the waddir option
	if(GuiConfig::Read("WadDirs", waddirs))
	{
		char cwd[AG_PATHNAME_MAX];

		// No waddirs are set so use CWD
		if(!AG_GetCWD(cwd, AG_PATHNAME_MAX))
			cmd.AddParameter("-waddir", cwd);
	}
	else
		cmd.AddParameter("-waddir", waddirs);

	// If there are selected items traverse the wad list
	if(AG_TlistSelectedItem(PwadList))
	{
		// WAD files
		if(PWadListContainsFileType("WAD"))
		{
			cmd.AddParameter("-file");

			// Find any selected pwads
			for(int i = 1; i <= PwadList->nitems; i++)
			{
				selitem = AG_TlistFindByIndex(PwadList, i);

				if(selitem && selitem->selected && strlen(selitem->text) > 0)
				{
					if(PwadIsFileType(selitem->text, "WAD"))
						cmd.AddParameter(selitem->text);
				}
			}
		}
		// Dehacked patches
		if(PWadListContainsFileType("DEH"))
		{
			cmd.AddParameter("-deh");

			// Find any selected pwads
			for(int i = 1; i <= PwadList->nitems; i++)
			{
				selitem = AG_TlistFindByIndex(PwadList, i);

				if(selitem && selitem->selected && strlen(selitem->text) > 0)
				{
					if(PwadIsFileType(selitem->text, "DEH"))
						cmd.AddParameter(selitem->text);
				}
			}
		}
		// BEX patches
		if(PWadListContainsFileType("BEX"))
		{
			cmd.AddParameter("-bex");

			// Find any selected pwads
			for(int i = 1; i <= PwadList->nitems; i++)
			{
				selitem = AG_TlistFindByIndex(PwadList, i);

				if(selitem && selitem->selected && strlen(selitem->text) > 0)
				{
					if(PwadIsFileType(selitem->text, "BEX"))
						cmd.AddParameter(selitem->text);
				}
			}
		}
	}

	// Add the extra parameters
	if(!GuiConfig::Read("ExtraParams", extraParams))
		cmd.AddParameter(extraParams);

	// Launch the game
	cmd.Launch();

	// Detach and destroy the window + contents
	AG_ObjectDetach(SoloGameDialog);

	// Call the close handler if one was set
	if(CloseEventHandler)
		CloseEventHandler->Trigger(event);
}