-
Notifications
You must be signed in to change notification settings - Fork 371
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
GameExecutable: Move some stuff from Menu.cpp into files PART V
Now it's 4463 lines!
- Loading branch information
1 parent
16990d7
commit 2fcc548
Showing
12 changed files
with
642 additions
and
545 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,151 @@ | ||
/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ | ||
|
||
#include "StdH.h" | ||
#include <Engine/CurrentVersion.h> | ||
#include "MenuPrinting.h" | ||
#include "LevelInfo.h" | ||
#include "MenuStuff.h" | ||
#include "MNetworkStart.h" | ||
|
||
#define TRIGGER_MG(mg, y, up, down, text, astr) \ | ||
mg.mg_pmgUp = &up; \ | ||
mg.mg_pmgDown = &down; \ | ||
mg.mg_boxOnScreen = BoxMediumRow(y); \ | ||
gm_lhGadgets.AddTail(mg.mg_lnNode); \ | ||
mg.mg_astrTexts = astr; \ | ||
mg.mg_ctTexts = sizeof(astr) / sizeof(astr[0]); \ | ||
mg.mg_iSelected = 0; \ | ||
mg.mg_strLabel = text; \ | ||
mg.mg_strValue = astr[0]; | ||
|
||
extern INDEX ctGameTypeRadioTexts; | ||
extern void UpdateNetworkLevel(INDEX iDummy); | ||
extern CTString astrGameTypeRadioTexts[20]; | ||
extern CTString astrDifficultyRadioTexts[6]; | ||
|
||
|
||
void CNetworkStartMenu::Initialize_t(void) | ||
{ | ||
// title | ||
gm_mgTitle.mg_boxOnScreen = BoxTitle(); | ||
gm_mgTitle.mg_strText = TRANS("START SERVER"); | ||
gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); | ||
|
||
// session name edit box | ||
gm_mgSessionName.mg_strText = _pGame->gam_strSessionName; | ||
gm_mgSessionName.mg_strLabel = TRANS("Session name:"); | ||
gm_mgSessionName.mg_ctMaxStringLen = 25; | ||
gm_mgSessionName.mg_pstrToChange = &_pGame->gam_strSessionName; | ||
gm_mgSessionName.mg_boxOnScreen = BoxMediumRow(1); | ||
gm_mgSessionName.mg_bfsFontSize = BFS_MEDIUM; | ||
gm_mgSessionName.mg_iCenterI = -1; | ||
gm_mgSessionName.mg_pmgUp = &gm_mgStart; | ||
gm_mgSessionName.mg_pmgDown = &gm_mgGameType; | ||
gm_mgSessionName.mg_strTip = TRANS("name the session to start"); | ||
gm_lhGadgets.AddTail(gm_mgSessionName.mg_lnNode); | ||
|
||
// game type trigger | ||
TRIGGER_MG(gm_mgGameType, 2, | ||
gm_mgSessionName, gm_mgDifficulty, TRANS("Game type:"), astrGameTypeRadioTexts); | ||
gm_mgGameType.mg_ctTexts = ctGameTypeRadioTexts; | ||
gm_mgGameType.mg_strTip = TRANS("choose type of multiplayer game"); | ||
gm_mgGameType.mg_pOnTriggerChange = &UpdateNetworkLevel; | ||
|
||
// difficulty trigger | ||
TRIGGER_MG(gm_mgDifficulty, 3, | ||
gm_mgGameType, gm_mgLevel, TRANS("Difficulty:"), astrDifficultyRadioTexts); | ||
gm_mgDifficulty.mg_strTip = TRANS("choose difficulty level"); | ||
|
||
// level name | ||
gm_mgLevel.mg_strText = ""; | ||
gm_mgLevel.mg_strLabel = TRANS("Level:"); | ||
gm_mgLevel.mg_boxOnScreen = BoxMediumRow(4); | ||
gm_mgLevel.mg_bfsFontSize = BFS_MEDIUM; | ||
gm_mgLevel.mg_iCenterI = -1; | ||
gm_mgLevel.mg_pmgUp = &gm_mgDifficulty; | ||
gm_mgLevel.mg_pmgDown = &gm_mgMaxPlayers; | ||
gm_mgLevel.mg_strTip = TRANS("choose the level to start"); | ||
gm_mgLevel.mg_pActivatedFunction = NULL; | ||
gm_lhGadgets.AddTail(gm_mgLevel.mg_lnNode); | ||
|
||
// max players trigger | ||
TRIGGER_MG(gm_mgMaxPlayers, 5, | ||
gm_mgLevel, gm_mgWaitAllPlayers, TRANS("Max players:"), astrMaxPlayersRadioTexts); | ||
gm_mgMaxPlayers.mg_strTip = TRANS("choose maximum allowed number of players"); | ||
|
||
// wait all players trigger | ||
TRIGGER_MG(gm_mgWaitAllPlayers, 6, | ||
gm_mgMaxPlayers, gm_mgVisible, TRANS("Wait for all players:"), astrNoYes); | ||
gm_mgWaitAllPlayers.mg_strTip = TRANS("if on, game won't start until all players have joined"); | ||
|
||
// server visible trigger | ||
TRIGGER_MG(gm_mgVisible, 7, | ||
gm_mgMaxPlayers, gm_mgGameOptions, TRANS("Server visible:"), astrNoYes); | ||
gm_mgVisible.mg_strTip = TRANS("invisible servers are not listed, cleints have to join manually"); | ||
|
||
// options button | ||
gm_mgGameOptions.mg_strText = TRANS("Game options"); | ||
gm_mgGameOptions.mg_boxOnScreen = BoxMediumRow(8); | ||
gm_mgGameOptions.mg_bfsFontSize = BFS_MEDIUM; | ||
gm_mgGameOptions.mg_iCenterI = 0; | ||
gm_mgGameOptions.mg_pmgUp = &gm_mgVisible; | ||
gm_mgGameOptions.mg_pmgDown = &gm_mgStart; | ||
gm_mgGameOptions.mg_strTip = TRANS("adjust game rules"); | ||
gm_mgGameOptions.mg_pActivatedFunction = NULL; | ||
gm_lhGadgets.AddTail(gm_mgGameOptions.mg_lnNode); | ||
|
||
// start button | ||
gm_mgStart.mg_bfsFontSize = BFS_LARGE; | ||
gm_mgStart.mg_boxOnScreen = BoxBigRow(7); | ||
gm_mgStart.mg_pmgUp = &gm_mgGameOptions; | ||
gm_mgStart.mg_pmgDown = &gm_mgSessionName; | ||
gm_mgStart.mg_strText = TRANS("START"); | ||
gm_lhGadgets.AddTail(gm_mgStart.mg_lnNode); | ||
gm_mgStart.mg_pActivatedFunction = NULL; | ||
|
||
|
||
|
||
} | ||
|
||
void CNetworkStartMenu::StartMenu(void) | ||
{ | ||
extern INDEX sam_bMentalActivated; | ||
gm_mgDifficulty.mg_ctTexts = sam_bMentalActivated ? 6 : 5; | ||
|
||
gm_mgGameType.mg_iSelected = Clamp(_pShell->GetINDEX("gam_iStartMode"), 0L, ctGameTypeRadioTexts - 1L); | ||
gm_mgGameType.ApplyCurrentSelection(); | ||
gm_mgDifficulty.mg_iSelected = _pShell->GetINDEX("gam_iStartDifficulty") + 1; | ||
gm_mgDifficulty.ApplyCurrentSelection(); | ||
|
||
_pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); | ||
|
||
INDEX ctMaxPlayers = _pShell->GetINDEX("gam_ctMaxPlayers"); | ||
if (ctMaxPlayers<2 || ctMaxPlayers>16) { | ||
ctMaxPlayers = 2; | ||
_pShell->SetINDEX("gam_ctMaxPlayers", ctMaxPlayers); | ||
} | ||
|
||
gm_mgMaxPlayers.mg_iSelected = ctMaxPlayers - 2; | ||
gm_mgMaxPlayers.ApplyCurrentSelection(); | ||
|
||
gm_mgWaitAllPlayers.mg_iSelected = Clamp(_pShell->GetINDEX("gam_bWaitAllPlayers"), 0L, 1L); | ||
gm_mgWaitAllPlayers.ApplyCurrentSelection(); | ||
|
||
gm_mgVisible.mg_iSelected = _pShell->GetINDEX("ser_bEnumeration"); | ||
gm_mgVisible.ApplyCurrentSelection(); | ||
|
||
UpdateNetworkLevel(0); | ||
|
||
CGameMenu::StartMenu(); | ||
} | ||
|
||
void CNetworkStartMenu::EndMenu(void) | ||
{ | ||
_pShell->SetINDEX("gam_iStartDifficulty", gm_mgDifficulty.mg_iSelected - 1); | ||
_pShell->SetINDEX("gam_iStartMode", gm_mgGameType.mg_iSelected); | ||
_pShell->SetINDEX("gam_bWaitAllPlayers", gm_mgWaitAllPlayers.mg_iSelected); | ||
_pShell->SetINDEX("gam_ctMaxPlayers", gm_mgMaxPlayers.mg_iSelected + 2); | ||
_pShell->SetINDEX("ser_bEnumeration", gm_mgVisible.mg_iSelected); | ||
|
||
CGameMenu::EndMenu(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ | ||
|
||
#include "StdH.h" | ||
#include <Engine/CurrentVersion.h> | ||
#include "MenuPrinting.h" | ||
#include "MSelectPlayers.h" | ||
|
||
#define ADD_GADGET( gd, box, up, dn, lf, rt, txt) \ | ||
gd.mg_boxOnScreen = box; \ | ||
gd.mg_pmgUp = up; \ | ||
gd.mg_pmgDown = dn; \ | ||
gd.mg_pmgLeft = lf; \ | ||
gd.mg_pmgRight = rt; \ | ||
gd.mg_strText = txt; \ | ||
gm_lhGadgets.AddTail(gd.mg_lnNode); | ||
|
||
#define TRIGGER_MG(mg, y, up, down, text, astr) \ | ||
mg.mg_pmgUp = &up; \ | ||
mg.mg_pmgDown = &down; \ | ||
mg.mg_boxOnScreen = BoxMediumRow(y); \ | ||
gm_lhGadgets.AddTail(mg.mg_lnNode); \ | ||
mg.mg_astrTexts = astr; \ | ||
mg.mg_ctTexts = sizeof(astr) / sizeof(astr[0]); \ | ||
mg.mg_iSelected = 0; \ | ||
mg.mg_strLabel = text; \ | ||
mg.mg_strValue = astr[0]; | ||
|
||
extern CTString astrNoYes[2]; | ||
extern CTString astrSplitScreenRadioTexts[4]; | ||
extern void SelectPlayersFillMenu(void); | ||
extern void SelectPlayersApplyMenu(void); | ||
|
||
void CSelectPlayersMenu::Initialize_t(void) | ||
{ | ||
// intialize split screen menu | ||
gm_mgTitle.mg_boxOnScreen = BoxTitle(); | ||
gm_mgTitle.mg_strText = TRANS("SELECT PLAYERS"); | ||
gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); | ||
|
||
TRIGGER_MG(gm_mgDedicated, 0, gm_mgStart, gm_mgObserver, TRANS("Dedicated:"), astrNoYes); | ||
gm_mgDedicated.mg_strTip = TRANS("select to start dedicated server"); | ||
gm_mgDedicated.mg_pOnTriggerChange = NULL; | ||
|
||
TRIGGER_MG(gm_mgObserver, 1, gm_mgDedicated, gm_mgSplitScreenCfg, TRANS("Observer:"), astrNoYes); | ||
gm_mgObserver.mg_strTip = TRANS("select to join in for observing, not for playing"); | ||
gm_mgObserver.mg_pOnTriggerChange = NULL; | ||
|
||
// split screen config trigger | ||
TRIGGER_MG(gm_mgSplitScreenCfg, 2, gm_mgObserver, gm_mgPlayer0Change, TRANS("Number of players:"), astrSplitScreenRadioTexts); | ||
gm_mgSplitScreenCfg.mg_strTip = TRANS("choose more than one player to play in split screen"); | ||
gm_mgSplitScreenCfg.mg_pOnTriggerChange = NULL; | ||
|
||
gm_mgPlayer0Change.mg_iCenterI = -1; | ||
gm_mgPlayer1Change.mg_iCenterI = -1; | ||
gm_mgPlayer2Change.mg_iCenterI = -1; | ||
gm_mgPlayer3Change.mg_iCenterI = -1; | ||
gm_mgPlayer0Change.mg_boxOnScreen = BoxMediumMiddle(4); | ||
gm_mgPlayer1Change.mg_boxOnScreen = BoxMediumMiddle(5); | ||
gm_mgPlayer2Change.mg_boxOnScreen = BoxMediumMiddle(6); | ||
gm_mgPlayer3Change.mg_boxOnScreen = BoxMediumMiddle(7); | ||
gm_mgPlayer0Change.mg_strTip = | ||
gm_mgPlayer1Change.mg_strTip = | ||
gm_mgPlayer2Change.mg_strTip = | ||
gm_mgPlayer3Change.mg_strTip = TRANS("select profile for this player"); | ||
gm_lhGadgets.AddTail(gm_mgPlayer0Change.mg_lnNode); | ||
gm_lhGadgets.AddTail(gm_mgPlayer1Change.mg_lnNode); | ||
gm_lhGadgets.AddTail(gm_mgPlayer2Change.mg_lnNode); | ||
gm_lhGadgets.AddTail(gm_mgPlayer3Change.mg_lnNode); | ||
|
||
gm_mgNotes.mg_boxOnScreen = BoxMediumRow(9.0); | ||
gm_mgNotes.mg_bfsFontSize = BFS_MEDIUM; | ||
gm_mgNotes.mg_iCenterI = -1; | ||
gm_mgNotes.mg_bEnabled = FALSE; | ||
gm_mgNotes.mg_bLabel = TRUE; | ||
gm_lhGadgets.AddTail(gm_mgNotes.mg_lnNode); | ||
gm_mgNotes.mg_strText = ""; | ||
|
||
/* // options button | ||
mgSplitOptions.mg_strText = TRANS("Game options"); | ||
mgSplitOptions.mg_boxOnScreen = BoxMediumRow(3); | ||
mgSplitOptions.mg_bfsFontSize = BFS_MEDIUM; | ||
mgSplitOptions.mg_iCenterI = 0; | ||
mgSplitOptions.mg_pmgUp = &mgSplitLevel; | ||
mgSplitOptions.mg_pmgDown = &mgSplitStartStart; | ||
mgSplitOptions.mg_strTip = TRANS("adjust game rules"); | ||
mgSplitOptions.mg_pActivatedFunction = &StartGameOptionsFromSplitScreen; | ||
gm_lhGadgets.AddTail( mgSplitOptions.mg_lnNode);*/ | ||
|
||
/* // start button | ||
mgSplitStartStart.mg_bfsFontSize = BFS_LARGE; | ||
mgSplitStartStart.mg_boxOnScreen = BoxBigRow(4); | ||
mgSplitStartStart.mg_pmgUp = &mgSplitOptions; | ||
mgSplitStartStart.mg_pmgDown = &mgSplitGameType; | ||
mgSplitStartStart.mg_strText = TRANS("START"); | ||
gm_lhGadgets.AddTail( mgSplitStartStart.mg_lnNode); | ||
mgSplitStartStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromSplit; | ||
*/ | ||
|
||
ADD_GADGET(gm_mgStart, BoxMediumRow(11), &gm_mgSplitScreenCfg, &gm_mgPlayer0Change, NULL, NULL, TRANS("START")); | ||
gm_mgStart.mg_bfsFontSize = BFS_LARGE; | ||
gm_mgStart.mg_iCenterI = 0; | ||
} | ||
|
||
void CSelectPlayersMenu::StartMenu(void) | ||
{ | ||
CGameMenu::StartMenu(); | ||
SelectPlayersFillMenu(); | ||
SelectPlayersApplyMenu(); | ||
} | ||
|
||
void CSelectPlayersMenu::EndMenu(void) | ||
{ | ||
SelectPlayersApplyMenu(); | ||
CGameMenu::EndMenu(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.