Skip to content

Commit

Permalink
GameExecutable: Move some stuff from Menu.cpp into files PART V
Browse files Browse the repository at this point in the history
Now it's 4463 lines!
  • Loading branch information
zcaliptium committed Mar 14, 2016
1 parent 16990d7 commit 2fcc548
Show file tree
Hide file tree
Showing 12 changed files with 642 additions and 545 deletions.
151 changes: 151 additions & 0 deletions Sources/SeriousSam/MNetworkStart.cpp
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();
}
15 changes: 15 additions & 0 deletions Sources/SeriousSam/MNetworkStart.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,25 @@
#endif

#include "GameMenu.h"
#include "MGButton.h"
#include "MGEdit.h"
#include "MGTitle.h"
#include "MGTrigger.h"


class CNetworkStartMenu : public CGameMenu {
public:
CMGTitle gm_mgTitle;
CMGEdit gm_mgSessionName;
CMGTrigger gm_mgGameType;
CMGTrigger gm_mgDifficulty;
CMGButton gm_mgLevel;
CMGTrigger gm_mgMaxPlayers;
CMGTrigger gm_mgWaitAllPlayers;
CMGTrigger gm_mgVisible;
CMGButton gm_mgGameOptions;
CMGButton gm_mgStart;

void Initialize_t(void);
void StartMenu(void);
void EndMenu(void);
Expand Down
115 changes: 115 additions & 0 deletions Sources/SeriousSam/MSelectPlayers.cpp
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();
}
20 changes: 20 additions & 0 deletions Sources/SeriousSam/MSelectPlayers.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,32 @@
#endif

#include "GameMenu.h"
#include "MGButton.h"
#include "MGChangePlayer.h"
#include "MGTitle.h"
#include "MGTrigger.h"


class CSelectPlayersMenu : public CGameMenu {
public:
BOOL gm_bAllowDedicated;
BOOL gm_bAllowObserving;

CMGTitle gm_mgTitle;

CMGTrigger gm_mgDedicated;
CMGTrigger gm_mgObserver;
CMGTrigger gm_mgSplitScreenCfg;

CMGChangePlayer gm_mgPlayer0Change;
CMGChangePlayer gm_mgPlayer1Change;
CMGChangePlayer gm_mgPlayer2Change;
CMGChangePlayer gm_mgPlayer3Change;

CMGButton gm_mgNotes;

CMGButton gm_mgStart;

void Initialize_t(void);
void StartMenu(void);
void EndMenu(void);
Expand Down
Loading

0 comments on commit 2fcc548

Please sign in to comment.