From 16990d713c7b63d10713d1c2d10e3a63cc4fe15a Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Mon, 14 Mar 2016 23:45:56 +0300 Subject: [PATCH] GameExecutable: Move some stuff from Menu.cpp into files PART IV Now it's 4901 lines! Progress! --- Sources/SeriousSam/MCustomizeAxis.cpp | 157 +++++++ Sources/SeriousSam/MCustomizeAxis.h | 12 + Sources/SeriousSam/MCustomizeKeyboard.cpp | 100 ++++ Sources/SeriousSam/MCustomizeKeyboard.h | 8 + Sources/SeriousSam/MHighScore.cpp | 23 + Sources/SeriousSam/MHighScore.h | 5 + Sources/SeriousSam/MNetwork.cpp | 56 +++ Sources/SeriousSam/MNetwork.h | 9 +- Sources/SeriousSam/MOptions.cpp | 69 +++ Sources/SeriousSam/MOptions.h | 10 + Sources/SeriousSam/MSplitScreen.cpp | 1 + Sources/SeriousSam/Menu.cpp | 426 ++---------------- Sources/SeriousSam/SeriousSam.vcxproj | 5 + Sources/SeriousSam/SeriousSam.vcxproj.filters | 15 + 14 files changed, 507 insertions(+), 389 deletions(-) create mode 100644 Sources/SeriousSam/MCustomizeAxis.cpp create mode 100644 Sources/SeriousSam/MCustomizeKeyboard.cpp create mode 100644 Sources/SeriousSam/MHighScore.cpp create mode 100644 Sources/SeriousSam/MNetwork.cpp create mode 100644 Sources/SeriousSam/MOptions.cpp diff --git a/Sources/SeriousSam/MCustomizeAxis.cpp b/Sources/SeriousSam/MCustomizeAxis.cpp new file mode 100644 index 0000000..ef1b020 --- /dev/null +++ b/Sources/SeriousSam/MCustomizeAxis.cpp @@ -0,0 +1,157 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#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; iControlergm_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; iAxisGetAxisTransName(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(); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MCustomizeAxis.h b/Sources/SeriousSam/MCustomizeAxis.h index 0bba4d8..741d1e3 100644 --- a/Sources/SeriousSam/MCustomizeAxis.h +++ b/Sources/SeriousSam/MCustomizeAxis.h @@ -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); diff --git a/Sources/SeriousSam/MCustomizeKeyboard.cpp b/Sources/SeriousSam/MCustomizeKeyboard.cpp new file mode 100644 index 0000000..7fdc950 --- /dev/null +++ b/Sources/SeriousSam/MCustomizeKeyboard.cpp @@ -0,0 +1,100 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MCustomizeKeyboard.h" + + +void CCustomizeKeyboardMenu::FillListItems(void) +{ + // disable all items first + for (INDEX i = 0; igm_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; iLabelgm_ctrlControlsExtra.ctrl_lhButtonActions.Count(); + gm_iListWantedItem = 0; + CGameMenu::StartMenu(); +} +void CCustomizeKeyboardMenu::EndMenu(void) +{ + ControlsMenuOff(); + CGameMenu::EndMenu(); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MCustomizeKeyboard.h b/Sources/SeriousSam/MCustomizeKeyboard.h index c95a6c8..c7461b7 100644 --- a/Sources/SeriousSam/MCustomizeKeyboard.h +++ b/Sources/SeriousSam/MCustomizeKeyboard.h @@ -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); diff --git a/Sources/SeriousSam/MHighScore.cpp b/Sources/SeriousSam/MHighScore.cpp new file mode 100644 index 0000000..c056c23 --- /dev/null +++ b/Sources/SeriousSam/MHighScore.cpp @@ -0,0 +1,23 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#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(); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MHighScore.h b/Sources/SeriousSam/MHighScore.h index 622e82e..22d7fd7 100644 --- a/Sources/SeriousSam/MHighScore.h +++ b/Sources/SeriousSam/MHighScore.h @@ -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); }; diff --git a/Sources/SeriousSam/MNetwork.cpp b/Sources/SeriousSam/MNetwork.cpp new file mode 100644 index 0000000..e4d63d6 --- /dev/null +++ b/Sources/SeriousSam/MNetwork.cpp @@ -0,0 +1,56 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#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(); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MNetwork.h b/Sources/SeriousSam/MNetwork.h index 6b0364a..c26cc60 100644 --- a/Sources/SeriousSam/MNetwork.h +++ b/Sources/SeriousSam/MNetwork.h @@ -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); }; diff --git a/Sources/SeriousSam/MOptions.cpp b/Sources/SeriousSam/MOptions.cpp new file mode 100644 index 0000000..b2dd54b --- /dev/null +++ b/Sources/SeriousSam/MOptions.cpp @@ -0,0 +1,69 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#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; +} \ No newline at end of file diff --git a/Sources/SeriousSam/MOptions.h b/Sources/SeriousSam/MOptions.h index f42cdac..6510595 100644 --- a/Sources/SeriousSam/MOptions.h +++ b/Sources/SeriousSam/MOptions.h @@ -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); }; diff --git a/Sources/SeriousSam/MSplitScreen.cpp b/Sources/SeriousSam/MSplitScreen.cpp index 9fbb57e..8920eb4 100644 --- a/Sources/SeriousSam/MSplitScreen.cpp +++ b/Sources/SeriousSam/MSplitScreen.cpp @@ -5,6 +5,7 @@ #include "MenuPrinting.h" #include "MSplitScreen.h" + void CSplitScreenMenu::Initialize_t(void) { // intialize split screen menu diff --git a/Sources/SeriousSam/Menu.cpp b/Sources/SeriousSam/Menu.cpp index dee47a1..2b465a8 100644 --- a/Sources/SeriousSam/Menu.cpp +++ b/Sources/SeriousSam/Menu.cpp @@ -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; igm_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; iLabelgm_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; iControlergm_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; iAxisGetAxisTransName( 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 diff --git a/Sources/SeriousSam/SeriousSam.vcxproj b/Sources/SeriousSam/SeriousSam.vcxproj index 2d764e2..39a8681 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj +++ b/Sources/SeriousSam/SeriousSam.vcxproj @@ -183,6 +183,8 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + + Use @@ -210,11 +212,14 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + + + diff --git a/Sources/SeriousSam/SeriousSam.vcxproj.filters b/Sources/SeriousSam/SeriousSam.vcxproj.filters index 921821f..28357aa 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj.filters +++ b/Sources/SeriousSam/SeriousSam.vcxproj.filters @@ -156,6 +156,21 @@ Source Files\Menus + + Source Files\Menus + + + Source Files\Menus + + + Source Files\Menus + + + Source Files\Menus + + + Source Files\Menus +