GameExecutable: Move some stuff from Menu.cpp into files PART IV

Now it's 4901 lines! Progress!
This commit is contained in:
zcaliptium 2016-03-14 23:45:56 +03:00
parent 899d297f7b
commit 16990d713c
14 changed files with 507 additions and 389 deletions

View File

@ -0,0 +1,157 @@
/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */
#include "StdH.h"
#include <Engine/CurrentVersion.h>
#include "MenuPrinting.h"
#include "MCustomizeAxis.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 CTString astrNoYes[2];
extern void ControlsMenuOn();
extern void ControlsMenuOff();
void CCustomizeAxisMenu::Initialize_t(void)
{
// intialize axis menu
gm_mgTitle.mg_strText = TRANS("CUSTOMIZE AXIS");
gm_mgTitle.mg_boxOnScreen = BoxTitle();
gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode);
TRIGGER_MG(gm_mgActionTrigger, 0, gm_mgSmoothTrigger, gm_mgMountedTrigger, TRANS("ACTION"), astrNoYes);
gm_mgActionTrigger.mg_strTip = TRANS("choose action to customize");
TRIGGER_MG(gm_mgMountedTrigger, 2, gm_mgActionTrigger, gm_mgSensitivity, TRANS("MOUNTED TO"), astrNoYes);
gm_mgMountedTrigger.mg_strTip = TRANS("choose controller axis that will perform the action");
gm_mgActionTrigger.mg_astrTexts = new CTString[AXIS_ACTIONS_CT];
gm_mgActionTrigger.mg_ctTexts = AXIS_ACTIONS_CT;
gm_mgActionTrigger.mg_pPreTriggerChange = NULL;
gm_mgActionTrigger.mg_pOnTriggerChange = NULL;
// for all available axis type controlers
for (INDEX iControler = 0; iControler<AXIS_ACTIONS_CT; iControler++) {
gm_mgActionTrigger.mg_astrTexts[iControler] = TranslateConst(CTString(_pGame->gm_astrAxisNames[iControler]), 0);
}
gm_mgActionTrigger.mg_iSelected = 3;
INDEX ctAxis = _pInput->GetAvailableAxisCount();
gm_mgMountedTrigger.mg_astrTexts = new CTString[ctAxis];
gm_mgMountedTrigger.mg_ctTexts = ctAxis;
// for all axis actions that can be mounted
for (INDEX iAxis = 0; iAxis<ctAxis; iAxis++) {
gm_mgMountedTrigger.mg_astrTexts[iAxis] = _pInput->GetAxisTransName(iAxis);
}
gm_mgSensitivity.mg_boxOnScreen = BoxMediumRow(3);
gm_mgSensitivity.mg_strText = TRANS("SENSITIVITY");
gm_mgSensitivity.mg_pmgUp = &gm_mgMountedTrigger;
gm_mgSensitivity.mg_pmgDown = &gm_mgDeadzone;
gm_lhGadgets.AddTail(gm_mgSensitivity.mg_lnNode);
gm_mgSensitivity.mg_strTip = TRANS("set sensitivity for this axis");
gm_mgDeadzone.mg_boxOnScreen = BoxMediumRow(4);
gm_mgDeadzone.mg_strText = TRANS("DEAD ZONE");
gm_mgDeadzone.mg_pmgUp = &gm_mgSensitivity;
gm_mgDeadzone.mg_pmgDown = &gm_mgInvertTrigger;
gm_lhGadgets.AddTail(gm_mgDeadzone.mg_lnNode);
gm_mgDeadzone.mg_strTip = TRANS("set dead zone for this axis");
TRIGGER_MG(gm_mgInvertTrigger, 5, gm_mgDeadzone, gm_mgRelativeTrigger, TRANS("INVERTED"), astrNoYes);
gm_mgInvertTrigger.mg_strTip = TRANS("choose whether to invert this axis or not");
TRIGGER_MG(gm_mgRelativeTrigger, 6, gm_mgInvertTrigger, gm_mgSmoothTrigger, TRANS("RELATIVE"), astrNoYes);
gm_mgRelativeTrigger.mg_strTip = TRANS("select relative or absolute axis reading");
TRIGGER_MG(gm_mgSmoothTrigger, 7, gm_mgRelativeTrigger, gm_mgActionTrigger, TRANS("SMOOTH"), astrNoYes);
gm_mgSmoothTrigger.mg_strTip = TRANS("turn this on to filter readings on this axis");
}
CCustomizeAxisMenu::~CCustomizeAxisMenu(void)
{
delete[] gm_mgActionTrigger.mg_astrTexts;
delete[] gm_mgMountedTrigger.mg_astrTexts;
}
void CCustomizeAxisMenu::ObtainActionSettings(void)
{
ControlsMenuOn();
CControls &ctrls = _pGame->gm_ctrlControlsExtra;
INDEX iSelectedAction = gm_mgActionTrigger.mg_iSelected;
INDEX iMountedAxis = ctrls.ctrl_aaAxisActions[iSelectedAction].aa_iAxisAction;
gm_mgMountedTrigger.mg_iSelected = iMountedAxis;
gm_mgSensitivity.mg_iMinPos = 0;
gm_mgSensitivity.mg_iMaxPos = 50;
gm_mgSensitivity.mg_iCurPos = ctrls.ctrl_aaAxisActions[iSelectedAction].aa_fSensitivity / 2;
gm_mgSensitivity.ApplyCurrentPosition();
gm_mgDeadzone.mg_iMinPos = 0;
gm_mgDeadzone.mg_iMaxPos = 50;
gm_mgDeadzone.mg_iCurPos = ctrls.ctrl_aaAxisActions[iSelectedAction].aa_fDeadZone / 2;
gm_mgDeadzone.ApplyCurrentPosition();
gm_mgInvertTrigger.mg_iSelected = ctrls.ctrl_aaAxisActions[iSelectedAction].aa_bInvert ? 1 : 0;
gm_mgRelativeTrigger.mg_iSelected = ctrls.ctrl_aaAxisActions[iSelectedAction].aa_bRelativeControler ? 1 : 0;
gm_mgSmoothTrigger.mg_iSelected = ctrls.ctrl_aaAxisActions[iSelectedAction].aa_bSmooth ? 1 : 0;
gm_mgActionTrigger.ApplyCurrentSelection();
gm_mgMountedTrigger.ApplyCurrentSelection();
gm_mgInvertTrigger.ApplyCurrentSelection();
gm_mgRelativeTrigger.ApplyCurrentSelection();
gm_mgSmoothTrigger.ApplyCurrentSelection();
}
void CCustomizeAxisMenu::ApplyActionSettings(void)
{
CControls &ctrls = _pGame->gm_ctrlControlsExtra;
INDEX iSelectedAction = gm_mgActionTrigger.mg_iSelected;
INDEX iMountedAxis = gm_mgMountedTrigger.mg_iSelected;
FLOAT fSensitivity =
FLOAT(gm_mgSensitivity.mg_iCurPos - gm_mgSensitivity.mg_iMinPos) /
FLOAT(gm_mgSensitivity.mg_iMaxPos - gm_mgSensitivity.mg_iMinPos)*100.0f;
FLOAT fDeadZone =
FLOAT(gm_mgDeadzone.mg_iCurPos - gm_mgDeadzone.mg_iMinPos) /
FLOAT(gm_mgDeadzone.mg_iMaxPos - gm_mgDeadzone.mg_iMinPos)*100.0f;
BOOL bInvert = gm_mgInvertTrigger.mg_iSelected != 0;
BOOL bRelative = gm_mgRelativeTrigger.mg_iSelected != 0;
BOOL bSmooth = gm_mgSmoothTrigger.mg_iSelected != 0;
ctrls.ctrl_aaAxisActions[iSelectedAction].aa_iAxisAction = iMountedAxis;
if (INDEX(ctrls.ctrl_aaAxisActions[iSelectedAction].aa_fSensitivity) != INDEX(fSensitivity)) {
ctrls.ctrl_aaAxisActions[iSelectedAction].aa_fSensitivity = fSensitivity;
}
if (INDEX(ctrls.ctrl_aaAxisActions[iSelectedAction].aa_fDeadZone) != INDEX(fDeadZone)) {
ctrls.ctrl_aaAxisActions[iSelectedAction].aa_fDeadZone = fDeadZone;
}
ctrls.ctrl_aaAxisActions[iSelectedAction].aa_bInvert = bInvert;
ctrls.ctrl_aaAxisActions[iSelectedAction].aa_bRelativeControler = bRelative;
ctrls.ctrl_aaAxisActions[iSelectedAction].aa_bSmooth = bSmooth;
ctrls.CalculateInfluencesForAllAxis();
ControlsMenuOff();
}
void CCustomizeAxisMenu::StartMenu(void)
{
ObtainActionSettings();
CGameMenu::StartMenu();
}
void CCustomizeAxisMenu::EndMenu(void)
{
ApplyActionSettings();
CGameMenu::EndMenu();
}

View File

@ -7,10 +7,22 @@
#endif
#include "GameMenu.h"
#include "MGSlider.h"
#include "MGTitle.h"
#include "MGTrigger.h"
class CCustomizeAxisMenu : public CGameMenu {
public:
CMGTitle gm_mgTitle;
CMGTrigger gm_mgActionTrigger;
CMGTrigger gm_mgMountedTrigger;
CMGSlider gm_mgSensitivity;
CMGSlider gm_mgDeadzone;
CMGTrigger gm_mgInvertTrigger;
CMGTrigger gm_mgRelativeTrigger;
CMGTrigger gm_mgSmoothTrigger;
~CCustomizeAxisMenu(void);
void Initialize_t(void);
void StartMenu(void);

View File

@ -0,0 +1,100 @@
/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */
#include "StdH.h"
#include <Engine/CurrentVersion.h>
#include "MenuPrinting.h"
#include "MCustomizeKeyboard.h"
void CCustomizeKeyboardMenu::FillListItems(void)
{
// disable all items first
for (INDEX i = 0; i<KEYS_ON_SCREEN; i++) {
gm_mgKey[i].mg_bEnabled = FALSE;
gm_mgKey[i].mg_iInList = -2;
}
BOOL bHasFirst = FALSE;
BOOL bHasLast = FALSE;
// set diks to key buttons
INDEX iLabel = 0;
INDEX ctLabels = _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions.Count();
FOREACHINLIST(CButtonAction, ba_lnNode, _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions, itAct)
{
INDEX iInMenu = iLabel - gm_iListOffset;
if ((iLabel >= gm_iListOffset) &&
(iLabel<(gm_iListOffset + gm_ctListVisible)))
{
bHasFirst |= (iLabel == 0);
bHasLast |= (iLabel == ctLabels - 1);
gm_mgKey[iInMenu].mg_strLabel = TranslateConst(itAct->ba_strName, 0);
gm_mgKey[iInMenu].mg_iControlNumber = iLabel;
gm_mgKey[iInMenu].SetBindingNames(FALSE);
gm_mgKey[iInMenu].mg_strTip = TRANS("Enter - change binding, Backspace - unbind");
gm_mgKey[iInMenu].mg_bEnabled = TRUE;
gm_mgKey[iInMenu].mg_iInList = iLabel;
}
iLabel++;
}
// enable/disable up/down arrows
gm_mgArrowUp.mg_bEnabled = !bHasFirst && ctLabels>0;
gm_mgArrowDn.mg_bEnabled = !bHasLast && ctLabels>0;
}
void CCustomizeKeyboardMenu::Initialize_t(void)
{
// intialize Audio options menu
gm_mgTitle.mg_strText = TRANS("CUSTOMIZE BUTTONS");
gm_mgTitle.mg_boxOnScreen = BoxTitle();
gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode);
#define KL_START 3.0f
#define KL_STEEP -1.45f
for (INDEX iLabel = 0; iLabel<KEYS_ON_SCREEN; iLabel++)
{
INDEX iPrev = (gm_ctListVisible + iLabel - 1) % KEYS_ON_SCREEN;
INDEX iNext = (iLabel + 1) % KEYS_ON_SCREEN;
// initialize label entities
gm_mgKey[iLabel].mg_boxOnScreen = BoxKeyRow(iLabel);
// initialize label gadgets
gm_mgKey[iLabel].mg_pmgUp = &gm_mgKey[iPrev];
gm_mgKey[iLabel].mg_pmgDown = &gm_mgKey[iNext];
gm_mgKey[iLabel].mg_bVisible = TRUE;
gm_lhGadgets.AddTail(gm_mgKey[iLabel].mg_lnNode);
}
// arrows just exist
gm_lhGadgets.AddTail(gm_mgArrowDn.mg_lnNode);
gm_lhGadgets.AddTail(gm_mgArrowUp.mg_lnNode);
gm_mgArrowDn.mg_adDirection = AD_DOWN;
gm_mgArrowUp.mg_adDirection = AD_UP;
gm_mgArrowDn.mg_boxOnScreen = BoxArrow(AD_DOWN);
gm_mgArrowUp.mg_boxOnScreen = BoxArrow(AD_UP);
gm_mgArrowDn.mg_pmgRight = gm_mgArrowDn.mg_pmgUp =
&gm_mgKey[KEYS_ON_SCREEN - 1];
gm_mgArrowUp.mg_pmgRight = gm_mgArrowUp.mg_pmgDown =
&gm_mgKey[0];
gm_ctListVisible = KEYS_ON_SCREEN;
gm_pmgArrowUp = &gm_mgArrowUp;
gm_pmgArrowDn = &gm_mgArrowDn;
gm_pmgListTop = &gm_mgKey[0];
gm_pmgListBottom = &gm_mgKey[KEYS_ON_SCREEN - 1];
}
extern void ControlsMenuOn();
extern void ControlsMenuOff();
void CCustomizeKeyboardMenu::StartMenu(void)
{
ControlsMenuOn();
gm_iListOffset = 0;
gm_ctListTotal = _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions.Count();
gm_iListWantedItem = 0;
CGameMenu::StartMenu();
}
void CCustomizeKeyboardMenu::EndMenu(void)
{
ControlsMenuOff();
CGameMenu::EndMenu();
}

View File

@ -7,10 +7,18 @@
#endif
#include "GameMenu.h"
#include "MGArrow.h"
#include "MGKeyDefinition.h"
#include "MGTitle.h"
class CCustomizeKeyboardMenu : public CGameMenu {
public:
CMGTitle gm_mgTitle;
CMGKeyDefinition gm_mgKey[KEYS_ON_SCREEN];
CMGArrow gm_mgArrowUp;
CMGArrow gm_mgArrowDn;
void Initialize_t(void);
void StartMenu(void);
void EndMenu(void);

View File

@ -0,0 +1,23 @@
/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */
#include "StdH.h"
#include <Engine/CurrentVersion.h>
#include "MenuPrinting.h"
#include "MHighScore.h"
void CHighScoreMenu::Initialize_t(void)
{
gm_mgHScore.mg_boxOnScreen = FLOATaabbox2D(FLOAT2D(0, 0), FLOAT2D(1, 0.5));
gm_lhGadgets.AddTail(gm_mgHScore.mg_lnNode);
gm_mgTitle.mg_strText = TRANS("HIGH SCORE TABLE");
gm_mgTitle.mg_boxOnScreen = BoxTitle();
gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode);
}
void CHighScoreMenu::StartMenu(void)
{
gm_pgmParentMenu = pgmCurrentMenu;
CGameMenu::StartMenu();
}

View File

@ -7,10 +7,15 @@
#endif
#include "GameMenu.h"
#include "MGHighScore.h"
#include "MGTitle.h"
class CHighScoreMenu : public CGameMenu {
public:
CMGTitle gm_mgTitle;
CMGHighScore gm_mgHScore;
void Initialize_t(void);
void StartMenu(void);
};

View File

@ -0,0 +1,56 @@
/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */
#include "StdH.h"
#include <Engine/CurrentVersion.h>
#include "MenuPrinting.h"
#include "MNetwork.h"
void CNetworkMenu::Initialize_t(void)
{
// intialize network menu
gm_mgTitle.mg_boxOnScreen = BoxTitle();
gm_mgTitle.mg_strText = TRANS("NETWORK");
gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode);
gm_mgJoin.mg_bfsFontSize = BFS_LARGE;
gm_mgJoin.mg_boxOnScreen = BoxBigRow(1.0f);
gm_mgJoin.mg_pmgUp = &gm_mgLoad;
gm_mgJoin.mg_pmgDown = &gm_mgStart;
gm_mgJoin.mg_strText = TRANS("JOIN GAME");
gm_mgJoin.mg_strTip = TRANS("join a network game");
gm_lhGadgets.AddTail(gm_mgJoin.mg_lnNode);
gm_mgJoin.mg_pActivatedFunction = NULL;
gm_mgStart.mg_bfsFontSize = BFS_LARGE;
gm_mgStart.mg_boxOnScreen = BoxBigRow(2.0f);
gm_mgStart.mg_pmgUp = &gm_mgJoin;
gm_mgStart.mg_pmgDown = &gm_mgQuickLoad;
gm_mgStart.mg_strText = TRANS("START SERVER");
gm_mgStart.mg_strTip = TRANS("start a network game server");
gm_lhGadgets.AddTail(gm_mgStart.mg_lnNode);
gm_mgStart.mg_pActivatedFunction = NULL;
gm_mgQuickLoad.mg_bfsFontSize = BFS_LARGE;
gm_mgQuickLoad.mg_boxOnScreen = BoxBigRow(3.0f);
gm_mgQuickLoad.mg_pmgUp = &gm_mgStart;
gm_mgQuickLoad.mg_pmgDown = &gm_mgLoad;
gm_mgQuickLoad.mg_strText = TRANS("QUICK LOAD");
gm_mgQuickLoad.mg_strTip = TRANS("load a quick-saved game (F9)");
gm_lhGadgets.AddTail(gm_mgQuickLoad.mg_lnNode);
gm_mgQuickLoad.mg_pActivatedFunction = NULL;
gm_mgLoad.mg_bfsFontSize = BFS_LARGE;
gm_mgLoad.mg_boxOnScreen = BoxBigRow(4.0f);
gm_mgLoad.mg_pmgUp = &gm_mgQuickLoad;
gm_mgLoad.mg_pmgDown = &gm_mgJoin;
gm_mgLoad.mg_strText = TRANS("LOAD");
gm_mgLoad.mg_strTip = TRANS("start server and load a network game (server only)");
gm_lhGadgets.AddTail(gm_mgLoad.mg_lnNode);
gm_mgLoad.mg_pActivatedFunction = NULL;
}
void CNetworkMenu::StartMenu(void)
{
CGameMenu::StartMenu();
}

View File

@ -7,10 +7,17 @@
#endif
#include "GameMenu.h"
#include "MGButton.h"
#include "MGTitle.h"
class CNetworkMenu : public CGameMenu {
public:
CMGTitle gm_mgTitle;
CMGButton gm_mgJoin;
CMGButton gm_mgStart;
CMGButton gm_mgQuickLoad;
CMGButton gm_mgLoad;
void Initialize_t(void);
void StartMenu(void);
};

View File

@ -0,0 +1,69 @@
/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */
#include "StdH.h"
#include <Engine/CurrentVersion.h>
#include "MenuPrinting.h"
#include "MOptions.h"
void COptionsMenu::Initialize_t(void)
{
// intialize options menu
gm_mgTitle.mg_boxOnScreen = BoxTitle();
gm_mgTitle.mg_strText = TRANS("OPTIONS");
gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode);
gm_mgVideoOptions.mg_bfsFontSize = BFS_LARGE;
gm_mgVideoOptions.mg_boxOnScreen = BoxBigRow(0.0f);
gm_mgVideoOptions.mg_pmgUp = &gm_mgAddonOptions;
gm_mgVideoOptions.mg_pmgDown = &gm_mgAudioOptions;
gm_mgVideoOptions.mg_strText = TRANS("VIDEO OPTIONS");
gm_mgVideoOptions.mg_strTip = TRANS("set video mode and driver");
gm_lhGadgets.AddTail(gm_mgVideoOptions.mg_lnNode);
gm_mgVideoOptions.mg_pActivatedFunction = NULL;
gm_mgAudioOptions.mg_bfsFontSize = BFS_LARGE;
gm_mgAudioOptions.mg_boxOnScreen = BoxBigRow(1.0f);
gm_mgAudioOptions.mg_pmgUp = &gm_mgVideoOptions;
gm_mgAudioOptions.mg_pmgDown = &gm_mgPlayerProfileOptions;
gm_mgAudioOptions.mg_strText = TRANS("AUDIO OPTIONS");
gm_mgAudioOptions.mg_strTip = TRANS("set audio quality and volume");
gm_lhGadgets.AddTail(gm_mgAudioOptions.mg_lnNode);
gm_mgAudioOptions.mg_pActivatedFunction = NULL;
gm_mgPlayerProfileOptions.mg_bfsFontSize = BFS_LARGE;
gm_mgPlayerProfileOptions.mg_boxOnScreen = BoxBigRow(2.0f);
gm_mgPlayerProfileOptions.mg_pmgUp = &gm_mgAudioOptions;
gm_mgPlayerProfileOptions.mg_pmgDown = &gm_mgNetworkOptions;
gm_mgPlayerProfileOptions.mg_strText = TRANS("PLAYERS AND CONTROLS");
gm_mgPlayerProfileOptions.mg_strTip = TRANS("change currently active player or adjust controls");
gm_lhGadgets.AddTail(gm_mgPlayerProfileOptions.mg_lnNode);
gm_mgPlayerProfileOptions.mg_pActivatedFunction = NULL;
gm_mgNetworkOptions.mg_bfsFontSize = BFS_LARGE;
gm_mgNetworkOptions.mg_boxOnScreen = BoxBigRow(3);
gm_mgNetworkOptions.mg_pmgUp = &gm_mgPlayerProfileOptions;
gm_mgNetworkOptions.mg_pmgDown = &gm_mgCustomOptions;
gm_mgNetworkOptions.mg_strText = TRANS("NETWORK CONNECTION");
gm_mgNetworkOptions.mg_strTip = TRANS("choose your connection parameters");
gm_lhGadgets.AddTail(gm_mgNetworkOptions.mg_lnNode);
gm_mgNetworkOptions.mg_pActivatedFunction = NULL;
gm_mgCustomOptions.mg_bfsFontSize = BFS_LARGE;
gm_mgCustomOptions.mg_boxOnScreen = BoxBigRow(4);
gm_mgCustomOptions.mg_pmgUp = &gm_mgNetworkOptions;
gm_mgCustomOptions.mg_pmgDown = &gm_mgAddonOptions;
gm_mgCustomOptions.mg_strText = TRANS("ADVANCED OPTIONS");
gm_mgCustomOptions.mg_strTip = TRANS("for advanced users only");
gm_lhGadgets.AddTail(gm_mgCustomOptions.mg_lnNode);
gm_mgCustomOptions.mg_pActivatedFunction = NULL;
gm_mgAddonOptions.mg_bfsFontSize = BFS_LARGE;
gm_mgAddonOptions.mg_boxOnScreen = BoxBigRow(5);
gm_mgAddonOptions.mg_pmgUp = &gm_mgCustomOptions;
gm_mgAddonOptions.mg_pmgDown = &gm_mgVideoOptions;
gm_mgAddonOptions.mg_strText = TRANS("EXECUTE ADDON");
gm_mgAddonOptions.mg_strTip = TRANS("choose from list of addons to execute");
gm_lhGadgets.AddTail(gm_mgAddonOptions.mg_lnNode);
gm_mgAddonOptions.mg_pActivatedFunction = NULL;
}

View File

@ -7,10 +7,20 @@
#endif
#include "GameMenu.h"
#include "MGButton.h"
#include "MGTitle.h"
class COptionsMenu : public CGameMenu {
public:
CMGTitle gm_mgTitle;
CMGButton gm_mgVideoOptions;
CMGButton gm_mgAudioOptions;
CMGButton gm_mgPlayerProfileOptions;
CMGButton gm_mgNetworkOptions;
CMGButton gm_mgCustomOptions;
CMGButton gm_mgAddonOptions;
void Initialize_t(void);
};

View File

@ -5,6 +5,7 @@
#include "MenuPrinting.h"
#include "MSplitScreen.h"
void CSplitScreenMenu::Initialize_t(void)
{
// intialize split screen menu

View File

@ -104,17 +104,19 @@ void (*_pAfterLevelChosen)(void);
// functions for init actions
void InitActionsForConfirmMenu();
void InitActionsForCustomizeAxisMenu();
void InitActionsForMainMenu();
void InitActionsForInGameMenu();
void InitActionsForNetworkMenu();
void InitActionsForNetworkJoinMenu();
void InitActionsForNetworkOpenMenu();
void InitActionsForOptionsMenu();
void InitActionsForSinglePlayerMenu();
void InitActionsForSinglePlayerNewMenu();
void InitActionsForSplitScreenMenu();
void InitActionsForSplitStartMenu();
void InitActionsForVarMenu();
// functions to activate when user chose 'yes/no' on confirmation
void (*_pConfimedYes)(void) = NULL;
void (*_pConfimedNo)(void) = NULL;
@ -139,7 +141,7 @@ void ConfirmNo(void)
}
void ControlsMenuOn()
extern void ControlsMenuOn()
{
_pGame->SavePlayersAndControls();
try {
@ -149,7 +151,7 @@ void ControlsMenuOn()
}
}
void ControlsMenuOff()
extern void ControlsMenuOff()
{
try {
if (_pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions.Count()>0) {
@ -217,7 +219,7 @@ static CTextureObject _toLogoMenuB;
#define PLACEMENT(x,y,z) CPlacement3D( FLOAT3D( x, y, z), \
ANGLE3D( AngleDeg(0.0f), AngleDeg(0.0f), AngleDeg(0.0f)))
CTString astrNoYes[] = {
extern CTString astrNoYes[] = {
RADIOTRANS( "No"),
RADIOTRANS( "Yes"),
};
@ -360,15 +362,9 @@ CMGArrow mgLSArrowDn;
// -------- High-score menu
CHighScoreMenu gmHighScoreMenu;
CMGTitle mgHighScoreTitle;
CMGHighScore mgHScore;
// -------- Customize keyboard menu
CCustomizeKeyboardMenu gmCustomizeKeyboardMenu;
CMGTitle mgCustomizeKeyboardTitle;
CMGKeyDefinition mgKey[KEYS_ON_SCREEN];
CMGArrow mgCustomizeArrowUp;
CMGArrow mgCustomizeArrowDn;
// -------- Choose servers menu
CServersMenu gmServersMenu;
@ -380,24 +376,9 @@ CMGButton mgServerRefresh;
// -------- Customize axis menu
CCustomizeAxisMenu gmCustomizeAxisMenu;
CMGTitle mgCustomizeAxisTitle;
CMGTrigger mgAxisActionTrigger;
CMGTrigger mgAxisMountedTrigger;
CMGSlider mgAxisSensitivity;
CMGSlider mgAxisDeadzone;
CMGTrigger mgAxisInvertTrigger;
CMGTrigger mgAxisRelativeTrigger;
CMGTrigger mgAxisSmoothTrigger;
// -------- Options menu
COptionsMenu gmOptionsMenu;
CMGTitle mgOptionsTitle;
CMGButton mgVideoOptions;
CMGButton mgAudioOptions;
CMGButton mgPlayerProfileOptions;
CMGButton mgNetworkOptions;
CMGButton mgCustomOptions;
CMGButton mgAddonOptions;
// -------- Video options menu
CVideoOptionsMenu gmVideoOptionsMenu;
@ -455,11 +436,6 @@ CMGButton mgAudioOptionsApply;
// -------- Network menu
CNetworkMenu gmNetworkMenu;
CMGTitle mgNetworkTitle;
CMGButton mgNetworkJoin;
CMGButton mgNetworkStart;
CMGButton mgNetworkQuickLoad;
CMGButton mgNetworkLoad;
// -------- Network join menu
CNetworkJoinMenu gmNetworkJoinMenu;
@ -2212,18 +2188,20 @@ void InitializeMenus(void)
gmCustomizeKeyboardMenu.Initialize_t();
gmCustomizeKeyboardMenu.gm_strName="CustomizeKeyboard";
gmCustomizeKeyboardMenu.gm_pmgSelectedByDefault = &mgKey[0];
gmCustomizeKeyboardMenu.gm_pmgSelectedByDefault = &gmCustomizeKeyboardMenu.gm_mgKey[0];
gmCustomizeKeyboardMenu.gm_pgmParentMenu = &gmControls;
gmCustomizeAxisMenu.Initialize_t();
gmCustomizeAxisMenu.gm_strName="CustomizeAxis";
gmCustomizeAxisMenu.gm_pmgSelectedByDefault = &mgAxisActionTrigger;
gmCustomizeAxisMenu.gm_pmgSelectedByDefault = &gmCustomizeAxisMenu.gm_mgActionTrigger;
gmCustomizeAxisMenu.gm_pgmParentMenu = &gmControls;
InitActionsForCustomizeAxisMenu();
gmOptionsMenu.Initialize_t();
gmOptionsMenu.gm_strName="Options";
gmOptionsMenu.gm_pmgSelectedByDefault = &mgVideoOptions;
gmOptionsMenu.gm_pmgSelectedByDefault = &gmOptionsMenu.gm_mgVideoOptions;
gmOptionsMenu.gm_pgmParentMenu = &gmMainMenu;
InitActionsForOptionsMenu();
gmVideoOptionsMenu.Initialize_t();
gmVideoOptionsMenu.gm_strName="VideoOptions";
@ -2253,8 +2231,9 @@ void InitializeMenus(void)
gmNetworkMenu.Initialize_t();
gmNetworkMenu.gm_strName="Network";
gmNetworkMenu.gm_pmgSelectedByDefault = &mgNetworkJoin;
gmNetworkMenu.gm_pmgSelectedByDefault = &gmNetworkMenu.gm_mgJoin;
gmNetworkMenu.gm_pgmParentMenu = &gmMainMenu;
InitActionsForNetworkMenu();
gmNetworkStartMenu.Initialize_t();
gmNetworkStartMenu.gm_strName="NetworkStart";
@ -3980,320 +3959,33 @@ BOOL CLoadSaveMenu::ParseFile(const CTFileName &fnm, CTString &strName)
return TRUE;
}
void CHighScoreMenu::Initialize_t(void)
{
mgHScore.mg_boxOnScreen = FLOATaabbox2D(FLOAT2D(0,0), FLOAT2D(1,0.5));
gm_lhGadgets.AddTail( mgHScore.mg_lnNode);
mgHighScoreTitle.mg_strText = TRANS("HIGH SCORE TABLE");
mgHighScoreTitle.mg_boxOnScreen = BoxTitle();
gm_lhGadgets.AddTail( mgHighScoreTitle.mg_lnNode);
}
void CHighScoreMenu::StartMenu(void)
{
gm_pgmParentMenu = pgmCurrentMenu;
CGameMenu::StartMenu();
}
// ------------------------ CCustomizeKeyboardMenu implementation
void CCustomizeKeyboardMenu::FillListItems(void)
{
// disable all items first
for(INDEX i=0; i<KEYS_ON_SCREEN; i++) {
mgKey[i].mg_bEnabled = FALSE;
mgKey[i].mg_iInList = -2;
}
BOOL bHasFirst = FALSE;
BOOL bHasLast = FALSE;
// set diks to key buttons
INDEX iLabel=0;
INDEX ctLabels = _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions.Count();
FOREACHINLIST( CButtonAction, ba_lnNode, _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions, itAct)
{
INDEX iInMenu = iLabel-gm_iListOffset;
if( (iLabel>=gm_iListOffset) &&
(iLabel<(gm_iListOffset+gm_ctListVisible)) )
{
bHasFirst|=(iLabel==0);
bHasLast |=(iLabel==ctLabels-1);
mgKey[iInMenu].mg_strLabel = TranslateConst(itAct->ba_strName, 0);
mgKey[iInMenu].mg_iControlNumber = iLabel;
mgKey[iInMenu].SetBindingNames(FALSE);
mgKey[iInMenu].mg_strTip = TRANS("Enter - change binding, Backspace - unbind");
mgKey[iInMenu].mg_bEnabled = TRUE;
mgKey[iInMenu].mg_iInList = iLabel;
}
iLabel++;
}
// enable/disable up/down arrows
mgCustomizeArrowUp.mg_bEnabled = !bHasFirst && ctLabels>0;
mgCustomizeArrowDn.mg_bEnabled = !bHasLast && ctLabels>0;
}
void CCustomizeKeyboardMenu::Initialize_t(void)
{
// intialize Audio options menu
mgCustomizeKeyboardTitle.mg_strText = TRANS("CUSTOMIZE BUTTONS");
mgCustomizeKeyboardTitle.mg_boxOnScreen = BoxTitle();
gm_lhGadgets.AddTail( mgCustomizeKeyboardTitle.mg_lnNode);
#define KL_START 3.0f
#define KL_STEEP -1.45f
for( INDEX iLabel=0; iLabel<KEYS_ON_SCREEN; iLabel++)
{
INDEX iPrev = (gm_ctListVisible+iLabel-1)%KEYS_ON_SCREEN;
INDEX iNext = (iLabel+1)%KEYS_ON_SCREEN;
// initialize label entities
mgKey[iLabel].mg_boxOnScreen = BoxKeyRow(iLabel);
// initialize label gadgets
mgKey[iLabel].mg_pmgUp = &mgKey[iPrev];
mgKey[iLabel].mg_pmgDown = &mgKey[iNext];
mgKey[iLabel].mg_bVisible = TRUE;
gm_lhGadgets.AddTail( mgKey[iLabel].mg_lnNode);
}
// arrows just exist
gm_lhGadgets.AddTail( mgCustomizeArrowDn.mg_lnNode);
gm_lhGadgets.AddTail( mgCustomizeArrowUp.mg_lnNode);
mgCustomizeArrowDn.mg_adDirection = AD_DOWN;
mgCustomizeArrowUp.mg_adDirection = AD_UP;
mgCustomizeArrowDn.mg_boxOnScreen = BoxArrow(AD_DOWN);
mgCustomizeArrowUp.mg_boxOnScreen = BoxArrow(AD_UP);
mgCustomizeArrowDn.mg_pmgRight = mgCustomizeArrowDn.mg_pmgUp =
&mgKey[KEYS_ON_SCREEN-1];
mgCustomizeArrowUp.mg_pmgRight = mgCustomizeArrowUp.mg_pmgDown =
&mgKey[0];
gm_ctListVisible = KEYS_ON_SCREEN;
gm_pmgArrowUp = &mgCustomizeArrowUp;
gm_pmgArrowDn = &mgCustomizeArrowDn;
gm_pmgListTop = &mgKey[0];
gm_pmgListBottom = &mgKey[KEYS_ON_SCREEN-1];
}
void CCustomizeKeyboardMenu::StartMenu(void)
{
ControlsMenuOn();
gm_iListOffset = 0;
gm_ctListTotal = _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions.Count();
gm_iListWantedItem = 0;
CGameMenu::StartMenu();
}
void CCustomizeKeyboardMenu::EndMenu(void)
{
ControlsMenuOff();
CGameMenu::EndMenu();
}
CCustomizeAxisMenu::~CCustomizeAxisMenu(void)
{
delete[] mgAxisActionTrigger.mg_astrTexts;
delete[] mgAxisMountedTrigger.mg_astrTexts;
}
// ------------------------ CCustomizeAxisMenu implementation
void PreChangeAxis(INDEX iDummy)
{
gmCustomizeAxisMenu.ApplyActionSettings();
gmCustomizeAxisMenu.ApplyActionSettings();
}
void PostChangeAxis(INDEX iDummy)
{
gmCustomizeAxisMenu.ObtainActionSettings();
gmCustomizeAxisMenu.ObtainActionSettings();
}
void CCustomizeAxisMenu::Initialize_t(void)
{
// intialize axis menu
mgCustomizeAxisTitle.mg_strText = TRANS("CUSTOMIZE AXIS");
mgCustomizeAxisTitle.mg_boxOnScreen = BoxTitle();
gm_lhGadgets.AddTail( mgCustomizeAxisTitle.mg_lnNode);
TRIGGER_MG(mgAxisActionTrigger, 0, mgAxisSmoothTrigger, mgAxisMountedTrigger, TRANS("ACTION"), astrNoYes);
mgAxisActionTrigger.mg_strTip = TRANS("choose action to customize");
TRIGGER_MG(mgAxisMountedTrigger, 2, mgAxisActionTrigger, mgAxisSensitivity, TRANS("MOUNTED TO"), astrNoYes);
mgAxisMountedTrigger.mg_strTip = TRANS("choose controller axis that will perform the action");
mgAxisActionTrigger.mg_astrTexts = new CTString[ AXIS_ACTIONS_CT];
mgAxisActionTrigger.mg_ctTexts = AXIS_ACTIONS_CT;
mgAxisActionTrigger.mg_pPreTriggerChange = PreChangeAxis;
mgAxisActionTrigger.mg_pOnTriggerChange = PostChangeAxis;
// for all available axis type controlers
for( INDEX iControler=0; iControler<AXIS_ACTIONS_CT; iControler++) {
mgAxisActionTrigger.mg_astrTexts[ iControler] = TranslateConst(CTString(_pGame->gm_astrAxisNames[ iControler]), 0);
}
mgAxisActionTrigger.mg_iSelected = 3;
INDEX ctAxis = _pInput->GetAvailableAxisCount();
mgAxisMountedTrigger.mg_astrTexts = new CTString[ ctAxis];
mgAxisMountedTrigger.mg_ctTexts = ctAxis;
// for all axis actions that can be mounted
for( INDEX iAxis=0; iAxis<ctAxis; iAxis++) {
mgAxisMountedTrigger.mg_astrTexts[ iAxis] = _pInput->GetAxisTransName( iAxis);
}
mgAxisSensitivity.mg_boxOnScreen = BoxMediumRow(3);
mgAxisSensitivity.mg_strText = TRANS("SENSITIVITY");
mgAxisSensitivity.mg_pmgUp = &mgAxisMountedTrigger;
mgAxisSensitivity.mg_pmgDown = &mgAxisDeadzone;
gm_lhGadgets.AddTail( mgAxisSensitivity.mg_lnNode);
mgAxisSensitivity.mg_strTip = TRANS("set sensitivity for this axis");
mgAxisDeadzone.mg_boxOnScreen = BoxMediumRow(4);
mgAxisDeadzone.mg_strText = TRANS("DEAD ZONE");
mgAxisDeadzone.mg_pmgUp = &mgAxisSensitivity;
mgAxisDeadzone.mg_pmgDown = &mgAxisInvertTrigger;
gm_lhGadgets.AddTail( mgAxisDeadzone.mg_lnNode);
mgAxisDeadzone.mg_strTip = TRANS("set dead zone for this axis");
TRIGGER_MG(mgAxisInvertTrigger, 5, mgAxisDeadzone, mgAxisRelativeTrigger, TRANS("INVERTED"), astrNoYes);
mgAxisInvertTrigger.mg_strTip = TRANS("choose whether to invert this axis or not");
TRIGGER_MG(mgAxisRelativeTrigger, 6, mgAxisInvertTrigger, mgAxisSmoothTrigger, TRANS("RELATIVE"), astrNoYes);
mgAxisRelativeTrigger.mg_strTip = TRANS("select relative or absolute axis reading");
TRIGGER_MG(mgAxisSmoothTrigger, 7, mgAxisRelativeTrigger, mgAxisActionTrigger, TRANS("SMOOTH"), astrNoYes);
mgAxisSmoothTrigger.mg_strTip = TRANS("turn this on to filter readings on this axis");
}
void CCustomizeAxisMenu::ObtainActionSettings(void)
{
ControlsMenuOn();
CControls &ctrls = _pGame->gm_ctrlControlsExtra;
INDEX iSelectedAction = mgAxisActionTrigger.mg_iSelected;
INDEX iMountedAxis = ctrls.ctrl_aaAxisActions[ iSelectedAction].aa_iAxisAction;
mgAxisMountedTrigger.mg_iSelected = iMountedAxis;
mgAxisSensitivity.mg_iMinPos = 0;
mgAxisSensitivity.mg_iMaxPos = 50;
mgAxisSensitivity.mg_iCurPos = ctrls.ctrl_aaAxisActions[ iSelectedAction].aa_fSensitivity/2;
mgAxisSensitivity.ApplyCurrentPosition();
mgAxisDeadzone.mg_iMinPos = 0;
mgAxisDeadzone.mg_iMaxPos = 50;
mgAxisDeadzone.mg_iCurPos = ctrls.ctrl_aaAxisActions[ iSelectedAction].aa_fDeadZone/2;
mgAxisDeadzone.ApplyCurrentPosition();
mgAxisInvertTrigger.mg_iSelected = ctrls.ctrl_aaAxisActions[ iSelectedAction].aa_bInvert ? 1 : 0;
mgAxisRelativeTrigger.mg_iSelected = ctrls.ctrl_aaAxisActions[ iSelectedAction].aa_bRelativeControler ? 1 : 0;
mgAxisSmoothTrigger.mg_iSelected = ctrls.ctrl_aaAxisActions[ iSelectedAction].aa_bSmooth ? 1 : 0;
mgAxisActionTrigger.ApplyCurrentSelection();
mgAxisMountedTrigger.ApplyCurrentSelection();
mgAxisInvertTrigger.ApplyCurrentSelection();
mgAxisRelativeTrigger.ApplyCurrentSelection();
mgAxisSmoothTrigger.ApplyCurrentSelection();
}
void CCustomizeAxisMenu::ApplyActionSettings(void)
{
CControls &ctrls = _pGame->gm_ctrlControlsExtra;
INDEX iSelectedAction = mgAxisActionTrigger.mg_iSelected;
INDEX iMountedAxis = mgAxisMountedTrigger.mg_iSelected;
FLOAT fSensitivity =
FLOAT(mgAxisSensitivity.mg_iCurPos-mgAxisSensitivity.mg_iMinPos) /
FLOAT(mgAxisSensitivity.mg_iMaxPos-mgAxisSensitivity.mg_iMinPos)*100.0f;
FLOAT fDeadZone =
FLOAT(mgAxisDeadzone.mg_iCurPos-mgAxisDeadzone.mg_iMinPos) /
FLOAT(mgAxisDeadzone.mg_iMaxPos-mgAxisDeadzone.mg_iMinPos)*100.0f;
BOOL bInvert = mgAxisInvertTrigger.mg_iSelected != 0;
BOOL bRelative = mgAxisRelativeTrigger.mg_iSelected != 0;
BOOL bSmooth = mgAxisSmoothTrigger.mg_iSelected != 0;
ctrls.ctrl_aaAxisActions[ iSelectedAction].aa_iAxisAction = iMountedAxis;
if (INDEX(ctrls.ctrl_aaAxisActions[ iSelectedAction].aa_fSensitivity)!=INDEX(fSensitivity)) {
ctrls.ctrl_aaAxisActions[ iSelectedAction].aa_fSensitivity = fSensitivity;
}
if (INDEX(ctrls.ctrl_aaAxisActions[ iSelectedAction].aa_fDeadZone)!=INDEX(fDeadZone)) {
ctrls.ctrl_aaAxisActions[ iSelectedAction].aa_fDeadZone = fDeadZone;
}
ctrls.ctrl_aaAxisActions[ iSelectedAction].aa_bInvert = bInvert;
ctrls.ctrl_aaAxisActions[ iSelectedAction].aa_bRelativeControler = bRelative;
ctrls.ctrl_aaAxisActions[ iSelectedAction].aa_bSmooth = bSmooth;
ctrls.CalculateInfluencesForAllAxis();
ControlsMenuOff();
}
void CCustomizeAxisMenu::StartMenu(void)
{
ObtainActionSettings();
CGameMenu::StartMenu();
}
void CCustomizeAxisMenu::EndMenu(void)
{
ApplyActionSettings();
CGameMenu::EndMenu();
void InitActionsForCustomizeAxisMenu() {
gmCustomizeAxisMenu.gm_mgActionTrigger.mg_pPreTriggerChange = PreChangeAxis;
gmCustomizeAxisMenu.gm_mgActionTrigger.mg_pOnTriggerChange = PostChangeAxis;
}
// ------------------------ COptionsMenu implementation
void COptionsMenu::Initialize_t(void)
void InitActionsForOptionsMenu()
{
// intialize options menu
mgOptionsTitle.mg_boxOnScreen = BoxTitle();
mgOptionsTitle.mg_strText = TRANS("OPTIONS");
gm_lhGadgets.AddTail( mgOptionsTitle.mg_lnNode);
mgVideoOptions.mg_bfsFontSize = BFS_LARGE;
mgVideoOptions.mg_boxOnScreen = BoxBigRow(0.0f);
mgVideoOptions.mg_pmgUp = &mgAddonOptions;
mgVideoOptions.mg_pmgDown = &mgAudioOptions;
mgVideoOptions.mg_strText = TRANS("VIDEO OPTIONS");
mgVideoOptions.mg_strTip = TRANS("set video mode and driver");
gm_lhGadgets.AddTail( mgVideoOptions.mg_lnNode);
mgVideoOptions.mg_pActivatedFunction = &StartVideoOptionsMenu;
mgAudioOptions.mg_bfsFontSize = BFS_LARGE;
mgAudioOptions.mg_boxOnScreen = BoxBigRow(1.0f);
mgAudioOptions.mg_pmgUp = &mgVideoOptions;
mgAudioOptions.mg_pmgDown = &mgPlayerProfileOptions;
mgAudioOptions.mg_strText = TRANS("AUDIO OPTIONS");
mgAudioOptions.mg_strTip = TRANS("set audio quality and volume");
gm_lhGadgets.AddTail( mgAudioOptions.mg_lnNode);
mgAudioOptions.mg_pActivatedFunction = &StartAudioOptionsMenu;
mgPlayerProfileOptions.mg_bfsFontSize = BFS_LARGE;
mgPlayerProfileOptions.mg_boxOnScreen = BoxBigRow(2.0f);
mgPlayerProfileOptions.mg_pmgUp = &mgAudioOptions;
mgPlayerProfileOptions.mg_pmgDown = &mgNetworkOptions;
mgPlayerProfileOptions.mg_strText = TRANS("PLAYERS AND CONTROLS");
mgPlayerProfileOptions.mg_strTip = TRANS("change currently active player or adjust controls");
gm_lhGadgets.AddTail( mgPlayerProfileOptions.mg_lnNode);
mgPlayerProfileOptions.mg_pActivatedFunction = &StartChangePlayerMenuFromOptions;
mgNetworkOptions.mg_bfsFontSize = BFS_LARGE;
mgNetworkOptions.mg_boxOnScreen = BoxBigRow(3);
mgNetworkOptions.mg_pmgUp = &mgPlayerProfileOptions;
mgNetworkOptions.mg_pmgDown = &mgCustomOptions;
mgNetworkOptions.mg_strText = TRANS("NETWORK CONNECTION");
mgNetworkOptions.mg_strTip = TRANS("choose your connection parameters");
gm_lhGadgets.AddTail( mgNetworkOptions.mg_lnNode);
mgNetworkOptions.mg_pActivatedFunction = &StartNetworkSettingsMenu;
mgCustomOptions.mg_bfsFontSize = BFS_LARGE;
mgCustomOptions.mg_boxOnScreen = BoxBigRow(4);
mgCustomOptions.mg_pmgUp = &mgNetworkOptions;
mgCustomOptions.mg_pmgDown = &mgAddonOptions;
mgCustomOptions.mg_strText = TRANS("ADVANCED OPTIONS");
mgCustomOptions.mg_strTip = TRANS("for advanced users only");
gm_lhGadgets.AddTail( mgCustomOptions.mg_lnNode);
mgCustomOptions.mg_pActivatedFunction = &StartCustomLoadMenu;
mgAddonOptions.mg_bfsFontSize = BFS_LARGE;
mgAddonOptions.mg_boxOnScreen = BoxBigRow(5);
mgAddonOptions.mg_pmgUp = &mgCustomOptions;
mgAddonOptions.mg_pmgDown = &mgVideoOptions;
mgAddonOptions.mg_strText = TRANS("EXECUTE ADDON");
mgAddonOptions.mg_strTip = TRANS("choose from list of addons to execute");
gm_lhGadgets.AddTail( mgAddonOptions.mg_lnNode);
mgAddonOptions.mg_pActivatedFunction = &StartAddonsLoadMenu;
gmOptionsMenu.gm_mgVideoOptions.mg_pActivatedFunction = &StartVideoOptionsMenu;
gmOptionsMenu.gm_mgAudioOptions.mg_pActivatedFunction = &StartAudioOptionsMenu;
gmOptionsMenu.gm_mgPlayerProfileOptions.mg_pActivatedFunction = &StartChangePlayerMenuFromOptions;
gmOptionsMenu.gm_mgNetworkOptions.mg_pActivatedFunction = &StartNetworkSettingsMenu;
gmOptionsMenu.gm_mgCustomOptions.mg_pActivatedFunction = &StartCustomLoadMenu;
gmOptionsMenu.gm_mgAddonOptions.mg_pActivatedFunction = &StartAddonsLoadMenu;
}
// ------------------------ CVideoOptionsMenu implementation
static void FillResolutionsList(void)
{
// free resolutions
@ -4761,61 +4453,12 @@ BOOL CServersMenu::OnKeyDown(int iVKey)
// __Evolution
// ------------------------ CNetworkMenu implementation
void CNetworkMenu::Initialize_t(void)
void InitActionsForNetworkMenu()
{
// intialize network menu
mgNetworkTitle.mg_boxOnScreen = BoxTitle();
mgNetworkTitle.mg_strText = TRANS("NETWORK");
gm_lhGadgets.AddTail( mgNetworkTitle.mg_lnNode);
mgNetworkJoin.mg_bfsFontSize = BFS_LARGE;
mgNetworkJoin.mg_boxOnScreen = BoxBigRow(1.0f);
mgNetworkJoin.mg_pmgUp = &mgNetworkLoad;
mgNetworkJoin.mg_pmgDown = &mgNetworkStart;
mgNetworkJoin.mg_strText = TRANS("JOIN GAME");
mgNetworkJoin.mg_strTip = TRANS("join a network game");
gm_lhGadgets.AddTail( mgNetworkJoin.mg_lnNode);
mgNetworkJoin.mg_pActivatedFunction = &StartNetworkJoinMenu;
mgNetworkStart.mg_bfsFontSize = BFS_LARGE;
mgNetworkStart.mg_boxOnScreen = BoxBigRow(2.0f);
mgNetworkStart.mg_pmgUp = &mgNetworkJoin;
mgNetworkStart.mg_pmgDown = &mgNetworkQuickLoad;
mgNetworkStart.mg_strText = TRANS("START SERVER");
mgNetworkStart.mg_strTip = TRANS("start a network game server");
gm_lhGadgets.AddTail( mgNetworkStart.mg_lnNode);
mgNetworkStart.mg_pActivatedFunction = &StartNetworkStartMenu;
mgNetworkQuickLoad.mg_bfsFontSize = BFS_LARGE;
mgNetworkQuickLoad.mg_boxOnScreen = BoxBigRow(3.0f);
mgNetworkQuickLoad.mg_pmgUp = &mgNetworkStart;
mgNetworkQuickLoad.mg_pmgDown = &mgNetworkLoad;
mgNetworkQuickLoad.mg_strText = TRANS("QUICK LOAD");
mgNetworkQuickLoad.mg_strTip = TRANS("load a quick-saved game (F9)");
gm_lhGadgets.AddTail( mgNetworkQuickLoad.mg_lnNode);
mgNetworkQuickLoad.mg_pActivatedFunction = &StartNetworkQuickLoadMenu;
mgNetworkLoad.mg_bfsFontSize = BFS_LARGE;
mgNetworkLoad.mg_boxOnScreen = BoxBigRow(4.0f);
mgNetworkLoad.mg_pmgUp = &mgNetworkQuickLoad;
mgNetworkLoad.mg_pmgDown = &mgNetworkJoin;
mgNetworkLoad.mg_strText = TRANS("LOAD");
mgNetworkLoad.mg_strTip = TRANS("start server and load a network game (server only)");
gm_lhGadgets.AddTail( mgNetworkLoad.mg_lnNode);
mgNetworkLoad.mg_pActivatedFunction = &StartNetworkLoadMenu;
}
void CNetworkMenu::StartMenu(void)
{
CGameMenu::StartMenu();
}
void UpdateNetworkLevel(INDEX iDummy)
{
ValidateLevelForFlags(_pGame->gam_strCustomLevel,
GetSpawnFlagsForGameType(mgNetworkGameType.mg_iSelected));
mgNetworkLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName;
gmNetworkMenu.gm_mgJoin.mg_pActivatedFunction = &StartNetworkJoinMenu;
gmNetworkMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkStartMenu;
gmNetworkMenu.gm_mgQuickLoad.mg_pActivatedFunction = &StartNetworkQuickLoadMenu;
gmNetworkMenu.gm_mgLoad.mg_pActivatedFunction = &StartNetworkLoadMenu;
}
// ------------------------ CNetworkJoinMenu implementation
@ -4827,6 +4470,13 @@ void InitActionsForNetworkJoinMenu()
}
// ------------------------ CNetworkStartMenu implementation
void UpdateNetworkLevel(INDEX iDummy)
{
ValidateLevelForFlags(_pGame->gam_strCustomLevel,
GetSpawnFlagsForGameType(mgNetworkGameType.mg_iSelected));
mgNetworkLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName;
}
void CNetworkStartMenu::Initialize_t(void)
{
// title

View File

@ -183,6 +183,8 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ &gt;nul </Command>
<ClCompile Include="LevelInfo.cpp" />
<ClCompile Include="MainWindow.cpp" />
<ClCompile Include="MConfirm.cpp" />
<ClCompile Include="MCustomizeAxis.cpp" />
<ClCompile Include="MCustomizeKeyboard.cpp" />
<ClCompile Include="MDisabled.cpp" />
<ClCompile Include="Menu.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Use</PrecompiledHeader>
@ -210,11 +212,14 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ &gt;nul </Command>
<ClCompile Include="MGTitle.cpp" />
<ClCompile Include="MGTrigger.cpp" />
<ClCompile Include="MGVarButton.cpp" />
<ClCompile Include="MHighScore.cpp" />
<ClCompile Include="MInGame.cpp" />
<ClCompile Include="MLevels.cpp" />
<ClCompile Include="MMain.cpp" />
<ClCompile Include="MNetwork.cpp" />
<ClCompile Include="MNetworkJoin.cpp" />
<ClCompile Include="MNetworkOpen.cpp" />
<ClCompile Include="MOptions.cpp" />
<ClCompile Include="MSinglePlayer.cpp" />
<ClCompile Include="MSinglePlayerNew.cpp" />
<ClCompile Include="MSplitScreen.cpp" />

View File

@ -156,6 +156,21 @@
<ClCompile Include="MNetworkJoin.cpp">
<Filter>Source Files\Menus</Filter>
</ClCompile>
<ClCompile Include="MNetwork.cpp">
<Filter>Source Files\Menus</Filter>
</ClCompile>
<ClCompile Include="MOptions.cpp">
<Filter>Source Files\Menus</Filter>
</ClCompile>
<ClCompile Include="MHighScore.cpp">
<Filter>Source Files\Menus</Filter>
</ClCompile>
<ClCompile Include="MCustomizeAxis.cpp">
<Filter>Source Files\Menus</Filter>
</ClCompile>
<ClCompile Include="MCustomizeKeyboard.cpp">
<Filter>Source Files\Menus</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="CDCheck.h">