void JoinNetworkGame(void) { // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; _pGame->gm_strNetworkProvider = "TCP/IP Client"; if (_pGame->JoinGame(CNetworkSession(_pGame->gam_strJoinAddress))) { StopMenus(); _gmRunningGameMode = GM_NETWORK; } else { if (_pNetwork->ga_strRequiredMod != "") { extern CTFileName _fnmModToLoad; extern CTString _strModServerJoin; char strModName[256] = { 0 }; char strModURL[256] = { 0 }; _pNetwork->ga_strRequiredMod.ScanF("%250[^\\]\\%s", &strModName, &strModURL); _fnmModSelected = CTString(strModName); _strModURLSelected = strModURL; if (_strModURLSelected = "") { _strModURLSelected = "http://www.croteam.com/mods/Old"; } _strModServerSelected.PrintF("%s:%s", _pGame->gam_strJoinAddress, _pShell->GetValue("net_iPort")); extern void ModConnectConfirm(void); ModConnectConfirm(); } _gmRunningGameMode = GM_NONE; } }
void StartNetworkGame(void) { // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; CTFileName fnWorld = _pGame->gam_strCustomLevel; _pGame->gm_strNetworkProvider = "TCP/IP Server"; CUniversalSessionProperties sp; _pGame->SetMultiPlayerSession(sp); if (_pGame->NewGame(_pGame->gam_strSessionName, fnWorld, sp)) { StopMenus(); _gmRunningGameMode = GM_NETWORK; // if starting a dedicated server if (_pGame->gm_MenuSplitScreenCfg == CGame::SSC_DEDICATED) { // pull down the console extern INDEX sam_bToggleConsole; sam_bToggleConsole = TRUE; } } else { _gmRunningGameMode = GM_NONE; } }
static void StopCurrentGame(void) { _pGame->StopGame(); _gmRunningGameMode = GM_NONE; StopMenus(TRUE); StartMenus(""); }
// ------------------------ CSinglePlayerNewMenu implementation void StartSinglePlayerGame(void) { _pGame->gm_StartSplitScreenCfg = CGame::SSC_PLAY1; _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_iSinglePlayer; _pGame->gm_aiStartLocalPlayers[1] = -1; _pGame->gm_aiStartLocalPlayers[2] = -1; _pGame->gm_aiStartLocalPlayers[3] = -1; _pGame->gm_strNetworkProvider = "Local"; CUniversalSessionProperties sp; _pGame->SetSinglePlayerSession(sp); if (_pGame->NewGame(_pGame->gam_strCustomLevel, _pGame->gam_strCustomLevel, sp)) { StopMenus(); _gmRunningGameMode = GM_SINGLE_PLAYER; } else { _gmRunningGameMode = GM_NONE; } }
void StartSplitScreenGame(void) { // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; CTFileName fnWorld = _pGame->gam_strCustomLevel; _pGame->gm_strNetworkProvider = "Local"; CUniversalSessionProperties sp; _pGame->SetMultiPlayerSession(sp); if (_pGame->NewGame(fnWorld.FileName(), fnWorld, sp)) { StopMenus(); _gmRunningGameMode = GM_SPLIT_SCREEN; } else { _gmRunningGameMode = GM_NONE; } }
// ------------------------ CInGameMenu implementation // start load/save menus depending on type of game running static void QuickSaveFromMenu() { _pShell->SetINDEX("gam_bQuickSave", 2); // force save with reporting StopMenus(TRUE); }