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(); }
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); }