From 45eb940e035dfbf7ca165fe842401697ebc24a0d Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Sat, 12 Mar 2016 00:10:54 +0300 Subject: [PATCH 01/34] Update .gitignore Because it's trying to update generated files by VS. --- .gitignore | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.gitignore b/.gitignore index e4067d1..85f5b59 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,12 @@ *.app !Bison.exe !Flex.exe + +# Visual Studio Stuff +*.log +*.map +*.opensdf +*.pdb +*.sdf +*.suo +*.tlog From 47abf495f528ae1d3c1512550bc7d327310433a2 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Sat, 12 Mar 2016 00:19:50 +0300 Subject: [PATCH 02/34] Update .gitignore again... Too many stuff generated by VS! --- .gitignore | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 85f5b59..e2df471 100644 --- a/.gitignore +++ b/.gitignore @@ -30,10 +30,15 @@ !Flex.exe # Visual Studio Stuff +*.bsc +*.cnt +*.exp *.log *.map *.opensdf *.pdb +*.res +*.sbr *.sdf *.suo -*.tlog +*.tlog \ No newline at end of file From a84fb768833fe90eee6fb91249657b4e3bcadd9f Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Sat, 12 Mar 2016 00:45:21 +0300 Subject: [PATCH 03/34] Game executable: Separate MenuGadgets(.h/.cpp) MenuGadets(.h/.cpp) separated into multiple files for each gadget! --- Sources/SeriousSam/ArrowDir.h | 18 + Sources/SeriousSam/MGArrow.cpp | 44 + Sources/SeriousSam/MGArrow.h | 20 + Sources/SeriousSam/MGButton.cpp | 171 ++ Sources/SeriousSam/MGButton.h | 34 + Sources/SeriousSam/MGChangePlayer.cpp | 37 + Sources/SeriousSam/MGChangePlayer.h | 20 + Sources/SeriousSam/MGEdit.cpp | 169 ++ Sources/SeriousSam/MGEdit.h | 28 + Sources/SeriousSam/MGFileButton.cpp | 231 ++ Sources/SeriousSam/MGFileButton.h | 43 + Sources/SeriousSam/MGHighScore.cpp | 91 + Sources/SeriousSam/MGHighScore.h | 17 + Sources/SeriousSam/MGKeyDefinition.cpp | 218 ++ Sources/SeriousSam/MGKeyDefinition.h | 33 + Sources/SeriousSam/MGLevelButton.cpp | 27 + Sources/SeriousSam/MGLevelButton.h | 20 + Sources/SeriousSam/MGModel.cpp | 114 + Sources/SeriousSam/MGModel.h | 23 + Sources/SeriousSam/MGServerList.cpp | 445 ++++ Sources/SeriousSam/MGServerList.h | 54 + Sources/SeriousSam/MGSlider.cpp | 118 + Sources/SeriousSam/MGSlider.h | 29 + Sources/SeriousSam/MGTitle.cpp | 20 + Sources/SeriousSam/MGTitle.h | 18 + Sources/SeriousSam/MGTrigger.cpp | 116 + Sources/SeriousSam/MGTrigger.h | 34 + Sources/SeriousSam/MGVarButton.cpp | 174 ++ Sources/SeriousSam/MGVarButton.h | 22 + Sources/SeriousSam/Menu.cpp | 29 +- Sources/SeriousSam/Menu.h | 2 + Sources/SeriousSam/MenuGadget.cpp | 124 ++ Sources/SeriousSam/MenuGadget.h | 55 + Sources/SeriousSam/MenuGadgets.cpp | 1914 ----------------- Sources/SeriousSam/MenuGadgets.h | 281 --- Sources/SeriousSam/MenuPrinting.cpp | 1 + Sources/SeriousSam/SeriousSam.vcxproj | 38 +- Sources/SeriousSam/SeriousSam.vcxproj.filters | 99 +- Sources/SeriousSam/StdH.h | 3 +- 39 files changed, 2723 insertions(+), 2211 deletions(-) create mode 100644 Sources/SeriousSam/ArrowDir.h create mode 100644 Sources/SeriousSam/MGArrow.cpp create mode 100644 Sources/SeriousSam/MGArrow.h create mode 100644 Sources/SeriousSam/MGButton.cpp create mode 100644 Sources/SeriousSam/MGButton.h create mode 100644 Sources/SeriousSam/MGChangePlayer.cpp create mode 100644 Sources/SeriousSam/MGChangePlayer.h create mode 100644 Sources/SeriousSam/MGEdit.cpp create mode 100644 Sources/SeriousSam/MGEdit.h create mode 100644 Sources/SeriousSam/MGFileButton.cpp create mode 100644 Sources/SeriousSam/MGFileButton.h create mode 100644 Sources/SeriousSam/MGHighScore.cpp create mode 100644 Sources/SeriousSam/MGHighScore.h create mode 100644 Sources/SeriousSam/MGKeyDefinition.cpp create mode 100644 Sources/SeriousSam/MGKeyDefinition.h create mode 100644 Sources/SeriousSam/MGLevelButton.cpp create mode 100644 Sources/SeriousSam/MGLevelButton.h create mode 100644 Sources/SeriousSam/MGModel.cpp create mode 100644 Sources/SeriousSam/MGModel.h create mode 100644 Sources/SeriousSam/MGServerList.cpp create mode 100644 Sources/SeriousSam/MGServerList.h create mode 100644 Sources/SeriousSam/MGSlider.cpp create mode 100644 Sources/SeriousSam/MGSlider.h create mode 100644 Sources/SeriousSam/MGTitle.cpp create mode 100644 Sources/SeriousSam/MGTitle.h create mode 100644 Sources/SeriousSam/MGTrigger.cpp create mode 100644 Sources/SeriousSam/MGTrigger.h create mode 100644 Sources/SeriousSam/MGVarButton.cpp create mode 100644 Sources/SeriousSam/MGVarButton.h create mode 100644 Sources/SeriousSam/MenuGadget.cpp create mode 100644 Sources/SeriousSam/MenuGadget.h delete mode 100644 Sources/SeriousSam/MenuGadgets.cpp delete mode 100644 Sources/SeriousSam/MenuGadgets.h diff --git a/Sources/SeriousSam/ArrowDir.h b/Sources/SeriousSam/ArrowDir.h new file mode 100644 index 0000000..30a11aa --- /dev/null +++ b/Sources/SeriousSam/ArrowDir.h @@ -0,0 +1,18 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_ARROWDIR_H +#define SE_INCL_ARROWDIR_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +enum ArrowDir { + AD_NONE, + AD_UP, + AD_DOWN, + AD_LEFT, + AD_RIGHT, +}; + + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MGArrow.cpp b/Sources/SeriousSam/MGArrow.cpp new file mode 100644 index 0000000..65c553e --- /dev/null +++ b/Sources/SeriousSam/MGArrow.cpp @@ -0,0 +1,44 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include +#include "MenuPrinting.h" +#include +#include "MGArrow.h" + + +void CMGArrow::Render(CDrawPort *pdp) +{ + SetFontMedium(pdp); + + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + COLOR col = GetCurrentColor(); + + CTString str; + if (mg_adDirection == AD_NONE) { + str = "???"; + } + else if (mg_adDirection == AD_UP) { + str = TRANS("Page Up"); + } + else if (mg_adDirection == AD_DOWN) { + str = TRANS("Page Down"); + } + else { + ASSERT(FALSE); + } + PIX pixI = box.Min()(1); + PIX pixJ = box.Min()(2); + pdp->PutText(str, pixI, pixJ, col); +} + +void CMGArrow::OnActivate(void) +{ + if (mg_adDirection == AD_UP) { + pgmCurrentMenu->ScrollList(-3); + } + else if (mg_adDirection == AD_DOWN) { + pgmCurrentMenu->ScrollList(+3); + } +} \ No newline at end of file diff --git a/Sources/SeriousSam/MGArrow.h b/Sources/SeriousSam/MGArrow.h new file mode 100644 index 0000000..803a239 --- /dev/null +++ b/Sources/SeriousSam/MGArrow.h @@ -0,0 +1,20 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_GADGET_ARROW_H +#define SE_INCL_MENU_GADGET_ARROW_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "ArrowDir.h" +#include "MGButton.h" + + +class CMGArrow : public CMGButton { +public: + enum ArrowDir mg_adDirection; + void Render(CDrawPort *pdp); + void OnActivate(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MGButton.cpp b/Sources/SeriousSam/MGButton.cpp new file mode 100644 index 0000000..9fedc4a --- /dev/null +++ b/Sources/SeriousSam/MGButton.cpp @@ -0,0 +1,171 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include +#include "MenuPrinting.h" +#include +#include "LevelInfo.h" +#include "VarList.h" +#include "MGButton.h" + +extern CSoundData *_psdPress; + +extern CMenuGadget *_pmgLastActivatedGadget; + + +CMGButton::CMGButton(void) +{ + mg_pActivatedFunction = NULL; + mg_iIndex = 0; + mg_iCenterI = 0; + mg_iTextMode = 1; + mg_bfsFontSize = BFS_MEDIUM; + mg_iCursorPos = -1; + mg_bRectangle = FALSE; + mg_bMental = FALSE; +} + + +void CMGButton::SetText(CTString strNew) +{ + mg_strText = strNew; +} + + +void CMGButton::OnActivate(void) +{ + if (mg_pActivatedFunction != NULL && mg_bEnabled) + { + PlayMenuSound(_psdPress); + IFeel_PlayEffect("Menu_press"); + _pmgLastActivatedGadget = this; + (*mg_pActivatedFunction)(); + } +} + + +void CMGButton::Render(CDrawPort *pdp) +{ + if (mg_bfsFontSize == BFS_LARGE) { + SetFontBig(pdp); + } + else if (mg_bfsFontSize == BFS_MEDIUM) { + SetFontMedium(pdp); + } + else { + ASSERT(mg_bfsFontSize == BFS_SMALL); + SetFontSmall(pdp); + } + pdp->SetTextMode(mg_iTextMode); + + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + COLOR col = GetCurrentColor(); + if (mg_bEditing) { + col = LCDGetColor(C_GREEN | 0xFF, "editing"); + } + + COLOR colRectangle = col; + if (mg_bHighlighted) { + col = LCDGetColor(C_WHITE | 0xFF, "hilited"); + if (!mg_bFocused) { + colRectangle = LCDGetColor(C_WHITE | 0xFF, "hilited rectangle"); + } + } + if (mg_bMental) { + FLOAT tmIn = 0.2f; + FLOAT tmOut = 1.0f; + FLOAT tmFade = 0.1f; + FLOAT tmExist = tmFade + tmIn + tmFade; + FLOAT tmTotal = tmFade + tmIn + tmFade + tmOut; + + FLOAT tmTime = _pTimer->GetHighPrecisionTimer().GetSeconds(); + FLOAT fFactor = 1; + if (tmTime>0.1f) { + tmTime = fmod(tmTime, tmTotal); + fFactor = CalculateRatio(tmTime, 0, tmExist, tmFade / tmExist, tmFade / tmExist); + } + col = (col&~0xFF) | INDEX(0xFF * fFactor); + } + + if (mg_bRectangle) { + // put border + const PIX pixLeft = box.Min()(1); + const PIX pixUp = box.Min()(2) - 3; + const PIX pixWidth = box.Size()(1) + 1; + const PIX pixHeight = box.Size()(2); + pdp->DrawBorder(pixLeft, pixUp, pixWidth, pixHeight, colRectangle); + } + + if (mg_bEditing) { + // put border + PIX pixLeft = box.Min()(1); + PIX pixUp = box.Min()(2) - 3; + PIX pixWidth = box.Size()(1) + 1; + PIX pixHeight = box.Size()(2); + if (mg_strLabel != "") { + pixLeft = box.Min()(1) + box.Size()(1)*0.55f; + pixWidth = box.Size()(1)*0.45f + 1; + } + pdp->Fill(pixLeft, pixUp, pixWidth, pixHeight, LCDGetColor(C_dGREEN | 0x40, "edit fill")); + } + + + INDEX iCursor = mg_iCursorPos; + + // print text + if (mg_strLabel != "") { + PIX pixIL = box.Min()(1) + box.Size()(1)*0.45f; + PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; + PIX pixJ = box.Min()(2); + + pdp->PutTextR(mg_strLabel, pixIL, pixJ, col); + pdp->PutText(mg_strText, pixIR, pixJ, col); + } + else { + CTString str = mg_strText; + if (pdp->dp_FontData->fd_bFixedWidth) { + str = str.Undecorated(); + INDEX iLen = str.Length(); + INDEX iMaxLen = ClampDn(box.Size()(1) / (pdp->dp_pixTextCharSpacing + pdp->dp_FontData->fd_pixCharWidth), 1L); + if (iCursor >= iMaxLen) { + str.TrimRight(iCursor); + str.TrimLeft(iMaxLen); + iCursor = iMaxLen; + } + else { + str.TrimRight(iMaxLen); + } + } + if (mg_iCenterI == -1) pdp->PutText(str, box.Min()(1), box.Min()(2), col); + else if (mg_iCenterI == +1) pdp->PutTextR(str, box.Max()(1), box.Min()(2), col); + else pdp->PutTextC(str, box.Center()(1), box.Min()(2), col); + } + + // put cursor if editing + if (mg_bEditing && (((ULONG)(_pTimer->GetRealTimeTick() * 2)) & 1)) { + PIX pixX = box.Min()(1) + GetCharOffset(pdp, iCursor); + if (mg_strLabel != "") { + pixX += box.Size()(1)*0.55f; + } + PIX pixY = box.Min()(2); + if (!pdp->dp_FontData->fd_bFixedWidth) { + pixY -= pdp->dp_fTextScaling * 2; + } + pdp->PutText("|", pixX, pixY, LCDGetColor(C_WHITE | 0xFF, "editing cursor")); + } +} + + +PIX CMGButton::GetCharOffset(CDrawPort *pdp, INDEX iCharNo) +{ + if (pdp->dp_FontData->fd_bFixedWidth) { + return (pdp->dp_FontData->fd_pixCharWidth + pdp->dp_pixTextCharSpacing)*(iCharNo - 0.5f); + } + CTString strCut(mg_strText); + strCut.TrimLeft(strlen(mg_strText) - iCharNo); + PIX pixFullWidth = pdp->GetTextWidth(mg_strText); + PIX pixCutWidth = pdp->GetTextWidth(strCut); + // !!!! not implemented for different centering + return pixFullWidth - pixCutWidth; +} \ No newline at end of file diff --git a/Sources/SeriousSam/MGButton.h b/Sources/SeriousSam/MGButton.h new file mode 100644 index 0000000..ed3444b --- /dev/null +++ b/Sources/SeriousSam/MGButton.h @@ -0,0 +1,34 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_GADGET_BUTTON_H +#define SE_INCL_MENU_GADGET_BUTTON_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "MenuGadget.h" + + +class CMGButton : public CMenuGadget { +public: + CTString mg_strLabel; // for those that have labels separately from main text + CTString mg_strText; + INDEX mg_iCenterI; + enum ButtonFontSize mg_bfsFontSize; + BOOL mg_bEditing; + BOOL mg_bHighlighted; + BOOL mg_bRectangle; + BOOL mg_bMental; + INDEX mg_iTextMode; + INDEX mg_iCursorPos; + + INDEX mg_iIndex; + void(*mg_pActivatedFunction)(void); + CMGButton(void); + void SetText(CTString strNew); + void OnActivate(void); + void Render(CDrawPort *pdp); + PIX GetCharOffset(CDrawPort *pdp, INDEX iCharNo); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MGChangePlayer.cpp b/Sources/SeriousSam/MGChangePlayer.cpp new file mode 100644 index 0000000..e7b2a4c --- /dev/null +++ b/Sources/SeriousSam/MGChangePlayer.cpp @@ -0,0 +1,37 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include +#include "MenuPrinting.h" +#include +#include "MGChangePlayer.h" + +extern CSoundData *_psdPress; + + +void CMGChangePlayer::OnActivate(void) +{ + PlayMenuSound(_psdPress); + IFeel_PlayEffect("Menu_press"); + _iLocalPlayer = mg_iLocalPlayer; + if (_pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer] < 0) + _pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer] = 0; + gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer]; + gmPlayerProfile.gm_pgmParentMenu = &gmSelectPlayersMenu; + extern BOOL _bPlayerMenuFromSinglePlayer; + _bPlayerMenuFromSinglePlayer = FALSE; + ChangeToMenu(&gmPlayerProfile); +} + +void CMGChangePlayer::SetPlayerText(void) +{ + INDEX iPlayer = _pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer]; + CPlayerCharacter &pc = _pGame->gm_apcPlayers[iPlayer]; + if (iPlayer<0 || iPlayer>7) { + mg_strText = "????"; + } + else { + mg_strText.PrintF(TRANS("Player %d: %s\n"), mg_iLocalPlayer + 1, pc.GetNameForPrinting()); + } +} \ No newline at end of file diff --git a/Sources/SeriousSam/MGChangePlayer.h b/Sources/SeriousSam/MGChangePlayer.h new file mode 100644 index 0000000..16b3796 --- /dev/null +++ b/Sources/SeriousSam/MGChangePlayer.h @@ -0,0 +1,20 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_GADGET_CHANGEPLAYER_H +#define SE_INCL_MENU_GADGET_CHANGEPLAYER_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "MGButton.h" + + +class CMGChangePlayer : public CMGButton { +public: + INDEX mg_iLocalPlayer; + + void SetPlayerText(void); + void OnActivate(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MGEdit.cpp b/Sources/SeriousSam/MGEdit.cpp new file mode 100644 index 0000000..0ae93f3 --- /dev/null +++ b/Sources/SeriousSam/MGEdit.cpp @@ -0,0 +1,169 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include +#include "MenuPrinting.h" +#include +#include "MGEdit.h" + +extern CSoundData *_psdPress; + +extern BOOL _bEditingString; + + +CMGEdit::CMGEdit(void) +{ + mg_pstrToChange = NULL; + mg_ctMaxStringLen = 70; + Clear(); +} + + +void CMGEdit::Clear(void) +{ + mg_iCursorPos = 0; + mg_bEditing = FALSE; + _bEditingString = FALSE; +} + + +void CMGEdit::OnActivate(void) +{ + if (!mg_bEnabled) { + return; + } + ASSERT(mg_pstrToChange != NULL); + PlayMenuSound(_psdPress); + IFeel_PlayEffect("Menu_press"); + SetText(mg_strText); + mg_iCursorPos = strlen(mg_strText); + mg_bEditing = TRUE; + _bEditingString = TRUE; +} + + +// focus lost +void CMGEdit::OnKillFocus(void) +{ + // go out of editing mode + if (mg_bEditing) { + OnKeyDown(VK_RETURN); + Clear(); + } + // proceed + CMenuGadget::OnKillFocus(); +} + +// helper function for deleting char(s) from string +static void Key_BackDel(CTString &str, INDEX &iPos, BOOL bShift, BOOL bRight) +{ + // do nothing if string is empty + INDEX ctChars = strlen(str); + if (ctChars == 0) return; + if (bRight && iPos0) { // BACKSPACE key + if (bShift) { + // delete to start of line + str.TrimLeft(ctChars - iPos); + iPos = 0; + } + else { + // delete only one char + str.DeleteChar(iPos - 1); + iPos--; + } + } +} + +// key/mouse button pressed +BOOL CMGEdit::OnKeyDown(int iVKey) +{ + // if not in edit mode + if (!mg_bEditing) { + // behave like normal gadget + return CMenuGadget::OnKeyDown(iVKey); + } + + // finish editing? + BOOL bShift = GetKeyState(VK_SHIFT) & 0x8000; + switch (iVKey) { + case VK_UP: case VK_DOWN: + case VK_RETURN: case VK_LBUTTON: *mg_pstrToChange = mg_strText; Clear(); OnStringChanged(); break; + case VK_ESCAPE: case VK_RBUTTON: mg_strText = *mg_pstrToChange; Clear(); OnStringCanceled(); break; + case VK_LEFT: if (mg_iCursorPos > 0) mg_iCursorPos--; break; + case VK_RIGHT: if (mg_iCursorPos < strlen(mg_strText)) mg_iCursorPos++; break; + case VK_HOME: mg_iCursorPos = 0; break; + case VK_END: mg_iCursorPos = strlen(mg_strText); break; + case VK_BACK: Key_BackDel(mg_strText, mg_iCursorPos, bShift, FALSE); break; + case VK_DELETE: Key_BackDel(mg_strText, mg_iCursorPos, bShift, TRUE); break; + default: break; // ignore all other special keys + } + + // key is handled + return TRUE; +} + + +// char typed +BOOL CMGEdit::OnChar(MSG msg) +{ + // if not in edit mode + if (!mg_bEditing) { + // behave like normal gadget + return CMenuGadget::OnChar(msg); + } + // only chars are allowed + const INDEX ctFullLen = mg_strText.Length(); + const INDEX ctNakedLen = mg_strText.LengthNaked(); + mg_iCursorPos = Clamp(mg_iCursorPos, 0L, ctFullLen); + int iVKey = msg.wParam; + if (isprint(iVKey) && ctNakedLen <= mg_ctMaxStringLen) { + mg_strText.InsertChar(mg_iCursorPos, (char)iVKey); + mg_iCursorPos++; + } + // key is handled + return TRUE; +} + + +void CMGEdit::Render(CDrawPort *pdp) +{ + if (mg_bEditing) { + mg_iTextMode = -1; + } + else if (mg_bFocused) { + mg_iTextMode = 0; + } + else { + mg_iTextMode = 1; + } + if (mg_strText == "" && !mg_bEditing) { + if (mg_bfsFontSize == BFS_SMALL) { + mg_strText = "*"; + } + else { + mg_strText = TRANS(""); + } + CMGButton::Render(pdp); + mg_strText = ""; + } + else { + CMGButton::Render(pdp); + } +} +void CMGEdit::OnStringChanged(void) +{ +} +void CMGEdit::OnStringCanceled(void) +{ +} \ No newline at end of file diff --git a/Sources/SeriousSam/MGEdit.h b/Sources/SeriousSam/MGEdit.h new file mode 100644 index 0000000..70a6b9b --- /dev/null +++ b/Sources/SeriousSam/MGEdit.h @@ -0,0 +1,28 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_GADGET_EDIT_H +#define SE_INCL_MENU_GADGET_EDIT_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "MGButton.h" + + +class CMGEdit : public CMGButton { +public: + INDEX mg_ctMaxStringLen; + CTString *mg_pstrToChange; + CMGEdit(void); + // return TRUE if handled + BOOL OnKeyDown(int iVKey); + BOOL OnChar(MSG msg); + void Clear(void); + void OnActivate(void); + void OnKillFocus(void); + void Render(CDrawPort *pdp); + virtual void OnStringChanged(void); + virtual void OnStringCanceled(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MGFileButton.cpp b/Sources/SeriousSam/MGFileButton.cpp new file mode 100644 index 0000000..56e6ffe --- /dev/null +++ b/Sources/SeriousSam/MGFileButton.cpp @@ -0,0 +1,231 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include +#include "MenuPrinting.h" +#include +#include "MGFileButton.h" + +extern CSoundData *_psdPress; + + +CMGFileButton::CMGFileButton(void) +{ + mg_iState = FBS_NORMAL; +} + +// refresh current text from description +void CMGFileButton::RefreshText(void) +{ + mg_strText = mg_strDes; + mg_strText.OnlyFirstLine(); + mg_strInfo = mg_strDes; + mg_strInfo.RemovePrefix(mg_strText); + mg_strInfo.DeleteChar(0); +} + +void CMGFileButton::SaveDescription(void) +{ + CTFileName fnFileNameDescription = mg_fnm.NoExt() + ".des"; + try { + mg_strDes.Save_t(fnFileNameDescription); + } + catch (char *strError) { + CPrintF("%s\n", strError); + } +} + +CMGFileButton *_pmgFileToSave = NULL; +void OnFileSaveOK(void) +{ + if (_pmgFileToSave != NULL) { + _pmgFileToSave->SaveYes(); + } +} + +void CMGFileButton::DoSave(void) +{ + if (FileExistsForWriting(mg_fnm)) { + _pmgFileToSave = this; + extern void SaveConfirm(void); + SaveConfirm(); + } + else { + SaveYes(); + } +} + +void CMGFileButton::SaveYes(void) +{ + ASSERT(gmLoadSaveMenu.gm_bSave); + // call saving function + BOOL bSucceeded = gmLoadSaveMenu.gm_pAfterFileChosen(mg_fnm); + // if saved + if (bSucceeded) { + // save the description too + SaveDescription(); + } +} + +void CMGFileButton::DoLoad(void) +{ + ASSERT(!gmLoadSaveMenu.gm_bSave); + // if no file + if (!FileExists(mg_fnm)) { + // do nothing + return; + } + if (gmLoadSaveMenu.gm_pgmNextMenu != NULL) { + gmLoadSaveMenu.gm_pgmParentMenu = gmLoadSaveMenu.gm_pgmNextMenu; + } + // call loading function + BOOL bSucceeded = gmLoadSaveMenu.gm_pAfterFileChosen(mg_fnm); + ASSERT(bSucceeded); +} + +static CTString _strTmpDescription; +static CTString _strOrgDescription; + +void CMGFileButton::StartEdit(void) +{ + CMGEdit::OnActivate(); +} + +void CMGFileButton::OnActivate(void) +{ + if (mg_fnm == "") { + return; + } + + PlayMenuSound(_psdPress); + IFeel_PlayEffect("Menu_press"); + + // if loading + if (!gmLoadSaveMenu.gm_bSave) { + // load now + DoLoad(); + // if saving + } + else { + // switch to editing mode + BOOL bWasEmpty = mg_strText == EMPTYSLOTSTRING; + mg_strDes = gmLoadSaveMenu.gm_strSaveDes; + RefreshText(); + _strOrgDescription = _strTmpDescription = mg_strText; + if (bWasEmpty) { + _strOrgDescription = EMPTYSLOTSTRING; + } + mg_pstrToChange = &_strTmpDescription; + StartEdit(); + mg_iState = FBS_SAVENAME; + } +} +BOOL CMGFileButton::OnKeyDown(int iVKey) +{ + if (mg_iState == FBS_NORMAL) { + if (gmLoadSaveMenu.gm_bSave || gmLoadSaveMenu.gm_bManage) { + if (iVKey == VK_F2) { + if (FileExistsForWriting(mg_fnm)) { + // switch to renaming mode + _strOrgDescription = mg_strText; + _strTmpDescription = mg_strText; + mg_pstrToChange = &_strTmpDescription; + StartEdit(); + mg_iState = FBS_RENAME; + } + return TRUE; + } + else if (iVKey == VK_DELETE) { + if (FileExistsForWriting(mg_fnm)) { + // delete the file, its description and thumbnail + RemoveFile(mg_fnm); + RemoveFile(mg_fnm.NoExt() + ".des"); + RemoveFile(mg_fnm.NoExt() + "Tbn.tex"); + // refresh menu + gmLoadSaveMenu.EndMenu(); + gmLoadSaveMenu.StartMenu(); + OnSetFocus(); + } + return TRUE; + } + } + return CMenuGadget::OnKeyDown(iVKey); + } + else { + // go out of editing mode + if (mg_bEditing) { + if (iVKey == VK_UP || iVKey == VK_DOWN) { + CMGEdit::OnKeyDown(VK_ESCAPE); + } + } + return CMGEdit::OnKeyDown(iVKey); + } +} + +void CMGFileButton::OnSetFocus(void) +{ + mg_iState = FBS_NORMAL; + + if (gmLoadSaveMenu.gm_bAllowThumbnails && mg_bEnabled) { + SetThumbnail(mg_fnm); + } + else { + ClearThumbnail(); + } + pgmCurrentMenu->KillAllFocuses(); + CMGButton::OnSetFocus(); +} + +void CMGFileButton::OnKillFocus(void) +{ + // go out of editing mode + if (mg_bEditing) { + OnKeyDown(VK_ESCAPE); + } + CMGEdit::OnKillFocus(); +} + +// override from edit gadget +void CMGFileButton::OnStringChanged(void) +{ + // if saving + if (mg_iState == FBS_SAVENAME) { + // do the save + mg_strDes = _strTmpDescription + "\n" + mg_strInfo; + DoSave(); + // if renaming + } + else if (mg_iState == FBS_RENAME) { + // do the rename + mg_strDes = _strTmpDescription + "\n" + mg_strInfo; + SaveDescription(); + // refresh menu + gmLoadSaveMenu.EndMenu(); + gmLoadSaveMenu.StartMenu(); + OnSetFocus(); + } +} +void CMGFileButton::OnStringCanceled(void) +{ + mg_strText = _strOrgDescription; +} + +void CMGFileButton::Render(CDrawPort *pdp) +{ + // render original gadget first + CMGEdit::Render(pdp); + + // if currently selected + if (mg_bFocused && mg_bEnabled) { + // add info at the bottom if screen + SetFontMedium(pdp); + + PIXaabbox2D box = FloatBoxToPixBox(pdp, BoxSaveLoad(15.0)); + PIX pixI = box.Min()(1); + PIX pixJ = box.Min()(2); + + COLOR col = LCDGetColor(C_mlGREEN | 255, "file info"); + pdp->PutText(mg_strInfo, pixI, pixJ, col); + } +} \ No newline at end of file diff --git a/Sources/SeriousSam/MGFileButton.h b/Sources/SeriousSam/MGFileButton.h new file mode 100644 index 0000000..0e614a3 --- /dev/null +++ b/Sources/SeriousSam/MGFileButton.h @@ -0,0 +1,43 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_GADGET_FILEBUTTON_H +#define SE_INCL_MENU_GADGET_FILEBUTTON_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "MGEdit.h" + +// file button states +#define FBS_NORMAL 0 // normal active state +#define FBS_SAVENAME 1 // typing in the save name +#define FBS_RENAME 2 // renaming existing file +class CMGFileButton : public CMGEdit { +public: + CMGFileButton(void); + CTFileName mg_fnm; + CTString mg_strDes; // entire description goes here + CTString mg_strInfo; // info part of text to print above the gadget tip + INDEX mg_iState; + // refresh current text from description + void RefreshText(void); + // save description to disk + void SaveDescription(void); + void SaveYes(void); + void DoSave(void); + void DoLoad(void); + void StartEdit(void); + + // return TRUE if handled + BOOL OnKeyDown(int iVKey); + void OnActivate(void); + void OnSetFocus(void); + void OnKillFocus(void); + + // overrides from edit gadget + void OnStringChanged(void); + void OnStringCanceled(void); + void Render(CDrawPort *pdp); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MGHighScore.cpp b/Sources/SeriousSam/MGHighScore.cpp new file mode 100644 index 0000000..61b4109 --- /dev/null +++ b/Sources/SeriousSam/MGHighScore.cpp @@ -0,0 +1,91 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include +#include "MenuPrinting.h" +#include +#include "MGHighScore.h" + +#define HSCOLUMNS 6 +CTString strHighScores[HIGHSCORE_COUNT + 1][HSCOLUMNS]; +FLOAT afI[HSCOLUMNS] = { + 0.12f, 0.15f, 0.6f, 0.7f, 0.78f, 0.9f +}; + + +void CMGHighScore::Render(CDrawPort *pdp) +{ + SetFontMedium(pdp); + + COLOR colHeader = LCDGetColor(C_GREEN | 255, "hiscore header"); + COLOR colData = LCDGetColor(C_mdGREEN | 255, "hiscore data"); + COLOR colLastSet = LCDGetColor(C_mlGREEN | 255, "hiscore last set"); + INDEX iLastSet = _pGame->gm_iLastSetHighScore; + + CTString strText; + + strHighScores[0][0] = TRANS("No."); + strHighScores[0][1] = TRANS("Player Name"); + strHighScores[0][2] = TRANS("Difficulty"); + strHighScores[0][3] = TRANS("Time"); + strHighScores[0][4] = TRANS("Kills"); + strHighScores[0][5] = TRANS("Score"); + + {for (INDEX i = 0; igm_ahseHighScores[i].hse_gdDifficulty) { + default: + ASSERT(FALSE); + case (CSessionProperties::GameDifficulty) - 100: + strHighScores[i + 1][1] = "---"; + continue; + break; + case CSessionProperties::GD_TOURIST: + strHighScores[i + 1][2] = TRANS("Tourist"); + break; + case CSessionProperties::GD_EASY: + strHighScores[i + 1][2] = TRANS("Easy"); + break; + case CSessionProperties::GD_NORMAL: + strHighScores[i + 1][2] = TRANS("Normal"); + break; + case CSessionProperties::GD_HARD: + strHighScores[i + 1][2] = TRANS("Hard"); + break; + case CSessionProperties::GD_EXTREME: + strHighScores[i + 1][2] = TRANS("Serious"); + break; + case CSessionProperties::GD_EXTREME + 1: + strHighScores[i + 1][2] = TRANS("Mental"); + break; + } + strHighScores[i + 1][0].PrintF("%d", i + 1); + strHighScores[i + 1][1] = _pGame->gm_ahseHighScores[i].hse_strPlayer; + strHighScores[i + 1][3] = TimeToString(_pGame->gm_ahseHighScores[i].hse_tmTime); + strHighScores[i + 1][4].PrintF("%03d", _pGame->gm_ahseHighScores[i].hse_ctKills); + strHighScores[i + 1][5].PrintF("%9d", _pGame->gm_ahseHighScores[i].hse_ctScore); + }} + + PIX pixJ = pdp->GetHeight()*0.25f; + {for (INDEX iRow = 0; iRowGetWidth()*afI[iColumn]; + if (iColumn == 1) { + pdp->PutText(strHighScores[iRow][iColumn], pixI, pixJ, col); + } + else { + pdp->PutTextR(strHighScores[iRow][iColumn], pixI, pixJ, col); + } + }} + if (iRow == 0) { + pixJ += pdp->GetHeight()*0.06f; + } + else { + pixJ += pdp->GetHeight()*0.04f; + } + }} +} \ No newline at end of file diff --git a/Sources/SeriousSam/MGHighScore.h b/Sources/SeriousSam/MGHighScore.h new file mode 100644 index 0000000..9c0c2b0 --- /dev/null +++ b/Sources/SeriousSam/MGHighScore.h @@ -0,0 +1,17 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_GADGET_HIGHSCORE_H +#define SE_INCL_MENU_GADGET_HIGHSCORE_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "MenuGadget.h" + + +class CMGHighScore : public CMenuGadget { +public: + void Render(CDrawPort *pdp); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MGKeyDefinition.cpp b/Sources/SeriousSam/MGKeyDefinition.cpp new file mode 100644 index 0000000..8ef80d5 --- /dev/null +++ b/Sources/SeriousSam/MGKeyDefinition.cpp @@ -0,0 +1,218 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include +#include "MenuPrinting.h" +#include +#include "MGKeyDefinition.h" + +extern CSoundData *_psdSelect; +extern CSoundData *_psdPress; + +extern BOOL _bDefiningKey; + + +CMGKeyDefinition::CMGKeyDefinition(void) +{ + mg_iState = DOING_NOTHING; +} + + +void CMGKeyDefinition::OnActivate(void) +{ + PlayMenuSound(_psdPress); + IFeel_PlayEffect("Menu_press"); + SetBindingNames(/*bDefining=*/TRUE); + mg_iState = RELEASE_RETURN_WAITING; +} + + +BOOL CMGKeyDefinition::OnKeyDown(int iVKey) +{ + // if waiting for a key definition + if (mg_iState == PRESS_KEY_WAITING) { + // do nothing + return TRUE; + } + + // if backspace pressed + if (iVKey == VK_BACK) { + // clear both keys + DefineKey(KID_NONE); + // message is processed + return TRUE; + } + + return CMenuGadget::OnKeyDown(iVKey); +} + +// set names for both key bindings +void CMGKeyDefinition::SetBindingNames(BOOL bDefining) +{ + // find the button + INDEX ict = 0; + INDEX iDik = 0; + FOREACHINLIST(CButtonAction, ba_lnNode, _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions, itba) { + if (ict == mg_iControlNumber) { + CButtonAction &ba = *itba; + // get the current bindings and names + INDEX iKey1 = ba.ba_iFirstKey; + INDEX iKey2 = ba.ba_iSecondKey; + BOOL bKey1Bound = iKey1 != KID_NONE; + BOOL bKey2Bound = iKey2 != KID_NONE; + CTString strKey1 = _pInput->GetButtonTransName(iKey1); + CTString strKey2 = _pInput->GetButtonTransName(iKey2); + + // if defining + if (bDefining) { + // if only first key is defined + if (bKey1Bound && !bKey2Bound) { + // put question mark for second key + mg_strBinding = strKey1 + TRANS(" or ") + "?"; + // otherwise + } + else { + // put question mark only + mg_strBinding = "?"; + } + // if not defining + } + else { + // if second key is defined + if (bKey2Bound) { + // add both + mg_strBinding = strKey1 + TRANS(" or ") + strKey2; + // if second key is undefined + } + else { + // display only first one + mg_strBinding = strKey1; + } + } + return; + } + ict++; + } + + // if not found, put errorneous string + mg_strBinding = "???"; +} + +void CMGKeyDefinition::Appear(void) +{ + SetBindingNames(/*bDefining=*/FALSE); + CMenuGadget::Appear(); +} + +void CMGKeyDefinition::Disappear(void) +{ + CMenuGadget::Disappear(); +} + +void CMGKeyDefinition::DefineKey(INDEX iDik) +{ + // for each button in controls + INDEX ict = 0; + FOREACHINLIST(CButtonAction, ba_lnNode, _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions, itba) { + CButtonAction &ba = *itba; + // if it is this one + if (ict == mg_iControlNumber) { + // if should clear + if (iDik == KID_NONE) { + // unbind both + ba.ba_iFirstKey = KID_NONE; + ba.ba_iSecondKey = KID_NONE; + } + // if first key is unbound, or both keys are bound + if (ba.ba_iFirstKey == KID_NONE || ba.ba_iSecondKey != KID_NONE) { + // bind first key + ba.ba_iFirstKey = iDik; + // clear second key + ba.ba_iSecondKey = KID_NONE; + // if only first key bound + } + else { + // bind second key + ba.ba_iSecondKey = iDik; + } + // if it is not this one + } + else { + // clear bindings that contain this key + if (ba.ba_iFirstKey == iDik) { + ba.ba_iFirstKey = KID_NONE; + } + if (ba.ba_iSecondKey == iDik) { + ba.ba_iSecondKey = KID_NONE; + } + } + ict++; + } + + SetBindingNames(/*bDefining=*/FALSE); +} + +void CMGKeyDefinition::Think(void) +{ + if (mg_iState == RELEASE_RETURN_WAITING) + { + _bDefiningKey = TRUE; + extern BOOL _bMouseUsedLast; + _bMouseUsedLast = FALSE; + _pInput->SetJoyPolling(TRUE); + _pInput->GetInput(FALSE); + if (_pInput->IsInputEnabled() && + !_pInput->GetButtonState(KID_ENTER) && + !_pInput->GetButtonState(KID_MOUSE1)) + { + mg_iState = PRESS_KEY_WAITING; + } + } + else if (mg_iState == PRESS_KEY_WAITING) + { + _pInput->SetJoyPolling(TRUE); + _pInput->GetInput(FALSE); + for (INDEX iDik = 0; iDikGetButtonState(iDik)) + { + // skip keys that cannot be defined + if (iDik == KID_TILDE) { + continue; + } + // if escape not pressed + if (iDik != KID_ESCAPE) { + // define the new key + DefineKey(iDik); + // if escape pressed + } + else { + // undefine the key + DefineKey(KID_NONE); + } + + // end defining loop + mg_iState = DOING_NOTHING; + _bDefiningKey = FALSE; + // refresh all buttons + pgmCurrentMenu->FillListItems(); + break; + } + } + } +} + +void CMGKeyDefinition::Render(CDrawPort *pdp) +{ + SetFontMedium(pdp); + + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + PIX pixIL = box.Min()(1) + box.Size()(1)*0.45f; + PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; + PIX pixJ = box.Min()(2); + + COLOR col = GetCurrentColor(); + pdp->PutTextR(mg_strLabel, pixIL, pixJ, col); + pdp->PutText(mg_strBinding, pixIR, pixJ, col); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MGKeyDefinition.h b/Sources/SeriousSam/MGKeyDefinition.h new file mode 100644 index 0000000..6686e7a --- /dev/null +++ b/Sources/SeriousSam/MGKeyDefinition.h @@ -0,0 +1,33 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_GADGET_KEYDEFINITION_H +#define SE_INCL_MENU_GADGET_KEYDEFINITION_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "MenuGadget.h" + + +class CMGKeyDefinition : public CMenuGadget { +public: + INDEX mg_iState; + INDEX mg_iControlNumber; + + CTString mg_strLabel; + CTString mg_strBinding; + + CMGKeyDefinition(void); + void Appear(void); + void Disappear(void); + void OnActivate(void); + // return TRUE if handled + BOOL OnKeyDown(int iVKey); + void Think(void); + // set names for both key bindings + void SetBindingNames(BOOL bDefining); + void DefineKey(INDEX iDik); + void Render(CDrawPort *pdp); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MGLevelButton.cpp b/Sources/SeriousSam/MGLevelButton.cpp new file mode 100644 index 0000000..33fede9 --- /dev/null +++ b/Sources/SeriousSam/MGLevelButton.cpp @@ -0,0 +1,27 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include +#include "MenuPrinting.h" +#include +#include "MGLevelButton.h" + +extern CSoundData *_psdPress; + + +void CMGLevelButton::OnActivate(void) +{ + PlayMenuSound(_psdPress); + IFeel_PlayEffect("Menu_press"); + _pGame->gam_strCustomLevel = mg_fnmLevel; + extern void(*_pAfterLevelChosen)(void); + _pAfterLevelChosen(); +} + + +void CMGLevelButton::OnSetFocus(void) +{ + SetThumbnail(mg_fnmLevel); + CMGButton::OnSetFocus(); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MGLevelButton.h b/Sources/SeriousSam/MGLevelButton.h new file mode 100644 index 0000000..31f491a --- /dev/null +++ b/Sources/SeriousSam/MGLevelButton.h @@ -0,0 +1,20 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_GADGET_LEVELBUTTON_H +#define SE_INCL_MENU_GADGET_LEVELBUTTON_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "MGButton.h" + + +class CMGLevelButton : public CMGButton { +public: + CTFileName mg_fnmLevel; + + void OnActivate(void); + void OnSetFocus(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MGModel.cpp b/Sources/SeriousSam/MGModel.cpp new file mode 100644 index 0000000..243a9bd --- /dev/null +++ b/Sources/SeriousSam/MGModel.cpp @@ -0,0 +1,114 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include +#include "MenuPrinting.h" +#include +#include "MGModel.h" + +extern INDEX sam_bWideScreen; + + +CMGModel::CMGModel(void) +{ + mg_fFloorY = 0; +} + +void CMGModel::Render(CDrawPort *pdp) +{ + // if no model + if (mg_moModel.GetData() == NULL) { + // just render text + mg_strText = TRANS("No model"); + CMGButton::Render(pdp); + return; + } + + // get position on screen + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + CDrawPort dpModel(pdp, box); + dpModel.Lock(); + dpModel.FillZBuffer(1.0f); + + LCDSetDrawport(&dpModel); + // clear menu here + dpModel.Fill(C_BLACK | 255); + LCDRenderClouds1(); + LCDRenderClouds2(); + + // prepare projection + CRenderModel rmRenderModel; + CPerspectiveProjection3D pr; + pr.FOVL() = sam_bWideScreen ? AngleDeg(45.0f) : AngleDeg(30.0f); + pr.ScreenBBoxL() = FLOATaabbox2D( + FLOAT2D(0.0f, 0.0f), + FLOAT2D((float)dpModel.GetWidth(), (float)dpModel.GetHeight()) + ); + pr.AspectRatioL() = 1.0f; + pr.FrontClipDistanceL() = 0.3f; + pr.ViewerPlacementL() = CPlacement3D(FLOAT3D(0, 0, 0), ANGLE3D(0, 0, 0)); + + // initialize remdering + CAnyProjection3D apr; + apr = pr; + BeginModelRenderingView(apr, &dpModel); + rmRenderModel.rm_vLightDirection = FLOAT3D(0.2f, -0.2f, -0.2f); + + // if model needs floor + if (mg_moFloor.GetData() != NULL) { + // set floor's position + CPlacement3D pl = mg_plModel; + pl.pl_OrientationAngle = ANGLE3D(0, 0, 0); + pl.pl_PositionVector = mg_plModel.pl_PositionVector; + pl.pl_PositionVector(2) += mg_fFloorY; + rmRenderModel.SetObjectPlacement(pl); + + // render the floor + rmRenderModel.rm_colLight = C_WHITE; + rmRenderModel.rm_colAmbient = C_WHITE; + mg_moFloor.SetupModelRendering(rmRenderModel); + mg_moFloor.RenderModel(rmRenderModel); + } + + // set model's position + CPlacement3D pl; + pl.pl_OrientationAngle = mg_plModel.pl_OrientationAngle; + pl.pl_PositionVector = mg_plModel.pl_PositionVector; + extern FLOAT sam_fPlayerOffset; + pl.pl_PositionVector(3) += sam_fPlayerOffset; + rmRenderModel.SetObjectPlacement(pl); + + // render the model + rmRenderModel.rm_colLight = LerpColor(C_BLACK, C_WHITE, 0.4f) | CT_OPAQUE; + rmRenderModel.rm_colAmbient = LerpColor(C_BLACK, C_WHITE, 0.2f) | CT_OPAQUE; + mg_moModel.SetupModelRendering(rmRenderModel); + FLOATplane3D plFloorPlane = FLOATplane3D(FLOAT3D(0.0f, 1.0f, 0.0f), + mg_plModel.pl_PositionVector(2) + mg_fFloorY); + FLOAT3D vShadowLightDir = FLOAT3D(-0.2f, -0.4f, -0.6f); + CPlacement3D plLightPlacement = CPlacement3D( + mg_plModel.pl_PositionVector + + vShadowLightDir*mg_plModel.pl_PositionVector(3) * 5, + ANGLE3D(0, 0, 0)); + mg_moModel.RenderShadow(rmRenderModel, plLightPlacement, 200.0f, 200.0f, 1.0f, plFloorPlane); + mg_moModel.RenderModel(rmRenderModel); + EndModelRenderingView(); + + LCDScreenBox(LCDGetColor(C_GREEN, "model box") | GetCurrentColor()); + + dpModel.Unlock(); + + pdp->Unlock(); + pdp->Lock(); + LCDSetDrawport(pdp); + + // print the model name + { + PIXaabbox2D box = FloatBoxToPixBox(pdp, BoxPlayerModelName()); + COLOR col = GetCurrentColor(); + + PIX pixI = box.Min()(1); + PIX pixJ = box.Max()(2); + pdp->PutText(mg_strText, pixI, pixJ, col); + } +} \ No newline at end of file diff --git a/Sources/SeriousSam/MGModel.h b/Sources/SeriousSam/MGModel.h new file mode 100644 index 0000000..69beaaf --- /dev/null +++ b/Sources/SeriousSam/MGModel.h @@ -0,0 +1,23 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_GADGET_MODEL_H +#define SE_INCL_MENU_GADGET_MODEL_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "MGButton.h" + + +class CMGModel : public CMGButton { +public: + CModelObject mg_moModel; + CModelObject mg_moFloor; + CPlacement3D mg_plModel; + BOOL mg_fFloorY; + + CMGModel(void); + void Render(CDrawPort *pdp); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MGServerList.cpp b/Sources/SeriousSam/MGServerList.cpp new file mode 100644 index 0000000..331c197 --- /dev/null +++ b/Sources/SeriousSam/MGServerList.cpp @@ -0,0 +1,445 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include +#include "MenuPrinting.h" +#include +#include "MGServerList.h" +#include "MGEdit.h" + +extern CSoundData *_psdSelect; +extern CSoundData *_psdPress; + + +FLOATaabbox2D GetBoxPartHoriz(const FLOATaabbox2D &box, FLOAT fMin, FLOAT fMax) +{ + FLOAT fBoxMin = box.Min()(1); + FLOAT fBoxSize = box.Size()(1); + + return FLOATaabbox2D( + FLOAT2D(fBoxMin + fBoxSize*fMin, box.Min()(2)), + FLOAT2D(fBoxMin + fBoxSize*fMax, box.Max()(2))); +} + +void PrintInBox(CDrawPort *pdp, PIX pixI, PIX pixJ, PIX pixSizeI, CTString str, COLOR col) +{ + str = str.Undecorated(); + PIX pixCharSize = pdp->dp_pixTextCharSpacing + pdp->dp_FontData->fd_pixCharWidth; + str.TrimRight(pixSizeI / pixCharSize); + + // print text + pdp->PutText(str, pixI, pixJ, col); +} + + +CMGServerList::CMGServerList() +{ + mg_iSelected = 0; + mg_iFirstOnScreen = 0; + mg_ctOnScreen = 10; + mg_pixMinI = 0; + mg_pixMaxI = 0; + mg_pixListMinJ = 0; + mg_pixListStepJ = 0; + mg_pixDragJ = -1; + mg_iDragLine = -1; + mg_pixMouseDrag = -1; + // by default, sort by ping, best on top + mg_iSort = 2; + mg_bSortDown = FALSE; +} +void CMGServerList::AdjustFirstOnScreen(void) +{ + INDEX ctSessions = _lhServers.Count(); + mg_iSelected = Clamp(mg_iSelected, 0L, ClampDn(ctSessions - 1L, 0L)); + mg_iFirstOnScreen = Clamp(mg_iFirstOnScreen, 0L, ClampDn(ctSessions - mg_ctOnScreen, 0L)); + + if (mg_iSelected= mg_iFirstOnScreen + mg_ctOnScreen) { + mg_iFirstOnScreen = ClampDn(mg_iSelected - mg_ctOnScreen + 1L, 0L); + } +} + +BOOL _iSort = 0; +BOOL _bSortDown = FALSE; + +int CompareSessions(const void *pv0, const void *pv1) +{ + const CNetworkSession &ns0 = **(const CNetworkSession **)pv0; + const CNetworkSession &ns1 = **(const CNetworkSession **)pv1; + + int iResult = 0; + switch (_iSort) { + case 0: iResult = stricmp(ns0.ns_strSession, ns1.ns_strSession); break; + case 1: iResult = stricmp(ns0.ns_strWorld, ns1.ns_strWorld); break; + case 2: iResult = Sgn(ns0.ns_tmPing - ns1.ns_tmPing); break; + case 3: iResult = Sgn(ns0.ns_ctPlayers - ns1.ns_ctPlayers); break; + case 4: iResult = stricmp(ns0.ns_strGameType, ns1.ns_strGameType); break; + case 5: iResult = stricmp(ns0.ns_strMod, ns1.ns_strMod); break; + case 6: iResult = stricmp(ns0.ns_strVer, ns1.ns_strVer); break; + } + + if (iResult == 0) { // make sure we always have unique order when resorting + return stricmp(ns0.ns_strAddress, ns1.ns_strAddress);; + } + + return _bSortDown ? -iResult : iResult; +} + +extern CMGButton mgServerColumn[7]; +extern CMGEdit mgServerFilter[7]; + +void SortAndFilterServers(void) +{ + { FORDELETELIST(CNetworkSession, ns_lnNode, _lhServers, itns) { + delete &*itns; + } } + { + FOREACHINLIST(CNetworkSession, ns_lnNode, _pNetwork->ga_lhEnumeratedSessions, itns) { + CNetworkSession &ns = *itns; + extern CTString _strServerFilter[7]; + if (_strServerFilter[0] != "" && !ns.ns_strSession.Matches("*" + _strServerFilter[0] + "*")) continue; + if (_strServerFilter[1] != "" && !ns.ns_strWorld.Matches("*" + _strServerFilter[1] + "*")) continue; + if (_strServerFilter[2] != "") { + char strCompare[3] = { 0, 0, 0 }; + int iPing = 0; + _strServerFilter[2].ScanF("%2[<>=]%d", strCompare, &iPing); + if (strcmp(strCompare, "<") == 0 && !(int(ns.ns_tmPing * 1000)< iPing)) continue; + if (strcmp(strCompare, "<=") == 0 && !(int(ns.ns_tmPing * 1000) <= iPing)) continue; + if (strcmp(strCompare, ">") == 0 && !(int(ns.ns_tmPing * 1000)> iPing)) continue; + if (strcmp(strCompare, ">=") == 0 && !(int(ns.ns_tmPing * 1000) >= iPing)) continue; + if (strcmp(strCompare, "=") == 0 && !(int(ns.ns_tmPing * 1000) == iPing)) continue; + } + if (_strServerFilter[3] != "") { + char strCompare[3] = { 0, 0, 0 }; + int iPlayers = 0; + _strServerFilter[3].ScanF("%2[<>=]%d", strCompare, &iPlayers); + if (strcmp(strCompare, "<") == 0 && !(ns.ns_ctPlayers< iPlayers)) continue; + if (strcmp(strCompare, "<=") == 0 && !(ns.ns_ctPlayers <= iPlayers)) continue; + if (strcmp(strCompare, ">") == 0 && !(ns.ns_ctPlayers> iPlayers)) continue; + if (strcmp(strCompare, ">=") == 0 && !(ns.ns_ctPlayers >= iPlayers)) continue; + if (strcmp(strCompare, "=") == 0 && !(ns.ns_ctPlayers == iPlayers)) continue; + } + if (_strServerFilter[4] != "" && !ns.ns_strGameType.Matches("*" + _strServerFilter[4] + "*")) continue; + if (_strServerFilter[5] != "" && !ns.ns_strMod.Matches("*" + _strServerFilter[5] + "*")) continue; + if (_strServerFilter[6] != "" && !ns.ns_strVer.Matches("*" + _strServerFilter[6] + "*")) continue; + + CNetworkSession *pnsNew = new CNetworkSession; + pnsNew->Copy(*itns); + _lhServers.AddTail(pnsNew->ns_lnNode); + } +} + + _lhServers.Sort(CompareSessions, offsetof(CNetworkSession, ns_lnNode)); +} + +void CMGServerList::Render(CDrawPort *pdp) +{ + _iSort = mg_iSort; + _bSortDown = mg_bSortDown; + SortAndFilterServers(); + + SetFontSmall(pdp); + BOOL bFocusedBefore = mg_bFocused; + mg_bFocused = FALSE; + + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + COLOR col = GetCurrentColor(); + + PIX pixDPSizeI = pdp->GetWidth(); + PIX pixDPSizeJ = pdp->GetHeight(); + PIX pixCharSizeI = pdp->dp_pixTextCharSpacing + pdp->dp_FontData->fd_pixCharWidth; + PIX pixCharSizeJ = pdp->dp_pixTextLineSpacing + pdp->dp_FontData->fd_pixCharHeight + 1; + PIX pixLineSize = 1; + PIX pixSliderSizeI = 10; + PIX pixOuterMargin = 20; + + INDEX ctSessions = _lhServers.Count(); + INDEX iSession = 0; + + INDEX ctColumns[7]; + {for (INDEX i = 0; iDrawLine(apixSeparatorI[i], pixTopJ, apixSeparatorI[i], pixBottomJ, col | CT_OPAQUE); + } + pdp->DrawLine(apixSeparatorI[0], pixTopJ, apixSeparatorI[8], pixTopJ, col | CT_OPAQUE); + pdp->DrawLine(apixSeparatorI[0], pixListTopJ - pixLineSize, apixSeparatorI[8], pixListTopJ - pixLineSize, col | CT_OPAQUE); + pdp->DrawLine(apixSeparatorI[0], pixBottomJ, apixSeparatorI[8], pixBottomJ, col | CT_OPAQUE); + + PIXaabbox2D boxHandle = GetScrollBarHandleBox(); + pdp->Fill(boxHandle.Min()(1) + 2, boxHandle.Min()(2) + 2, boxHandle.Size()(1) - 3, boxHandle.Size()(2) - 3, col | CT_OPAQUE); + + PIX pixJ = pixTopJ + pixLineSize * 2 + 1; + + mg_ctOnScreen = ctSessionsOnScreen; + AdjustFirstOnScreen(); + + if (_lhServers.Count() == 0) { + if (_pNetwork->ga_strEnumerationStatus != "") { + mg_bFocused = TRUE; + COLOR colItem = GetCurrentColor(); + PrintInBox(pdp, apixSeparatorI[0] + pixCharSizeI, pixListTopJ + pixCharSizeJ + pixLineSize + 1, apixSeparatorI[1] - apixSeparatorI[0], + TRANS("searching..."), colItem); + } + } + else { + FOREACHINLIST(CNetworkSession, ns_lnNode, _lhServers, itns) { + CNetworkSession &ns = *itns; + + if (iSession= mg_iFirstOnScreen + ctSessionsOnScreen) { + iSession++; + continue; + } + + PIX pixJ = pixListTopJ + (iSession - mg_iFirstOnScreen)*pixCharSizeJ + pixLineSize + 1; + + mg_bFocused = bFocusedBefore&&iSession == mg_iSelected; + COLOR colItem = GetCurrentColor(); + + if (ns.ns_strVer != _SE_VER_STRING) { + colItem = MulColors(colItem, 0xA0A0A0FF); + } + + CTString strPing(0, "%4d", INDEX(ns.ns_tmPing * 1000)); + CTString strPlayersCt(0, "%2d/%2d", ns.ns_ctPlayers, ns.ns_ctMaxPlayers); + CTString strMod = ns.ns_strMod; + if (strMod == "") { + strMod = "SeriousSam"; + } + PrintInBox(pdp, apixSeparatorI[0] + pixCharSizeI / 2, pixJ, apixSeparatorI[1] - apixSeparatorI[0] - pixCharSizeI, ns.ns_strSession, colItem); + PrintInBox(pdp, apixSeparatorI[1] + pixCharSizeI / 2, pixJ, apixSeparatorI[2] - apixSeparatorI[1] - pixCharSizeI, TranslateConst(ns.ns_strWorld), colItem); + PrintInBox(pdp, apixSeparatorI[2] + pixCharSizeI / 2, pixJ, apixSeparatorI[3] - apixSeparatorI[2] - pixCharSizeI, strPing, colItem); + PrintInBox(pdp, apixSeparatorI[3] + pixCharSizeI / 2, pixJ, apixSeparatorI[4] - apixSeparatorI[3] - pixCharSizeI, strPlayersCt, colItem); + PrintInBox(pdp, apixSeparatorI[4] + pixCharSizeI / 2, pixJ, apixSeparatorI[5] - apixSeparatorI[4] - pixCharSizeI, TranslateConst(ns.ns_strGameType), colItem); + PrintInBox(pdp, apixSeparatorI[5] + pixCharSizeI / 2, pixJ, apixSeparatorI[6] - apixSeparatorI[5] - pixCharSizeI, TranslateConst(strMod), colItem); + PrintInBox(pdp, apixSeparatorI[6] + pixCharSizeI / 2, pixJ, apixSeparatorI[7] - apixSeparatorI[6] - pixCharSizeI, ns.ns_strVer, colItem); + + iSession++; + } + } + + mg_bFocused = bFocusedBefore; +} + +static INDEX SliderPixToIndex(PIX pixOffset, INDEX iVisible, INDEX iTotal, PIXaabbox2D boxFull) +{ + FLOAT fSize = ClampUp(FLOAT(iVisible) / iTotal, 1.0f); + PIX pixFull = boxFull.Size()(2); + PIX pixSize = PIX(pixFull*fSize); + if (pixSize >= boxFull.Size()(2)) { + return 0; + } + return (iTotal*pixOffset) / pixFull; +} + + +static PIXaabbox2D GetSliderBox(INDEX iFirst, INDEX iVisible, INDEX iTotal, + PIXaabbox2D boxFull) +{ + if (iTotal <= 0) { + return boxFull; + } + FLOAT fSize = ClampUp(FLOAT(iVisible) / iTotal, 1.0f); + PIX pixFull = boxFull.Size()(2); + PIX pixSize = PIX(pixFull*fSize); + pixSize = ClampDn(pixSize, boxFull.Size()(1)); + PIX pixTop = pixFull*(FLOAT(iFirst) / iTotal) + boxFull.Min()(2); + PIX pixI0 = boxFull.Min()(1); + PIX pixI1 = boxFull.Max()(1); + return PIXaabbox2D(PIX2D(pixI0, pixTop), PIX2D(pixI1, pixTop + pixSize)); +} + +PIXaabbox2D CMGServerList::GetScrollBarFullBox(void) +{ + return PIXaabbox2D(PIX2D(mg_pixSBMinI, mg_pixSBMinJ), PIX2D(mg_pixSBMaxI, mg_pixSBMaxJ)); +} +PIXaabbox2D CMGServerList::GetScrollBarHandleBox(void) +{ + return GetSliderBox(mg_iFirstOnScreen, mg_ctOnScreen, _lhServers.Count(), GetScrollBarFullBox()); +} + +void CMGServerList::OnMouseOver(PIX pixI, PIX pixJ) +{ + mg_pixMouseI = pixI; + mg_pixMouseJ = pixJ; + + if (!(GetKeyState(VK_LBUTTON) & 0x8000)) { + mg_pixDragJ = -1; + } + + BOOL bInSlider = (pixI >= mg_pixSBMinI && pixI <= mg_pixSBMaxI && pixJ >= mg_pixSBMinJ && pixJ <= mg_pixSBMaxJ); + if (mg_pixDragJ >= 0 && bInSlider) { + PIX pixDelta = pixJ - mg_pixDragJ; + INDEX ctSessions = _lhServers.Count(); + INDEX iWantedLine = mg_iDragLine + + SliderPixToIndex(pixDelta, mg_ctOnScreen, ctSessions, GetScrollBarFullBox()); + mg_iFirstOnScreen = Clamp(iWantedLine, 0L, ClampDn(ctSessions - mg_ctOnScreen, 0L)); + mg_iSelected = Clamp(mg_iSelected, mg_iFirstOnScreen, mg_iFirstOnScreen + mg_ctOnScreen - 1L); + // AdjustFirstOnScreen(); + return; + } + + // if some server is selected + if (pixI >= mg_pixMinI && pixI <= mg_pixMaxI) { + INDEX iOnScreen = (pixJ - mg_pixListMinJ) / mg_pixListStepJ; + if (iOnScreen >= 0 && iOnScreen=mg_pixHeaderMinJ && mg_pixMouseJ<=mg_pixHeaderMidJ + && mg_pixMouseI>=mg_pixHeaderI[0] && mg_pixMouseI<=mg_pixHeaderI[7]) { + INDEX iNewSort = mg_iSort; + if (mg_pixMouseI<=mg_pixHeaderI[1]) { + iNewSort = 0; + } else if (mg_pixMouseI<=mg_pixHeaderI[2]) { + iNewSort = 1; + } else if (mg_pixMouseI<=mg_pixHeaderI[3]) { + iNewSort = 2; + } else if (mg_pixMouseI<=mg_pixHeaderI[4]) { + iNewSort = 3; + } else if (mg_pixMouseI<=mg_pixHeaderI[5]) { + iNewSort = 4; + } else if (mg_pixMouseI<=mg_pixHeaderI[6]) { + iNewSort = 5; + } else if (mg_pixMouseI<=mg_pixHeaderI[7]) { + iNewSort = 6; + } + if (iNewSort==mg_iSort) { + mg_bSortDown = !mg_bSortDown; + } else { + mg_bSortDown = FALSE; + } + mg_iSort = iNewSort; + break; + } else */if (mg_pixMouseDrag >= 0) { + mg_pixDragJ = mg_pixMouseDrag; + mg_iDragLine = mg_iFirstOnScreen; + break; + } + case VK_RETURN: + PlayMenuSound(_psdPress); + IFeel_PlayEffect("Menu_press"); + {INDEX i = 0; + FOREACHINLIST(CNetworkSession, ns_lnNode, _lhServers, itns) { + if (i == mg_iSelected) { + + char strAddress[256]; + int iPort; + itns->ns_strAddress.ScanF("%200[^:]:%d", &strAddress, &iPort); + _pGame->gam_strJoinAddress = strAddress; + _pShell->SetINDEX("net_iPort", iPort); + extern void StartSelectPlayersMenuFromServers(void); + StartSelectPlayersMenuFromServers(); + return TRUE; + } + i++; + }} + break; + default: + return FALSE; + } + return TRUE; +} + +void CMGServerList::OnSetFocus(void) +{ + mg_bFocused = TRUE; +} +void CMGServerList::OnKillFocus(void) +{ + mg_bFocused = FALSE; +} \ No newline at end of file diff --git a/Sources/SeriousSam/MGServerList.h b/Sources/SeriousSam/MGServerList.h new file mode 100644 index 0000000..cbfe00d --- /dev/null +++ b/Sources/SeriousSam/MGServerList.h @@ -0,0 +1,54 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_GADGET_SERVERLIST_H +#define SE_INCL_MENU_GADGET_SERVERLIST_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "MGButton.h" + + +class CMGServerList : public CMGButton { +public: + INDEX mg_iSelected; + INDEX mg_iFirstOnScreen; + INDEX mg_ctOnScreen; + // server list dimensions + PIX mg_pixMinI; + PIX mg_pixMaxI; + PIX mg_pixListMinJ; + PIX mg_pixListStepJ; + // header dimensions + PIX mg_pixHeaderMinJ; + PIX mg_pixHeaderMidJ; + PIX mg_pixHeaderMaxJ; + PIX mg_pixHeaderI[8]; + // scrollbar dimensions + PIX mg_pixSBMinI; + PIX mg_pixSBMaxI; + PIX mg_pixSBMinJ; + PIX mg_pixSBMaxJ; + // scrollbar dragging params + PIX mg_pixDragJ; + PIX mg_iDragLine; + PIX mg_pixMouseDrag; + // current mouse pos + PIX mg_pixMouseI; + PIX mg_pixMouseJ; + + INDEX mg_iSort; // column to sort by + BOOL mg_bSortDown; // sort in reverse order + + CMGServerList(); + BOOL OnKeyDown(int iVKey); + PIXaabbox2D GetScrollBarFullBox(void); + PIXaabbox2D GetScrollBarHandleBox(void); + void OnSetFocus(void); + void OnKillFocus(void); + void Render(CDrawPort *pdp); + void AdjustFirstOnScreen(void); + void OnMouseOver(PIX pixI, PIX pixJ); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MGSlider.cpp b/Sources/SeriousSam/MGSlider.cpp new file mode 100644 index 0000000..9dbe014 --- /dev/null +++ b/Sources/SeriousSam/MGSlider.cpp @@ -0,0 +1,118 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include +#include "MenuPrinting.h" +#include +#include "MGSlider.h" + +extern PIX _pixCursorPosI; +extern PIX _pixCursorPosJ; +extern INDEX sam_bWideScreen; + + +CMGSlider::CMGSlider() +{ + mg_iMinPos = 0; + mg_iMaxPos = 16; + mg_iCurPos = 8; + mg_pOnSliderChange = NULL; + mg_fFactor = 1.0f; +} + +void CMGSlider::ApplyCurrentPosition(void) +{ + mg_iCurPos = Clamp(mg_iCurPos, mg_iMinPos, mg_iMaxPos); + FLOAT fStretch = FLOAT(mg_iCurPos) / (mg_iMaxPos - mg_iMinPos); + mg_fFactor = fStretch; + + if (mg_pOnSliderChange != NULL) { + mg_pOnSliderChange(mg_iCurPos); + } +} + +void CMGSlider::ApplyGivenPosition(INDEX iMin, INDEX iMax, INDEX iCur) +{ + mg_iMinPos = iMin; + mg_iMaxPos = iMax; + mg_iCurPos = iCur; + ApplyCurrentPosition(); +} + + +BOOL CMGSlider::OnKeyDown(int iVKey) +{ + // if scrolling left + if ((iVKey == VK_BACK || iVKey == VK_LEFT) && mg_iCurPos>mg_iMinPos) { + mg_iCurPos--; + ApplyCurrentPosition(); + return TRUE; + // if scrolling right + } + else if ((iVKey == VK_RETURN || iVKey == VK_RIGHT) && mg_iCurPos= PIX2D(_pixCursorPosI, _pixCursorPosJ)) { + // set new position exactly where mouse pointer is + FLOAT fRatio = FLOAT(_pixCursorPosI - boxSlider.Min()(1)) / boxSlider.Size()(1); + fRatio = (fRatio - 0.01f) / (0.99f - 0.01f); + fRatio = Clamp(fRatio, 0.0f, 1.0f); + mg_iCurPos = fRatio*(mg_iMaxPos - mg_iMinPos) + mg_iMinPos; + ApplyCurrentPosition(); + return TRUE; + } + } + return CMenuGadget::OnKeyDown(iVKey); +} + + +PIXaabbox2D CMGSlider::GetSliderBox(void) +{ + extern CDrawPort *pdp; + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; + PIX pixJ = box.Min()(2); + PIX pixJSize = box.Size()(2)*0.95f; + PIX pixISizeR = box.Size()(1)*0.45f; + if (sam_bWideScreen) pixJSize++; + return PIXaabbox2D(PIX2D(pixIR + 1, pixJ + 1), PIX2D(pixIR + pixISizeR - 2, pixJ + pixJSize - 2)); +} + + +void CMGSlider::Render(CDrawPort *pdp) +{ + SetFontMedium(pdp); + + // get geometry + COLOR col = GetCurrentColor(); + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + PIX pixIL = box.Min()(1) + box.Size()(1)*0.45f; + PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; + PIX pixJ = box.Min()(2); + PIX pixJSize = box.Size()(2)*0.95f; + PIX pixISizeR = box.Size()(1)*0.45f; + if (sam_bWideScreen) pixJSize++; + + // print text left of slider + pdp->PutTextR(mg_strText, pixIL, pixJ, col); + + // draw box around slider + LCDDrawBox(0, -1, PIXaabbox2D(PIX2D(pixIR + 1, pixJ), PIX2D(pixIR + pixISizeR - 2, pixJ + pixJSize - 2)), + LCDGetColor(C_GREEN | 255, "slider box")); + + // draw filled part of slider + pdp->Fill(pixIR + 2, pixJ + 1, (pixISizeR - 5)*mg_fFactor, (pixJSize - 4), col); + + // print percentage text + CTString strPercentage; + strPercentage.PrintF("%d%%", (int)floor(mg_fFactor * 100 + 0.5f)); + pdp->PutTextC(strPercentage, pixIR + pixISizeR / 2, pixJ + 1, col); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MGSlider.h b/Sources/SeriousSam/MGSlider.h new file mode 100644 index 0000000..8e00272 --- /dev/null +++ b/Sources/SeriousSam/MGSlider.h @@ -0,0 +1,29 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_GADGET_SLIDER_H +#define SE_INCL_MENU_GADGET_SLIDER_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "MGButton.h" + + +class CMGSlider : public CMGButton { +public: + FLOAT mg_fFactor; + INDEX mg_iMinPos; + INDEX mg_iMaxPos; + INDEX mg_iCurPos; + + CMGSlider(); + void ApplyCurrentPosition(void); + void ApplyGivenPosition(INDEX iMin, INDEX iMax, INDEX iCur); + // return TRUE if handled + virtual BOOL OnKeyDown(int iVKey); + void(*mg_pOnSliderChange)(INDEX iCurPos); + PIXaabbox2D GetSliderBox(void); + void Render(CDrawPort *pdp); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MGTitle.cpp b/Sources/SeriousSam/MGTitle.cpp new file mode 100644 index 0000000..215fa11 --- /dev/null +++ b/Sources/SeriousSam/MGTitle.cpp @@ -0,0 +1,20 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include +#include "MenuPrinting.h" +#include +#include "MGTitle.h" + + +void CMGTitle::Render(CDrawPort *pdp) +{ + SetFontTitle(pdp); + + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + PIX pixI = box.Center()(1); + PIX pixJ = box.Min()(2); + + pdp->PutTextC(mg_strText, pixI, pixJ, LCDGetColor(C_WHITE | CT_OPAQUE, "title")); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MGTitle.h b/Sources/SeriousSam/MGTitle.h new file mode 100644 index 0000000..b4d79ea --- /dev/null +++ b/Sources/SeriousSam/MGTitle.h @@ -0,0 +1,18 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_GADGET_TITLE_H +#define SE_INCL_MENU_GADGET_TITLE_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "MenuGadget.h" + + +class CMGTitle : public CMenuGadget { +public: + CTString mg_strText; + void Render(CDrawPort *pdp); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MGTrigger.cpp b/Sources/SeriousSam/MGTrigger.cpp new file mode 100644 index 0000000..7a4363d --- /dev/null +++ b/Sources/SeriousSam/MGTrigger.cpp @@ -0,0 +1,116 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include +#include "MenuPrinting.h" +#include +#include "MGTrigger.h" + + +INDEX GetNewLoopValue(int iVKey, INDEX iCurrent, INDEX ctMembers) +{ + INDEX iPrev = (iCurrent + ctMembers - 1) % ctMembers; + INDEX iNext = (iCurrent + 1) % ctMembers; + // return and right arrow set new text + if (iVKey == VK_RETURN || iVKey == VK_LBUTTON || iVKey == VK_RIGHT) + { + return iNext; + } + // left arrow and backspace sets prev text + else if ((iVKey == VK_BACK || iVKey == VK_RBUTTON) || (iVKey == VK_LEFT)) + { + return iPrev; + } + return iCurrent; +} + +CMGTrigger::CMGTrigger(void) +{ + mg_pOnTriggerChange = NULL; + mg_iCenterI = 0; + mg_bVisual = FALSE; +} + +void CMGTrigger::ApplyCurrentSelection(void) +{ + mg_iSelected = Clamp(mg_iSelected, 0L, mg_ctTexts - 1L); + mg_strValue = mg_astrTexts[mg_iSelected]; +} + + +void CMGTrigger::OnSetNextInList(int iVKey) +{ + if (mg_pPreTriggerChange != NULL) { + mg_pPreTriggerChange(mg_iSelected); + } + + mg_iSelected = GetNewLoopValue(iVKey, mg_iSelected, mg_ctTexts); + mg_strValue = mg_astrTexts[mg_iSelected]; + + if (mg_pOnTriggerChange != NULL) { + (*mg_pOnTriggerChange)(mg_iSelected); + } +} + + +BOOL CMGTrigger::OnKeyDown(int iVKey) +{ + if ((iVKey == VK_RETURN || iVKey == VK_LBUTTON) || + (iVKey == VK_LEFT) || + (iVKey == VK_BACK || iVKey == VK_RBUTTON) || + (iVKey == VK_RIGHT)) + { + // key is handled + if (mg_bEnabled) OnSetNextInList(iVKey); + return TRUE; + } + // key is not handled + return FALSE; +} + + +void CMGTrigger::Render(CDrawPort *pdp) +{ + SetFontMedium(pdp); + + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + PIX pixIL = box.Min()(1) + box.Size()(1)*0.45f; + PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; + PIX pixJ = box.Min()(2); + + COLOR col = GetCurrentColor(); + if (!mg_bVisual || mg_strValue == "") { + CTString strValue = mg_strValue; + if (mg_bVisual) { + strValue = TRANS("none"); + } + if (mg_iCenterI == -1) { + pdp->PutText(mg_strLabel, box.Min()(1), pixJ, col); + pdp->PutTextR(strValue, box.Max()(1), pixJ, col); + } + else { + pdp->PutTextR(mg_strLabel, pixIL, pixJ, col); + pdp->PutText(strValue, pixIR, pixJ, col); + } + } + else { + CTString strLabel = mg_strLabel + ": "; + pdp->PutText(strLabel, box.Min()(1), pixJ, col); + CTextureObject to; + try { + to.SetData_t(mg_strValue); + CTextureData *ptd = (CTextureData *)to.GetData(); + PIX pixSize = box.Size()(2); + PIX pixCX = box.Max()(1) - pixSize / 2; + PIX pixCY = box.Center()(2); + pdp->PutTexture(&to, PIXaabbox2D( + PIX2D(pixCX - pixSize / 2, pixCY - pixSize / 2), + PIX2D(pixCX - pixSize / 2 + pixSize, pixCY - pixSize / 2 + pixSize)), C_WHITE | 255); + } + catch (char *strError) { + CPrintF("%s\n", strError); + } + to.SetData(NULL); + } +} \ No newline at end of file diff --git a/Sources/SeriousSam/MGTrigger.h b/Sources/SeriousSam/MGTrigger.h new file mode 100644 index 0000000..654268c --- /dev/null +++ b/Sources/SeriousSam/MGTrigger.h @@ -0,0 +1,34 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_GADGET_TRIGGER_H +#define SE_INCL_MENU_GADGET_TRIGGER_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "MenuGadget.h" + + +class CMGTrigger : public CMenuGadget { +public: + CTString mg_strLabel; + CTString mg_strValue; + CTString *mg_astrTexts; + INDEX mg_ctTexts; + INDEX mg_iSelected; + INDEX mg_iCenterI; + BOOL mg_bVisual; + + CMGTrigger(void); + + void ApplyCurrentSelection(void); + void OnSetNextInList(int iVKey); + void(*mg_pPreTriggerChange)(INDEX iCurrentlySelected); + void(*mg_pOnTriggerChange)(INDEX iCurrentlySelected); + + // return TRUE if handled + BOOL OnKeyDown(int iVKey); + void Render(CDrawPort *pdp); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MGVarButton.cpp b/Sources/SeriousSam/MGVarButton.cpp new file mode 100644 index 0000000..93e1032 --- /dev/null +++ b/Sources/SeriousSam/MGVarButton.cpp @@ -0,0 +1,174 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include +#include "MenuPrinting.h" +#include +#include "VarList.h" +#include "MGVarButton.h" + +extern PIX _pixCursorPosI; +extern PIX _pixCursorPosJ; + + +BOOL CMGVarButton::IsSeparator(void) +{ + if (mg_pvsVar == NULL) return FALSE; + return mg_pvsVar->vs_bSeparator; +} + + +BOOL CMGVarButton::IsEnabled(void) +{ + return(_gmRunningGameMode == GM_NONE + || mg_pvsVar == NULL + || mg_pvsVar->vs_bCanChangeInGame); +} + + +// return slider position on scren +PIXaabbox2D CMGVarButton::GetSliderBox(void) +{ + extern CDrawPort *pdp; + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; + PIX pixJ = box.Min()(2); + PIX pixISize = box.Size()(1)*0.13f; + PIX pixJSize = box.Size()(2); + return PIXaabbox2D(PIX2D(pixIR, pixJ + 1), PIX2D(pixIR + pixISize - 4, pixJ + pixJSize - 6)); +} + +extern BOOL _bVarChanged; +BOOL CMGVarButton::OnKeyDown(int iVKey) +{ + if (mg_pvsVar == NULL || mg_pvsVar->vs_bSeparator || !mg_pvsVar->Validate() || !mg_bEnabled) { + return CMenuGadget::OnKeyDown(iVKey); + } + + // handle slider + if (mg_pvsVar->vs_iSlider && !mg_pvsVar->vs_bCustom) { + // ignore RMB + if (iVKey == VK_RBUTTON) return TRUE; + // handle LMB + if (iVKey == VK_LBUTTON) { + // get position of slider box on screen + PIXaabbox2D boxSlider = GetSliderBox(); + // if mouse is within + if (boxSlider >= PIX2D(_pixCursorPosI, _pixCursorPosJ)) { + // set new position exactly where mouse pointer is + mg_pvsVar->vs_iValue = (FLOAT)(_pixCursorPosI - boxSlider.Min()(1)) / boxSlider.Size()(1) * (mg_pvsVar->vs_ctValues); + _bVarChanged = TRUE; + } + // handled + return TRUE; + } + } + + if (iVKey == VK_RETURN) { + FlushVarSettings(TRUE); + void MenuGoToParent(void); + MenuGoToParent(); + return TRUE; + } + + if (iVKey == VK_LBUTTON || iVKey == VK_RIGHT) { + if (mg_pvsVar != NULL) { + INDEX iOldValue = mg_pvsVar->vs_iValue; + mg_pvsVar->vs_iValue++; + if (mg_pvsVar->vs_iValue >= mg_pvsVar->vs_ctValues) { + // wrap non-sliders, clamp sliders + if (mg_pvsVar->vs_iSlider) mg_pvsVar->vs_iValue = mg_pvsVar->vs_ctValues - 1L; + else mg_pvsVar->vs_iValue = 0; + } + if (iOldValue != mg_pvsVar->vs_iValue) { + _bVarChanged = TRUE; + mg_pvsVar->vs_bCustom = FALSE; + mg_pvsVar->Validate(); + } + } + return TRUE; + } + + if (iVKey == VK_LEFT || iVKey == VK_RBUTTON) { + if (mg_pvsVar != NULL) { + INDEX iOldValue = mg_pvsVar->vs_iValue; + mg_pvsVar->vs_iValue--; + if (mg_pvsVar->vs_iValue<0) { + // wrap non-sliders, clamp sliders + if (mg_pvsVar->vs_iSlider) mg_pvsVar->vs_iValue = 0; + else mg_pvsVar->vs_iValue = mg_pvsVar->vs_ctValues - 1L; + } + if (iOldValue != mg_pvsVar->vs_iValue) { + _bVarChanged = TRUE; + mg_pvsVar->vs_bCustom = FALSE; + mg_pvsVar->Validate(); + } + } + return TRUE; + } + + // not handled + return CMenuGadget::OnKeyDown(iVKey); +} + + +void CMGVarButton::Render(CDrawPort *pdp) +{ + if (mg_pvsVar == NULL) { + return; + } + + SetFontMedium(pdp); + + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + PIX pixIL = box.Min()(1) + box.Size()(1)*0.45f; + PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; + PIX pixIC = box.Center()(1); + PIX pixJ = box.Min()(2); + + if (mg_pvsVar->vs_bSeparator) + { + mg_bEnabled = FALSE; + COLOR col = LCDGetColor(C_WHITE | 255, "separator"); + CTString strText = mg_pvsVar->vs_strName; + pdp->PutTextC(strText, pixIC, pixJ, col); + } + else if (mg_pvsVar->Validate()) + { + // check whether the variable is disabled + if (mg_pvsVar->vs_strFilter != "") mg_bEnabled = _pShell->GetINDEX(mg_pvsVar->vs_strFilter); + COLOR col = GetCurrentColor(); + pdp->PutTextR(mg_pvsVar->vs_strName, pixIL, pixJ, col); + // custom is by default + CTString strText = TRANS("Custom"); + if (!mg_pvsVar->vs_bCustom) + { // not custom! + strText = mg_pvsVar->vs_astrTexts[mg_pvsVar->vs_iValue]; + // need slider? + if (mg_pvsVar->vs_iSlider>0) { + // draw box around slider + PIX pixISize = box.Size()(1)*0.13f; + PIX pixJSize = box.Size()(2); + LCDDrawBox(0, -1, PIXaabbox2D(PIX2D(pixIR, pixJ + 1), PIX2D(pixIR + pixISize - 4, pixJ + pixJSize - 6)), + LCDGetColor(C_GREEN | 255, "slider box")); + // draw filled part of slider + if (mg_pvsVar->vs_iSlider == 1) { + // fill slider + FLOAT fFactor = (FLOAT)(mg_pvsVar->vs_iValue + 1) / mg_pvsVar->vs_ctValues; + pdp->Fill(pixIR + 1, pixJ + 2, (pixISize - 6)*fFactor, pixJSize - 9, col); + } + else { + // ratio slider + ASSERT(mg_pvsVar->vs_iSlider == 2); + FLOAT fUnitWidth = (FLOAT)(pixISize - 5) / mg_pvsVar->vs_ctValues; + pdp->Fill(pixIR + 1 + (mg_pvsVar->vs_iValue*fUnitWidth), pixJ + 2, fUnitWidth, pixJSize - 9, col); + } + // move text printout to the right of slider + pixIR += box.Size()(1)*0.15f; + } + } + // write right text + pdp->PutText(strText, pixIR, pixJ, col); + } +} \ No newline at end of file diff --git a/Sources/SeriousSam/MGVarButton.h b/Sources/SeriousSam/MGVarButton.h new file mode 100644 index 0000000..b414bd6 --- /dev/null +++ b/Sources/SeriousSam/MGVarButton.h @@ -0,0 +1,22 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_GADGET_VARBUTTON_H +#define SE_INCL_MENU_GADGET_VARBUTTON_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "MGButton.h" + + +class CMGVarButton : public CMGButton { +public: + class CVarSetting *mg_pvsVar; + PIXaabbox2D GetSliderBox(void); + BOOL OnKeyDown(int iVKey); + void Render(CDrawPort *pdp); + BOOL IsSeparator(void); + BOOL IsEnabled(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/Menu.cpp b/Sources/SeriousSam/Menu.cpp index f4f7a8f..77caba1 100644 --- a/Sources/SeriousSam/Menu.cpp +++ b/Sources/SeriousSam/Menu.cpp @@ -13,6 +13,21 @@ #include "LevelInfo.h" #include "VarList.h" +#include "MGArrow.h" +#include "MGButton.h" +#include "MGChangePlayer.h" +#include "MGEdit.h" +#include "MGFileButton.h" +#include "MGHighScore.h" +#include "MGKeyDefinition.h" +#include "MGLevelButton.h" +#include "MGModel.h" +#include "MGServerList.h" +#include "MGSlider.h" +#include "MGTitle.h" +#include "MGTrigger.h" +#include "MGVarButton.h" + // macros for translating radio button text arrays #define RADIOTRANS(str) ("ETRS" str) #define TRANSLATERADIOARRAY(array) TranslateRadioTexts(array, ARRAYCOUNT(array)) @@ -5121,7 +5136,7 @@ void CAudioOptionsMenu::Initialize_t(void) gm_lhGadgets.AddTail( mgMPEGVolume.mg_lnNode); mgAudioOptionsApply.mg_bfsFontSize = BFS_LARGE; - mgAudioOptionsApply.mg_boxOnScreen = BoxBigRow(4); + mgAudioOptionsApply.mg_boxOnScreen = BoxBigRow(5/*4*/); mgAudioOptionsApply.mg_strText = TRANS("APPLY"); mgAudioOptionsApply.mg_strTip = TRANS("activate selected options"); gm_lhGadgets.AddTail( mgAudioOptionsApply.mg_lnNode); @@ -5461,6 +5476,17 @@ void CServersMenu::StartMenu(void) CGameMenu::StartMenu(); } +// __Evolution +BOOL CServersMenu::OnKeyDown(int iVKey) +{ + if (iVKey == VK_F5) { + RefreshServerListManually(); + return TRUE; + } + return CGameMenu::OnKeyDown(iVKey); +} +// __Evolution + // ------------------------ CNetworkMenu implementation void CNetworkMenu::Initialize_t(void) { @@ -5506,6 +5532,7 @@ void CNetworkMenu::Initialize_t(void) mgNetworkLoad.mg_pActivatedFunction = &StartNetworkLoadMenu; } + void CNetworkMenu::StartMenu(void) { CGameMenu::StartMenu(); diff --git a/Sources/SeriousSam/Menu.h b/Sources/SeriousSam/Menu.h index 0091361..b39d62b 100644 --- a/Sources/SeriousSam/Menu.h +++ b/Sources/SeriousSam/Menu.h @@ -139,6 +139,8 @@ public: void Initialize_t(void); void StartMenu(void); void Think(void); + + BOOL OnKeyDown(int iVKey); // __Evolution }; class CPlayerProfileMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MenuGadget.cpp b/Sources/SeriousSam/MenuGadget.cpp new file mode 100644 index 0000000..fab91ba --- /dev/null +++ b/Sources/SeriousSam/MenuGadget.cpp @@ -0,0 +1,124 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include +#include "MenuPrinting.h" +#include +#include "LevelInfo.h" +#include "VarList.h" +#include "MenuGadget.h" + +extern CSoundData *_psdSelect; + +extern BOOL _bDefiningKey = FALSE; +extern BOOL _bEditingString = FALSE; +extern CMenuGadget *_pmgLastActivatedGadget = NULL; + + +CMenuGadget::CMenuGadget(void) +{ + mg_pmgLeft = NULL; + mg_pmgRight = NULL; + mg_pmgUp = NULL; + mg_pmgDown = NULL; + + mg_bVisible = TRUE; + mg_bEnabled = TRUE; + mg_bLabel = FALSE; + mg_bFocused = FALSE; + mg_iInList = -1; // not in list +} + +void CMenuGadget::OnActivate(void) +{ + NOTHING; +} + +// return TRUE if handled +BOOL CMenuGadget::OnKeyDown(int iVKey) +{ + // if return pressed + if (iVKey == VK_RETURN || iVKey == VK_LBUTTON) { + // activate + OnActivate(); + // key is handled + return TRUE; + } + // key is not handled + return FALSE; +} + + +BOOL CMenuGadget::OnChar(MSG msg) +{ + // key is not handled + return FALSE; +} + + +void CMenuGadget::OnSetFocus(void) +{ + mg_bFocused = TRUE; + if (!IsSeparator()) + { + PlayMenuSound(_psdSelect); + IFeel_PlayEffect("Menu_select"); + } +} + +void CMenuGadget::OnKillFocus(void) +{ + mg_bFocused = FALSE; +} + +void CMenuGadget::Appear(void) +{ + mg_bVisible = TRUE; +} + +void CMenuGadget::Disappear(void) +{ + mg_bVisible = FALSE; + mg_bFocused = FALSE; +} + +void CMenuGadget::Think(void) +{ +} +void CMenuGadget::OnMouseOver(PIX pixI, PIX pixJ) +{ +} + +// get current color for the gadget +COLOR CMenuGadget::GetCurrentColor(void) +{ + // use normal colors + COLOR colUnselected = LCDGetColor(C_GREEN, "unselected"); + COLOR colSelected = LCDGetColor(C_WHITE, "selected"); + // if disabled + if (!mg_bEnabled) { + // use a bit darker colors + colUnselected = LCDGetColor(C_dGREEN, "disabled unselected"); + colSelected = LCDGetColor(C_GRAY, "disabled selected"); + // if label + if (mg_bLabel) { + // use white + colUnselected = colSelected = LCDGetColor(C_WHITE, "label"); + } + } + // use unselected color + COLOR colRet = colUnselected; + // if selected + if (mg_bFocused) { + // oscilate towards selected color + FLOAT tmNow = _pTimer->GetHighPrecisionTimer().GetSeconds(); + colRet = LerpColor((colUnselected >> 1) & 0x7F7F7F7F, colSelected, sin(tmNow*10.0f)*0.5f + 0.5f); + } + + return colRet | CT_OPAQUE; +} + +void CMenuGadget::Render(CDrawPort *pdp) +{ +} diff --git a/Sources/SeriousSam/MenuGadget.h b/Sources/SeriousSam/MenuGadget.h new file mode 100644 index 0000000..66974dd --- /dev/null +++ b/Sources/SeriousSam/MenuGadget.h @@ -0,0 +1,55 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_GADGET_H +#define SE_INCL_MENU_GADGET_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + + +#define DOING_NOTHING 0 +#define PRESS_KEY_WAITING 1 +#define RELEASE_RETURN_WAITING 2 + +#define EMPTYSLOTSTRING TRANS("") + +class CMenuGadget { +public: + CListNode mg_lnNode; + FLOATaabbox2D mg_boxOnScreen; + BOOL mg_bVisible; + BOOL mg_bEnabled; + BOOL mg_bLabel; + BOOL mg_bFocused; + INDEX mg_iInList; // for scrollable gadget lists + + CTString mg_strTip; + CMenuGadget *mg_pmgLeft; + CMenuGadget *mg_pmgRight; + CMenuGadget *mg_pmgUp; + CMenuGadget *mg_pmgDown; + + CMenuGadget(void); + // return TRUE if handled + virtual BOOL OnKeyDown(int iVKey); + virtual BOOL OnChar(MSG msg); + virtual void OnActivate(void); + virtual void OnSetFocus(void); + virtual void OnKillFocus(void); + virtual void Appear(void); + virtual void Disappear(void); + virtual void Think(void); + virtual void OnMouseOver(PIX pixI, PIX pixJ); + + virtual COLOR GetCurrentColor(void); + virtual void Render(CDrawPort *pdp); + virtual BOOL IsSeparator(void) { return FALSE; }; +}; + +enum ButtonFontSize { + BFS_SMALL = 0, + BFS_MEDIUM = 1, + BFS_LARGE = 2, +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MenuGadgets.cpp b/Sources/SeriousSam/MenuGadgets.cpp deleted file mode 100644 index 45aef34..0000000 --- a/Sources/SeriousSam/MenuGadgets.cpp +++ /dev/null @@ -1,1914 +0,0 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ - -#include "StdH.h" -#include -#include -#include "MenuPrinting.h" -#include -#include "LevelInfo.h" -#include "VarList.h" - -extern CFontData _fdBig; -extern CFontData _fdMedium; -extern CFontData _fdSmall; -extern CSoundData *_psdSelect; - -CMenuGadget *_pmgLastActivatedGadget = NULL; - -extern CSoundData *_psdPress; -extern PIX _pixCursorPosI; -extern PIX _pixCursorPosJ; -extern BOOL _bDefiningKey = FALSE; -extern BOOL _bEditingString = FALSE; -extern INDEX sam_bWideScreen; - - -CMenuGadget::CMenuGadget( void) -{ - mg_pmgLeft = NULL; - mg_pmgRight = NULL; - mg_pmgUp = NULL; - mg_pmgDown = NULL; - - mg_bVisible = TRUE; - mg_bEnabled = TRUE; - mg_bLabel = FALSE; - mg_bFocused = FALSE; - mg_iInList = -1; // not in list -} - -void CMenuGadget::OnActivate( void) -{ - NOTHING; -} - -// return TRUE if handled -BOOL CMenuGadget::OnKeyDown( int iVKey) -{ - // if return pressed - if( iVKey==VK_RETURN || iVKey==VK_LBUTTON) { - // activate - OnActivate(); - // key is handled - return TRUE; - } - // key is not handled - return FALSE; -} - - -BOOL CMenuGadget::OnChar(MSG msg) -{ - // key is not handled - return FALSE; -} - - -void CMenuGadget::OnSetFocus( void) -{ - mg_bFocused = TRUE; - if( !IsSeparator()) - { - PlayMenuSound(_psdSelect); - IFeel_PlayEffect("Menu_select"); - } -} - -void CMenuGadget::OnKillFocus( void) -{ - mg_bFocused = FALSE; -} - -void CMenuGadget::Appear( void) -{ - mg_bVisible = TRUE; -} - -void CMenuGadget::Disappear( void) -{ - mg_bVisible = FALSE; - mg_bFocused = FALSE; -} - -void CMenuGadget::Think( void) -{ -} -void CMenuGadget::OnMouseOver(PIX pixI, PIX pixJ) -{ -} - -// get current color for the gadget -COLOR CMenuGadget::GetCurrentColor(void) -{ - // use normal colors - COLOR colUnselected = LCDGetColor(C_GREEN, "unselected"); - COLOR colSelected = LCDGetColor(C_WHITE, "selected"); - // if disabled - if (!mg_bEnabled) { - // use a bit darker colors - colUnselected = LCDGetColor(C_dGREEN, "disabled unselected"); - colSelected = LCDGetColor(C_GRAY, "disabled selected"); - // if label - if (mg_bLabel) { - // use white - colUnselected = colSelected = LCDGetColor(C_WHITE, "label"); - } - } - // use unselected color - COLOR colRet = colUnselected; - // if selected - if( mg_bFocused) { - // oscilate towards selected color - FLOAT tmNow = _pTimer->GetHighPrecisionTimer().GetSeconds(); - colRet = LerpColor( (colUnselected>>1)&0x7F7F7F7F, colSelected, sin(tmNow*10.0f)*0.5f+0.5f); - } - - return colRet|CT_OPAQUE; -} - -void CMenuGadget::Render( CDrawPort *pdp) -{ -} - -void CMGTitle::Render( CDrawPort *pdp) -{ - SetFontTitle(pdp); - - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - PIX pixI = box.Center()(1); - PIX pixJ = box.Min()(2); - - pdp->PutTextC( mg_strText, pixI, pixJ, LCDGetColor(C_WHITE|CT_OPAQUE, "title")); -} - -CMGButton::CMGButton( void) -{ - mg_pActivatedFunction = NULL; - mg_iIndex = 0; - mg_iCenterI = 0; - mg_iTextMode = 1; - mg_bfsFontSize = BFS_MEDIUM; - mg_iCursorPos = -1; - mg_bRectangle = FALSE; - mg_bMental = FALSE; -} - - -void CMGButton::SetText( CTString strNew) -{ - mg_strText = strNew; -} - - -void CMGButton::OnActivate( void) -{ - if( mg_pActivatedFunction!=NULL && mg_bEnabled) - { - PlayMenuSound(_psdPress); - IFeel_PlayEffect("Menu_press"); - _pmgLastActivatedGadget = this; - (*mg_pActivatedFunction)(); - } -} - - -BOOL CMGVarButton::IsSeparator(void) -{ - if( mg_pvsVar==NULL) return FALSE; - return mg_pvsVar->vs_bSeparator; -} - - -BOOL CMGVarButton::IsEnabled(void) -{ - return( _gmRunningGameMode==GM_NONE - || mg_pvsVar==NULL - || mg_pvsVar->vs_bCanChangeInGame); -} - - -void CMGButton::Render( CDrawPort *pdp) -{ - if (mg_bfsFontSize==BFS_LARGE) { - SetFontBig(pdp); - } else if (mg_bfsFontSize==BFS_MEDIUM) { - SetFontMedium(pdp); - } else { - ASSERT(mg_bfsFontSize==BFS_SMALL); - SetFontSmall(pdp); - } - pdp->SetTextMode(mg_iTextMode); - - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - COLOR col = GetCurrentColor(); - if(mg_bEditing) { - col = LCDGetColor(C_GREEN|0xFF, "editing"); - } - - COLOR colRectangle = col; - if( mg_bHighlighted) { - col = LCDGetColor(C_WHITE|0xFF, "hilited"); - if( !mg_bFocused) { - colRectangle = LCDGetColor(C_WHITE|0xFF, "hilited rectangle"); - } - } - if (mg_bMental) { - FLOAT tmIn = 0.2f; - FLOAT tmOut = 1.0f; - FLOAT tmFade = 0.1f; - FLOAT tmExist = tmFade+tmIn+tmFade; - FLOAT tmTotal = tmFade+tmIn+tmFade+tmOut; - - FLOAT tmTime = _pTimer->GetHighPrecisionTimer().GetSeconds(); - FLOAT fFactor = 1; - if (tmTime>0.1f) { - tmTime = fmod(tmTime, tmTotal); - fFactor = CalculateRatio(tmTime, 0, tmExist, tmFade/tmExist, tmFade/tmExist); - } - col = (col&~0xFF)|INDEX(0xFF*fFactor); - } - - if( mg_bRectangle) { - // put border - const PIX pixLeft = box.Min()(1); - const PIX pixUp = box.Min()(2)-3; - const PIX pixWidth = box.Size()(1)+1; - const PIX pixHeight = box.Size()(2); - pdp->DrawBorder( pixLeft, pixUp, pixWidth, pixHeight, colRectangle); - } - - if( mg_bEditing) { - // put border - PIX pixLeft = box.Min()(1); - PIX pixUp = box.Min()(2)-3; - PIX pixWidth = box.Size()(1)+1; - PIX pixHeight = box.Size()(2); - if (mg_strLabel!="") { - pixLeft = box.Min()(1)+box.Size()(1)*0.55f; - pixWidth = box.Size()(1)*0.45f+1; - } - pdp->Fill( pixLeft, pixUp, pixWidth, pixHeight, LCDGetColor(C_dGREEN|0x40, "edit fill")); - } - - - INDEX iCursor = mg_iCursorPos; - - // print text - if (mg_strLabel!="") { - PIX pixIL = box.Min()(1)+box.Size()(1)*0.45f; - PIX pixIR = box.Min()(1)+box.Size()(1)*0.55f; - PIX pixJ = box.Min()(2); - - pdp->PutTextR( mg_strLabel, pixIL, pixJ, col); - pdp->PutText( mg_strText, pixIR, pixJ, col); - } else { - CTString str = mg_strText; - if (pdp->dp_FontData->fd_bFixedWidth) { - str = str.Undecorated(); - INDEX iLen = str.Length(); - INDEX iMaxLen = ClampDn(box.Size()(1)/(pdp->dp_pixTextCharSpacing+pdp->dp_FontData->fd_pixCharWidth), 1L); - if (iCursor>=iMaxLen) { - str.TrimRight(iCursor); - str.TrimLeft(iMaxLen); - iCursor = iMaxLen; - } else { - str.TrimRight(iMaxLen); - } - } - if( mg_iCenterI==-1) pdp->PutText( str, box.Min()(1), box.Min()(2), col); - else if( mg_iCenterI==+1) pdp->PutTextR( str, box.Max()(1), box.Min()(2), col); - else pdp->PutTextC( str, box.Center()(1), box.Min()(2), col); - } - - // put cursor if editing - if( mg_bEditing && (((ULONG)(_pTimer->GetRealTimeTick()*2))&1)) { - PIX pixX = box.Min()(1) + GetCharOffset( pdp, iCursor); - if (mg_strLabel!="") { - pixX += box.Size()(1)*0.55f; - } - PIX pixY = box.Min()(2); - if (!pdp->dp_FontData->fd_bFixedWidth) { - pixY -= pdp->dp_fTextScaling *2; - } - pdp->PutText( "|", pixX, pixY, LCDGetColor(C_WHITE|0xFF, "editing cursor")); - } -} - - -PIX CMGButton::GetCharOffset( CDrawPort *pdp, INDEX iCharNo) -{ - if (pdp->dp_FontData->fd_bFixedWidth) { - return (pdp->dp_FontData->fd_pixCharWidth+pdp->dp_pixTextCharSpacing)*(iCharNo-0.5f); - } - CTString strCut(mg_strText); - strCut.TrimLeft( strlen(mg_strText)-iCharNo); - PIX pixFullWidth = pdp->GetTextWidth(mg_strText); - PIX pixCutWidth = pdp->GetTextWidth(strCut); - // !!!! not implemented for different centering - return pixFullWidth-pixCutWidth; -} - -CMGModel::CMGModel(void) -{ - mg_fFloorY = 0; -} - -void CMGModel::Render( CDrawPort *pdp) -{ - // if no model - if (mg_moModel.GetData()==NULL) { - // just render text - mg_strText = TRANS("No model"); - CMGButton::Render(pdp); - return; - } - - // get position on screen - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - CDrawPort dpModel(pdp, box); - dpModel.Lock(); - dpModel.FillZBuffer(1.0f); - - LCDSetDrawport(&dpModel); - // clear menu here - dpModel.Fill(C_BLACK|255); - LCDRenderClouds1(); - LCDRenderClouds2(); - - // prepare projection - CRenderModel rmRenderModel; - CPerspectiveProjection3D pr; - pr.FOVL() = sam_bWideScreen ? AngleDeg(45.0f) : AngleDeg(30.0f); - pr.ScreenBBoxL() = FLOATaabbox2D( - FLOAT2D(0.0f, 0.0f), - FLOAT2D((float)dpModel.GetWidth(), (float)dpModel.GetHeight()) - ); - pr.AspectRatioL() = 1.0f; - pr.FrontClipDistanceL() = 0.3f; - pr.ViewerPlacementL() = CPlacement3D(FLOAT3D(0,0,0), ANGLE3D(0,0,0)); - - // initialize remdering - CAnyProjection3D apr; - apr = pr; - BeginModelRenderingView(apr, &dpModel); - rmRenderModel.rm_vLightDirection = FLOAT3D( 0.2f, -0.2f, -0.2f); - - // if model needs floor - if (mg_moFloor.GetData()!=NULL) { - // set floor's position - CPlacement3D pl = mg_plModel; - pl.pl_OrientationAngle = ANGLE3D(0,0,0); - pl.pl_PositionVector = mg_plModel.pl_PositionVector; - pl.pl_PositionVector(2) += mg_fFloorY; - rmRenderModel.SetObjectPlacement(pl); - - // render the floor - rmRenderModel.rm_colLight = C_WHITE; - rmRenderModel.rm_colAmbient = C_WHITE; - mg_moFloor.SetupModelRendering( rmRenderModel); - mg_moFloor.RenderModel( rmRenderModel); - } - - // set model's position - CPlacement3D pl; - pl.pl_OrientationAngle = mg_plModel.pl_OrientationAngle; - pl.pl_PositionVector = mg_plModel.pl_PositionVector; - extern FLOAT sam_fPlayerOffset; - pl.pl_PositionVector(3) += sam_fPlayerOffset; - rmRenderModel.SetObjectPlacement(pl); - - // render the model - rmRenderModel.rm_colLight = LerpColor(C_BLACK, C_WHITE, 0.4f)|CT_OPAQUE; - rmRenderModel.rm_colAmbient = LerpColor(C_BLACK, C_WHITE, 0.2f)|CT_OPAQUE; - mg_moModel.SetupModelRendering( rmRenderModel); - FLOATplane3D plFloorPlane = FLOATplane3D( FLOAT3D( 0.0f, 1.0f, 0.0f), - mg_plModel.pl_PositionVector(2)+mg_fFloorY); - FLOAT3D vShadowLightDir = FLOAT3D( -0.2f, -0.4f, -0.6f); - CPlacement3D plLightPlacement = CPlacement3D( - mg_plModel.pl_PositionVector+ - vShadowLightDir*mg_plModel.pl_PositionVector(3)*5, - ANGLE3D(0,0,0)); - mg_moModel.RenderShadow( rmRenderModel, plLightPlacement, 200.0f, 200.0f, 1.0f, plFloorPlane); - mg_moModel.RenderModel( rmRenderModel); - EndModelRenderingView(); - - LCDScreenBox(LCDGetColor(C_GREEN, "model box")|GetCurrentColor()); - - dpModel.Unlock(); - - pdp->Unlock(); - pdp->Lock(); - LCDSetDrawport(pdp); - - // print the model name - { - PIXaabbox2D box = FloatBoxToPixBox(pdp, BoxPlayerModelName()); - COLOR col = GetCurrentColor(); - - PIX pixI = box.Min()(1); - PIX pixJ = box.Max()(2); - pdp->PutText( mg_strText, pixI, pixJ, col); - } -} - - -// ------- Edit gadget implementation -CMGEdit::CMGEdit(void) -{ - mg_pstrToChange = NULL; - mg_ctMaxStringLen = 70; - Clear(); -} - - -void CMGEdit::Clear(void) -{ - mg_iCursorPos = 0; - mg_bEditing = FALSE; - _bEditingString = FALSE; -} - - -void CMGEdit::OnActivate(void) -{ - if (!mg_bEnabled) { - return; - } - ASSERT( mg_pstrToChange != NULL); - PlayMenuSound( _psdPress); - IFeel_PlayEffect("Menu_press"); - SetText( mg_strText); - mg_iCursorPos = strlen(mg_strText); - mg_bEditing = TRUE; - _bEditingString = TRUE; -} - - -// focus lost -void CMGEdit::OnKillFocus(void) -{ - // go out of editing mode - if( mg_bEditing) { - OnKeyDown(VK_RETURN); - Clear(); - } - // proceed - CMenuGadget::OnKillFocus(); -} - - -// helper function for deleting char(s) from string -static void Key_BackDel( CTString &str, INDEX &iPos, BOOL bShift, BOOL bRight) -{ - // do nothing if string is empty - INDEX ctChars = strlen(str); - if( ctChars==0) return; - if( bRight && iPos0) { // BACKSPACE key - if( bShift) { - // delete to start of line - str.TrimLeft(ctChars-iPos); - iPos=0; - } else { - // delete only one char - str.DeleteChar(iPos-1); - iPos--; - } - } -} - -// key/mouse button pressed -BOOL CMGEdit::OnKeyDown( int iVKey) -{ - // if not in edit mode - if( !mg_bEditing) { - // behave like normal gadget - return CMenuGadget::OnKeyDown(iVKey); - } - - // finish editing? - BOOL bShift = GetKeyState(VK_SHIFT) & 0x8000; - switch( iVKey) { - case VK_UP: case VK_DOWN: - case VK_RETURN: case VK_LBUTTON: *mg_pstrToChange = mg_strText; Clear(); OnStringChanged(); break; - case VK_ESCAPE: case VK_RBUTTON: mg_strText = *mg_pstrToChange; Clear(); OnStringCanceled(); break; - case VK_LEFT: if( mg_iCursorPos > 0) mg_iCursorPos--; break; - case VK_RIGHT: if( mg_iCursorPos < strlen(mg_strText)) mg_iCursorPos++; break; - case VK_HOME: mg_iCursorPos = 0; break; - case VK_END: mg_iCursorPos = strlen(mg_strText); break; - case VK_BACK: Key_BackDel( mg_strText, mg_iCursorPos, bShift, FALSE); break; - case VK_DELETE: Key_BackDel( mg_strText, mg_iCursorPos, bShift, TRUE); break; - default: break; // ignore all other special keys - } - - // key is handled - return TRUE; -} - - -// char typed -BOOL CMGEdit::OnChar( MSG msg) -{ - // if not in edit mode - if( !mg_bEditing) { - // behave like normal gadget - return CMenuGadget::OnChar(msg); - } - // only chars are allowed - const INDEX ctFullLen = mg_strText.Length(); - const INDEX ctNakedLen = mg_strText.LengthNaked(); - mg_iCursorPos = Clamp( mg_iCursorPos, 0L, ctFullLen); - int iVKey = msg.wParam; - if( isprint(iVKey) && ctNakedLen<=mg_ctMaxStringLen) { - mg_strText.InsertChar( mg_iCursorPos, (char)iVKey); - mg_iCursorPos++; - } - // key is handled - return TRUE; -} - - -void CMGEdit::Render( CDrawPort *pdp) -{ - if( mg_bEditing) { - mg_iTextMode = -1; - } else if( mg_bFocused) { - mg_iTextMode = 0; - } else { - mg_iTextMode = 1; - } - if (mg_strText=="" && !mg_bEditing) { - if (mg_bfsFontSize==BFS_SMALL) { - mg_strText="*"; - } else { - mg_strText=TRANS(""); - } - CMGButton::Render(pdp); - mg_strText=""; - } else { - CMGButton::Render(pdp); - } -} -void CMGEdit::OnStringChanged(void) -{ -} -void CMGEdit::OnStringCanceled(void) -{ -} - - -void CMGArrow::Render( CDrawPort *pdp) -{ - SetFontMedium(pdp); - - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - COLOR col = GetCurrentColor(); - - CTString str; - if (mg_adDirection==AD_NONE) { - str = "???"; - } else if (mg_adDirection==AD_UP) { - str = TRANS("Page Up"); - } else if (mg_adDirection==AD_DOWN) { - str = TRANS("Page Down"); - } else { - ASSERT(FALSE); - } - PIX pixI = box.Min()(1); - PIX pixJ = box.Min()(2); - pdp->PutText( str, pixI, pixJ, col); -} - -void CMGArrow::OnActivate(void) -{ - if (mg_adDirection==AD_UP) { - pgmCurrentMenu->ScrollList(-3); - } else if (mg_adDirection==AD_DOWN) { - pgmCurrentMenu->ScrollList(+3); - } -} - -#define HSCOLUMNS 6 -CTString strHighScores[HIGHSCORE_COUNT+1][HSCOLUMNS]; -FLOAT afI[HSCOLUMNS] = { - 0.12f, 0.15f, 0.6f, 0.7f, 0.78f, 0.9f -}; - -void CMGHighScore::Render( CDrawPort *pdp) -{ - SetFontMedium(pdp); - - COLOR colHeader = LCDGetColor(C_GREEN|255, "hiscore header"); - COLOR colData = LCDGetColor(C_mdGREEN|255, "hiscore data"); - COLOR colLastSet = LCDGetColor(C_mlGREEN|255, "hiscore last set"); - INDEX iLastSet = _pGame->gm_iLastSetHighScore; - - CTString strText; - - strHighScores[0][0] = TRANS("No."); - strHighScores[0][1] = TRANS("Player Name"); - strHighScores[0][2] = TRANS("Difficulty"); - strHighScores[0][3] = TRANS("Time"); - strHighScores[0][4] = TRANS("Kills"); - strHighScores[0][5] = TRANS("Score"); - - {for (INDEX i=0; igm_ahseHighScores[i].hse_gdDifficulty) { - default: - ASSERT(FALSE); - case (CSessionProperties::GameDifficulty)-100: - strHighScores[i+1][1] = "---"; - continue; - break; - case CSessionProperties::GD_TOURIST: - strHighScores[i+1][2] = TRANS("Tourist"); - break; - case CSessionProperties::GD_EASY: - strHighScores[i+1][2] = TRANS("Easy"); - break; - case CSessionProperties::GD_NORMAL: - strHighScores[i+1][2] = TRANS("Normal"); - break; - case CSessionProperties::GD_HARD: - strHighScores[i+1][2] = TRANS("Hard"); - break; - case CSessionProperties::GD_EXTREME: - strHighScores[i+1][2] = TRANS("Serious"); - break; - case CSessionProperties::GD_EXTREME+1: - strHighScores[i+1][2] = TRANS("Mental"); - break; - } - strHighScores[i+1][0].PrintF("%d", i+1); - strHighScores[i+1][1] = _pGame->gm_ahseHighScores[i].hse_strPlayer; - strHighScores[i+1][3] = TimeToString(_pGame->gm_ahseHighScores[i].hse_tmTime); - strHighScores[i+1][4].PrintF("%03d", _pGame->gm_ahseHighScores[i].hse_ctKills); - strHighScores[i+1][5].PrintF("%9d", _pGame->gm_ahseHighScores[i].hse_ctScore); - }} - - PIX pixJ = pdp->GetHeight()*0.25f; - {for (INDEX iRow=0; iRowGetWidth()*afI[iColumn]; - if (iColumn==1) { - pdp->PutText(strHighScores[iRow][iColumn], pixI, pixJ, col); - } else { - pdp->PutTextR(strHighScores[iRow][iColumn], pixI, pixJ, col); - } - }} - if (iRow==0) { - pixJ+=pdp->GetHeight()*0.06f; - } else { - pixJ+=pdp->GetHeight()*0.04f; - } - }} -} - -// ------- Trigger button implementation -INDEX GetNewLoopValue( int iVKey, INDEX iCurrent, INDEX ctMembers) -{ - INDEX iPrev = (iCurrent+ctMembers-1)%ctMembers; - INDEX iNext = (iCurrent+1)%ctMembers; - // return and right arrow set new text - if( iVKey == VK_RETURN || iVKey==VK_LBUTTON || iVKey==VK_RIGHT ) - { - return iNext; - } - // left arrow and backspace sets prev text - else if( (iVKey == VK_BACK || iVKey==VK_RBUTTON) || (iVKey == VK_LEFT) ) - { - return iPrev; - } - return iCurrent; -} - -CMGTrigger::CMGTrigger( void) -{ - mg_pOnTriggerChange = NULL; - mg_iCenterI = 0; - mg_bVisual = FALSE; -} - -void CMGTrigger::ApplyCurrentSelection(void) -{ - mg_iSelected = Clamp(mg_iSelected, 0L, mg_ctTexts-1L); - mg_strValue = mg_astrTexts[ mg_iSelected]; -} - - -void CMGTrigger::OnSetNextInList(int iVKey) -{ - if( mg_pPreTriggerChange != NULL) { - mg_pPreTriggerChange(mg_iSelected); - } - - mg_iSelected = GetNewLoopValue( iVKey, mg_iSelected, mg_ctTexts); - mg_strValue = mg_astrTexts[ mg_iSelected]; - - if( mg_pOnTriggerChange != NULL) { - (*mg_pOnTriggerChange)(mg_iSelected); - } -} - - -BOOL CMGTrigger::OnKeyDown( int iVKey) -{ - if( (iVKey == VK_RETURN || iVKey==VK_LBUTTON) || - (iVKey == VK_LEFT) || - (iVKey == VK_BACK || iVKey==VK_RBUTTON) || - (iVKey == VK_RIGHT) ) - { - // key is handled - if( mg_bEnabled) OnSetNextInList(iVKey); - return TRUE; - } - // key is not handled - return FALSE; -} - - -void CMGTrigger::Render( CDrawPort *pdp) -{ - SetFontMedium(pdp); - - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - PIX pixIL = box.Min()(1)+box.Size()(1)*0.45f; - PIX pixIR = box.Min()(1)+box.Size()(1)*0.55f; - PIX pixJ = box.Min()(2); - - COLOR col = GetCurrentColor(); - if (!mg_bVisual || mg_strValue=="") { - CTString strValue = mg_strValue; - if (mg_bVisual) { - strValue = TRANS("none"); - } - if (mg_iCenterI==-1) { - pdp->PutText( mg_strLabel, box.Min()(1), pixJ, col); - pdp->PutTextR( strValue, box.Max()(1), pixJ, col); - } else { - pdp->PutTextR( mg_strLabel, pixIL, pixJ, col); - pdp->PutText( strValue, pixIR, pixJ, col); - } - } else { - CTString strLabel = mg_strLabel+": "; - pdp->PutText(strLabel, box.Min()(1), pixJ, col); - CTextureObject to; - try { - to.SetData_t(mg_strValue); - CTextureData *ptd = (CTextureData *)to.GetData(); - PIX pixSize = box.Size()(2); - PIX pixCX = box.Max()(1)-pixSize/2; - PIX pixCY = box.Center()(2); - pdp->PutTexture( &to, PIXaabbox2D( - PIX2D(pixCX-pixSize/2, pixCY-pixSize/2), - PIX2D(pixCX-pixSize/2+pixSize, pixCY-pixSize/2+pixSize)), C_WHITE|255); - } catch (char *strError) { - CPrintF("%s\n", strError); - } - to.SetData(NULL); - } -} - -CMGSlider::CMGSlider() -{ - mg_iMinPos = 0; - mg_iMaxPos = 16; - mg_iCurPos = 8; - mg_pOnSliderChange = NULL; - mg_fFactor = 1.0f; -} - -void CMGSlider::ApplyCurrentPosition( void) -{ - mg_iCurPos = Clamp(mg_iCurPos, mg_iMinPos, mg_iMaxPos); - FLOAT fStretch = FLOAT(mg_iCurPos)/(mg_iMaxPos-mg_iMinPos); - mg_fFactor = fStretch; - - if (mg_pOnSliderChange!=NULL) { - mg_pOnSliderChange(mg_iCurPos); - } -} - -void CMGSlider::ApplyGivenPosition( INDEX iMin, INDEX iMax, INDEX iCur) -{ - mg_iMinPos = iMin; - mg_iMaxPos = iMax; - mg_iCurPos = iCur; - ApplyCurrentPosition(); -} - - -BOOL CMGSlider::OnKeyDown( int iVKey) -{ - // if scrolling left - if( (iVKey==VK_BACK || iVKey==VK_LEFT) && mg_iCurPos>mg_iMinPos) { - mg_iCurPos --; - ApplyCurrentPosition(); - return TRUE; - // if scrolling right - } else if( (iVKey==VK_RETURN || iVKey==VK_RIGHT) && mg_iCurPos=PIX2D(_pixCursorPosI, _pixCursorPosJ)) { - // set new position exactly where mouse pointer is - FLOAT fRatio = FLOAT(_pixCursorPosI-boxSlider.Min()(1))/boxSlider.Size()(1); - fRatio = (fRatio-0.01f)/(0.99f-0.01f); - fRatio = Clamp(fRatio, 0.0f, 1.0f); - mg_iCurPos = fRatio*(mg_iMaxPos-mg_iMinPos) + mg_iMinPos; - ApplyCurrentPosition(); - return TRUE; - } - } - return CMenuGadget::OnKeyDown( iVKey); -} - - -PIXaabbox2D CMGSlider::GetSliderBox(void) -{ - extern CDrawPort *pdp; - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - PIX pixIR = box.Min()(1)+box.Size()(1)*0.55f; - PIX pixJ = box.Min()(2); - PIX pixJSize = box.Size()(2)*0.95f; - PIX pixISizeR = box.Size()(1)*0.45f; - if( sam_bWideScreen) pixJSize++; - return PIXaabbox2D( PIX2D(pixIR+1, pixJ+1), PIX2D(pixIR+pixISizeR-2, pixJ+pixJSize-2)); -} - - -void CMGSlider::Render( CDrawPort *pdp) -{ - SetFontMedium(pdp); - - // get geometry - COLOR col = GetCurrentColor(); - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - PIX pixIL = box.Min()(1)+box.Size()(1)*0.45f; - PIX pixIR = box.Min()(1)+box.Size()(1)*0.55f; - PIX pixJ = box.Min()(2); - PIX pixJSize = box.Size()(2)*0.95f; - PIX pixISizeR = box.Size()(1)*0.45f; - if( sam_bWideScreen) pixJSize++; - - // print text left of slider - pdp->PutTextR( mg_strText, pixIL, pixJ, col); - - // draw box around slider - LCDDrawBox(0, -1, PIXaabbox2D( PIX2D(pixIR+1, pixJ), PIX2D(pixIR+pixISizeR-2, pixJ+pixJSize-2)), - LCDGetColor(C_GREEN|255, "slider box")); - - // draw filled part of slider - pdp->Fill( pixIR+2, pixJ+1, (pixISizeR-5)*mg_fFactor, (pixJSize-4), col); - - // print percentage text - CTString strPercentage; - strPercentage.PrintF("%d%%", (int)floor(mg_fFactor*100+0.5f) ); - pdp->PutTextC( strPercentage, pixIR+pixISizeR/2, pixJ+1, col); -} - - -void CMGLevelButton::OnActivate(void) -{ - PlayMenuSound(_psdPress); - IFeel_PlayEffect("Menu_press"); - _pGame->gam_strCustomLevel = mg_fnmLevel; - extern void (*_pAfterLevelChosen)(void); - _pAfterLevelChosen(); -} - - -void CMGLevelButton::OnSetFocus(void) -{ - SetThumbnail(mg_fnmLevel); - CMGButton::OnSetFocus(); -} - - - -// return slider position on scren -PIXaabbox2D CMGVarButton::GetSliderBox(void) -{ - extern CDrawPort *pdp; - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - PIX pixIR = box.Min()(1)+box.Size()(1)*0.55f; - PIX pixJ = box.Min()(2); - PIX pixISize = box.Size()(1)*0.13f; - PIX pixJSize = box.Size()(2); - return PIXaabbox2D( PIX2D(pixIR, pixJ+1), PIX2D(pixIR+pixISize-4, pixJ+pixJSize-6)); -} - -extern BOOL _bVarChanged; -BOOL CMGVarButton::OnKeyDown(int iVKey) -{ - if (mg_pvsVar==NULL || mg_pvsVar->vs_bSeparator || !mg_pvsVar->Validate() || !mg_bEnabled) { - return CMenuGadget::OnKeyDown(iVKey); - } - - // handle slider - if( mg_pvsVar->vs_iSlider && !mg_pvsVar->vs_bCustom) { - // ignore RMB - if( iVKey==VK_RBUTTON) return TRUE; - // handle LMB - if( iVKey==VK_LBUTTON) { - // get position of slider box on screen - PIXaabbox2D boxSlider = GetSliderBox(); - // if mouse is within - if( boxSlider>=PIX2D(_pixCursorPosI, _pixCursorPosJ)) { - // set new position exactly where mouse pointer is - mg_pvsVar->vs_iValue = (FLOAT)(_pixCursorPosI-boxSlider.Min()(1))/boxSlider.Size()(1) * (mg_pvsVar->vs_ctValues); - _bVarChanged = TRUE; - } - // handled - return TRUE; - } - } - - if( iVKey==VK_RETURN) { - FlushVarSettings(TRUE); - void MenuGoToParent(void); - MenuGoToParent(); - return TRUE; - } - - if( iVKey==VK_LBUTTON || iVKey==VK_RIGHT) { - if (mg_pvsVar!=NULL) { - INDEX iOldValue = mg_pvsVar->vs_iValue; - mg_pvsVar->vs_iValue++; - if( mg_pvsVar->vs_iValue>=mg_pvsVar->vs_ctValues) { - // wrap non-sliders, clamp sliders - if( mg_pvsVar->vs_iSlider) mg_pvsVar->vs_iValue = mg_pvsVar->vs_ctValues-1L; - else mg_pvsVar->vs_iValue = 0; - } - if( iOldValue != mg_pvsVar->vs_iValue) { - _bVarChanged = TRUE; - mg_pvsVar->vs_bCustom = FALSE; - mg_pvsVar->Validate(); - } - } - return TRUE; - } - - if( iVKey==VK_LEFT || iVKey==VK_RBUTTON) { - if (mg_pvsVar!=NULL) { - INDEX iOldValue = mg_pvsVar->vs_iValue; - mg_pvsVar->vs_iValue--; - if( mg_pvsVar->vs_iValue<0) { - // wrap non-sliders, clamp sliders - if( mg_pvsVar->vs_iSlider) mg_pvsVar->vs_iValue = 0; - else mg_pvsVar->vs_iValue = mg_pvsVar->vs_ctValues-1L; - } - if( iOldValue != mg_pvsVar->vs_iValue) { - _bVarChanged = TRUE; - mg_pvsVar->vs_bCustom = FALSE; - mg_pvsVar->Validate(); - } - } - return TRUE; - } - - // not handled - return CMenuGadget::OnKeyDown(iVKey); -} - - -void CMGVarButton::Render( CDrawPort *pdp) -{ - if (mg_pvsVar==NULL) { - return; - } - - SetFontMedium(pdp); - - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - PIX pixIL = box.Min()(1)+box.Size()(1)*0.45f; - PIX pixIR = box.Min()(1)+box.Size()(1)*0.55f; - PIX pixIC = box.Center()(1); - PIX pixJ = box.Min()(2); - - if (mg_pvsVar->vs_bSeparator) - { - mg_bEnabled = FALSE; - COLOR col = LCDGetColor(C_WHITE|255, "separator"); - CTString strText = mg_pvsVar->vs_strName; - pdp->PutTextC(strText, pixIC, pixJ, col); - } - else if (mg_pvsVar->Validate()) - { - // check whether the variable is disabled - if( mg_pvsVar->vs_strFilter!="") mg_bEnabled = _pShell->GetINDEX(mg_pvsVar->vs_strFilter); - COLOR col = GetCurrentColor(); - pdp->PutTextR( mg_pvsVar->vs_strName, pixIL, pixJ, col); - // custom is by default - CTString strText = TRANS("Custom"); - if( !mg_pvsVar->vs_bCustom) - { // not custom! - strText = mg_pvsVar->vs_astrTexts[mg_pvsVar->vs_iValue]; - // need slider? - if( mg_pvsVar->vs_iSlider>0) { - // draw box around slider - PIX pixISize = box.Size()(1)*0.13f; - PIX pixJSize = box.Size()(2); - LCDDrawBox( 0,-1, PIXaabbox2D( PIX2D(pixIR, pixJ+1), PIX2D(pixIR+pixISize-4, pixJ+pixJSize-6)), - LCDGetColor(C_GREEN|255, "slider box")); - // draw filled part of slider - if( mg_pvsVar->vs_iSlider==1) { - // fill slider - FLOAT fFactor = (FLOAT)(mg_pvsVar->vs_iValue+1) / mg_pvsVar->vs_ctValues; - pdp->Fill( pixIR+1, pixJ+2, (pixISize-6)*fFactor, pixJSize-9, col); - } else { - // ratio slider - ASSERT( mg_pvsVar->vs_iSlider==2); - FLOAT fUnitWidth = (FLOAT)(pixISize-5) / mg_pvsVar->vs_ctValues; - pdp->Fill( pixIR+1+(mg_pvsVar->vs_iValue*fUnitWidth), pixJ+2, fUnitWidth, pixJSize-9, col); - } - // move text printout to the right of slider - pixIR += box.Size()(1)*0.15f; - } - } - // write right text - pdp->PutText(strText, pixIR, pixJ, col); - } -} - - -CMGFileButton::CMGFileButton(void) -{ - mg_iState = FBS_NORMAL; -} - -// refresh current text from description -void CMGFileButton::RefreshText(void) -{ - mg_strText = mg_strDes; - mg_strText.OnlyFirstLine(); - mg_strInfo = mg_strDes; - mg_strInfo.RemovePrefix(mg_strText); - mg_strInfo.DeleteChar(0); -} - -void CMGFileButton::SaveDescription(void) -{ - CTFileName fnFileNameDescription = mg_fnm.NoExt()+".des"; - try { - mg_strDes.Save_t(fnFileNameDescription); - } catch( char *strError) { - CPrintF("%s\n", strError); - } -} - -CMGFileButton *_pmgFileToSave = NULL; -void OnFileSaveOK(void) -{ - if (_pmgFileToSave!=NULL) { - _pmgFileToSave->SaveYes(); - } -} - -void CMGFileButton::DoSave(void) -{ - if (FileExistsForWriting(mg_fnm)) { - _pmgFileToSave = this; - extern void SaveConfirm(void); - SaveConfirm(); - } else { - SaveYes(); - } -} - -void CMGFileButton::SaveYes(void) -{ - ASSERT(gmLoadSaveMenu.gm_bSave); - // call saving function - BOOL bSucceeded = gmLoadSaveMenu.gm_pAfterFileChosen(mg_fnm); - // if saved - if (bSucceeded) { - // save the description too - SaveDescription(); - } -} - -void CMGFileButton::DoLoad(void) -{ - ASSERT(!gmLoadSaveMenu.gm_bSave); - // if no file - if(!FileExists(mg_fnm)) { - // do nothing - return; - } - if (gmLoadSaveMenu.gm_pgmNextMenu!=NULL) { - gmLoadSaveMenu.gm_pgmParentMenu = gmLoadSaveMenu.gm_pgmNextMenu; - } - // call loading function - BOOL bSucceeded = gmLoadSaveMenu.gm_pAfterFileChosen(mg_fnm); - ASSERT(bSucceeded); -} - -static CTString _strTmpDescription; -static CTString _strOrgDescription; - -void CMGFileButton::StartEdit(void) -{ - CMGEdit::OnActivate(); -} - -void CMGFileButton::OnActivate(void) -{ - if (mg_fnm=="") { - return; - } - - PlayMenuSound(_psdPress); - IFeel_PlayEffect("Menu_press"); - - // if loading - if (!gmLoadSaveMenu.gm_bSave) { - // load now - DoLoad(); - // if saving - } else { - // switch to editing mode - BOOL bWasEmpty = mg_strText==EMPTYSLOTSTRING; - mg_strDes = gmLoadSaveMenu.gm_strSaveDes; - RefreshText(); - _strOrgDescription = _strTmpDescription = mg_strText; - if (bWasEmpty) { - _strOrgDescription = EMPTYSLOTSTRING; - } - mg_pstrToChange = &_strTmpDescription; - StartEdit(); - mg_iState = FBS_SAVENAME; - } -} -BOOL CMGFileButton::OnKeyDown(int iVKey) -{ - if (mg_iState == FBS_NORMAL) { - if (gmLoadSaveMenu.gm_bSave || gmLoadSaveMenu.gm_bManage) { - if (iVKey == VK_F2) { - if (FileExistsForWriting(mg_fnm)) { - // switch to renaming mode - _strOrgDescription = mg_strText; - _strTmpDescription = mg_strText; - mg_pstrToChange = &_strTmpDescription; - StartEdit(); - mg_iState = FBS_RENAME; - } - return TRUE; - } else if (iVKey == VK_DELETE) { - if (FileExistsForWriting(mg_fnm)) { - // delete the file, its description and thumbnail - RemoveFile(mg_fnm); - RemoveFile(mg_fnm.NoExt()+".des"); - RemoveFile(mg_fnm.NoExt()+"Tbn.tex"); - // refresh menu - gmLoadSaveMenu.EndMenu(); - gmLoadSaveMenu.StartMenu(); - OnSetFocus(); - } - return TRUE; - } - } - return CMenuGadget::OnKeyDown(iVKey); - } else { - // go out of editing mode - if(mg_bEditing) { - if (iVKey==VK_UP || iVKey==VK_DOWN) { - CMGEdit::OnKeyDown(VK_ESCAPE); - } - } - return CMGEdit::OnKeyDown(iVKey); - } -} - -void CMGFileButton::OnSetFocus(void) -{ - mg_iState = FBS_NORMAL; - - if (gmLoadSaveMenu.gm_bAllowThumbnails && mg_bEnabled) { - SetThumbnail(mg_fnm); - } else { - ClearThumbnail(); - } - pgmCurrentMenu->KillAllFocuses(); - CMGButton::OnSetFocus(); -} - -void CMGFileButton::OnKillFocus(void) -{ - // go out of editing mode - if(mg_bEditing) { - OnKeyDown(VK_ESCAPE); - } - CMGEdit::OnKillFocus(); -} - -// override from edit gadget -void CMGFileButton::OnStringChanged(void) -{ - // if saving - if (mg_iState == FBS_SAVENAME) { - // do the save - mg_strDes = _strTmpDescription+"\n"+mg_strInfo; - DoSave(); - // if renaming - } else if (mg_iState == FBS_RENAME) { - // do the rename - mg_strDes = _strTmpDescription+"\n"+mg_strInfo; - SaveDescription(); - // refresh menu - gmLoadSaveMenu.EndMenu(); - gmLoadSaveMenu.StartMenu(); - OnSetFocus(); - } -} -void CMGFileButton::OnStringCanceled(void) -{ - mg_strText = _strOrgDescription; -} - -void CMGFileButton::Render( CDrawPort *pdp) -{ - // render original gadget first - CMGEdit::Render(pdp); - - // if currently selected - if (mg_bFocused && mg_bEnabled) { - // add info at the bottom if screen - SetFontMedium(pdp); - - PIXaabbox2D box = FloatBoxToPixBox(pdp, BoxSaveLoad(15.0)); - PIX pixI = box.Min()(1); - PIX pixJ = box.Min()(2); - - COLOR col = LCDGetColor(C_mlGREEN|255, "file info"); - pdp->PutText( mg_strInfo, pixI, pixJ, col); - } -} - -FLOATaabbox2D GetBoxPartHoriz(const FLOATaabbox2D &box, FLOAT fMin, FLOAT fMax) -{ - FLOAT fBoxMin = box.Min()(1); - FLOAT fBoxSize = box.Size()(1); - - return FLOATaabbox2D( - FLOAT2D(fBoxMin+fBoxSize*fMin, box.Min()(2)), - FLOAT2D(fBoxMin+fBoxSize*fMax, box.Max()(2))); -} - -void PrintInBox(CDrawPort *pdp, PIX pixI, PIX pixJ, PIX pixSizeI, CTString str, COLOR col) -{ - str = str.Undecorated(); - PIX pixCharSize = pdp->dp_pixTextCharSpacing+pdp->dp_FontData->fd_pixCharWidth; - str.TrimRight(pixSizeI/pixCharSize); - - // print text - pdp->PutText(str, pixI, pixJ, col); -} - -CMGServerList::CMGServerList() -{ - mg_iSelected = 0; - mg_iFirstOnScreen = 0; - mg_ctOnScreen = 10; - mg_pixMinI = 0; - mg_pixMaxI = 0; - mg_pixListMinJ = 0; - mg_pixListStepJ = 0; - mg_pixDragJ = -1; - mg_iDragLine = -1; - mg_pixMouseDrag = -1; - // by default, sort by ping, best on top - mg_iSort = 2; - mg_bSortDown = FALSE; -} -void CMGServerList::AdjustFirstOnScreen(void) -{ - INDEX ctSessions = _lhServers.Count(); - mg_iSelected = Clamp(mg_iSelected, 0L, ClampDn(ctSessions-1L, 0L)); - mg_iFirstOnScreen = Clamp(mg_iFirstOnScreen, 0L, ClampDn(ctSessions-mg_ctOnScreen, 0L)); - - if (mg_iSelected=mg_iFirstOnScreen+mg_ctOnScreen) { - mg_iFirstOnScreen = ClampDn(mg_iSelected-mg_ctOnScreen+1L, 0L); - } -} - -BOOL _iSort = 0; -BOOL _bSortDown = FALSE; - -int CompareSessions(const void *pv0, const void *pv1) -{ - const CNetworkSession &ns0 = **(const CNetworkSession **)pv0; - const CNetworkSession &ns1 = **(const CNetworkSession **)pv1; - - int iResult = 0; - switch(_iSort) { - case 0: iResult = stricmp(ns0.ns_strSession, ns1.ns_strSession); break; - case 1: iResult = stricmp(ns0.ns_strWorld, ns1.ns_strWorld); break; - case 2: iResult = Sgn(ns0.ns_tmPing-ns1.ns_tmPing); break; - case 3: iResult = Sgn(ns0.ns_ctPlayers-ns1.ns_ctPlayers); break; - case 4: iResult = stricmp(ns0.ns_strGameType, ns1.ns_strGameType); break; - case 5: iResult = stricmp(ns0.ns_strMod, ns1.ns_strMod ); break; - case 6: iResult = stricmp(ns0.ns_strVer, ns1.ns_strVer ); break; - } - - if (iResult==0) { // make sure we always have unique order when resorting - return stricmp(ns0.ns_strAddress, ns1.ns_strAddress);; - } - - return _bSortDown?-iResult:iResult; -} - -extern CMGButton mgServerColumn[7]; -extern CMGEdit mgServerFilter[7]; - -void SortAndFilterServers(void) -{ - {FORDELETELIST(CNetworkSession, ns_lnNode, _lhServers, itns) { - delete &*itns; - }} - {FOREACHINLIST(CNetworkSession, ns_lnNode, _pNetwork->ga_lhEnumeratedSessions, itns) { - CNetworkSession &ns = *itns; - extern CTString _strServerFilter[7]; - if (_strServerFilter[0]!="" && !ns.ns_strSession.Matches("*"+_strServerFilter[0]+"*")) continue; - if (_strServerFilter[1]!="" && !ns.ns_strWorld.Matches("*"+_strServerFilter[1]+"*")) continue; - if (_strServerFilter[2]!="") { - char strCompare[3] = {0,0,0}; - int iPing = 0; - _strServerFilter[2].ScanF("%2[<>=]%d", strCompare, &iPing); - if (strcmp(strCompare, "<" )==0 && !(int(ns.ns_tmPing*1000)< iPing)) continue; - if (strcmp(strCompare, "<=")==0 && !(int(ns.ns_tmPing*1000)<=iPing)) continue; - if (strcmp(strCompare, ">" )==0 && !(int(ns.ns_tmPing*1000)> iPing)) continue; - if (strcmp(strCompare, ">=")==0 && !(int(ns.ns_tmPing*1000)>=iPing)) continue; - if (strcmp(strCompare, "=" )==0 && !(int(ns.ns_tmPing*1000)==iPing)) continue; - } - if (_strServerFilter[3]!="") { - char strCompare[3] = {0,0,0}; - int iPlayers = 0; - _strServerFilter[3].ScanF("%2[<>=]%d", strCompare, &iPlayers); - if (strcmp(strCompare, "<" )==0 && !(ns.ns_ctPlayers< iPlayers)) continue; - if (strcmp(strCompare, "<=")==0 && !(ns.ns_ctPlayers<=iPlayers)) continue; - if (strcmp(strCompare, ">" )==0 && !(ns.ns_ctPlayers> iPlayers)) continue; - if (strcmp(strCompare, ">=")==0 && !(ns.ns_ctPlayers>=iPlayers)) continue; - if (strcmp(strCompare, "=" )==0 && !(ns.ns_ctPlayers==iPlayers)) continue; - } - if (_strServerFilter[4]!="" && !ns.ns_strGameType.Matches("*"+_strServerFilter[4]+"*")) continue; - if (_strServerFilter[5]!="" && !ns.ns_strMod.Matches("*"+_strServerFilter[5]+"*")) continue; - if (_strServerFilter[6]!="" && !ns.ns_strVer.Matches("*"+_strServerFilter[6]+"*")) continue; - - CNetworkSession *pnsNew = new CNetworkSession; - pnsNew->Copy(*itns); - _lhServers.AddTail(pnsNew->ns_lnNode); - }} - - _lhServers.Sort(CompareSessions, offsetof(CNetworkSession, ns_lnNode)); -} - -void CMGServerList::Render(CDrawPort *pdp) -{ - _iSort = mg_iSort ; - _bSortDown = mg_bSortDown; - SortAndFilterServers(); - - SetFontSmall(pdp); - BOOL bFocusedBefore = mg_bFocused; - mg_bFocused = FALSE; - - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - COLOR col = GetCurrentColor(); - - PIX pixDPSizeI = pdp->GetWidth(); - PIX pixDPSizeJ = pdp->GetHeight(); - PIX pixCharSizeI = pdp->dp_pixTextCharSpacing+pdp->dp_FontData->fd_pixCharWidth; - PIX pixCharSizeJ = pdp->dp_pixTextLineSpacing+pdp->dp_FontData->fd_pixCharHeight+1; - PIX pixLineSize = 1; - PIX pixSliderSizeI = 10; - PIX pixOuterMargin = 20; - - INDEX ctSessions = _lhServers.Count(); - INDEX iSession=0; - - INDEX ctColumns[7]; - {for (INDEX i=0; iDrawLine(apixSeparatorI[i], pixTopJ, apixSeparatorI[i], pixBottomJ, col|CT_OPAQUE); - } - pdp->DrawLine(apixSeparatorI[0], pixTopJ, apixSeparatorI[8], pixTopJ, col|CT_OPAQUE); - pdp->DrawLine(apixSeparatorI[0], pixListTopJ-pixLineSize, apixSeparatorI[8], pixListTopJ-pixLineSize, col|CT_OPAQUE); - pdp->DrawLine(apixSeparatorI[0], pixBottomJ, apixSeparatorI[8], pixBottomJ, col|CT_OPAQUE); - - PIXaabbox2D boxHandle = GetScrollBarHandleBox(); - pdp->Fill(boxHandle.Min()(1)+2, boxHandle.Min()(2)+2, boxHandle.Size()(1)-3, boxHandle.Size()(2)-3, col|CT_OPAQUE); - - PIX pixJ = pixTopJ+pixLineSize*2+1; - - mg_ctOnScreen = ctSessionsOnScreen; - AdjustFirstOnScreen(); - - if (_lhServers.Count()==0) { - if (_pNetwork->ga_strEnumerationStatus!="") { - mg_bFocused = TRUE; - COLOR colItem = GetCurrentColor(); - PrintInBox(pdp, apixSeparatorI[0]+pixCharSizeI, pixListTopJ+pixCharSizeJ+pixLineSize+1, apixSeparatorI[1]-apixSeparatorI[0], - TRANS("searching..."), colItem); - } - } else { - FOREACHINLIST(CNetworkSession, ns_lnNode, _lhServers, itns) { - CNetworkSession &ns = *itns; - - if (iSession=mg_iFirstOnScreen+ctSessionsOnScreen) { - iSession++; - continue; - } - - PIX pixJ = pixListTopJ+(iSession-mg_iFirstOnScreen)*pixCharSizeJ+pixLineSize+1; - - mg_bFocused = bFocusedBefore&&iSession==mg_iSelected; - COLOR colItem = GetCurrentColor(); - - if (ns.ns_strVer!=_SE_VER_STRING) { - colItem = MulColors(colItem, 0xA0A0A0FF); - } - - CTString strPing(0,"%4d", INDEX(ns.ns_tmPing*1000)); - CTString strPlayersCt(0, "%2d/%2d", ns.ns_ctPlayers, ns.ns_ctMaxPlayers); - CTString strMod = ns.ns_strMod; - if (strMod=="") { - strMod = "SeriousSam"; - } - PrintInBox(pdp, apixSeparatorI[0]+pixCharSizeI/2, pixJ, apixSeparatorI[1]-apixSeparatorI[0]-pixCharSizeI, ns.ns_strSession, colItem); - PrintInBox(pdp, apixSeparatorI[1]+pixCharSizeI/2, pixJ, apixSeparatorI[2]-apixSeparatorI[1]-pixCharSizeI, TranslateConst(ns.ns_strWorld), colItem); - PrintInBox(pdp, apixSeparatorI[2]+pixCharSizeI/2, pixJ, apixSeparatorI[3]-apixSeparatorI[2]-pixCharSizeI, strPing, colItem); - PrintInBox(pdp, apixSeparatorI[3]+pixCharSizeI/2, pixJ, apixSeparatorI[4]-apixSeparatorI[3]-pixCharSizeI, strPlayersCt, colItem); - PrintInBox(pdp, apixSeparatorI[4]+pixCharSizeI/2, pixJ, apixSeparatorI[5]-apixSeparatorI[4]-pixCharSizeI, TranslateConst(ns.ns_strGameType), colItem); - PrintInBox(pdp, apixSeparatorI[5]+pixCharSizeI/2, pixJ, apixSeparatorI[6]-apixSeparatorI[5]-pixCharSizeI, TranslateConst(strMod), colItem); - PrintInBox(pdp, apixSeparatorI[6]+pixCharSizeI/2, pixJ, apixSeparatorI[7]-apixSeparatorI[6]-pixCharSizeI, ns.ns_strVer, colItem); - - iSession++; - } - } - - mg_bFocused = bFocusedBefore; -} - -static INDEX SliderPixToIndex(PIX pixOffset, INDEX iVisible, INDEX iTotal, PIXaabbox2D boxFull) -{ - FLOAT fSize = ClampUp(FLOAT(iVisible)/iTotal, 1.0f); - PIX pixFull = boxFull.Size()(2); - PIX pixSize = PIX(pixFull*fSize); - if (pixSize>=boxFull.Size()(2)) { - return 0; - } - return (iTotal*pixOffset)/pixFull; -} - -static PIXaabbox2D GetSliderBox(INDEX iFirst, INDEX iVisible, INDEX iTotal, - PIXaabbox2D boxFull) -{ - if (iTotal<=0) { - return boxFull; - } - FLOAT fSize = ClampUp(FLOAT(iVisible)/iTotal, 1.0f); - PIX pixFull = boxFull.Size()(2); - PIX pixSize = PIX(pixFull*fSize); - pixSize = ClampDn(pixSize, boxFull.Size()(1)); - PIX pixTop = pixFull*(FLOAT(iFirst)/iTotal)+boxFull.Min()(2); - PIX pixI0 = boxFull.Min()(1); - PIX pixI1 = boxFull.Max()(1); - return PIXaabbox2D(PIX2D(pixI0, pixTop), PIX2D(pixI1, pixTop+pixSize)); -} - -PIXaabbox2D CMGServerList::GetScrollBarFullBox(void) -{ - return PIXaabbox2D(PIX2D(mg_pixSBMinI, mg_pixSBMinJ), PIX2D(mg_pixSBMaxI, mg_pixSBMaxJ)); -} -PIXaabbox2D CMGServerList::GetScrollBarHandleBox(void) -{ - return GetSliderBox(mg_iFirstOnScreen, mg_ctOnScreen, _lhServers.Count(), GetScrollBarFullBox()); -} - -void CMGServerList::OnMouseOver(PIX pixI, PIX pixJ) -{ - mg_pixMouseI = pixI; - mg_pixMouseJ = pixJ; - - if (!(GetKeyState(VK_LBUTTON)&0x8000)) { - mg_pixDragJ = -1; - } - - BOOL bInSlider = (pixI>=mg_pixSBMinI && pixI<=mg_pixSBMaxI && pixJ>=mg_pixSBMinJ && pixJ<=mg_pixSBMaxJ); - if (mg_pixDragJ>=0 && bInSlider) { - PIX pixDelta = pixJ-mg_pixDragJ; - INDEX ctSessions = _lhServers.Count(); - INDEX iWantedLine = mg_iDragLine+ - SliderPixToIndex(pixDelta, mg_ctOnScreen, ctSessions, GetScrollBarFullBox()); - mg_iFirstOnScreen = Clamp(iWantedLine, 0L, ClampDn(ctSessions-mg_ctOnScreen, 0L)); - mg_iSelected = Clamp(mg_iSelected, mg_iFirstOnScreen, mg_iFirstOnScreen+mg_ctOnScreen-1L); -// AdjustFirstOnScreen(); - return; - } - - // if some server is selected - if (pixI>=mg_pixMinI && pixI<=mg_pixMaxI) { - INDEX iOnScreen = (pixJ-mg_pixListMinJ)/mg_pixListStepJ; - if (iOnScreen>=0 && iOnScreen=mg_pixHeaderMinJ && mg_pixMouseJ<=mg_pixHeaderMidJ - && mg_pixMouseI>=mg_pixHeaderI[0] && mg_pixMouseI<=mg_pixHeaderI[7]) { - INDEX iNewSort = mg_iSort; - if (mg_pixMouseI<=mg_pixHeaderI[1]) { - iNewSort = 0; - } else if (mg_pixMouseI<=mg_pixHeaderI[2]) { - iNewSort = 1; - } else if (mg_pixMouseI<=mg_pixHeaderI[3]) { - iNewSort = 2; - } else if (mg_pixMouseI<=mg_pixHeaderI[4]) { - iNewSort = 3; - } else if (mg_pixMouseI<=mg_pixHeaderI[5]) { - iNewSort = 4; - } else if (mg_pixMouseI<=mg_pixHeaderI[6]) { - iNewSort = 5; - } else if (mg_pixMouseI<=mg_pixHeaderI[7]) { - iNewSort = 6; - } - if (iNewSort==mg_iSort) { - mg_bSortDown = !mg_bSortDown; - } else { - mg_bSortDown = FALSE; - } - mg_iSort = iNewSort; - break; - } else */if (mg_pixMouseDrag>=0) { - mg_pixDragJ = mg_pixMouseDrag; - mg_iDragLine = mg_iFirstOnScreen; - break; - } - case VK_RETURN: - PlayMenuSound(_psdPress); - IFeel_PlayEffect("Menu_press"); - {INDEX i=0; - FOREACHINLIST(CNetworkSession, ns_lnNode, _lhServers, itns) { - if (i==mg_iSelected) { - - char strAddress[256]; - int iPort; - itns->ns_strAddress.ScanF("%200[^:]:%d", &strAddress, &iPort); - _pGame->gam_strJoinAddress = strAddress; - _pShell->SetINDEX("net_iPort", iPort); - extern void StartSelectPlayersMenuFromServers(void ); - StartSelectPlayersMenuFromServers(); - return TRUE; - } - i++; - }} - break; - default: - return FALSE; - } - return TRUE; -} - -void CMGServerList::OnSetFocus(void) -{ - mg_bFocused = TRUE; -} -void CMGServerList::OnKillFocus(void) -{ - mg_bFocused = FALSE; -} - -// -------------------------------- Buttons for player selecting implementation -void CMGChangePlayer::OnActivate(void) -{ - PlayMenuSound(_psdPress); - IFeel_PlayEffect("Menu_press"); - _iLocalPlayer = mg_iLocalPlayer; - if( _pGame->gm_aiMenuLocalPlayers[ mg_iLocalPlayer] < 0) - _pGame->gm_aiMenuLocalPlayers[ mg_iLocalPlayer] = 0; - gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_aiMenuLocalPlayers[ mg_iLocalPlayer]; - gmPlayerProfile.gm_pgmParentMenu = &gmSelectPlayersMenu; - extern BOOL _bPlayerMenuFromSinglePlayer; - _bPlayerMenuFromSinglePlayer = FALSE; - ChangeToMenu( &gmPlayerProfile); -} - -void CMGChangePlayer::SetPlayerText(void) -{ - INDEX iPlayer = _pGame->gm_aiMenuLocalPlayers[ mg_iLocalPlayer]; - CPlayerCharacter &pc = _pGame->gm_apcPlayers[ iPlayer]; - if (iPlayer<0 || iPlayer>7) { - mg_strText = "????"; - } else { - mg_strText.PrintF(TRANS("Player %d: %s\n"), mg_iLocalPlayer+1, pc.GetNameForPrinting()); - } -} - -// ------- Key (from customize keyboard) implementation - -CMGKeyDefinition::CMGKeyDefinition( void) -{ - mg_iState = DOING_NOTHING; -} - - -void CMGKeyDefinition::OnActivate(void) -{ - PlayMenuSound(_psdPress); - IFeel_PlayEffect("Menu_press"); - SetBindingNames(/*bDefining=*/TRUE); - mg_iState = RELEASE_RETURN_WAITING; -} - - -BOOL CMGKeyDefinition::OnKeyDown( int iVKey) -{ - // if waiting for a key definition - if( mg_iState == PRESS_KEY_WAITING) { - // do nothing - return TRUE; - } - - // if backspace pressed - if(iVKey == VK_BACK) { - // clear both keys - DefineKey(KID_NONE); - // message is processed - return TRUE; - } - - return CMenuGadget::OnKeyDown( iVKey); -} - -// set names for both key bindings -void CMGKeyDefinition::SetBindingNames(BOOL bDefining) -{ - // find the button - INDEX ict=0; - INDEX iDik=0; - FOREACHINLIST( CButtonAction, ba_lnNode, _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions, itba) { - if( ict == mg_iControlNumber) { - CButtonAction &ba = *itba; - // get the current bindings and names - INDEX iKey1 = ba.ba_iFirstKey; - INDEX iKey2 = ba.ba_iSecondKey; - BOOL bKey1Bound = iKey1!=KID_NONE; - BOOL bKey2Bound = iKey2!=KID_NONE; - CTString strKey1 = _pInput->GetButtonTransName(iKey1); - CTString strKey2 = _pInput->GetButtonTransName(iKey2); - - // if defining - if (bDefining) { - // if only first key is defined - if (bKey1Bound && !bKey2Bound) { - // put question mark for second key - mg_strBinding = strKey1+TRANS(" or ")+"?"; - // otherwise - } else { - // put question mark only - mg_strBinding = "?"; - } - // if not defining - } else { - // if second key is defined - if (bKey2Bound) { - // add both - mg_strBinding = strKey1+TRANS(" or ")+strKey2; - // if second key is undefined - } else { - // display only first one - mg_strBinding = strKey1; - } - } - return ; - } - ict++; - } - - // if not found, put errorneous string - mg_strBinding = "???"; -} - -void CMGKeyDefinition::Appear(void) -{ - SetBindingNames(/*bDefining=*/FALSE); - CMenuGadget::Appear(); -} - -void CMGKeyDefinition::Disappear(void) -{ - CMenuGadget::Disappear(); -} - -void CMGKeyDefinition::DefineKey(INDEX iDik) -{ - // for each button in controls - INDEX ict=0; - FOREACHINLIST(CButtonAction, ba_lnNode, _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions, itba) { - CButtonAction &ba = *itba; - // if it is this one - if (ict == mg_iControlNumber) { - // if should clear - if (iDik == KID_NONE) { - // unbind both - ba.ba_iFirstKey = KID_NONE; - ba.ba_iSecondKey = KID_NONE; - } - // if first key is unbound, or both keys are bound - if (ba.ba_iFirstKey==KID_NONE || ba.ba_iSecondKey!=KID_NONE) { - // bind first key - ba.ba_iFirstKey = iDik; - // clear second key - ba.ba_iSecondKey = KID_NONE; - // if only first key bound - } else { - // bind second key - ba.ba_iSecondKey = iDik; - } - // if it is not this one - } else { - // clear bindings that contain this key - if (ba.ba_iFirstKey == iDik) { - ba.ba_iFirstKey = KID_NONE; - } - if (ba.ba_iSecondKey == iDik) { - ba.ba_iSecondKey = KID_NONE; - } - } - ict++; - } - - SetBindingNames(/*bDefining=*/FALSE); -} - -void CMGKeyDefinition::Think( void) -{ - if( mg_iState == RELEASE_RETURN_WAITING) - { - _bDefiningKey = TRUE; - extern BOOL _bMouseUsedLast; - _bMouseUsedLast = FALSE; - _pInput->SetJoyPolling(TRUE); - _pInput->GetInput(FALSE); - if( _pInput->IsInputEnabled() && - !_pInput->GetButtonState( KID_ENTER) && - !_pInput->GetButtonState( KID_MOUSE1 ) ) - { - mg_iState = PRESS_KEY_WAITING; - } - } - else if( mg_iState == PRESS_KEY_WAITING) - { - _pInput->SetJoyPolling(TRUE); - _pInput->GetInput(FALSE); - for( INDEX iDik = 0; iDikGetButtonState( iDik)) - { - // skip keys that cannot be defined - if (iDik == KID_TILDE) { - continue; - } - // if escape not pressed - if (iDik != KID_ESCAPE) { - // define the new key - DefineKey(iDik); - // if escape pressed - } else { - // undefine the key - DefineKey(KID_NONE); - } - - // end defining loop - mg_iState = DOING_NOTHING; - _bDefiningKey = FALSE; - // refresh all buttons - pgmCurrentMenu->FillListItems(); - break; - } - } - } -} - -void CMGKeyDefinition::Render( CDrawPort *pdp) -{ - SetFontMedium(pdp); - - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - PIX pixIL = box.Min()(1)+box.Size()(1)*0.45f; - PIX pixIR = box.Min()(1)+box.Size()(1)*0.55f; - PIX pixJ = box.Min()(2); - - COLOR col = GetCurrentColor(); - pdp->PutTextR( mg_strLabel, pixIL, pixJ, col); - pdp->PutText( mg_strBinding, pixIR, pixJ, col); -} diff --git a/Sources/SeriousSam/MenuGadgets.h b/Sources/SeriousSam/MenuGadgets.h deleted file mode 100644 index 3583832..0000000 --- a/Sources/SeriousSam/MenuGadgets.h +++ /dev/null @@ -1,281 +0,0 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ - -#define DOING_NOTHING 0 -#define PRESS_KEY_WAITING 1 -#define RELEASE_RETURN_WAITING 2 - -#define EMPTYSLOTSTRING TRANS("") - -class CMenuGadget { -public: - CListNode mg_lnNode; - FLOATaabbox2D mg_boxOnScreen; - BOOL mg_bVisible; - BOOL mg_bEnabled; - BOOL mg_bLabel; - BOOL mg_bFocused; - INDEX mg_iInList; // for scrollable gadget lists - - CTString mg_strTip; - CMenuGadget *mg_pmgLeft; - CMenuGadget *mg_pmgRight; - CMenuGadget *mg_pmgUp; - CMenuGadget *mg_pmgDown; - - CMenuGadget( void); - // return TRUE if handled - virtual BOOL OnKeyDown( int iVKey); - virtual BOOL OnChar(MSG msg); - virtual void OnActivate( void); - virtual void OnSetFocus( void); - virtual void OnKillFocus( void); - virtual void Appear( void); - virtual void Disappear( void); - virtual void Think( void); - virtual void OnMouseOver(PIX pixI, PIX pixJ); - - virtual COLOR GetCurrentColor(void); - virtual void Render( CDrawPort *pdp); - virtual BOOL IsSeparator(void) { return FALSE; }; -}; - -enum ButtonFontSize { - BFS_SMALL = 0, - BFS_MEDIUM = 1, - BFS_LARGE = 2, -}; - -class CMGTitle : public CMenuGadget { -public: - CTString mg_strText; - void Render( CDrawPort *pdp); -}; - -class CMGHighScore : public CMenuGadget { -public: - void Render( CDrawPort *pdp); -}; - -class CMGButton : public CMenuGadget { -public: - CTString mg_strLabel; // for those that have labels separately from main text - CTString mg_strText; - INDEX mg_iCenterI; - enum ButtonFontSize mg_bfsFontSize; - BOOL mg_bEditing; - BOOL mg_bHighlighted; - BOOL mg_bRectangle; - BOOL mg_bMental; - INDEX mg_iTextMode; - INDEX mg_iCursorPos; - - INDEX mg_iIndex; - void (*mg_pActivatedFunction)(void); - CMGButton(void); - void SetText( CTString strNew); - void OnActivate(void); - void Render( CDrawPort *pdp); - PIX GetCharOffset( CDrawPort *pdp, INDEX iCharNo); -}; - -enum ArrowDir { - AD_NONE, - AD_UP, - AD_DOWN, - AD_LEFT, - AD_RIGHT, -}; - -class CMGArrow : public CMGButton { -public: - enum ArrowDir mg_adDirection; - void Render( CDrawPort *pdp); - void OnActivate( void); -}; - -class CMGModel : public CMGButton { -public: - CModelObject mg_moModel; - CModelObject mg_moFloor; - CPlacement3D mg_plModel; - BOOL mg_fFloorY; - - CMGModel(void); - void Render( CDrawPort *pdp); -}; - -class CMGEdit : public CMGButton { -public: - INDEX mg_ctMaxStringLen; - CTString *mg_pstrToChange; - CMGEdit(void); - // return TRUE if handled - BOOL OnKeyDown(int iVKey); - BOOL OnChar(MSG msg); - void Clear(void); - void OnActivate(void); - void OnKillFocus(void); - void Render( CDrawPort *pdp); - virtual void OnStringChanged(void); - virtual void OnStringCanceled(void); -}; - -class CMGKeyDefinition : public CMenuGadget { -public: - INDEX mg_iState; - INDEX mg_iControlNumber; - - CTString mg_strLabel; - CTString mg_strBinding; - - CMGKeyDefinition(void); - void Appear(void); - void Disappear(void); - void OnActivate(void); - // return TRUE if handled - BOOL OnKeyDown( int iVKey); - void Think( void); - // set names for both key bindings - void SetBindingNames(BOOL bDefining); - void DefineKey(INDEX iDik); - void Render( CDrawPort *pdp); -}; - -class CMGTrigger : public CMenuGadget { -public: - CTString mg_strLabel; - CTString mg_strValue; - CTString *mg_astrTexts; - INDEX mg_ctTexts; - INDEX mg_iSelected; - INDEX mg_iCenterI; - BOOL mg_bVisual; - - CMGTrigger(void); - - void ApplyCurrentSelection(void); - void OnSetNextInList(int iVKey); - void (*mg_pPreTriggerChange)(INDEX iCurrentlySelected); - void (*mg_pOnTriggerChange)(INDEX iCurrentlySelected); - - // return TRUE if handled - BOOL OnKeyDown( int iVKey); - void Render( CDrawPort *pdp); -}; - -class CMGSlider : public CMGButton { -public: - FLOAT mg_fFactor; - INDEX mg_iMinPos; - INDEX mg_iMaxPos; - INDEX mg_iCurPos; - - CMGSlider(); - void ApplyCurrentPosition(void); - void ApplyGivenPosition(INDEX iMin, INDEX iMax, INDEX iCur); - // return TRUE if handled - virtual BOOL OnKeyDown( int iVKey); - void (*mg_pOnSliderChange)(INDEX iCurPos); - PIXaabbox2D GetSliderBox(void); - void Render( CDrawPort *pdp); -}; - -class CMGLevelButton : public CMGButton { -public: - CTFileName mg_fnmLevel; - - void OnActivate(void); - void OnSetFocus( void); -}; - -class CMGVarButton : public CMGButton { -public: - class CVarSetting *mg_pvsVar; - PIXaabbox2D GetSliderBox(void); - BOOL OnKeyDown(int iVKey); - void Render( CDrawPort *pdp); - BOOL IsSeparator(void); - BOOL IsEnabled(void); -}; - -// file button states -#define FBS_NORMAL 0 // normal active state -#define FBS_SAVENAME 1 // typing in the save name -#define FBS_RENAME 2 // renaming existing file -class CMGFileButton : public CMGEdit { -public: - CMGFileButton(void); - CTFileName mg_fnm; - CTString mg_strDes; // entire description goes here - CTString mg_strInfo; // info part of text to print above the gadget tip - INDEX mg_iState; - // refresh current text from description - void RefreshText(void); - // save description to disk - void SaveDescription(void); - void SaveYes(void); - void DoSave(void); - void DoLoad(void); - void StartEdit(void); - - // return TRUE if handled - BOOL OnKeyDown(int iVKey); - void OnActivate(void); - void OnSetFocus(void); - void OnKillFocus(void); - - // overrides from edit gadget - void OnStringChanged(void); - void OnStringCanceled(void); - void Render( CDrawPort *pdp); -}; - -class CMGServerList : public CMGButton { -public: - INDEX mg_iSelected; - INDEX mg_iFirstOnScreen; - INDEX mg_ctOnScreen; - // server list dimensions - PIX mg_pixMinI; - PIX mg_pixMaxI; - PIX mg_pixListMinJ; - PIX mg_pixListStepJ; - // header dimensions - PIX mg_pixHeaderMinJ; - PIX mg_pixHeaderMidJ; - PIX mg_pixHeaderMaxJ; - PIX mg_pixHeaderI[8]; - // scrollbar dimensions - PIX mg_pixSBMinI; - PIX mg_pixSBMaxI; - PIX mg_pixSBMinJ; - PIX mg_pixSBMaxJ; - // scrollbar dragging params - PIX mg_pixDragJ; - PIX mg_iDragLine; - PIX mg_pixMouseDrag; - // current mouse pos - PIX mg_pixMouseI; - PIX mg_pixMouseJ; - - INDEX mg_iSort; // column to sort by - BOOL mg_bSortDown; // sort in reverse order - - CMGServerList(); - BOOL OnKeyDown(int iVKey); - PIXaabbox2D GetScrollBarFullBox(void); - PIXaabbox2D GetScrollBarHandleBox(void); - void OnSetFocus(void); - void OnKillFocus(void); - void Render( CDrawPort *pdp); - void AdjustFirstOnScreen(void); - void OnMouseOver(PIX pixI, PIX pixJ); -}; - -class CMGChangePlayer : public CMGButton { -public: - INDEX mg_iLocalPlayer; - - void SetPlayerText(void); - void OnActivate( void); -}; diff --git a/Sources/SeriousSam/MenuPrinting.cpp b/Sources/SeriousSam/MenuPrinting.cpp index f74abb3..f19fa39 100644 --- a/Sources/SeriousSam/MenuPrinting.cpp +++ b/Sources/SeriousSam/MenuPrinting.cpp @@ -3,6 +3,7 @@ #include "StdH.h" #include "MenuPrinting.h" +#include "ArrowDir.h" static const FLOAT _fBigStartJ = 0.25f; static const FLOAT _fBigSizeJ = 0.066f; diff --git a/Sources/SeriousSam/SeriousSam.vcxproj b/Sources/SeriousSam/SeriousSam.vcxproj index b361610..b221d0e 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj +++ b/Sources/SeriousSam/SeriousSam.vcxproj @@ -188,13 +188,22 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul Use StdH.h - - Use - StdH.h - Use - StdH.h - + + + + + + + + + + + + + + + Use StdH.h @@ -211,6 +220,7 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + @@ -219,8 +229,22 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul - + + + + + + + + + + + + + + + diff --git a/Sources/SeriousSam/SeriousSam.vcxproj.filters b/Sources/SeriousSam/SeriousSam.vcxproj.filters index 22f3188..8f48799 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj.filters +++ b/Sources/SeriousSam/SeriousSam.vcxproj.filters @@ -42,9 +42,6 @@ Source Files - - Source Files - Source Files @@ -60,6 +57,51 @@ Source Files + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + @@ -86,9 +128,6 @@ Header Files - - Header Files - Header Files @@ -107,6 +146,54 @@ Header Files + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + diff --git a/Sources/SeriousSam/StdH.h b/Sources/SeriousSam/StdH.h index 41b6065..1c65f03 100644 --- a/Sources/SeriousSam/StdH.h +++ b/Sources/SeriousSam/StdH.h @@ -23,5 +23,4 @@ #define TECHTESTONLY 0 #include "SeriousSam.h" -#include "Menu.h" -#include "MenuGadgets.h" \ No newline at end of file +#include "Menu.h" \ No newline at end of file From f33bb4519fd13c073390099803463c358666629d Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Sat, 12 Mar 2016 00:53:58 +0300 Subject: [PATCH 04/34] Fix. I forgot to remove piece of my code. --- Scripts/PersistentSymbols.ini | 4 ++-- Sources/SeriousSam/Menu.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Scripts/PersistentSymbols.ini b/Scripts/PersistentSymbols.ini index d61e379..1e6a134 100644 --- a/Scripts/PersistentSymbols.ini +++ b/Scripts/PersistentSymbols.ini @@ -429,9 +429,9 @@ persistent extern user INDEX gam_iBlood=(INDEX)2; persistent extern user INDEX gam_bGibs=(INDEX)1; persistent extern user INDEX gam_bUseExtraEnemies=(INDEX)1; persistent extern user INDEX gam_iStartDifficulty=(INDEX)1; -persistent extern user INDEX gam_iStartMode=(INDEX)-1; +persistent extern user INDEX gam_iStartMode=(INDEX)0; persistent extern user CTString gam_strGameAgentExtras=""; -persistent extern user CTString gam_strCustomLevel=""; +persistent extern user CTString gam_strCustomLevel="Levels\\Default.wld"; persistent extern user CTString gam_strSessionName="Unnamed session"; persistent extern user CTString gam_strJoinAddress="serveraddress"; persistent extern user INDEX gam_bEnableAdvancedObserving=(INDEX)0; diff --git a/Sources/SeriousSam/Menu.cpp b/Sources/SeriousSam/Menu.cpp index 77caba1..f71c2a5 100644 --- a/Sources/SeriousSam/Menu.cpp +++ b/Sources/SeriousSam/Menu.cpp @@ -5136,7 +5136,7 @@ void CAudioOptionsMenu::Initialize_t(void) gm_lhGadgets.AddTail( mgMPEGVolume.mg_lnNode); mgAudioOptionsApply.mg_bfsFontSize = BFS_LARGE; - mgAudioOptionsApply.mg_boxOnScreen = BoxBigRow(5/*4*/); + mgAudioOptionsApply.mg_boxOnScreen = BoxBigRow(4); mgAudioOptionsApply.mg_strText = TRANS("APPLY"); mgAudioOptionsApply.mg_strTip = TRANS("activate selected options"); gm_lhGadgets.AddTail( mgAudioOptionsApply.mg_lnNode); From 742d11a81328197f62bb90dd21c74d26c9fff224 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Sat, 12 Mar 2016 02:26:30 +0300 Subject: [PATCH 05/34] WorldEditor: FIX Remove wrong and useless conversion Because this is issue! --- Sources/WorldEditor/DlgBrowseByClass.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/WorldEditor/DlgBrowseByClass.cpp b/Sources/WorldEditor/DlgBrowseByClass.cpp index 1ef3534..7b30702 100644 --- a/Sources/WorldEditor/DlgBrowseByClass.cpp +++ b/Sources/WorldEditor/DlgBrowseByClass.cpp @@ -223,7 +223,7 @@ CTString GetItemValue(CEntity *pen, INDEX iColumn, INDEX &iFormat) case COLUMN_INDEX: { INDEX iIndex=dcEntities.GetIndex(pen); - strResult.PrintF("%d", FLOAT(iIndex)); + strResult.PrintF("%d", iIndex); iFormat=PDF_INDEX; break; } From d1636a7990aeef035d86d3319dae827baadfe6ce Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Sat, 12 Mar 2016 02:28:31 +0300 Subject: [PATCH 06/34] Update .gitignore again!!! AGAIN! I really hate VS because it makes too many useless generated stuff! --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index e2df471..511d69e 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ *.bsc *.cnt *.exp +*.ipch *.log *.map *.opensdf From 3b5fdcd03d5ae6cb859e19a3f166f1d0dafe8bb4 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Sat, 12 Mar 2016 12:45:47 +0300 Subject: [PATCH 07/34] Fix mistake in the Console Window No description --- Sources/GameGUIMP/GameGUI.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/GameGUIMP/GameGUI.rc b/Sources/GameGUIMP/GameGUI.rc index 1a54c62..8e201fd 100644 --- a/Sources/GameGUIMP/GameGUI.rc +++ b/Sources/GameGUIMP/GameGUI.rc @@ -273,7 +273,7 @@ BEGIN EDITTEXT IDC_CONSOLE_OUTPUT,7,7,429,169,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL - LTEXT "Available symols:",IDC_STATIC,7,181,69,8 + LTEXT "Available symbols:",IDC_STATIC,7,181,69,8 COMBOBOX IDC_CONSOLE_SYMBOLS,76,179,360,108,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END From 216246cf15eec4fc2b62cd131513f1aeef514487 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Sat, 12 Mar 2016 18:25:48 +0300 Subject: [PATCH 08/34] GameExecutable: Separate Menu.h into multiple files. Too many classes definitions in one file. Preparing for separation Menu.cpp --- Sources/SeriousSam/ArrowDir.h | 2 +- Sources/SeriousSam/FileInfo.h | 18 ++ Sources/SeriousSam/GameMenu.h | 39 +++ Sources/SeriousSam/MAudioOptions.h | 18 ++ Sources/SeriousSam/MConfirm.h | 22 ++ Sources/SeriousSam/MControls.h | 21 ++ Sources/SeriousSam/MCredits.h | 17 ++ Sources/SeriousSam/MCustomizeAxis.h | 22 ++ Sources/SeriousSam/MCustomizeKeyboard.h | 20 ++ Sources/SeriousSam/MDisabled.h | 17 ++ Sources/SeriousSam/MHighScore.h | 18 ++ Sources/SeriousSam/MInGame.h | 18 ++ Sources/SeriousSam/MLevels.h | 19 ++ Sources/SeriousSam/MLoadSave.h | 50 ++++ Sources/SeriousSam/MMain.h | 18 ++ Sources/SeriousSam/MNetwork.h | 18 ++ Sources/SeriousSam/MNetworkJoin.h | 17 ++ Sources/SeriousSam/MNetworkOpen.h | 19 ++ Sources/SeriousSam/MNetworkStart.h | 19 ++ Sources/SeriousSam/MOptions.h | 17 ++ Sources/SeriousSam/MPlayerProfile.h | 24 ++ Sources/SeriousSam/MRenderingOptions.h | 18 ++ Sources/SeriousSam/MSelectPlayers.h | 21 ++ Sources/SeriousSam/MServers.h | 22 ++ Sources/SeriousSam/MSinglePlayer.h | 18 ++ Sources/SeriousSam/MSinglePlayerNew.h | 18 ++ Sources/SeriousSam/MSplitScreen.h | 18 ++ Sources/SeriousSam/MSplitStart.h | 19 ++ Sources/SeriousSam/MVar.h | 22 ++ Sources/SeriousSam/MVideoOptions.h | 18 ++ Sources/SeriousSam/Menu.cpp | 26 ++ Sources/SeriousSam/Menu.h | 271 +----------------- Sources/SeriousSam/SeriousSam.vcxproj | 29 ++ Sources/SeriousSam/SeriousSam.vcxproj.filters | 219 ++++++++++---- 34 files changed, 833 insertions(+), 319 deletions(-) create mode 100644 Sources/SeriousSam/FileInfo.h create mode 100644 Sources/SeriousSam/GameMenu.h create mode 100644 Sources/SeriousSam/MAudioOptions.h create mode 100644 Sources/SeriousSam/MConfirm.h create mode 100644 Sources/SeriousSam/MControls.h create mode 100644 Sources/SeriousSam/MCredits.h create mode 100644 Sources/SeriousSam/MCustomizeAxis.h create mode 100644 Sources/SeriousSam/MCustomizeKeyboard.h create mode 100644 Sources/SeriousSam/MDisabled.h create mode 100644 Sources/SeriousSam/MHighScore.h create mode 100644 Sources/SeriousSam/MInGame.h create mode 100644 Sources/SeriousSam/MLevels.h create mode 100644 Sources/SeriousSam/MLoadSave.h create mode 100644 Sources/SeriousSam/MMain.h create mode 100644 Sources/SeriousSam/MNetwork.h create mode 100644 Sources/SeriousSam/MNetworkJoin.h create mode 100644 Sources/SeriousSam/MNetworkOpen.h create mode 100644 Sources/SeriousSam/MNetworkStart.h create mode 100644 Sources/SeriousSam/MOptions.h create mode 100644 Sources/SeriousSam/MPlayerProfile.h create mode 100644 Sources/SeriousSam/MRenderingOptions.h create mode 100644 Sources/SeriousSam/MSelectPlayers.h create mode 100644 Sources/SeriousSam/MServers.h create mode 100644 Sources/SeriousSam/MSinglePlayer.h create mode 100644 Sources/SeriousSam/MSinglePlayerNew.h create mode 100644 Sources/SeriousSam/MSplitScreen.h create mode 100644 Sources/SeriousSam/MSplitStart.h create mode 100644 Sources/SeriousSam/MVar.h create mode 100644 Sources/SeriousSam/MVideoOptions.h diff --git a/Sources/SeriousSam/ArrowDir.h b/Sources/SeriousSam/ArrowDir.h index 30a11aa..6d7f41e 100644 --- a/Sources/SeriousSam/ArrowDir.h +++ b/Sources/SeriousSam/ArrowDir.h @@ -6,6 +6,7 @@ #pragma once #endif + enum ArrowDir { AD_NONE, AD_UP, @@ -14,5 +15,4 @@ enum ArrowDir { AD_RIGHT, }; - #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/FileInfo.h b/Sources/SeriousSam/FileInfo.h new file mode 100644 index 0000000..cd24acd --- /dev/null +++ b/Sources/SeriousSam/FileInfo.h @@ -0,0 +1,18 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_FILEINFO_H +#define SE_INCL_FILEINFO_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + + +class CFileInfo { +public: + CListNode fi_lnNode; + CTFileName fi_fnFile; + CTString fi_strName; +}; + + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GameMenu.h b/Sources/SeriousSam/GameMenu.h new file mode 100644 index 0000000..c1c852a --- /dev/null +++ b/Sources/SeriousSam/GameMenu.h @@ -0,0 +1,39 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_H +#define SE_INCL_GAME_MENU_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + + +class CGameMenu { +public: + CListHead gm_lhGadgets; + CGameMenu *gm_pgmParentMenu; + BOOL gm_bPopup; + const char *gm_strName; // menu name (for mod interface only) + class CMenuGadget *gm_pmgSelectedByDefault; + class CMenuGadget *gm_pmgArrowUp; + class CMenuGadget *gm_pmgArrowDn; + class CMenuGadget *gm_pmgListTop; + class CMenuGadget *gm_pmgListBottom; + INDEX gm_iListOffset; + INDEX gm_iListWantedItem; // item you want to focus initially + INDEX gm_ctListVisible; + INDEX gm_ctListTotal; + CGameMenu(void); + void ScrollList(INDEX iDir); + void KillAllFocuses(void); + virtual void Initialize_t(void); + virtual void Destroy(void); + virtual void StartMenu(void); + virtual void FillListItems(void); + virtual void EndMenu(void); + // return TRUE if handled + virtual BOOL OnKeyDown(int iVKey); + virtual BOOL OnChar(MSG msg); + virtual void Think(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MAudioOptions.h b/Sources/SeriousSam/MAudioOptions.h new file mode 100644 index 0000000..cf4a94b --- /dev/null +++ b/Sources/SeriousSam/MAudioOptions.h @@ -0,0 +1,18 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_AUDIOOPTIONS_H +#define SE_INCL_GAME_MENU_AUDIOOPTIONS_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CAudioOptionsMenu : public CGameMenu { +public: + void StartMenu(void); + void Initialize_t(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MConfirm.h b/Sources/SeriousSam/MConfirm.h new file mode 100644 index 0000000..ee40979 --- /dev/null +++ b/Sources/SeriousSam/MConfirm.h @@ -0,0 +1,22 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_CONFIRM_H +#define SE_INCL_GAME_MENU_CONFIRM_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CConfirmMenu : public CGameMenu { +public: + void Initialize_t(void); + // return TRUE if handled + BOOL OnKeyDown(int iVKey); + + void BeLarge(void); + void BeSmall(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MControls.h b/Sources/SeriousSam/MControls.h new file mode 100644 index 0000000..949e17e --- /dev/null +++ b/Sources/SeriousSam/MControls.h @@ -0,0 +1,21 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_CONTROLS_H +#define SE_INCL_GAME_MENU_CONTROLS_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CControlsMenu : public CGameMenu { +public: + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); + void ObtainActionSettings(void); + void ApplyActionSettings(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MCredits.h b/Sources/SeriousSam/MCredits.h new file mode 100644 index 0000000..10f602b --- /dev/null +++ b/Sources/SeriousSam/MCredits.h @@ -0,0 +1,17 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_CREDITS_H +#define SE_INCL_GAME_MENU_CREDITS_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CCreditsMenu : public CGameMenu { +public: + void Initialize_t(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MCustomizeAxis.h b/Sources/SeriousSam/MCustomizeAxis.h new file mode 100644 index 0000000..0bba4d8 --- /dev/null +++ b/Sources/SeriousSam/MCustomizeAxis.h @@ -0,0 +1,22 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_CUSTOMIZEAXIS_H +#define SE_INCL_GAME_MENU_CUSTOMIZEAXIS_H +#ifdef PRAGMA_ONCE +#pragma once +#endif + +#include "GameMenu.h" + + +class CCustomizeAxisMenu : public CGameMenu { +public: + ~CCustomizeAxisMenu(void); + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); + void ObtainActionSettings(void); + void ApplyActionSettings(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MCustomizeKeyboard.h b/Sources/SeriousSam/MCustomizeKeyboard.h new file mode 100644 index 0000000..c95a6c8 --- /dev/null +++ b/Sources/SeriousSam/MCustomizeKeyboard.h @@ -0,0 +1,20 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_CUSTOMIZEKEYBOARD_H +#define SE_INCL_GAME_MENU_CUSTOMIZEKEYBOARD_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CCustomizeKeyboardMenu : public CGameMenu { +public: + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); + void FillListItems(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MDisabled.h b/Sources/SeriousSam/MDisabled.h new file mode 100644 index 0000000..7d372f5 --- /dev/null +++ b/Sources/SeriousSam/MDisabled.h @@ -0,0 +1,17 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_DISABLED_H +#define SE_INCL_GAME_MENU_DISABLED_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CDisabledMenu : public CGameMenu { +public: + void Initialize_t(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MHighScore.h b/Sources/SeriousSam/MHighScore.h new file mode 100644 index 0000000..622e82e --- /dev/null +++ b/Sources/SeriousSam/MHighScore.h @@ -0,0 +1,18 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_HIGHSCORE_H +#define SE_INCL_GAME_MENU_HIGHSCORE_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CHighScoreMenu : public CGameMenu { +public: + void Initialize_t(void); + void StartMenu(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MInGame.h b/Sources/SeriousSam/MInGame.h new file mode 100644 index 0000000..53e7e03 --- /dev/null +++ b/Sources/SeriousSam/MInGame.h @@ -0,0 +1,18 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_INGAME_H +#define SE_INCL_GAME_MENU_INGAME_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CInGameMenu : public CGameMenu { +public: + void Initialize_t(void); + void StartMenu(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MLevels.h b/Sources/SeriousSam/MLevels.h new file mode 100644 index 0000000..174a86a --- /dev/null +++ b/Sources/SeriousSam/MLevels.h @@ -0,0 +1,19 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_LEVELS_H +#define SE_INCL_GAME_MENU_LEVELS_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CLevelsMenu : public CGameMenu { +public: + void Initialize_t(void); + void FillListItems(void); + void StartMenu(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MLoadSave.h b/Sources/SeriousSam/MLoadSave.h new file mode 100644 index 0000000..b51b971 --- /dev/null +++ b/Sources/SeriousSam/MLoadSave.h @@ -0,0 +1,50 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_LOADSAVE_H +#define SE_INCL_GAME_MENU_LOADSAVE_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CLoadSaveMenu : public CGameMenu { +public: + // settings adjusted before starting the menu + CGameMenu *gm_pgmNextMenu; // menu to go to after selecting a file (if null, use parent menu) + CTFileName gm_fnmSelected; // file that is selected initially + CTFileName gm_fnmDirectory; // directory that should be read + CTFileName gm_fnmBaseName; // base file name for saving (numbers are auto-added) + CTFileName gm_fnmExt; // accepted file extension + BOOL gm_bSave; // set when chosing file for saving + BOOL gm_bManage; // set if managing (rename/delet is enabled) + CTString gm_strSaveDes; // default description (if saving) + BOOL gm_bAllowThumbnails; // set when chosing file for saving + BOOL gm_bNoEscape; // forbid exiting with escape/rmb +#define LSSORT_NONE 0 +#define LSSORT_NAMEUP 1 +#define LSSORT_NAMEDN 2 +#define LSSORT_FILEUP 3 +#define LSSORT_FILEDN 4 + INDEX gm_iSortType; // sort type + + // function to activate when file is chosen + // return true if saving succeeded - description is saved automatically + // always return true for loading + BOOL(*gm_pAfterFileChosen)(const CTFileName &fnm); + + // internal properties + CListHead gm_lhFileInfos; // all file infos to list + INDEX gm_iLastFile; // index of last saved file in numbered format + + // called to get info of a file from directory, or to skip it + BOOL ParseFile(const CTFileName &fnm, CTString &strName); + + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); + void FillListItems(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MMain.h b/Sources/SeriousSam/MMain.h new file mode 100644 index 0000000..30a9d91 --- /dev/null +++ b/Sources/SeriousSam/MMain.h @@ -0,0 +1,18 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_MAIN_H +#define SE_INCL_GAME_MENU_MAIN_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CMainMenu : public CGameMenu { +public: + void Initialize_t(void); + void StartMenu(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MNetwork.h b/Sources/SeriousSam/MNetwork.h new file mode 100644 index 0000000..6b0364a --- /dev/null +++ b/Sources/SeriousSam/MNetwork.h @@ -0,0 +1,18 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_NETWORK_H +#define SE_INCL_GAME_MENU_NETWORK_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CNetworkMenu : public CGameMenu { +public: + void Initialize_t(void); + void StartMenu(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MNetworkJoin.h b/Sources/SeriousSam/MNetworkJoin.h new file mode 100644 index 0000000..d38984e --- /dev/null +++ b/Sources/SeriousSam/MNetworkJoin.h @@ -0,0 +1,17 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_NETWORKJOIN_H +#define SE_INCL_GAME_MENU_NETWORKJOIN_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CNetworkJoinMenu : public CGameMenu { +public: + void Initialize_t(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MNetworkOpen.h b/Sources/SeriousSam/MNetworkOpen.h new file mode 100644 index 0000000..c526b4e --- /dev/null +++ b/Sources/SeriousSam/MNetworkOpen.h @@ -0,0 +1,19 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_NETWORKOPEN_H +#define SE_INCL_GAME_MENU_NETWORKOPEN_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CNetworkOpenMenu : public CGameMenu { +public: + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MNetworkStart.h b/Sources/SeriousSam/MNetworkStart.h new file mode 100644 index 0000000..2072e6e --- /dev/null +++ b/Sources/SeriousSam/MNetworkStart.h @@ -0,0 +1,19 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_NETWORKSTART_H +#define SE_INCL_GAME_MENU_NETWORKSTART_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CNetworkStartMenu : public CGameMenu { +public: + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MOptions.h b/Sources/SeriousSam/MOptions.h new file mode 100644 index 0000000..f42cdac --- /dev/null +++ b/Sources/SeriousSam/MOptions.h @@ -0,0 +1,17 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_OPTIONS_H +#define SE_INCL_GAME_MENU_OPTIONS_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class COptionsMenu : public CGameMenu { +public: + void Initialize_t(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MPlayerProfile.h b/Sources/SeriousSam/MPlayerProfile.h new file mode 100644 index 0000000..0541e5b --- /dev/null +++ b/Sources/SeriousSam/MPlayerProfile.h @@ -0,0 +1,24 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_PLAYERPROFILE_H +#define SE_INCL_GAME_MENU_PLAYERPROFILE_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CPlayerProfileMenu : public CGameMenu { +public: + INDEX *gm_piCurrentPlayer; + void Initialize_t(void); + INDEX ComboFromPlayer(INDEX iPlayer); + INDEX PlayerFromCombo(INDEX iCombo); + void SelectPlayer(INDEX iPlayer); + void ApplyComboPlayer(INDEX iPlayer); + void StartMenu(void); + void EndMenu(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MRenderingOptions.h b/Sources/SeriousSam/MRenderingOptions.h new file mode 100644 index 0000000..c41a546 --- /dev/null +++ b/Sources/SeriousSam/MRenderingOptions.h @@ -0,0 +1,18 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_RENDERINGOPTIONS_H +#define SE_INCL_GAME_MENU_RENDERINGOPTIONS_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CRenderingOptionsMenu : public CGameMenu { +public: + void StartMenu(void); + void EndMenu(void); + void Initialize_t(void); +}; +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MSelectPlayers.h b/Sources/SeriousSam/MSelectPlayers.h new file mode 100644 index 0000000..5d5f4da --- /dev/null +++ b/Sources/SeriousSam/MSelectPlayers.h @@ -0,0 +1,21 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_SELECTPLAYERS_H +#define SE_INCL_GAME_MENU_SELECTPLAYERS_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CSelectPlayersMenu : public CGameMenu { +public: + BOOL gm_bAllowDedicated; + BOOL gm_bAllowObserving; + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MServers.h b/Sources/SeriousSam/MServers.h new file mode 100644 index 0000000..c8e7304 --- /dev/null +++ b/Sources/SeriousSam/MServers.h @@ -0,0 +1,22 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_SERVERS_H +#define SE_INCL_GAME_MENU_SERVERS_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CServersMenu : public CGameMenu { +public: + BOOL m_bInternet; + void Initialize_t(void); + void StartMenu(void); + void Think(void); + + BOOL OnKeyDown(int iVKey); // __Evolution +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MSinglePlayer.h b/Sources/SeriousSam/MSinglePlayer.h new file mode 100644 index 0000000..5443f6e --- /dev/null +++ b/Sources/SeriousSam/MSinglePlayer.h @@ -0,0 +1,18 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_SINGLEPLAYER_H +#define SE_INCL_GAME_MENU_SINGLEPLAYER_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CSinglePlayerMenu : public CGameMenu { +public: + void Initialize_t(void); + void StartMenu(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MSinglePlayerNew.h b/Sources/SeriousSam/MSinglePlayerNew.h new file mode 100644 index 0000000..090a439 --- /dev/null +++ b/Sources/SeriousSam/MSinglePlayerNew.h @@ -0,0 +1,18 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_SINGLEPLAYERNEW_H +#define SE_INCL_GAME_MENU_SINGLEPLAYERNEW_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CSinglePlayerNewMenu : public CGameMenu { +public: + void Initialize_t(void); + void StartMenu(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MSplitScreen.h b/Sources/SeriousSam/MSplitScreen.h new file mode 100644 index 0000000..72592fd --- /dev/null +++ b/Sources/SeriousSam/MSplitScreen.h @@ -0,0 +1,18 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_SPLITSCREEN_H +#define SE_INCL_GAME_MENU_SPLITSCREEN_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CSplitScreenMenu : public CGameMenu { +public: + void Initialize_t(void); + void StartMenu(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MSplitStart.h b/Sources/SeriousSam/MSplitStart.h new file mode 100644 index 0000000..832a52c --- /dev/null +++ b/Sources/SeriousSam/MSplitStart.h @@ -0,0 +1,19 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_SPLITSTART_H +#define SE_INCL_GAME_MENU_SPLITSTART_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CSplitStartMenu : public CGameMenu { +public: + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MVar.h b/Sources/SeriousSam/MVar.h new file mode 100644 index 0000000..b688011 --- /dev/null +++ b/Sources/SeriousSam/MVar.h @@ -0,0 +1,22 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_VAR_H +#define SE_INCL_GAME_MENU_VAR_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CVarMenu : public CGameMenu { +public: + CTFileName gm_fnmMenuCFG; + void Initialize_t(void); + void FillListItems(void); + void StartMenu(void); + void EndMenu(void); + void Think(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MVideoOptions.h b/Sources/SeriousSam/MVideoOptions.h new file mode 100644 index 0000000..14572d3 --- /dev/null +++ b/Sources/SeriousSam/MVideoOptions.h @@ -0,0 +1,18 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_GAME_MENU_VIDEOOPTIONS_H +#define SE_INCL_GAME_MENU_VIDEOOPTIONS_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +#include "GameMenu.h" + + +class CVideoOptionsMenu : public CGameMenu { +public: + void StartMenu(void); + void Initialize_t(void); +}; + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/Menu.cpp b/Sources/SeriousSam/Menu.cpp index f71c2a5..73f1f7c 100644 --- a/Sources/SeriousSam/Menu.cpp +++ b/Sources/SeriousSam/Menu.cpp @@ -12,6 +12,7 @@ #include "MenuPrinting.h" #include "LevelInfo.h" #include "VarList.h" +#include "FileInfo.h" #include "MGArrow.h" #include "MGButton.h" @@ -28,6 +29,31 @@ #include "MGTrigger.h" #include "MGVarButton.h" +#include "MAudioOptions.h" +#include "MConfirm.h" +#include "MControls.h" +#include "MCustomizeAxis.h" +#include "MCustomizeKeyboard.h" +#include "MCredits.h" +#include "MDisabled.h" +#include "MHighScore.h" +#include "MInGame.h" +#include "MLevels.h" +#include "MMain.h" +#include "MNetwork.h" +#include "MNetworkJoin.h" +#include "MNetworkOpen.h" +#include "MNetworkStart.h" +#include "MOptions.h" +#include "MRenderingOptions.h" +#include "MServers.h" +#include "MSinglePlayer.h" +#include "MSinglePlayerNew.h" +#include "MSplitScreen.h" +#include "MSplitStart.h" +#include "MVar.h" +#include "MVideoOptions.h" + // macros for translating radio button text arrays #define RADIOTRANS(str) ("ETRS" str) #define TRANSLATERADIOARRAY(array) TranslateRadioTexts(array, ARRAYCOUNT(array)) diff --git a/Sources/SeriousSam/Menu.h b/Sources/SeriousSam/Menu.h index b39d62b..42091d4 100644 --- a/Sources/SeriousSam/Menu.h +++ b/Sources/SeriousSam/Menu.h @@ -1,5 +1,13 @@ /* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +#ifndef SE_INCL_MENU_H +#define SE_INCL_MENU_H +#ifdef PRAGMA_ONCE +#pragma once +#endif + + + // set new thumbnail void SetThumbnail(CTFileName fn); // remove thumbnail @@ -43,266 +51,13 @@ extern GameMode _gmRunningGameMode; extern CGameMenu *pgmCurrentMenu; -class CGameMenu { -public: - CListHead gm_lhGadgets; - CGameMenu *gm_pgmParentMenu; - BOOL gm_bPopup; - const char *gm_strName; // menu name (for mod interface only) - class CMenuGadget *gm_pmgSelectedByDefault; - class CMenuGadget *gm_pmgArrowUp; - class CMenuGadget *gm_pmgArrowDn; - class CMenuGadget *gm_pmgListTop; - class CMenuGadget *gm_pmgListBottom; - INDEX gm_iListOffset; - INDEX gm_iListWantedItem; // item you want to focus initially - INDEX gm_ctListVisible; - INDEX gm_ctListTotal; - CGameMenu(void); - void ScrollList(INDEX iDir); - void KillAllFocuses(void); - virtual void Initialize_t(void); - virtual void Destroy(void); - virtual void StartMenu(void); - virtual void FillListItems(void); - virtual void EndMenu(void); - // return TRUE if handled - virtual BOOL OnKeyDown( int iVKey); - virtual BOOL OnChar(MSG msg); - virtual void Think(void); -}; +#include "GameMenu.h" -class CConfirmMenu : public CGameMenu { -public: - void Initialize_t(void); - // return TRUE if handled - BOOL OnKeyDown( int iVKey); - - void BeLarge(void); - void BeSmall(void); -}; - -class CMainMenu : public CGameMenu { -public: - void Initialize_t(void); - void StartMenu(void); -}; - -class CInGameMenu : public CGameMenu { -public: - void Initialize_t(void); - void StartMenu(void); -}; - -class CSinglePlayerMenu : public CGameMenu { -public: - void Initialize_t(void); - void StartMenu(void); -}; - -class CCreditsMenu : public CGameMenu { -public: - void Initialize_t(void); -}; - -class CDisabledMenu : public CGameMenu { -public: - void Initialize_t(void); -}; - -class CSinglePlayerNewMenu : public CGameMenu { -public: - void Initialize_t(void); - void StartMenu(void); -}; - -class CLevelsMenu : public CGameMenu { -public: - void Initialize_t(void); - void FillListItems(void); - void StartMenu(void); -}; - -class CVarMenu : public CGameMenu { -public: - CTFileName gm_fnmMenuCFG; - void Initialize_t(void); - void FillListItems(void); - void StartMenu(void); - void EndMenu(void); - void Think(void); -}; - -class CServersMenu : public CGameMenu { -public: - BOOL m_bInternet; - void Initialize_t(void); - void StartMenu(void); - void Think(void); - - BOOL OnKeyDown(int iVKey); // __Evolution -}; - -class CPlayerProfileMenu : public CGameMenu { -public: - INDEX *gm_piCurrentPlayer; - void Initialize_t(void); - INDEX ComboFromPlayer(INDEX iPlayer); - INDEX PlayerFromCombo(INDEX iCombo); - void SelectPlayer(INDEX iPlayer); - void ApplyComboPlayer(INDEX iPlayer); - void StartMenu(void); - void EndMenu(void); -}; - -class CControlsMenu : public CGameMenu { -public: - void Initialize_t(void); - void StartMenu(void); - void EndMenu(void); - void ObtainActionSettings(void); - void ApplyActionSettings(void); -}; - -class CFileInfo { -public: - CListNode fi_lnNode; - CTFileName fi_fnFile; - CTString fi_strName; -}; - -class CLoadSaveMenu : public CGameMenu { -public: - // settings adjusted before starting the menu - CGameMenu *gm_pgmNextMenu; // menu to go to after selecting a file (if null, use parent menu) - CTFileName gm_fnmSelected; // file that is selected initially - CTFileName gm_fnmDirectory; // directory that should be read - CTFileName gm_fnmBaseName; // base file name for saving (numbers are auto-added) - CTFileName gm_fnmExt; // accepted file extension - BOOL gm_bSave; // set when chosing file for saving - BOOL gm_bManage; // set if managing (rename/delet is enabled) - CTString gm_strSaveDes; // default description (if saving) - BOOL gm_bAllowThumbnails; // set when chosing file for saving - BOOL gm_bNoEscape; // forbid exiting with escape/rmb -#define LSSORT_NONE 0 -#define LSSORT_NAMEUP 1 -#define LSSORT_NAMEDN 2 -#define LSSORT_FILEUP 3 -#define LSSORT_FILEDN 4 - INDEX gm_iSortType; // sort type - - // function to activate when file is chosen - // return true if saving succeeded - description is saved automatically - // always return true for loading - BOOL (*gm_pAfterFileChosen)(const CTFileName &fnm); - - // internal properties - CListHead gm_lhFileInfos; // all file infos to list - INDEX gm_iLastFile; // index of last saved file in numbered format - - // called to get info of a file from directory, or to skip it - BOOL ParseFile(const CTFileName &fnm, CTString &strName); - - void Initialize_t(void); - void StartMenu(void); - void EndMenu(void); - void FillListItems(void); -}; +#include "MLoadSave.h" +#include "MPlayerProfile.h" +#include "MSelectPlayers.h" extern CLoadSaveMenu gmLoadSaveMenu; -class CHighScoreMenu : public CGameMenu { -public: - void Initialize_t(void); - void StartMenu(void); -}; - -class CNetworkMenu : public CGameMenu { -public: - void Initialize_t(void); - void StartMenu(void); -}; - -class CNetworkStartMenu : public CGameMenu { -public: - void Initialize_t(void); - void StartMenu(void); - void EndMenu(void); -}; - -class CNetworkOpenMenu : public CGameMenu { -public: - void Initialize_t(void); - void StartMenu(void); - void EndMenu(void); -}; - -class CNetworkJoinMenu : public CGameMenu { -public: - void Initialize_t(void); -}; - -class CSplitScreenMenu: public CGameMenu { -public: - void Initialize_t(void); - void StartMenu(void); -}; - -class CSplitStartMenu: public CGameMenu { -public: - void Initialize_t(void); - void StartMenu(void); - void EndMenu(void); -}; - -class CSelectPlayersMenu: public CGameMenu { -public: - BOOL gm_bAllowDedicated; - BOOL gm_bAllowObserving; - void Initialize_t(void); - void StartMenu(void); - void EndMenu(void); -}; - -class COptionsMenu : public CGameMenu { -public: - void Initialize_t(void); -}; - -class CVideoOptionsMenu : public CGameMenu { -public: - void StartMenu(void); - void Initialize_t(void); -}; - -class CRenderingOptionsMenu : public CGameMenu { -public: - void StartMenu(void); - void EndMenu(void); - void Initialize_t(void); -}; - -class CAudioOptionsMenu : public CGameMenu { -public: - void StartMenu(void); - void Initialize_t(void); -}; - -class CCustomizeKeyboardMenu : public CGameMenu { -public: - void Initialize_t(void); - void StartMenu(void); - void EndMenu(void); - void FillListItems(void); -}; - -class CCustomizeAxisMenu : public CGameMenu { -public: - ~CCustomizeAxisMenu(void); - void Initialize_t(void); - void StartMenu(void); - void EndMenu(void); - void ObtainActionSettings(void); - void ApplyActionSettings(void); -}; +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/SeriousSam.vcxproj b/Sources/SeriousSam/SeriousSam.vcxproj index b221d0e..65e77f4 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj +++ b/Sources/SeriousSam/SeriousSam.vcxproj @@ -224,10 +224,19 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + + + + + + + + + @@ -245,6 +254,26 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + + + + + + + + + + + + + + + + + + + + diff --git a/Sources/SeriousSam/SeriousSam.vcxproj.filters b/Sources/SeriousSam/SeriousSam.vcxproj.filters index 8f48799..17a7967 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj.filters +++ b/Sources/SeriousSam/SeriousSam.vcxproj.filters @@ -19,6 +19,18 @@ {332d9393-d918-4caf-86b2-2e63c2cca9bd} + + {47ffb7e3-433b-480c-a22a-849524a5bd1e} + + + {3bc65fe2-8c15-4ecd-bf59-de962bb42275} + + + {df54d6d1-39c3-4f26-93f8-116311f5a0eb} + + + {9a04e8a8-ecfc-42c3-bf28-fe3d8b49e626} + @@ -39,9 +51,6 @@ Source Files - - Source Files - Source Files @@ -57,50 +66,53 @@ Source Files + + Source Files\Gadgets + - Source Files + Source Files\Gadgets - Source Files + Source Files\Gadgets - Source Files + Source Files\Gadgets - Source Files + Source Files\Gadgets - Source Files + Source Files\Gadgets - Source Files + Source Files\Gadgets - Source Files + Source Files\Gadgets - Source Files + Source Files\Gadgets - Source Files + Source Files\Gadgets - Source Files + Source Files\Gadgets - Source Files + Source Files\Gadgets - Source Files + Source Files\Gadgets - Source Files + Source Files\Gadgets - Source Files + Source Files\Gadgets - - Source Files + + Source Files\Menus @@ -125,9 +137,6 @@ Header Files - - Header Files - Header Files @@ -149,51 +158,141 @@ Header Files - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - + Header Files + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + Header Files - + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + Header Files + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + + + Header Files\Menus headers + From 7273b4bbb9ccfad862ccc0b6ff51518b6d8c2cc9 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Sat, 12 Mar 2016 22:46:30 +0300 Subject: [PATCH 09/34] Updaaaaaaaaaate .gitignore! Argh! The description was stolen! --- .gitignore | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 511d69e..35413f2 100644 --- a/.gitignore +++ b/.gitignore @@ -42,4 +42,20 @@ *.sbr *.sdf *.suo -*.tlog \ No newline at end of file +*.tlog + +# Engine Generated Stuff +Sources/Engine/Classes/*.h +Sources/Engine/Classes/*.cpp + +# EntitiesMP Generated Stuff +Sources/EntitiesMP/*.cpp +Sources/EntitiesMP/*.h +!Sources/EntitiesMP/Common/* +!Sources/EntitiesMP/StdH/* + +# Game Generated Stuff +Data/*.bin +Data/*.gms +Players/* +Temp/ConsoleHistory.txt \ No newline at end of file From 189c3433683f4f1bab851c88ff3da54d853f2903 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Mon, 14 Mar 2016 00:52:32 +0300 Subject: [PATCH 10/34] GameExecutable: Move some stuff from Menu.cpp into files Menu.cpp is so large(>6000 lines). I'll separate it! --- Sources/SeriousSam/MConfirm.cpp | 55 ++ Sources/SeriousSam/MConfirm.h | 5 + Sources/SeriousSam/MInGame.cpp | 162 +++++ Sources/SeriousSam/MInGame.h | 16 +- Sources/SeriousSam/MMain.cpp | 116 ++++ Sources/SeriousSam/MMain.h | 12 + Sources/SeriousSam/MSinglePlayer.cpp | 144 ++++ Sources/SeriousSam/MSinglePlayer.h | 13 + Sources/SeriousSam/Menu.cpp | 624 +++--------------- Sources/SeriousSam/MenuStuff.cpp | 38 ++ Sources/SeriousSam/MenuStuff.h | 12 + Sources/SeriousSam/SeriousSam.vcxproj | 8 + Sources/SeriousSam/SeriousSam.vcxproj.filters | 18 + 13 files changed, 681 insertions(+), 542 deletions(-) create mode 100644 Sources/SeriousSam/MConfirm.cpp create mode 100644 Sources/SeriousSam/MInGame.cpp create mode 100644 Sources/SeriousSam/MMain.cpp create mode 100644 Sources/SeriousSam/MSinglePlayer.cpp create mode 100644 Sources/SeriousSam/MenuStuff.cpp create mode 100644 Sources/SeriousSam/MenuStuff.h diff --git a/Sources/SeriousSam/MConfirm.cpp b/Sources/SeriousSam/MConfirm.cpp new file mode 100644 index 0000000..4673c1f --- /dev/null +++ b/Sources/SeriousSam/MConfirm.cpp @@ -0,0 +1,55 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MConfirm.h" + +void CConfirmMenu::Initialize_t(void) +{ + gm_bPopup = TRUE; + + gm_mgConfirmLabel.mg_strText = ""; + gm_lhGadgets.AddTail(gm_mgConfirmLabel.mg_lnNode); + gm_mgConfirmLabel.mg_boxOnScreen = BoxPopupLabel(); + gm_mgConfirmLabel.mg_iCenterI = 0; + gm_mgConfirmLabel.mg_bfsFontSize = BFS_LARGE; + + gm_mgConfirmLabel.mg_strText = TRANS("YES"); + gm_lhGadgets.AddTail(gm_mgConfirmLabel.mg_lnNode); + gm_mgConfirmLabel.mg_boxOnScreen = BoxPopupYesLarge(); + gm_mgConfirmLabel.mg_pActivatedFunction = NULL; + gm_mgConfirmLabel.mg_pmgLeft = + gm_mgConfirmYes.mg_pmgRight = &gm_mgConfirmNo; + gm_mgConfirmYes.mg_iCenterI = 1; + gm_mgConfirmYes.mg_bfsFontSize = BFS_LARGE; + + gm_mgConfirmNo.mg_strText = TRANS("NO"); + gm_lhGadgets.AddTail(gm_mgConfirmNo.mg_lnNode); + gm_mgConfirmNo.mg_boxOnScreen = BoxPopupNoLarge(); + gm_mgConfirmNo.mg_pActivatedFunction = NULL; + gm_mgConfirmNo.mg_pmgLeft = + gm_mgConfirmNo.mg_pmgRight = &gm_mgConfirmYes; + gm_mgConfirmNo.mg_iCenterI = -1; + gm_mgConfirmNo.mg_bfsFontSize = BFS_LARGE; +} + +void CConfirmMenu::BeLarge(void) +{ + gm_mgConfirmLabel.mg_bfsFontSize = BFS_LARGE; + gm_mgConfirmYes.mg_bfsFontSize = BFS_LARGE; + gm_mgConfirmNo.mg_bfsFontSize = BFS_LARGE; + gm_mgConfirmLabel.mg_iCenterI = 0; + gm_mgConfirmYes.mg_boxOnScreen = BoxPopupYesLarge(); + gm_mgConfirmNo.mg_boxOnScreen = BoxPopupNoLarge(); +} + +void CConfirmMenu::BeSmall(void) +{ + gm_mgConfirmLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgConfirmYes.mg_bfsFontSize = BFS_MEDIUM; + gm_mgConfirmNo.mg_bfsFontSize = BFS_MEDIUM; + gm_mgConfirmLabel.mg_iCenterI = -1; + gm_mgConfirmYes.mg_boxOnScreen = BoxPopupYesSmall(); + gm_mgConfirmNo.mg_boxOnScreen = BoxPopupNoSmall(); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MConfirm.h b/Sources/SeriousSam/MConfirm.h index ee40979..49a9131 100644 --- a/Sources/SeriousSam/MConfirm.h +++ b/Sources/SeriousSam/MConfirm.h @@ -7,10 +7,15 @@ #endif #include "GameMenu.h" +#include "MGButton.h" class CConfirmMenu : public CGameMenu { public: + CMGButton gm_mgConfirmLabel; + CMGButton gm_mgConfirmYes; + CMGButton gm_mgConfirmNo; + void Initialize_t(void); // return TRUE if handled BOOL OnKeyDown(int iVKey); diff --git a/Sources/SeriousSam/MInGame.cpp b/Sources/SeriousSam/MInGame.cpp new file mode 100644 index 0000000..8368d19 --- /dev/null +++ b/Sources/SeriousSam/MInGame.cpp @@ -0,0 +1,162 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MInGame.h" + + +void CInGameMenu::Initialize_t(void) +{ + // intialize main menu + gm_mgTitle.mg_strText = TRANS("GAME"); + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + + gm_mgLabel1.mg_strText = ""; + gm_mgLabel1.mg_boxOnScreen = BoxMediumRow(-2.0); + gm_mgLabel1.mg_bfsFontSize = BFS_MEDIUM; + gm_mgLabel1.mg_iCenterI = -1; + gm_mgLabel1.mg_bEnabled = FALSE; + gm_mgLabel1.mg_bLabel = TRUE; + gm_lhGadgets.AddTail(gm_mgLabel1.mg_lnNode); + + gm_mgLabel2.mg_strText = ""; + gm_mgLabel2.mg_boxOnScreen = BoxMediumRow(-1.0); + gm_mgLabel2.mg_bfsFontSize = BFS_MEDIUM; + gm_mgLabel2.mg_iCenterI = -1; + gm_mgLabel2.mg_bEnabled = FALSE; + gm_mgLabel2.mg_bLabel = TRUE; + gm_lhGadgets.AddTail(gm_mgLabel2.mg_lnNode); + + gm_mgQuickLoad.mg_strText = TRANS("QUICK LOAD"); + gm_mgQuickLoad.mg_bfsFontSize = BFS_LARGE; + gm_mgQuickLoad.mg_boxOnScreen = BoxBigRow(0.0f); + gm_mgQuickLoad.mg_strTip = TRANS("load a quick-saved game (F9)"); + gm_lhGadgets.AddTail(gm_mgQuickLoad.mg_lnNode); + gm_mgQuickLoad.mg_pmgUp = &gm_mgQuit; + gm_mgQuickLoad.mg_pmgDown = &gm_mgQuickSave; + gm_mgQuickLoad.mg_pActivatedFunction = NULL; + + gm_mgQuickSave.mg_strText = TRANS("QUICK SAVE"); + gm_mgQuickSave.mg_bfsFontSize = BFS_LARGE; + gm_mgQuickSave.mg_boxOnScreen = BoxBigRow(1.0f); + gm_mgQuickSave.mg_strTip = TRANS("quick-save current game (F6)"); + gm_lhGadgets.AddTail(gm_mgQuickSave.mg_lnNode); + gm_mgQuickSave.mg_pmgUp = &gm_mgQuickLoad; + gm_mgQuickSave.mg_pmgDown = &gm_mgLoad; + gm_mgQuickSave.mg_pActivatedFunction = NULL; + + gm_mgLoad.mg_strText = TRANS("LOAD"); + gm_mgLoad.mg_bfsFontSize = BFS_LARGE; + gm_mgLoad.mg_boxOnScreen = BoxBigRow(2.0f); + gm_mgLoad.mg_strTip = TRANS("load a saved game"); + gm_lhGadgets.AddTail(gm_mgLoad.mg_lnNode); + gm_mgLoad.mg_pmgUp = &gm_mgQuickSave; + gm_mgLoad.mg_pmgDown = &gm_mgSave; + gm_mgLoad.mg_pActivatedFunction = NULL; + + gm_mgSave.mg_strText = TRANS("SAVE"); + gm_mgSave.mg_bfsFontSize = BFS_LARGE; + gm_mgSave.mg_boxOnScreen = BoxBigRow(3.0f); + gm_mgSave.mg_strTip = TRANS("save current game (each player has own slots!)"); + gm_lhGadgets.AddTail(gm_mgSave.mg_lnNode); + gm_mgSave.mg_pmgUp = &gm_mgLoad; + gm_mgSave.mg_pmgDown = &gm_mgDemoRec; + gm_mgSave.mg_pActivatedFunction = NULL; + + gm_mgDemoRec.mg_boxOnScreen = BoxBigRow(4.0f); + gm_mgDemoRec.mg_bfsFontSize = BFS_LARGE; + gm_mgDemoRec.mg_pmgUp = &gm_mgSave; + gm_mgDemoRec.mg_pmgDown = &gm_mgHighScore; + gm_mgDemoRec.mg_strText = "Text not set"; + gm_lhGadgets.AddTail(gm_mgDemoRec.mg_lnNode); + gm_mgDemoRec.mg_pActivatedFunction = NULL; + + gm_mgHighScore.mg_strText = TRANS("HIGH SCORES"); + gm_mgHighScore.mg_bfsFontSize = BFS_LARGE; + gm_mgHighScore.mg_boxOnScreen = BoxBigRow(5.0f); + gm_mgHighScore.mg_strTip = TRANS("view list of top ten best scores"); + gm_lhGadgets.AddTail(gm_mgHighScore.mg_lnNode); + gm_mgHighScore.mg_pmgUp = &gm_mgDemoRec; + gm_mgHighScore.mg_pmgDown = &gm_mgOptions; + gm_mgHighScore.mg_pActivatedFunction = NULL; + + gm_mgOptions.mg_strText = TRANS("OPTIONS"); + gm_mgOptions.mg_bfsFontSize = BFS_LARGE; + gm_mgOptions.mg_boxOnScreen = BoxBigRow(6.0f); + gm_mgOptions.mg_strTip = TRANS("adjust video, audio and input options"); + gm_lhGadgets.AddTail(gm_mgOptions.mg_lnNode); + gm_mgOptions.mg_pmgUp = &gm_mgHighScore; + gm_mgOptions.mg_pmgDown = &gm_mgStop; + gm_mgOptions.mg_pActivatedFunction = NULL; + + gm_mgStop.mg_strText = TRANS("STOP GAME"); + gm_mgStop.mg_bfsFontSize = BFS_LARGE; + gm_mgStop.mg_boxOnScreen = BoxBigRow(7.0f); + gm_mgStop.mg_strTip = TRANS("stop currently running game"); + gm_lhGadgets.AddTail(gm_mgStop.mg_lnNode); + gm_mgStop.mg_pmgUp = &gm_mgOptions; + gm_mgStop.mg_pmgDown = &gm_mgQuit; + gm_mgStop.mg_pActivatedFunction = NULL; + + gm_mgQuit.mg_strText = TRANS("QUIT"); + gm_mgQuit.mg_bfsFontSize = BFS_LARGE; + gm_mgQuit.mg_boxOnScreen = BoxBigRow(8.0f); + gm_mgQuit.mg_strTip = TRANS("exit game immediately"); + gm_lhGadgets.AddTail(gm_mgQuit.mg_lnNode); + gm_mgQuit.mg_pmgUp = &gm_mgStop; + gm_mgQuit.mg_pmgDown = &gm_mgQuickLoad; + gm_mgQuit.mg_pActivatedFunction = NULL; +} + +void CInGameMenu::StartMenu(void) +{ + gm_mgQuickLoad.mg_bEnabled = _pNetwork->IsServer(); + gm_mgQuickSave.mg_bEnabled = _pNetwork->IsServer(); + gm_mgLoad.mg_bEnabled = _pNetwork->IsServer(); + gm_mgSave.mg_bEnabled = _pNetwork->IsServer(); + gm_mgDemoRec.mg_bEnabled = TRUE;//_pNetwork->IsServer(); + extern void SetDemoStartStopRecText(); + SetDemoStartStopRecText(); + + + if (_gmRunningGameMode == GM_SINGLE_PLAYER) { + CPlayerCharacter &pc = _pGame->gm_apcPlayers[_pGame->gm_iSinglePlayer]; + gm_mgLabel1.mg_strText.PrintF(TRANS("Player: %s"), pc.GetNameForPrinting()); + gm_mgLabel2.mg_strText = ""; + + } + else { + if (_pNetwork->IsServer()) { + + CTString strHost, strAddress; + CTString strHostName; + _pNetwork->GetHostName(strHost, strAddress); + if (strHost == "") { + strHostName = TRANS(""); + } + else { + strHostName = strHost + " (" + strAddress + ")"; + } + + gm_mgLabel1.mg_strText = TRANS("Address: ") + strHostName; + gm_mgLabel2.mg_strText = ""; + } + else { + + CTString strConfig; + strConfig = TRANS(""); + extern CTString sam_strNetworkSettings; + if (sam_strNetworkSettings != "") { + LoadStringVar(CTFileName(sam_strNetworkSettings).NoExt() + ".des", strConfig); + strConfig.OnlyFirstLine(); + } + + gm_mgLabel1.mg_strText = TRANS("Connected to: ") + _pGame->gam_strJoinAddress; + gm_mgLabel2.mg_strText = TRANS("Connection: ") + strConfig; + } + } + + CGameMenu::StartMenu(); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MInGame.h b/Sources/SeriousSam/MInGame.h index 53e7e03..b873183 100644 --- a/Sources/SeriousSam/MInGame.h +++ b/Sources/SeriousSam/MInGame.h @@ -7,10 +7,24 @@ #endif #include "GameMenu.h" - +#include "MGButton.h" +#include "MGTitle.h" class CInGameMenu : public CGameMenu { public: + CMGTitle gm_mgTitle; + CMGButton gm_mgLabel1; + CMGButton gm_mgLabel2; + CMGButton gm_mgQuickLoad; + CMGButton gm_mgQuickSave; + CMGButton gm_mgLoad; + CMGButton gm_mgSave; + CMGButton gm_mgDemoRec; + CMGButton gm_mgHighScore; + CMGButton gm_mgOptions; + CMGButton gm_mgStop; + CMGButton gm_mgQuit; + void Initialize_t(void); void StartMenu(void); }; diff --git a/Sources/SeriousSam/MMain.cpp b/Sources/SeriousSam/MMain.cpp new file mode 100644 index 0000000..b7d9e08 --- /dev/null +++ b/Sources/SeriousSam/MMain.cpp @@ -0,0 +1,116 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MenuStuff.h" +#include "MMain.h" + + +void CMainMenu::Initialize_t(void) +{ + // intialize main menu + /* + gm_mgTitle.mg_strText = "SERIOUS SAM - BETA"; // nothing to see here, kazuya + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_lhGadgets.AddTail( gm_mgTitle.mg_lnNode); + */ + + extern CTString sam_strVersion; + gm_mgVersionLabel.mg_strText = sam_strVersion; + gm_mgVersionLabel.mg_boxOnScreen = BoxVersion(); + gm_mgVersionLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgVersionLabel.mg_iCenterI = +1; + gm_mgVersionLabel.mg_bEnabled = FALSE; + gm_mgVersionLabel.mg_bLabel = TRUE; + gm_lhGadgets.AddTail(gm_mgVersionLabel.mg_lnNode); + + extern CTString sam_strModName; + gm_mgModLabel.mg_strText = sam_strModName; + gm_mgModLabel.mg_boxOnScreen = BoxMediumRow(-2.0f); + gm_mgModLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgModLabel.mg_iCenterI = 0; + gm_mgModLabel.mg_bEnabled = FALSE; + gm_mgModLabel.mg_bLabel = TRUE; + gm_lhGadgets.AddTail(gm_mgModLabel.mg_lnNode); + + gm_mgSingle.mg_strText = TRANS("SINGLE PLAYER"); + gm_mgSingle.mg_bfsFontSize = BFS_LARGE; + gm_mgSingle.mg_boxOnScreen = BoxBigRow(0.0f); + gm_mgSingle.mg_strTip = TRANS("single player game menus"); + gm_lhGadgets.AddTail(gm_mgSingle.mg_lnNode); + gm_mgSingle.mg_pmgUp = &gm_mgQuit; + gm_mgSingle.mg_pmgDown = &gm_mgNetwork; + gm_mgSingle.mg_pActivatedFunction = NULL; + + gm_mgNetwork.mg_strText = TRANS("NETWORK"); + gm_mgNetwork.mg_bfsFontSize = BFS_LARGE; + gm_mgNetwork.mg_boxOnScreen = BoxBigRow(1.0f); + gm_mgNetwork.mg_strTip = TRANS("LAN/iNet multiplayer menus"); + gm_lhGadgets.AddTail(gm_mgNetwork.mg_lnNode); + gm_mgNetwork.mg_pmgUp = &gm_mgSingle; + gm_mgNetwork.mg_pmgDown = &gm_mgSplitScreen; + gm_mgNetwork.mg_pActivatedFunction = NULL; + + gm_mgSplitScreen.mg_strText = TRANS("SPLIT SCREEN"); + gm_mgSplitScreen.mg_bfsFontSize = BFS_LARGE; + gm_mgSplitScreen.mg_boxOnScreen = BoxBigRow(2.0f); + gm_mgSplitScreen.mg_strTip = TRANS("play with multiple players on one computer"); + gm_lhGadgets.AddTail(gm_mgSplitScreen.mg_lnNode); + gm_mgSplitScreen.mg_pmgUp = &gm_mgNetwork; + gm_mgSplitScreen.mg_pmgDown = &gm_mgDemo; + gm_mgSplitScreen.mg_pActivatedFunction = NULL; + + gm_mgDemo.mg_strText = TRANS("DEMO"); + gm_mgDemo.mg_bfsFontSize = BFS_LARGE; + gm_mgDemo.mg_boxOnScreen = BoxBigRow(3.0f); + gm_mgDemo.mg_strTip = TRANS("play a game demo"); + gm_lhGadgets.AddTail(gm_mgDemo.mg_lnNode); + gm_mgDemo.mg_pmgUp = &gm_mgSplitScreen; + gm_mgDemo.mg_pmgDown = &gm_mgMods; + gm_mgDemo.mg_pActivatedFunction = NULL; + + gm_mgMods.mg_strText = TRANS("MODS"); + gm_mgMods.mg_bfsFontSize = BFS_LARGE; + gm_mgMods.mg_boxOnScreen = BoxBigRow(4.0f); + gm_mgMods.mg_strTip = TRANS("run one of installed game modifications"); + gm_lhGadgets.AddTail(gm_mgMods.mg_lnNode); + gm_mgMods.mg_pmgUp = &gm_mgDemo; + gm_mgMods.mg_pmgDown = &gm_mgHighScore; + gm_mgMods.mg_pActivatedFunction = NULL; + + gm_mgHighScore.mg_strText = TRANS("HIGH SCORES"); + gm_mgHighScore.mg_bfsFontSize = BFS_LARGE; + gm_mgHighScore.mg_boxOnScreen = BoxBigRow(5.0f); + gm_mgHighScore.mg_strTip = TRANS("view list of top ten best scores"); + gm_lhGadgets.AddTail(gm_mgHighScore.mg_lnNode); + gm_mgHighScore.mg_pmgUp = &gm_mgMods; + gm_mgHighScore.mg_pmgDown = &gm_mgOptions; + gm_mgHighScore.mg_pActivatedFunction = NULL; + + gm_mgOptions.mg_strText = TRANS("OPTIONS"); + gm_mgOptions.mg_bfsFontSize = BFS_LARGE; + gm_mgOptions.mg_boxOnScreen = BoxBigRow(6.0f); + gm_mgOptions.mg_strTip = TRANS("adjust video, audio and input options"); + gm_lhGadgets.AddTail(gm_mgOptions.mg_lnNode); + gm_mgOptions.mg_pmgUp = &gm_mgHighScore; + gm_mgOptions.mg_pmgDown = &gm_mgQuit; + gm_mgOptions.mg_pActivatedFunction = NULL; + + gm_mgQuit.mg_strText = TRANS("QUIT"); + gm_mgQuit.mg_bfsFontSize = BFS_LARGE; + gm_mgQuit.mg_boxOnScreen = BoxBigRow(7.0f); + gm_mgQuit.mg_strTip = TRANS("exit game immediately"); + gm_lhGadgets.AddTail(gm_mgQuit.mg_lnNode); + gm_mgQuit.mg_pmgUp = &gm_mgOptions; + gm_mgQuit.mg_pmgDown = &gm_mgSingle; + gm_mgQuit.mg_pActivatedFunction = NULL; +} +void CMainMenu::StartMenu(void) +{ + gm_mgSingle.mg_bEnabled = IsMenuEnabled("Single Player"); + gm_mgNetwork.mg_bEnabled = IsMenuEnabled("Network"); + gm_mgSplitScreen.mg_bEnabled = IsMenuEnabled("Split Screen"); + gm_mgHighScore.mg_bEnabled = IsMenuEnabled("High Score"); + CGameMenu::StartMenu(); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MMain.h b/Sources/SeriousSam/MMain.h index 30a9d91..6ff5c55 100644 --- a/Sources/SeriousSam/MMain.h +++ b/Sources/SeriousSam/MMain.h @@ -7,10 +7,22 @@ #endif #include "GameMenu.h" +#include "MGButton.h" class CMainMenu : public CGameMenu { public: + CMGButton gm_mgVersionLabel; + CMGButton gm_mgModLabel; + CMGButton gm_mgSingle; + CMGButton gm_mgNetwork; + CMGButton gm_mgSplitScreen; + CMGButton gm_mgDemo; + CMGButton gm_mgMods; + CMGButton gm_mgHighScore; + CMGButton gm_mgOptions; + CMGButton gm_mgQuit; + void Initialize_t(void); void StartMenu(void); }; diff --git a/Sources/SeriousSam/MSinglePlayer.cpp b/Sources/SeriousSam/MSinglePlayer.cpp new file mode 100644 index 0000000..3edfba9 --- /dev/null +++ b/Sources/SeriousSam/MSinglePlayer.cpp @@ -0,0 +1,144 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MenuStuff.h" +#include "MSinglePlayer.h" + + +void CSinglePlayerMenu::Initialize_t(void) +{ + // intialize single player menu + gm_mgTitle.mg_strText = TRANS("SINGLE PLAYER"); + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + + gm_mgPlayerLabel.mg_boxOnScreen = BoxBigRow(-1.0f); + gm_mgPlayerLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgPlayerLabel.mg_iCenterI = -1; + gm_mgPlayerLabel.mg_bEnabled = FALSE; + gm_mgPlayerLabel.mg_bLabel = TRUE; + gm_lhGadgets.AddTail(gm_mgPlayerLabel.mg_lnNode); + + gm_mgNewGame.mg_strText = TRANS("NEW GAME"); + gm_mgNewGame.mg_bfsFontSize = BFS_LARGE; + gm_mgNewGame.mg_boxOnScreen = BoxBigRow(0.0f); + gm_mgNewGame.mg_strTip = TRANS("start new game with current player"); + gm_lhGadgets.AddTail(gm_mgNewGame.mg_lnNode); + gm_mgNewGame.mg_pmgUp = &gm_mgOptions; + gm_mgNewGame.mg_pmgDown = &gm_mgCustom; + gm_mgNewGame.mg_pActivatedFunction = NULL; + + gm_mgCustom.mg_strText = TRANS("CUSTOM LEVEL"); + gm_mgCustom.mg_bfsFontSize = BFS_LARGE; + gm_mgCustom.mg_boxOnScreen = BoxBigRow(1.0f); + gm_mgCustom.mg_strTip = TRANS("start new game on a custom level"); + gm_lhGadgets.AddTail(gm_mgCustom.mg_lnNode); + gm_mgCustom.mg_pmgUp = &gm_mgNewGame; + gm_mgCustom.mg_pmgDown = &gm_mgQuickLoad; + gm_mgCustom.mg_pActivatedFunction = NULL; + + gm_mgQuickLoad.mg_strText = TRANS("QUICK LOAD"); + gm_mgQuickLoad.mg_bfsFontSize = BFS_LARGE; + gm_mgQuickLoad.mg_boxOnScreen = BoxBigRow(2.0f); + gm_mgQuickLoad.mg_strTip = TRANS("load a quick-saved game (F9)"); + gm_lhGadgets.AddTail(gm_mgQuickLoad.mg_lnNode); + gm_mgQuickLoad.mg_pmgUp = &gm_mgCustom; + gm_mgQuickLoad.mg_pmgDown = &gm_mgLoad; + gm_mgQuickLoad.mg_pActivatedFunction = NULL; + + gm_mgLoad.mg_strText = TRANS("LOAD"); + gm_mgLoad.mg_bfsFontSize = BFS_LARGE; + gm_mgLoad.mg_boxOnScreen = BoxBigRow(3.0f); + gm_mgLoad.mg_strTip = TRANS("load a saved game of current player"); + gm_lhGadgets.AddTail(gm_mgLoad.mg_lnNode); + gm_mgLoad.mg_pmgUp = &gm_mgQuickLoad; + gm_mgLoad.mg_pmgDown = &gm_mgTraining; + gm_mgLoad.mg_pActivatedFunction = NULL; + + gm_mgTraining.mg_strText = TRANS("TRAINING"); + gm_mgTraining.mg_bfsFontSize = BFS_LARGE; + gm_mgTraining.mg_boxOnScreen = BoxBigRow(4.0f); + gm_mgTraining.mg_strTip = TRANS("start training level - KarnakDemo"); + gm_lhGadgets.AddTail(gm_mgTraining.mg_lnNode); + gm_mgTraining.mg_pmgUp = &gm_mgLoad; + gm_mgTraining.mg_pmgDown = &gm_mgTechTest; + gm_mgTraining.mg_pActivatedFunction = NULL; + + gm_mgTechTest.mg_strText = TRANS("TECHNOLOGY TEST"); + gm_mgTechTest.mg_bfsFontSize = BFS_LARGE; + gm_mgTechTest.mg_boxOnScreen = BoxBigRow(5.0f); + gm_mgTechTest.mg_strTip = TRANS("start technology testing level"); + gm_lhGadgets.AddTail(gm_mgTechTest.mg_lnNode); + gm_mgTechTest.mg_pmgUp = &gm_mgTraining; + gm_mgTechTest.mg_pmgDown = &gm_mgPlayersAndControls; + gm_mgTechTest.mg_pActivatedFunction = NULL; + + gm_mgPlayersAndControls.mg_bfsFontSize = BFS_LARGE; + gm_mgPlayersAndControls.mg_boxOnScreen = BoxBigRow(6.0f); + gm_mgPlayersAndControls.mg_pmgUp = &gm_mgTechTest; + gm_mgPlayersAndControls.mg_pmgDown = &gm_mgOptions; + gm_mgPlayersAndControls.mg_strText = TRANS("PLAYERS AND CONTROLS"); + gm_mgPlayersAndControls.mg_strTip = TRANS("change currently active player or adjust controls"); + gm_lhGadgets.AddTail(gm_mgPlayersAndControls.mg_lnNode); + gm_mgPlayersAndControls.mg_pActivatedFunction = NULL; + + gm_mgOptions.mg_strText = TRANS("GAME OPTIONS"); + gm_mgOptions.mg_bfsFontSize = BFS_LARGE; + gm_mgOptions.mg_boxOnScreen = BoxBigRow(7.0f); + gm_mgOptions.mg_strTip = TRANS("adjust miscellaneous game options"); + gm_lhGadgets.AddTail(gm_mgOptions.mg_lnNode); + gm_mgOptions.mg_pmgUp = &gm_mgPlayersAndControls; + gm_mgOptions.mg_pmgDown = &gm_mgNewGame; + gm_mgOptions.mg_pActivatedFunction = NULL; +} + +void CSinglePlayerMenu::StartMenu(void) +{ + gm_mgTraining.mg_bEnabled = IsMenuEnabled("Training"); + gm_mgTechTest.mg_bEnabled = IsMenuEnabled("Technology Test"); + + if (gm_mgTraining.mg_bEnabled) { + if (!gm_mgTraining.mg_lnNode.IsLinked()) { + gm_lhGadgets.AddTail(gm_mgTraining.mg_lnNode); + } + + gm_mgLoad.mg_boxOnScreen = BoxBigRow(3.0f); + gm_mgLoad.mg_pmgUp = &gm_mgQuickLoad; + gm_mgLoad.mg_pmgDown = &gm_mgTraining; + + gm_mgTraining.mg_boxOnScreen = BoxBigRow(4.0f); + gm_mgTraining.mg_pmgUp = &gm_mgLoad; + gm_mgTraining.mg_pmgDown = &gm_mgTechTest; + + gm_mgTechTest.mg_boxOnScreen = BoxBigRow(5.0f); + gm_mgTechTest.mg_pmgUp = &gm_mgTraining; + gm_mgTechTest.mg_pmgDown = &gm_mgPlayersAndControls; + + gm_mgPlayersAndControls.mg_boxOnScreen = BoxBigRow(6.0f); + gm_mgOptions.mg_boxOnScreen = BoxBigRow(7.0f); + + } + else { + if (gm_mgTraining.mg_lnNode.IsLinked()) { + gm_mgTraining.mg_lnNode.Remove(); + } + + gm_mgLoad.mg_boxOnScreen = BoxBigRow(3.0f); + gm_mgLoad.mg_pmgUp = &gm_mgQuickLoad; + gm_mgLoad.mg_pmgDown = &gm_mgTechTest; + + gm_mgTechTest.mg_boxOnScreen = BoxBigRow(4.0f); + gm_mgTechTest.mg_pmgUp = &gm_mgLoad; + gm_mgTechTest.mg_pmgDown = &gm_mgPlayersAndControls; + + gm_mgPlayersAndControls.mg_boxOnScreen = BoxBigRow(5.0f); + gm_mgOptions.mg_boxOnScreen = BoxBigRow(6.0f); + } + + CGameMenu::StartMenu(); + + CPlayerCharacter &pc = _pGame->gm_apcPlayers[_pGame->gm_iSinglePlayer]; + gm_mgPlayerLabel.mg_strText.PrintF(TRANS("Player: %s\n"), pc.GetNameForPrinting()); +} diff --git a/Sources/SeriousSam/MSinglePlayer.h b/Sources/SeriousSam/MSinglePlayer.h index 5443f6e..f08d07b 100644 --- a/Sources/SeriousSam/MSinglePlayer.h +++ b/Sources/SeriousSam/MSinglePlayer.h @@ -7,10 +7,23 @@ #endif #include "GameMenu.h" +#include "MGButton.h" +#include "MGTitle.h" class CSinglePlayerMenu : public CGameMenu { public: + CMGTitle gm_mgTitle; + CMGButton gm_mgPlayerLabel; + CMGButton gm_mgNewGame; + CMGButton gm_mgCustom; + CMGButton gm_mgQuickLoad; + CMGButton gm_mgLoad; + CMGButton gm_mgTraining; + CMGButton gm_mgTechTest; + CMGButton gm_mgPlayersAndControls; + CMGButton gm_mgOptions; + void Initialize_t(void); void StartMenu(void); }; diff --git a/Sources/SeriousSam/Menu.cpp b/Sources/SeriousSam/Menu.cpp index 73f1f7c..bc43de1 100644 --- a/Sources/SeriousSam/Menu.cpp +++ b/Sources/SeriousSam/Menu.cpp @@ -54,6 +54,8 @@ #include "MVar.h" #include "MVideoOptions.h" +#include "MenuStuff.h" + // macros for translating radio button text arrays #define RADIOTRANS(str) ("ETRS" str) #define TRANSLATERADIOARRAY(array) TranslateRadioTexts(array, ARRAYCOUNT(array)) @@ -87,40 +89,6 @@ extern BOOL IsCDInDrive(void); void OnPlayerSelect(void); - - -ULONG SpawnFlagsForGameType(INDEX iGameType) -{ - if (iGameType==-1) return SPF_SINGLEPLAYER; - - // get function that will provide us the flags - CShellSymbol *pss = _pShell->GetSymbol("GetSpawnFlagsForGameTypeSS", /*bDeclaredOnly=*/ TRUE); - // if none - if (pss==NULL) { - // error - ASSERT(FALSE); - return 0; - } - - ULONG (*pFunc)(INDEX) = (ULONG (*)(INDEX))pss->ss_pvValue; - return pFunc(iGameType); -} - -BOOL IsMenuEnabled(const CTString &strMenuName) -{ - // get function that will provide us the flags - CShellSymbol *pss = _pShell->GetSymbol("IsMenuEnabledSS", /*bDeclaredOnly=*/ TRUE); - // if none - if (pss==NULL) { - // error - ASSERT(FALSE); - return TRUE; - } - - BOOL (*pFunc)(const CTString &) = (BOOL (*)(const CTString &))pss->ss_pvValue; - return pFunc(strMenuName); -} - // last tick done TIME _tmMenuLastTickDone = -1; // all possible menu entities @@ -134,6 +102,12 @@ extern CTString sam_strNetworkSettings; // function to activate when level is chosen void (*_pAfterLevelChosen)(void); +// functions for init actions +void InitActionsForConfirmMenu(); +void InitActionsForMainMenu(); +void InitActionsForInGameMenu(); +void InitActionsForSinglePlayerMenu(); + // functions to activate when user chose 'yes/no' on confirmation void (*_pConfimedYes)(void) = NULL; void (*_pConfimedNo)(void) = NULL; @@ -310,51 +284,15 @@ CMGButton mgBack; // -------- Confirm menu CConfirmMenu gmConfirmMenu; -CMGButton mgConfirmLabel; -CMGButton mgConfirmYes; -CMGButton mgConfirmNo; // -------- Main menu CMainMenu gmMainMenu; -//CMGTitle mgMainTitle; -CMGButton mgMainVersionLabel; -CMGButton mgMainModLabel; -CMGButton mgMainSingle; -CMGButton mgMainNetwork; -CMGButton mgMainSplitScreen; -CMGButton mgMainDemo; -CMGButton mgMainMods; -CMGButton mgMainHighScore; -CMGButton mgMainOptions; -CMGButton mgMainQuit; // -------- InGame menu CInGameMenu gmInGameMenu; -CMGTitle mgInGameTitle; -CMGButton mgInGameLabel1; -CMGButton mgInGameLabel2; -CMGButton mgInGameQuickLoad; -CMGButton mgInGameQuickSave; -CMGButton mgInGameLoad; -CMGButton mgInGameSave; -CMGButton mgInGameDemoRec; -CMGButton mgInGameHighScore; -CMGButton mgInGameOptions; -CMGButton mgInGameStop; -CMGButton mgInGameQuit; // -------- Single player menu CSinglePlayerMenu gmSinglePlayerMenu; -CMGTitle mgSingleTitle; -CMGButton mgSinglePlayerLabel; -CMGButton mgSingleNewGame; -CMGButton mgSingleCustom; -CMGButton mgSingleQuickLoad; -CMGButton mgSingleLoad; -CMGButton mgSingleTraining; -CMGButton mgSingleTechTest; -CMGButton mgSinglePlayersAndControls; -CMGButton mgSingleOptions; // -------- New single player menu CSinglePlayerNewMenu gmSinglePlayerNewMenu; @@ -426,10 +364,12 @@ CMGButton mgLoadSaveNotes; CMGFileButton amgLSButton[SAVELOAD_BUTTONS_CT]; CMGArrow mgLSArrowUp; CMGArrow mgLSArrowDn; + // -------- High-score menu CHighScoreMenu gmHighScoreMenu; CMGTitle mgHighScoreTitle; CMGHighScore mgHScore; + // -------- Customize keyboard menu CCustomizeKeyboardMenu gmCustomizeKeyboardMenu; CMGTitle mgCustomizeKeyboardTitle; @@ -873,7 +813,7 @@ void ExitConfirm(void) { _pConfimedYes = &ExitGame; _pConfimedNo = NULL; - mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); + gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; gmConfirmMenu.BeLarge(); ChangeToMenu( &gmConfirmMenu); @@ -884,7 +824,7 @@ void StopConfirm(void) extern void StopCurrentGame(void); _pConfimedYes = &StopCurrentGame; _pConfimedNo = NULL; - mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); + gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; gmConfirmMenu.BeLarge(); ChangeToMenu( &gmConfirmMenu); @@ -916,7 +856,7 @@ void ModConnectConfirm(void) CPrintF(TRANS("Server is running a different MOD (%s).\nYou need to reload to connect.\n"), _fnmModSelected); _pConfimedYes = &ModConnect; _pConfimedNo = NULL; - mgConfirmLabel.mg_strText = TRANS("CHANGE THE MOD?"); + gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("CHANGE THE MOD?"); gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; gmConfirmMenu.BeLarge(); ChangeToMenu( &gmConfirmMenu); @@ -927,7 +867,7 @@ void SaveConfirm(void) extern void OnFileSaveOK(void); _pConfimedYes = &OnFileSaveOK; _pConfimedNo = NULL; - mgConfirmLabel.mg_strText = TRANS("OVERWRITE?"); + gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("OVERWRITE?"); gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; gmConfirmMenu.BeLarge(); ChangeToMenu( &gmConfirmMenu); @@ -944,7 +884,7 @@ void ModConfirm(void) { _pConfimedYes = &ModLoadYes; _pConfimedNo = NULL; - mgConfirmLabel.mg_strText = TRANS("LOAD THIS MOD?"); + gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("LOAD THIS MOD?"); gmConfirmMenu.gm_pgmParentMenu = &gmLoadSaveMenu; gmConfirmMenu.BeLarge(); ChangeToMenu( &gmConfirmMenu); @@ -961,7 +901,7 @@ void VideoConfirm(void) void RevertVideoSettings(void); _pConfimedNo = RevertVideoSettings; - mgConfirmLabel.mg_strText = TRANS("KEEP THIS SETTING?"); + gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("KEEP THIS SETTING?"); gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; gmConfirmMenu.BeLarge(); ChangeToMenu( &gmConfirmMenu); @@ -971,7 +911,7 @@ void CDConfirm(void (*pOk)(void)) { _pConfimedYes = pOk; _pConfimedNo = NULL; - mgConfirmLabel.mg_strText = TRANS("PLEASE INSERT GAME CD?"); + gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("PLEASE INSERT GAME CD?"); if (pgmCurrentMenu!=&gmConfirmMenu) { gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; gmConfirmMenu.BeLarge(); @@ -1119,7 +1059,7 @@ void ModNotInstalled(void) { _pConfimedYes = &ExitAndSpawnExplorer; _pConfimedNo = NULL; - mgConfirmLabel.mg_strText.PrintF( + gmConfirmMenu.gm_mgConfirmLabel.mg_strText.PrintF( TRANS("You don't have MOD '%s' installed.\nDo you want to visit its web site?"), (const char*)_fnmModSelected); gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; gmConfirmMenu.BeSmall(); @@ -1154,7 +1094,7 @@ void StartDemoPlay(void) void StartSelectLevelFromSingle(void) { - FilterLevels(SpawnFlagsForGameType(-1)); + FilterLevels(GetSpawnFlagsForGameType(-1)); _pAfterLevelChosen = StartSinglePlayerNewMenuCustom; ChangeToMenu( &gmLevelsMenu); gmLevelsMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; @@ -1358,7 +1298,7 @@ void StartSelectServerNET(void) void StartSelectLevelFromSplit(void) { - FilterLevels(SpawnFlagsForGameType(mgSplitGameType.mg_iSelected)); + FilterLevels(GetSpawnFlagsForGameType(mgSplitGameType.mg_iSelected)); void StartSplitStartMenu(void); _pAfterLevelChosen = StartSplitStartMenu; ChangeToMenu( &gmLevelsMenu); @@ -1366,7 +1306,7 @@ void StartSelectLevelFromSplit(void) } void StartSelectLevelFromNetwork(void) { - FilterLevels(SpawnFlagsForGameType(mgNetworkGameType.mg_iSelected)); + FilterLevels(GetSpawnFlagsForGameType(mgNetworkGameType.mg_iSelected)); void StartNetworkStartMenu(void); _pAfterLevelChosen = StartNetworkStartMenu; ChangeToMenu( &gmLevelsMenu); @@ -2246,23 +2186,27 @@ void InitializeMenus(void) // ------------------- Initialize menus gmConfirmMenu.Initialize_t(); gmConfirmMenu.gm_strName="Confirm"; - gmConfirmMenu.gm_pmgSelectedByDefault = &mgConfirmYes; + gmConfirmMenu.gm_pmgSelectedByDefault = &gmConfirmMenu.gm_mgConfirmYes; gmConfirmMenu.gm_pgmParentMenu = NULL; + InitActionsForConfirmMenu(); gmMainMenu.Initialize_t(); gmMainMenu.gm_strName="Main"; - gmMainMenu.gm_pmgSelectedByDefault = &mgMainSingle; + gmMainMenu.gm_pmgSelectedByDefault = &gmMainMenu.gm_mgSingle; gmMainMenu.gm_pgmParentMenu = NULL; + InitActionsForMainMenu(); gmInGameMenu.Initialize_t(); gmInGameMenu.gm_strName="InGame"; - gmInGameMenu.gm_pmgSelectedByDefault = &mgInGameQuickLoad; + gmInGameMenu.gm_pmgSelectedByDefault = &gmInGameMenu.gm_mgQuickLoad; gmInGameMenu.gm_pgmParentMenu = NULL; + InitActionsForInGameMenu(); gmSinglePlayerMenu.Initialize_t(); gmSinglePlayerMenu.gm_strName="SinglePlayer"; - gmSinglePlayerMenu.gm_pmgSelectedByDefault = &mgSingleNewGame; + gmSinglePlayerMenu.gm_pmgSelectedByDefault = &gmSinglePlayerMenu.gm_mgNewGame; gmSinglePlayerMenu.gm_pgmParentMenu = &gmMainMenu; + InitActionsForSinglePlayerMenu(); gmSinglePlayerNewMenu.Initialize_t(); gmSinglePlayerNewMenu.gm_strName="SinglePlayerNew"; @@ -3233,53 +3177,9 @@ BOOL CGameMenu::OnChar(MSG msg) } // ------------------------ CConfirmMenu implementation -void CConfirmMenu::Initialize_t(void) -{ - gm_bPopup = TRUE; - - mgConfirmLabel.mg_strText = ""; - gm_lhGadgets.AddTail(mgConfirmLabel.mg_lnNode); - mgConfirmLabel.mg_boxOnScreen = BoxPopupLabel(); - mgConfirmLabel.mg_iCenterI = 0; - mgConfirmLabel.mg_bfsFontSize = BFS_LARGE; - - mgConfirmYes.mg_strText = TRANS("YES"); - gm_lhGadgets.AddTail(mgConfirmYes.mg_lnNode); - mgConfirmYes.mg_boxOnScreen = BoxPopupYesLarge(); - mgConfirmYes.mg_pActivatedFunction = &ConfirmYes; - mgConfirmYes.mg_pmgLeft = - mgConfirmYes.mg_pmgRight = &mgConfirmNo; - mgConfirmYes.mg_iCenterI = 1; - mgConfirmYes.mg_bfsFontSize = BFS_LARGE; - - mgConfirmNo.mg_strText = TRANS("NO"); - gm_lhGadgets.AddTail(mgConfirmNo.mg_lnNode); - mgConfirmNo.mg_boxOnScreen = BoxPopupNoLarge(); - mgConfirmNo.mg_pActivatedFunction = &ConfirmNo; - mgConfirmNo.mg_pmgLeft = - mgConfirmNo.mg_pmgRight = &mgConfirmYes; - mgConfirmNo.mg_iCenterI = -1; - mgConfirmNo.mg_bfsFontSize = BFS_LARGE; -} - -void CConfirmMenu::BeLarge(void) -{ - mgConfirmLabel.mg_bfsFontSize = BFS_LARGE; - mgConfirmYes.mg_bfsFontSize = BFS_LARGE; - mgConfirmNo.mg_bfsFontSize = BFS_LARGE; - mgConfirmLabel.mg_iCenterI = 0; - mgConfirmYes.mg_boxOnScreen = BoxPopupYesLarge(); - mgConfirmNo.mg_boxOnScreen = BoxPopupNoLarge(); -} - -void CConfirmMenu::BeSmall(void) -{ - mgConfirmLabel.mg_bfsFontSize = BFS_MEDIUM; - mgConfirmYes.mg_bfsFontSize = BFS_MEDIUM; - mgConfirmNo.mg_bfsFontSize = BFS_MEDIUM; - mgConfirmLabel.mg_iCenterI = -1; - mgConfirmYes.mg_boxOnScreen = BoxPopupYesSmall(); - mgConfirmNo.mg_boxOnScreen = BoxPopupNoSmall(); +void InitActionsForConfirmMenu() { + gmConfirmMenu.gm_mgConfirmLabel.mg_pActivatedFunction = &ConfirmYes; + gmConfirmMenu.gm_mgConfirmNo.mg_pActivatedFunction = &ConfirmNo; } // return TRUE if handled @@ -3293,428 +3193,69 @@ BOOL CConfirmMenu::OnKeyDown(int iVKey) } // ------------------------ CMainMenu implementation -void CMainMenu::Initialize_t(void) -{ - // intialize main menu -/* - mgMainTitle.mg_strText = "SERIOUS SAM - BETA"; // nothing to see here, kazuya - mgMainTitle.mg_boxOnScreen = BoxTitle(); - gm_lhGadgets.AddTail( mgMainTitle.mg_lnNode); - */ - - extern CTString sam_strVersion; - mgMainVersionLabel.mg_strText = sam_strVersion; - mgMainVersionLabel.mg_boxOnScreen = BoxVersion(); - mgMainVersionLabel.mg_bfsFontSize = BFS_MEDIUM; - mgMainVersionLabel.mg_iCenterI = +1; - mgMainVersionLabel.mg_bEnabled = FALSE; - mgMainVersionLabel.mg_bLabel = TRUE; - gm_lhGadgets.AddTail( mgMainVersionLabel.mg_lnNode); - - extern CTString sam_strModName; - mgMainModLabel.mg_strText = sam_strModName; - mgMainModLabel.mg_boxOnScreen = BoxMediumRow(-2.0f); - mgMainModLabel.mg_bfsFontSize = BFS_MEDIUM; - mgMainModLabel.mg_iCenterI = 0; - mgMainModLabel.mg_bEnabled = FALSE; - mgMainModLabel.mg_bLabel = TRUE; - gm_lhGadgets.AddTail( mgMainModLabel.mg_lnNode); - - mgMainSingle.mg_strText = TRANS("SINGLE PLAYER"); - mgMainSingle.mg_bfsFontSize = BFS_LARGE; - mgMainSingle.mg_boxOnScreen = BoxBigRow(0.0f); - mgMainSingle.mg_strTip = TRANS("single player game menus"); - gm_lhGadgets.AddTail( mgMainSingle.mg_lnNode); - mgMainSingle.mg_pmgUp = &mgMainQuit; - mgMainSingle.mg_pmgDown = &mgMainNetwork; - mgMainSingle.mg_pActivatedFunction = &StartSinglePlayerMenu; - - mgMainNetwork.mg_strText = TRANS("NETWORK"); - mgMainNetwork.mg_bfsFontSize = BFS_LARGE; - mgMainNetwork.mg_boxOnScreen = BoxBigRow(1.0f); - mgMainNetwork.mg_strTip = TRANS("LAN/iNet multiplayer menus"); - gm_lhGadgets.AddTail( mgMainNetwork.mg_lnNode); - mgMainNetwork.mg_pmgUp = &mgMainSingle; - mgMainNetwork.mg_pmgDown = &mgMainSplitScreen; - mgMainNetwork.mg_pActivatedFunction = StartNetworkMenu; - - mgMainSplitScreen.mg_strText = TRANS("SPLIT SCREEN"); - mgMainSplitScreen.mg_bfsFontSize = BFS_LARGE; - mgMainSplitScreen.mg_boxOnScreen = BoxBigRow(2.0f); - mgMainSplitScreen.mg_strTip = TRANS("play with multiple players on one computer"); - gm_lhGadgets.AddTail( mgMainSplitScreen.mg_lnNode); - mgMainSplitScreen.mg_pmgUp = &mgMainNetwork; - mgMainSplitScreen.mg_pmgDown = &mgMainDemo; - mgMainSplitScreen.mg_pActivatedFunction = &StartSplitScreenMenu; - - mgMainDemo.mg_strText = TRANS("DEMO"); - mgMainDemo.mg_bfsFontSize = BFS_LARGE; - mgMainDemo.mg_boxOnScreen = BoxBigRow(3.0f); - mgMainDemo.mg_strTip = TRANS("play a game demo"); - gm_lhGadgets.AddTail( mgMainDemo.mg_lnNode); - mgMainDemo.mg_pmgUp = &mgMainSplitScreen; - mgMainDemo.mg_pmgDown = &mgMainMods; - mgMainDemo.mg_pActivatedFunction = &StartDemoLoadMenu; - - mgMainMods.mg_strText = TRANS("MODS"); - mgMainMods.mg_bfsFontSize = BFS_LARGE; - mgMainMods.mg_boxOnScreen = BoxBigRow(4.0f); - mgMainMods.mg_strTip = TRANS("run one of installed game modifications"); - gm_lhGadgets.AddTail( mgMainMods.mg_lnNode); - mgMainMods.mg_pmgUp = &mgMainDemo; - mgMainMods.mg_pmgDown = &mgMainHighScore; - - #if TECHTESTONLY - mgMainMods.mg_pActivatedFunction = &DisabledFunction; - #else - mgMainMods.mg_pActivatedFunction = &StartModsLoadMenu; - #endif - - mgMainHighScore.mg_strText = TRANS("HIGH SCORES"); - mgMainHighScore.mg_bfsFontSize = BFS_LARGE; - mgMainHighScore.mg_boxOnScreen = BoxBigRow(5.0f); - mgMainHighScore.mg_strTip = TRANS("view list of top ten best scores"); - gm_lhGadgets.AddTail( mgMainHighScore.mg_lnNode); - mgMainHighScore.mg_pmgUp = &mgMainMods; - mgMainHighScore.mg_pmgDown = &mgMainOptions; - mgMainHighScore.mg_pActivatedFunction = &StartHighScoreMenu; - - mgMainOptions.mg_strText = TRANS("OPTIONS"); - mgMainOptions.mg_bfsFontSize = BFS_LARGE; - mgMainOptions.mg_boxOnScreen = BoxBigRow(6.0f); - mgMainOptions.mg_strTip = TRANS("adjust video, audio and input options"); - gm_lhGadgets.AddTail( mgMainOptions.mg_lnNode); - mgMainOptions.mg_pmgUp = &mgMainHighScore; - mgMainOptions.mg_pmgDown = &mgMainQuit; - mgMainOptions.mg_pActivatedFunction = &StartOptionsMenu; - - mgMainQuit.mg_strText = TRANS("QUIT"); - mgMainQuit.mg_bfsFontSize = BFS_LARGE; - mgMainQuit.mg_boxOnScreen = BoxBigRow(7.0f); - mgMainQuit.mg_strTip = TRANS("exit game immediately"); - gm_lhGadgets.AddTail( mgMainQuit.mg_lnNode); - mgMainQuit.mg_pmgUp = &mgMainOptions; - mgMainQuit.mg_pmgDown = &mgMainSingle; - mgMainQuit.mg_pActivatedFunction = &ExitConfirm; -} -void CMainMenu::StartMenu(void) -{ - mgMainSingle.mg_bEnabled = IsMenuEnabled("Single Player"); - mgMainNetwork.mg_bEnabled = IsMenuEnabled("Network"); - mgMainSplitScreen.mg_bEnabled = IsMenuEnabled("Split Screen"); - mgMainHighScore.mg_bEnabled = IsMenuEnabled("High Score"); - CGameMenu::StartMenu(); -} - -// ------------------------ CMainMenu implementation -void CInGameMenu::Initialize_t(void) -{ - // intialize main menu - mgInGameTitle.mg_strText = TRANS("GAME"); - mgInGameTitle.mg_boxOnScreen = BoxTitle(); - gm_lhGadgets.AddTail( mgInGameTitle.mg_lnNode); - - mgInGameLabel1.mg_strText = ""; - mgInGameLabel1.mg_boxOnScreen = BoxMediumRow(-2.0); - mgInGameLabel1.mg_bfsFontSize = BFS_MEDIUM; - mgInGameLabel1.mg_iCenterI = -1; - mgInGameLabel1.mg_bEnabled = FALSE; - mgInGameLabel1.mg_bLabel = TRUE; - gm_lhGadgets.AddTail( mgInGameLabel1.mg_lnNode); - - mgInGameLabel2.mg_strText = ""; - mgInGameLabel2.mg_boxOnScreen = BoxMediumRow(-1.0); - mgInGameLabel2.mg_bfsFontSize = BFS_MEDIUM; - mgInGameLabel2.mg_iCenterI = -1; - mgInGameLabel2.mg_bEnabled = FALSE; - mgInGameLabel2.mg_bLabel = TRUE; - gm_lhGadgets.AddTail( mgInGameLabel2.mg_lnNode); - - mgInGameQuickLoad.mg_strText = TRANS("QUICK LOAD"); - mgInGameQuickLoad.mg_bfsFontSize = BFS_LARGE; - mgInGameQuickLoad.mg_boxOnScreen = BoxBigRow(0.0f); - mgInGameQuickLoad.mg_strTip = TRANS("load a quick-saved game (F9)"); - gm_lhGadgets.AddTail( mgInGameQuickLoad.mg_lnNode); - mgInGameQuickLoad.mg_pmgUp = &mgInGameQuit; - mgInGameQuickLoad.mg_pmgDown = &mgInGameQuickSave; - mgInGameQuickLoad.mg_pActivatedFunction = &StartCurrentQuickLoadMenu; - - mgInGameQuickSave.mg_strText = TRANS("QUICK SAVE"); - mgInGameQuickSave.mg_bfsFontSize = BFS_LARGE; - mgInGameQuickSave.mg_boxOnScreen = BoxBigRow(1.0f); - mgInGameQuickSave.mg_strTip = TRANS("quick-save current game (F6)"); - gm_lhGadgets.AddTail( mgInGameQuickSave.mg_lnNode); - mgInGameQuickSave.mg_pmgUp = &mgInGameQuickLoad; - mgInGameQuickSave.mg_pmgDown = &mgInGameLoad; - mgInGameQuickSave.mg_pActivatedFunction = &QuickSaveFromMenu; - - mgInGameLoad.mg_strText = TRANS("LOAD"); - mgInGameLoad.mg_bfsFontSize = BFS_LARGE; - mgInGameLoad.mg_boxOnScreen = BoxBigRow(2.0f); - mgInGameLoad.mg_strTip = TRANS("load a saved game"); - gm_lhGadgets.AddTail( mgInGameLoad.mg_lnNode); - mgInGameLoad.mg_pmgUp = &mgInGameQuickSave; - mgInGameLoad.mg_pmgDown = &mgInGameSave; - mgInGameLoad.mg_pActivatedFunction = &StartCurrentLoadMenu; - - mgInGameSave.mg_strText = TRANS("SAVE"); - mgInGameSave.mg_bfsFontSize = BFS_LARGE; - mgInGameSave.mg_boxOnScreen = BoxBigRow(3.0f); - mgInGameSave.mg_strTip = TRANS("save current game (each player has own slots!)"); - gm_lhGadgets.AddTail( mgInGameSave.mg_lnNode); - mgInGameSave.mg_pmgUp = &mgInGameLoad; - mgInGameSave.mg_pmgDown = &mgInGameDemoRec; - mgInGameSave.mg_pActivatedFunction = &StartCurrentSaveMenu; - - mgInGameDemoRec.mg_boxOnScreen = BoxBigRow(4.0f); - mgInGameDemoRec.mg_bfsFontSize = BFS_LARGE; - mgInGameDemoRec.mg_pmgUp = &mgInGameSave; - mgInGameDemoRec.mg_pmgDown = &mgInGameHighScore; - mgInGameDemoRec.mg_strText = "Text not set"; - gm_lhGadgets.AddTail( mgInGameDemoRec.mg_lnNode); - mgInGameDemoRec.mg_pActivatedFunction = NULL; // !!! must be set on start menu - - mgInGameHighScore.mg_strText = TRANS("HIGH SCORES"); - mgInGameHighScore.mg_bfsFontSize = BFS_LARGE; - mgInGameHighScore.mg_boxOnScreen = BoxBigRow(5.0f); - mgInGameHighScore.mg_strTip = TRANS("view list of top ten best scores"); - gm_lhGadgets.AddTail( mgInGameHighScore.mg_lnNode); - mgInGameHighScore.mg_pmgUp = &mgInGameDemoRec; - mgInGameHighScore.mg_pmgDown = &mgInGameOptions; - mgInGameHighScore.mg_pActivatedFunction = &StartHighScoreMenu; - - mgInGameOptions.mg_strText = TRANS("OPTIONS"); - mgInGameOptions.mg_bfsFontSize = BFS_LARGE; - mgInGameOptions.mg_boxOnScreen = BoxBigRow(6.0f); - mgInGameOptions.mg_strTip = TRANS("adjust video, audio and input options"); - gm_lhGadgets.AddTail( mgInGameOptions.mg_lnNode); - mgInGameOptions.mg_pmgUp = &mgInGameHighScore; - mgInGameOptions.mg_pmgDown = &mgInGameStop; - mgInGameOptions.mg_pActivatedFunction = &StartOptionsMenu; - - mgInGameStop.mg_strText = TRANS("STOP GAME"); - mgInGameStop.mg_bfsFontSize = BFS_LARGE; - mgInGameStop.mg_boxOnScreen = BoxBigRow(7.0f); - mgInGameStop.mg_strTip = TRANS("stop currently running game"); - gm_lhGadgets.AddTail( mgInGameStop.mg_lnNode); - mgInGameStop.mg_pmgUp = &mgInGameOptions; - mgInGameStop.mg_pmgDown = &mgInGameQuit; +void InitActionsForMainMenu() { + gmMainMenu.gm_mgSingle.mg_pActivatedFunction = &StartSinglePlayerMenu; + gmMainMenu.gm_mgNetwork.mg_pActivatedFunction = StartNetworkMenu; + gmMainMenu.gm_mgSplitScreen.mg_pActivatedFunction = &StartSplitScreenMenu; + gmMainMenu.gm_mgDemo.mg_pActivatedFunction = &StartDemoLoadMenu; #if TECHTESTONLY - mgInGameStop.mg_pActivatedFunction = &ExitConfirm; + gmMainMenu.gm_mgMods.mg_pActivatedFunction = &DisabledFunction; #else - mgInGameStop.mg_pActivatedFunction = &StopConfirm; + gmMainMenu.gm_mgMods.mg_pActivatedFunction = &StartModsLoadMenu; #endif - - mgInGameQuit.mg_strText = TRANS("QUIT"); - mgInGameQuit.mg_bfsFontSize = BFS_LARGE; - mgInGameQuit.mg_boxOnScreen = BoxBigRow(8.0f); - mgInGameQuit.mg_strTip = TRANS("exit game immediately"); - gm_lhGadgets.AddTail( mgInGameQuit.mg_lnNode); - mgInGameQuit.mg_pmgUp = &mgInGameStop; - mgInGameQuit.mg_pmgDown = &mgInGameQuickLoad; - mgInGameQuit.mg_pActivatedFunction = &ExitConfirm; + gmMainMenu.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; + gmMainMenu.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; + gmMainMenu.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; } -void SetDemoStartStopRecText(void) +// ------------------------ CInGameMenu implementation +void InitActionsForInGameMenu() { + + gmInGameMenu.gm_mgQuickLoad.mg_pActivatedFunction = &StartCurrentQuickLoadMenu; + gmInGameMenu.gm_mgQuickSave.mg_pActivatedFunction = &QuickSaveFromMenu; + gmInGameMenu.gm_mgLoad.mg_pActivatedFunction = &StartCurrentLoadMenu; + gmInGameMenu.gm_mgSave.mg_pActivatedFunction = &StartCurrentSaveMenu; + gmInGameMenu.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; + gmInGameMenu.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; +#if TECHTESTONLY + gmInGameMenu.gm_mgStop.mg_pActivatedFunction = &ExitConfirm; +#else + gmInGameMenu.gm_mgStop.mg_pActivatedFunction = &StopConfirm; +#endif + gmInGameMenu.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; +} + +extern void SetDemoStartStopRecText(void) { if( _pNetwork->IsRecordingDemo()) { - mgInGameDemoRec.SetText( TRANS("STOP RECORDING")); - mgInGameDemoRec.mg_strTip = TRANS("stop current recording"); - mgInGameDemoRec.mg_pActivatedFunction = &StopRecordingDemo; + gmInGameMenu.gm_mgDemoRec.SetText(TRANS("STOP RECORDING")); + gmInGameMenu.gm_mgDemoRec.mg_strTip = TRANS("stop current recording"); + gmInGameMenu.gm_mgDemoRec.mg_pActivatedFunction = &StopRecordingDemo; } else { - mgInGameDemoRec.SetText( TRANS("RECORD DEMO")); - mgInGameDemoRec.mg_strTip = TRANS("start recording current game"); - mgInGameDemoRec.mg_pActivatedFunction = &StartDemoSaveMenu; + gmInGameMenu.gm_mgDemoRec.SetText(TRANS("RECORD DEMO")); + gmInGameMenu.gm_mgDemoRec.mg_strTip = TRANS("start recording current game"); + gmInGameMenu.gm_mgDemoRec.mg_pActivatedFunction = &StartDemoSaveMenu; } } -void CInGameMenu::StartMenu(void) -{ - mgInGameQuickLoad.mg_bEnabled = _pNetwork->IsServer(); - mgInGameQuickSave.mg_bEnabled = _pNetwork->IsServer(); - mgInGameLoad.mg_bEnabled = _pNetwork->IsServer(); - mgInGameSave.mg_bEnabled = _pNetwork->IsServer(); - mgInGameDemoRec.mg_bEnabled = TRUE;//_pNetwork->IsServer(); - SetDemoStartStopRecText(); - - - if (_gmRunningGameMode==GM_SINGLE_PLAYER) { - CPlayerCharacter &pc = _pGame->gm_apcPlayers[ _pGame->gm_iSinglePlayer]; - mgInGameLabel1.mg_strText.PrintF( TRANS("Player: %s"), pc.GetNameForPrinting()); - mgInGameLabel2.mg_strText = ""; - - } else { - if (_pNetwork->IsServer()) { - - CTString strHost, strAddress; - CTString strHostName; - _pNetwork->GetHostName(strHost, strAddress); - if (strHost=="") { - strHostName = TRANS(""); - } else { - strHostName = strHost + " ("+strAddress+")"; - } - - mgInGameLabel1.mg_strText = TRANS("Address: ")+strHostName; - mgInGameLabel2.mg_strText = ""; - } else { - - CTString strConfig; - strConfig = TRANS(""); - if (sam_strNetworkSettings!="") { - LoadStringVar(CTFileName(sam_strNetworkSettings).NoExt()+".des", strConfig); - strConfig.OnlyFirstLine(); - } - - mgInGameLabel1.mg_strText = TRANS("Connected to: ")+_pGame->gam_strJoinAddress; - mgInGameLabel2.mg_strText = TRANS("Connection: ")+strConfig; - } - } - - CGameMenu::StartMenu(); -} // ------------------------ CSinglePlayerMenu implementation -void CSinglePlayerMenu::Initialize_t(void) -{ - // intialize single player menu - mgSingleTitle.mg_strText = TRANS("SINGLE PLAYER"); - mgSingleTitle.mg_boxOnScreen = BoxTitle(); - gm_lhGadgets.AddTail( mgSingleTitle.mg_lnNode); - - mgSinglePlayerLabel.mg_boxOnScreen = BoxBigRow(-1.0f); - mgSinglePlayerLabel.mg_bfsFontSize = BFS_MEDIUM; - mgSinglePlayerLabel.mg_iCenterI = -1; - mgSinglePlayerLabel.mg_bEnabled = FALSE; - mgSinglePlayerLabel.mg_bLabel = TRUE; - gm_lhGadgets.AddTail(mgSinglePlayerLabel.mg_lnNode); - - mgSingleNewGame.mg_strText = TRANS("NEW GAME"); - mgSingleNewGame.mg_bfsFontSize = BFS_LARGE; - mgSingleNewGame.mg_boxOnScreen = BoxBigRow(0.0f); - mgSingleNewGame.mg_strTip = TRANS("start new game with current player"); - gm_lhGadgets.AddTail( mgSingleNewGame.mg_lnNode); - mgSingleNewGame.mg_pmgUp = &mgSingleOptions; - mgSingleNewGame.mg_pmgDown = &mgSingleCustom; - mgSingleNewGame.mg_pActivatedFunction = &StartSinglePlayerNewMenu; - - mgSingleCustom.mg_strText = TRANS("CUSTOM LEVEL"); - mgSingleCustom.mg_bfsFontSize = BFS_LARGE; - mgSingleCustom.mg_boxOnScreen = BoxBigRow(1.0f); - mgSingleCustom.mg_strTip = TRANS("start new game on a custom level"); - gm_lhGadgets.AddTail( mgSingleCustom.mg_lnNode); - mgSingleCustom.mg_pmgUp = &mgSingleNewGame; - mgSingleCustom.mg_pmgDown = &mgSingleQuickLoad; - #if _SE_DEMO || TECHTESTONLY - mgSingleCustom.mg_pActivatedFunction = &DisabledFunction; - #else - mgSingleCustom.mg_pActivatedFunction = &StartSelectLevelFromSingle; - #endif - - mgSingleQuickLoad.mg_strText = TRANS("QUICK LOAD"); - mgSingleQuickLoad.mg_bfsFontSize = BFS_LARGE; - mgSingleQuickLoad.mg_boxOnScreen = BoxBigRow(2.0f); - mgSingleQuickLoad.mg_strTip = TRANS("load a quick-saved game (F9)"); - gm_lhGadgets.AddTail( mgSingleQuickLoad.mg_lnNode); - mgSingleQuickLoad.mg_pmgUp = &mgSingleCustom; - mgSingleQuickLoad.mg_pmgDown = &mgSingleLoad; - mgSingleQuickLoad.mg_pActivatedFunction = &StartSinglePlayerQuickLoadMenu; - - mgSingleLoad.mg_strText = TRANS("LOAD"); - mgSingleLoad.mg_bfsFontSize = BFS_LARGE; - mgSingleLoad.mg_boxOnScreen = BoxBigRow(3.0f); - mgSingleLoad.mg_strTip = TRANS("load a saved game of current player"); - gm_lhGadgets.AddTail( mgSingleLoad.mg_lnNode); - mgSingleLoad.mg_pmgUp = &mgSingleQuickLoad; - mgSingleLoad.mg_pmgDown = &mgSingleTraining; - mgSingleLoad.mg_pActivatedFunction = &StartSinglePlayerLoadMenu; - - mgSingleTraining.mg_strText = TRANS("TRAINING"); - mgSingleTraining.mg_bfsFontSize = BFS_LARGE; - mgSingleTraining.mg_boxOnScreen = BoxBigRow(4.0f); - mgSingleTraining.mg_strTip = TRANS("start training level - KarnakDemo"); - gm_lhGadgets.AddTail( mgSingleTraining.mg_lnNode); - mgSingleTraining.mg_pmgUp = &mgSingleLoad; - mgSingleTraining.mg_pmgDown = &mgSingleTechTest; - mgSingleTraining.mg_pActivatedFunction = &StartTraining; - - mgSingleTechTest.mg_strText = TRANS("TECHNOLOGY TEST"); - mgSingleTechTest.mg_bfsFontSize = BFS_LARGE; - mgSingleTechTest.mg_boxOnScreen = BoxBigRow(5.0f); - mgSingleTechTest.mg_strTip = TRANS("start technology testing level"); - gm_lhGadgets.AddTail( mgSingleTechTest.mg_lnNode); - mgSingleTechTest.mg_pmgUp = &mgSingleTraining; - mgSingleTechTest.mg_pmgDown = &mgSinglePlayersAndControls; - mgSingleTechTest.mg_pActivatedFunction = &StartTechTest; - - mgSinglePlayersAndControls.mg_bfsFontSize = BFS_LARGE; - mgSinglePlayersAndControls.mg_boxOnScreen = BoxBigRow(6.0f); - mgSinglePlayersAndControls.mg_pmgUp = &mgSingleTechTest; - mgSinglePlayersAndControls.mg_pmgDown = &mgSingleOptions; - mgSinglePlayersAndControls.mg_strText = TRANS("PLAYERS AND CONTROLS"); - mgSinglePlayersAndControls.mg_strTip = TRANS("change currently active player or adjust controls"); - gm_lhGadgets.AddTail( mgSinglePlayersAndControls.mg_lnNode); - mgSinglePlayersAndControls.mg_pActivatedFunction = &StartChangePlayerMenuFromSinglePlayer; - - mgSingleOptions.mg_strText = TRANS("GAME OPTIONS"); - mgSingleOptions.mg_bfsFontSize = BFS_LARGE; - mgSingleOptions.mg_boxOnScreen = BoxBigRow(7.0f); - mgSingleOptions.mg_strTip = TRANS("adjust miscellaneous game options"); - gm_lhGadgets.AddTail( mgSingleOptions.mg_lnNode); - mgSingleOptions.mg_pmgUp = &mgSinglePlayersAndControls; - mgSingleOptions.mg_pmgDown = &mgSingleNewGame; - mgSingleOptions.mg_pActivatedFunction = &StartSinglePlayerGameOptions; -} - -void CSinglePlayerMenu::StartMenu(void) -{ - mgSingleTraining.mg_bEnabled = IsMenuEnabled("Training"); - mgSingleTechTest.mg_bEnabled = IsMenuEnabled("Technology Test"); - - if (mgSingleTraining.mg_bEnabled) { - if (!mgSingleTraining.mg_lnNode.IsLinked()) { - gm_lhGadgets.AddTail( mgSingleTraining.mg_lnNode); - } - - mgSingleLoad.mg_boxOnScreen = BoxBigRow(3.0f); - mgSingleLoad.mg_pmgUp = &mgSingleQuickLoad; - mgSingleLoad.mg_pmgDown = &mgSingleTraining; - - mgSingleTraining.mg_boxOnScreen = BoxBigRow(4.0f); - mgSingleTraining.mg_pmgUp = &mgSingleLoad; - mgSingleTraining.mg_pmgDown = &mgSingleTechTest; - - mgSingleTechTest.mg_boxOnScreen = BoxBigRow(5.0f); - mgSingleTechTest.mg_pmgUp = &mgSingleTraining; - mgSingleTechTest.mg_pmgDown = &mgSinglePlayersAndControls; - - mgSinglePlayersAndControls.mg_boxOnScreen = BoxBigRow(6.0f); - mgSingleOptions.mg_boxOnScreen = BoxBigRow(7.0f); - - } else { - if (mgSingleTraining.mg_lnNode.IsLinked()) { - mgSingleTraining.mg_lnNode.Remove(); - } - - mgSingleLoad.mg_boxOnScreen = BoxBigRow(3.0f); - mgSingleLoad.mg_pmgUp = &mgSingleQuickLoad; - mgSingleLoad.mg_pmgDown = &mgSingleTechTest; - - mgSingleTechTest.mg_boxOnScreen = BoxBigRow(4.0f); - mgSingleTechTest.mg_pmgUp = &mgSingleLoad; - mgSingleTechTest.mg_pmgDown = &mgSinglePlayersAndControls; - - mgSinglePlayersAndControls.mg_boxOnScreen = BoxBigRow(5.0f); - mgSingleOptions.mg_boxOnScreen = BoxBigRow(6.0f); - } - - CGameMenu::StartMenu(); - - CPlayerCharacter &pc = _pGame->gm_apcPlayers[ _pGame->gm_iSinglePlayer]; - mgSinglePlayerLabel.mg_strText.PrintF( TRANS("Player: %s\n"), pc.GetNameForPrinting()); +void InitActionsForSinglePlayerMenu() { + gmSinglePlayerMenu.gm_mgNewGame.mg_pActivatedFunction = &StartSinglePlayerNewMenu; +#if _SE_DEMO || TECHTESTONLY + gmSinglePlayerMenu.gm_mgCustom.mg_pActivatedFunction = &DisabledFunction; +#else + gmSinglePlayerMenu.gm_mgCustom.mg_pActivatedFunction = &StartSelectLevelFromSingle; +#endif + gmSinglePlayerMenu.gm_mgQuickLoad.mg_pActivatedFunction = &StartSinglePlayerQuickLoadMenu; + gmSinglePlayerMenu.gm_mgLoad.mg_pActivatedFunction = &StartSinglePlayerLoadMenu; + gmSinglePlayerMenu.gm_mgTraining.mg_pActivatedFunction = &StartTraining; + gmSinglePlayerMenu.gm_mgTechTest.mg_pActivatedFunction = &StartTechTest; + gmSinglePlayerMenu.gm_mgPlayersAndControls.mg_pActivatedFunction = &StartChangePlayerMenuFromSinglePlayer; + gmSinglePlayerMenu.gm_mgOptions.mg_pActivatedFunction = &StartSinglePlayerGameOptions; } // ------------------------ CSinglePlayerNewMenu implementation @@ -5567,7 +5108,7 @@ void CNetworkMenu::StartMenu(void) void UpdateNetworkLevel(INDEX iDummy) { ValidateLevelForFlags(_pGame->gam_strCustomLevel, - SpawnFlagsForGameType(mgNetworkGameType.mg_iSelected)); + GetSpawnFlagsForGameType(mgNetworkGameType.mg_iSelected)); mgNetworkLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; } @@ -6102,7 +5643,7 @@ void CSplitScreenMenu::StartMenu(void) void UpdateSplitLevel(INDEX iDummy) { ValidateLevelForFlags(_pGame->gam_strCustomLevel, - SpawnFlagsForGameType(mgSplitGameType.mg_iSelected)); + GetSpawnFlagsForGameType(mgSplitGameType.mg_iSelected)); mgSplitLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; } @@ -6174,10 +5715,11 @@ void CSplitStartMenu::StartMenu(void) UpdateSplitLevel(0); CGameMenu::StartMenu(); } + void CSplitStartMenu::EndMenu(void) { _pShell->SetINDEX("gam_iStartDifficulty", mgSplitDifficulty.mg_iSelected-1); _pShell->SetINDEX("gam_iStartMode", mgSplitGameType.mg_iSelected); CGameMenu::EndMenu(); -} +} \ No newline at end of file diff --git a/Sources/SeriousSam/MenuStuff.cpp b/Sources/SeriousSam/MenuStuff.cpp new file mode 100644 index 0000000..735252b --- /dev/null +++ b/Sources/SeriousSam/MenuStuff.cpp @@ -0,0 +1,38 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include + +#include "MenuStuff.h" + +ULONG GetSpawnFlagsForGameType(INDEX iGameType) +{ + if (iGameType == -1) return SPF_SINGLEPLAYER; + + // get function that will provide us the flags + CShellSymbol *pss = _pShell->GetSymbol("GetSpawnFlagsForGameTypeSS", /*bDeclaredOnly=*/ TRUE); + // if none + if (pss == NULL) { + // error + ASSERT(FALSE); + return 0; + } + + ULONG(*pFunc)(INDEX) = (ULONG(*)(INDEX))pss->ss_pvValue; + return pFunc(iGameType); +} + +BOOL IsMenuEnabled(const CTString &strMenuName) +{ + // get function that will provide us the flags + CShellSymbol *pss = _pShell->GetSymbol("IsMenuEnabledSS", /*bDeclaredOnly=*/ TRUE); + // if none + if (pss == NULL) { + // error + ASSERT(FALSE); + return TRUE; + } + + BOOL(*pFunc)(const CTString &) = (BOOL(*)(const CTString &))pss->ss_pvValue; + return pFunc(strMenuName); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MenuStuff.h b/Sources/SeriousSam/MenuStuff.h new file mode 100644 index 0000000..afbdd4a --- /dev/null +++ b/Sources/SeriousSam/MenuStuff.h @@ -0,0 +1,12 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_STUFF_H +#define SE_INCL_MENU_STUFF_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + +ULONG GetSpawnFlagsForGameType(INDEX iGameType); +BOOL IsMenuEnabled(const CTString &strMenuName); + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/SeriousSam.vcxproj b/Sources/SeriousSam/SeriousSam.vcxproj index 65e77f4..aad83b6 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj +++ b/Sources/SeriousSam/SeriousSam.vcxproj @@ -182,6 +182,7 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + Use StdH.h @@ -190,6 +191,10 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + + CppCode + + @@ -204,6 +209,9 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + + + Use StdH.h diff --git a/Sources/SeriousSam/SeriousSam.vcxproj.filters b/Sources/SeriousSam/SeriousSam.vcxproj.filters index 17a7967..987e89e 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj.filters +++ b/Sources/SeriousSam/SeriousSam.vcxproj.filters @@ -111,7 +111,25 @@ Source Files\Gadgets + + Header Files + + + Source Files + + + Source Files\Menus + + + Source Files\Menus + + Source Files + + + Source Files\Menus + + Source Files\Menus From 220875d2de1069777a04ecace23359ed78c6032b Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Mon, 14 Mar 2016 02:46:30 +0300 Subject: [PATCH 11/34] GameExecutable: Move some stuff from Menu.cpp into files PART TWO Menu.cpp is so large(>6000 lines). I'll separate it! --- Sources/SeriousSam/MDisabled.cpp | 18 + Sources/SeriousSam/MDisabled.h | 5 + Sources/SeriousSam/MLevels.cpp | 101 +++++ Sources/SeriousSam/MLevels.h | 9 +- Sources/SeriousSam/MSinglePlayerNew.cpp | 87 +++++ Sources/SeriousSam/MSinglePlayerNew.h | 10 + Sources/SeriousSam/MVar.cpp | 121 ++++++ Sources/SeriousSam/MVar.h | 11 + Sources/SeriousSam/Menu.cpp | 344 ++---------------- Sources/SeriousSam/SeriousSam.vcxproj | 4 + Sources/SeriousSam/SeriousSam.vcxproj.filters | 12 + 11 files changed, 407 insertions(+), 315 deletions(-) create mode 100644 Sources/SeriousSam/MDisabled.cpp create mode 100644 Sources/SeriousSam/MLevels.cpp create mode 100644 Sources/SeriousSam/MSinglePlayerNew.cpp create mode 100644 Sources/SeriousSam/MVar.cpp diff --git a/Sources/SeriousSam/MDisabled.cpp b/Sources/SeriousSam/MDisabled.cpp new file mode 100644 index 0000000..828d321 --- /dev/null +++ b/Sources/SeriousSam/MDisabled.cpp @@ -0,0 +1,18 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MDisabled.h" + + +void CDisabledMenu::Initialize_t(void) +{ + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + + gm_mgButton.mg_bfsFontSize = BFS_MEDIUM; + gm_mgButton.mg_boxOnScreen = BoxBigRow(0.0f); + gm_lhGadgets.AddTail(gm_mgButton.mg_lnNode); + gm_mgButton.mg_pActivatedFunction = NULL; +} \ No newline at end of file diff --git a/Sources/SeriousSam/MDisabled.h b/Sources/SeriousSam/MDisabled.h index 7d372f5..90de7ec 100644 --- a/Sources/SeriousSam/MDisabled.h +++ b/Sources/SeriousSam/MDisabled.h @@ -7,10 +7,15 @@ #endif #include "GameMenu.h" +#include "MGButton.h" +#include "MGTitle.h" class CDisabledMenu : public CGameMenu { public: + CMGTitle gm_mgTitle; + CMGButton gm_mgButton; + void Initialize_t(void); }; diff --git a/Sources/SeriousSam/MLevels.cpp b/Sources/SeriousSam/MLevels.cpp new file mode 100644 index 0000000..5fe5c6e --- /dev/null +++ b/Sources/SeriousSam/MLevels.cpp @@ -0,0 +1,101 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "LevelInfo.h" +#include "MLevels.h" + + +void CLevelsMenu::Initialize_t(void) +{ + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("CHOOSE LEVEL"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + + for (INDEX iLabel = 0; iLabel"); + gm_mgManualLevel[i].mg_iInList = -2; + } + + BOOL bHasFirst = FALSE; + BOOL bHasLast = FALSE; + INDEX ctLabels = _lhFilteredLevels.Count(); + INDEX iLabel = 0; + FOREACHINLIST(CLevelInfo, li_lnNode, _lhFilteredLevels, itli) { + CLevelInfo &li = *itli; + INDEX iInMenu = iLabel - gm_iListOffset; + if ((iLabel >= gm_iListOffset) && + (iLabel<(gm_iListOffset + LEVELS_ON_SCREEN))) + { + bHasFirst |= (iLabel == 0); + bHasLast |= (iLabel == ctLabels - 1); + gm_mgManualLevel[iInMenu].mg_strText = li.li_strName; + gm_mgManualLevel[iInMenu].mg_fnmLevel = li.li_fnLevel; + gm_mgManualLevel[iInMenu].mg_bEnabled = TRUE; + gm_mgManualLevel[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 CLevelsMenu::StartMenu(void) +{ + // set default parameters for the list + gm_iListOffset = 0; + gm_ctListTotal = _lhFilteredLevels.Count(); + gm_iListWantedItem = 0; + // for each level + INDEX i = 0; + FOREACHINLIST(CLevelInfo, li_lnNode, _lhFilteredLevels, itlid) { + CLevelInfo &lid = *itlid; + // if it is the chosen one + if (lid.li_fnLevel == _pGame->gam_strCustomLevel) { + // demand focus on it + gm_iListWantedItem = i; + break; + } + i++; + } + CGameMenu::StartMenu(); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MLevels.h b/Sources/SeriousSam/MLevels.h index 174a86a..61b8d0c 100644 --- a/Sources/SeriousSam/MLevels.h +++ b/Sources/SeriousSam/MLevels.h @@ -7,10 +7,17 @@ #endif #include "GameMenu.h" - +#include "MGArrow.h" +#include "MGLevelButton.h" +#include "MGTitle.h" class CLevelsMenu : public CGameMenu { public: + CMGTitle gm_mgTitle; + CMGLevelButton gm_mgManualLevel[LEVELS_ON_SCREEN]; + CMGArrow gm_mgArrowUp; + CMGArrow gm_mgArrowDn; + void Initialize_t(void); void FillListItems(void); void StartMenu(void); diff --git a/Sources/SeriousSam/MSinglePlayerNew.cpp b/Sources/SeriousSam/MSinglePlayerNew.cpp new file mode 100644 index 0000000..41a0d47 --- /dev/null +++ b/Sources/SeriousSam/MSinglePlayerNew.cpp @@ -0,0 +1,87 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MenuStuff.h" +#include "MSinglePlayerNew.h" + + +void CSinglePlayerNewMenu::Initialize_t(void) +{ + // intialize single player new menu + gm_mgTitle.mg_strText = TRANS("NEW GAME"); + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + + gm_mgTourist.mg_strText = TRANS("TOURIST"); + gm_mgTourist.mg_bfsFontSize = BFS_LARGE; + gm_mgTourist.mg_boxOnScreen = BoxBigRow(0.0f); + gm_mgTourist.mg_strTip = TRANS("for non-FPS players"); + gm_lhGadgets.AddTail(gm_mgTourist.mg_lnNode); + gm_mgTourist.mg_pmgUp = &gm_mgSerious; + gm_mgTourist.mg_pmgDown = &gm_mgEasy; + gm_mgTourist.mg_pActivatedFunction = NULL; + + gm_mgEasy.mg_strText = TRANS("EASY"); + gm_mgEasy.mg_bfsFontSize = BFS_LARGE; + gm_mgEasy.mg_boxOnScreen = BoxBigRow(1.0f); + gm_mgEasy.mg_strTip = TRANS("for unexperienced FPS players"); + gm_lhGadgets.AddTail(gm_mgEasy.mg_lnNode); + gm_mgEasy.mg_pmgUp = &gm_mgTourist; + gm_mgEasy.mg_pmgDown = &gm_mgMedium; + gm_mgEasy.mg_pActivatedFunction = NULL; + + gm_mgMedium.mg_strText = TRANS("NORMAL"); + gm_mgMedium.mg_bfsFontSize = BFS_LARGE; + gm_mgMedium.mg_boxOnScreen = BoxBigRow(2.0f); + gm_mgMedium.mg_strTip = TRANS("for experienced FPS players"); + gm_lhGadgets.AddTail(gm_mgMedium.mg_lnNode); + gm_mgMedium.mg_pmgUp = &gm_mgEasy; + gm_mgMedium.mg_pmgDown = &gm_mgHard; + gm_mgMedium.mg_pActivatedFunction = NULL; + + gm_mgHard.mg_strText = TRANS("HARD"); + gm_mgHard.mg_bfsFontSize = BFS_LARGE; + gm_mgHard.mg_boxOnScreen = BoxBigRow(3.0f); + gm_mgHard.mg_strTip = TRANS("for experienced Serious Sam players"); + gm_lhGadgets.AddTail(gm_mgHard.mg_lnNode); + gm_mgHard.mg_pmgUp = &gm_mgMedium; + gm_mgHard.mg_pmgDown = &gm_mgSerious; + gm_mgHard.mg_pActivatedFunction = NULL; + + gm_mgSerious.mg_strText = TRANS("SERIOUS"); + gm_mgSerious.mg_bfsFontSize = BFS_LARGE; + gm_mgSerious.mg_boxOnScreen = BoxBigRow(4.0f); + gm_mgSerious.mg_strTip = TRANS("are you serious?"); + gm_lhGadgets.AddTail(gm_mgSerious.mg_lnNode); + gm_mgSerious.mg_pmgUp = &gm_mgHard; + gm_mgSerious.mg_pmgDown = &gm_mgTourist; + gm_mgSerious.mg_pActivatedFunction = NULL; + + gm_mgMental.mg_strText = TRANS("MENTAL"); + gm_mgMental.mg_bfsFontSize = BFS_LARGE; + gm_mgMental.mg_boxOnScreen = BoxBigRow(5.0f); + gm_mgMental.mg_strTip = TRANS("you are not serious!"); + gm_lhGadgets.AddTail(gm_mgMental.mg_lnNode); + gm_mgMental.mg_pmgUp = &gm_mgSerious; + gm_mgMental.mg_pmgDown = &gm_mgTourist; + gm_mgMental.mg_pActivatedFunction = NULL; + gm_mgMental.mg_bMental = TRUE; + + +} +void CSinglePlayerNewMenu::StartMenu(void) +{ + CGameMenu::StartMenu(); + extern INDEX sam_bMentalActivated; + if (sam_bMentalActivated) { + gm_mgMental.Appear(); + gm_mgSerious.mg_pmgDown = &gm_mgMental; + gm_mgTourist.mg_pmgUp = &gm_mgMental; + } else { + gm_mgMental.Disappear(); + gm_mgSerious.mg_pmgDown = &gm_mgTourist; + gm_mgTourist.mg_pmgUp = &gm_mgSerious; + } +} diff --git a/Sources/SeriousSam/MSinglePlayerNew.h b/Sources/SeriousSam/MSinglePlayerNew.h index 090a439..e0689da 100644 --- a/Sources/SeriousSam/MSinglePlayerNew.h +++ b/Sources/SeriousSam/MSinglePlayerNew.h @@ -7,10 +7,20 @@ #endif #include "GameMenu.h" +#include "MGButton.h" +#include "MGTitle.h" class CSinglePlayerNewMenu : public CGameMenu { public: + CMGTitle gm_mgTitle; + CMGButton gm_mgTourist; + CMGButton gm_mgEasy; + CMGButton gm_mgMedium; + CMGButton gm_mgHard; + CMGButton gm_mgSerious; + CMGButton gm_mgMental; + void Initialize_t(void); void StartMenu(void); }; diff --git a/Sources/SeriousSam/MVar.cpp b/Sources/SeriousSam/MVar.cpp new file mode 100644 index 0000000..373b5de --- /dev/null +++ b/Sources/SeriousSam/MVar.cpp @@ -0,0 +1,121 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "VarList.h" +#include "MVar.h" + +extern BOOL _bVarChanged; + + +void CVarMenu::Initialize_t(void) +{ + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = ""; + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + + for (INDEX iLabel = 0; iLabel= gm_iListOffset) && + (iLabel<(gm_iListOffset + VARS_ON_SCREEN))) + { + bHasFirst |= (iLabel == 0); + bHasLast |= (iLabel == ctLabels - 1); + gm_mgVar[iInMenu].mg_pvsVar = &vs; + gm_mgVar[iInMenu].mg_strTip = vs.vs_strTip; + gm_mgVar[iInMenu].mg_bEnabled = gm_mgVar[iInMenu].IsEnabled(); + gm_mgVar[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 CVarMenu::StartMenu(void) +{ + LoadVarSettings(gm_fnmMenuCFG); + // set default parameters for the list + gm_iListOffset = 0; + gm_ctListTotal = _lhVarSettings.Count(); + gm_iListWantedItem = 0; + CGameMenu::StartMenu(); +} + +void CVarMenu::EndMenu(void) +{ + // disable all items first + for (INDEX i = 0; i"); - mgManualLevel[i].mg_iInList = -2; - } - - BOOL bHasFirst = FALSE; - BOOL bHasLast = FALSE; - INDEX ctLabels = _lhFilteredLevels.Count(); - INDEX iLabel=0; - FOREACHINLIST(CLevelInfo, li_lnNode, _lhFilteredLevels, itli) { - CLevelInfo &li = *itli; - INDEX iInMenu = iLabel-gm_iListOffset; - if( (iLabel>=gm_iListOffset) && - (iLabel<(gm_iListOffset+LEVELS_ON_SCREEN)) ) - { - bHasFirst|=(iLabel==0); - bHasLast |=(iLabel==ctLabels-1); - mgManualLevel[iInMenu].mg_strText = li.li_strName; - mgManualLevel[iInMenu].mg_fnmLevel = li.li_fnLevel; - mgManualLevel[iInMenu].mg_bEnabled = TRUE; - mgManualLevel[iInMenu].mg_iInList = iLabel; - } - iLabel++; - } - - // enable/disable up/down arrows - mgLevelsArrowUp.mg_bEnabled = !bHasFirst && ctLabels>0; - mgLevelsArrowDn.mg_bEnabled = !bHasLast && ctLabels>0; -} - -void CLevelsMenu::Initialize_t(void) -{ - mgLevelsTitle.mg_boxOnScreen = BoxTitle(); - mgLevelsTitle.mg_strText = TRANS("CHOOSE LEVEL"); - gm_lhGadgets.AddTail( mgLevelsTitle.mg_lnNode); - - for( INDEX iLabel=0; iLabelgam_strCustomLevel) { - // demand focus on it - gm_iListWantedItem = i; - break; - } - i++; - } - CGameMenu::StartMenu(); -} - +// ------------------------ CVarMenu implementation void VarApply(void) { FlushVarSettings(TRUE); @@ -4816,114 +4638,8 @@ void VarApply(void) gmVarMenu.StartMenu(); } -void CVarMenu::Initialize_t(void) -{ - mgVarTitle.mg_boxOnScreen = BoxTitle(); - mgVarTitle.mg_strText = ""; - gm_lhGadgets.AddTail( mgVarTitle.mg_lnNode); - - for( INDEX iLabel=0; iLabel=gm_iListOffset) && - (iLabel<(gm_iListOffset+VARS_ON_SCREEN)) ) - { - bHasFirst|=(iLabel==0); - bHasLast |=(iLabel==ctLabels-1); - mgVar[iInMenu].mg_pvsVar = &vs; - mgVar[iInMenu].mg_strTip = vs.vs_strTip; - mgVar[iInMenu].mg_bEnabled = mgVar[iInMenu].IsEnabled(); - mgVar[iInMenu].mg_iInList = iLabel; - } - iLabel++; - } - // enable/disable up/down arrows - mgVarArrowUp.mg_bEnabled = !bHasFirst && ctLabels>0; - mgVarArrowDn.mg_bEnabled = !bHasLast && ctLabels>0; -} - -void CVarMenu::StartMenu(void) -{ - LoadVarSettings(gm_fnmMenuCFG); - // set default parameters for the list - gm_iListOffset = 0; - gm_ctListTotal = _lhVarSettings.Count(); - gm_iListWantedItem = 0; - CGameMenu::StartMenu(); -} - -void CVarMenu::EndMenu(void) -{ - // disable all items first - for(INDEX i=0; i + Use StdH.h @@ -210,8 +211,11 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + + + Use StdH.h diff --git a/Sources/SeriousSam/SeriousSam.vcxproj.filters b/Sources/SeriousSam/SeriousSam.vcxproj.filters index 987e89e..378cb3c 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj.filters +++ b/Sources/SeriousSam/SeriousSam.vcxproj.filters @@ -132,6 +132,18 @@ Source Files\Menus + + Source Files\Menus + + + Source Files\Menus + + + Source Files\Menus + + + Source Files\Menus + From 764cc874c9a142ba04dce379aa0592b8387245d0 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Mon, 14 Mar 2016 02:55:58 +0300 Subject: [PATCH 12/34] Remove generated files --- Scripts/PersistentSymbols.ini | 443 ------ Sources/Ecc/Scanner.cpp | 2211 -------------------------- Sources/Engine/Base/Scanner.cpp | 2037 ------------------------ Sources/Engine/Ska/smcPars.cpp | 1142 ------------- Sources/Engine/Ska/smcScan.cpp | 1869 ---------------------- Sources/SeriousSkaStudio/Scanner.cpp | 2146 ------------------------- 6 files changed, 9848 deletions(-) delete mode 100644 Scripts/PersistentSymbols.ini delete mode 100644 Sources/Ecc/Scanner.cpp delete mode 100644 Sources/Engine/Base/Scanner.cpp delete mode 100644 Sources/Engine/Ska/smcPars.cpp delete mode 100644 Sources/Engine/Ska/smcScan.cpp delete mode 100644 Sources/SeriousSkaStudio/Scanner.cpp diff --git a/Scripts/PersistentSymbols.ini b/Scripts/PersistentSymbols.ini deleted file mode 100644 index 1e6a134..0000000 --- a/Scripts/PersistentSymbols.ini +++ /dev/null @@ -1,443 +0,0 @@ -// automatically saved persistent symbols: -persistent extern user INDEX con_iLastLines=(INDEX)5; -tmp_af[0]=(FLOAT)0; -tmp_af[1]=(FLOAT)0; -tmp_af[2]=(FLOAT)0; -tmp_af[3]=(FLOAT)0; -tmp_af[4]=(FLOAT)0; -tmp_af[5]=(FLOAT)0; -tmp_af[6]=(FLOAT)0; -tmp_af[7]=(FLOAT)0; -tmp_af[8]=(FLOAT)0; -tmp_af[9]=(FLOAT)0; -tmp_ai[0]=(INDEX)0; -tmp_ai[1]=(INDEX)0; -tmp_ai[2]=(INDEX)0; -tmp_ai[3]=(INDEX)0; -tmp_ai[4]=(INDEX)0; -tmp_ai[5]=(INDEX)0; -tmp_ai[6]=(INDEX)0; -tmp_ai[7]=(INDEX)0; -tmp_ai[8]=(INDEX)0; -tmp_ai[9]=(INDEX)0; -persistent extern user INDEX tmp_i=(INDEX)0; -persistent extern user FLOAT tmp_fAdd=(FLOAT)0; -persistent extern user INDEX fil_bPreferZips=(INDEX)0; -persistent extern user INDEX ogl_bUseCompiledVertexArrays=(INDEX)101; -persistent extern user INDEX ogl_bExclusive=(INDEX)1; -persistent extern user INDEX ogl_bAllowQuadArrays=(INDEX)0; -persistent extern user INDEX ogl_iTextureCompressionType=(INDEX)1; -persistent extern user INDEX ogl_iMaxBurstSize=(INDEX)0; -persistent extern user INDEX ogl_bGrabDepthBuffer=(INDEX)0; -persistent extern user INDEX ogl_iFinish=(INDEX)1; -persistent extern user INDEX ogl_iTBufferEffect=(INDEX)0; -persistent extern user INDEX ogl_iTBufferSamples=(INDEX)2; -persistent extern user INDEX ogl_bTruformLinearNormals=(INDEX)1; -persistent extern user INDEX ogl_bAlternateClipPlane=(INDEX)0; -persistent extern user INDEX d3d_bUseHardwareTnL=(INDEX)1; -persistent extern user INDEX d3d_iMaxBurstSize=(INDEX)0; -persistent extern user INDEX d3d_iVertexBuffersSize=(INDEX)1024; -persistent extern user INDEX d3d_iVertexRangeTreshold=(INDEX)99; -persistent extern user INDEX d3d_bAlternateDepthReads=(INDEX)0; -persistent extern INDEX d3d_bFastUpload=(INDEX)1; -persistent extern user INDEX d3d_iFinish=(INDEX)0; -persistent extern user INDEX gap_iUseTextureUnits=(INDEX)4; -persistent extern user INDEX gap_iTextureFiltering=(INDEX)21; -persistent extern user INDEX gap_iTextureAnisotropy=(INDEX)1; -persistent extern user FLOAT gap_fTextureLODBias=(FLOAT)0; -persistent extern user INDEX gap_bAllowGrayTextures=(INDEX)1; -persistent extern user INDEX gap_bAllowSingleMipmap=(INDEX)1; -persistent extern user INDEX gap_bOptimizeStateChanges=(INDEX)1; -persistent extern user INDEX gap_iOptimizeDepthReads=(INDEX)1; -persistent extern user INDEX gap_iOptimizeClipping=(INDEX)2; -persistent extern user INDEX gap_iSwapInterval=(INDEX)0; -persistent extern user INDEX gap_iRefreshRate=(INDEX)0; -persistent extern user INDEX gap_iDithering=(INDEX)2; -persistent extern user INDEX gap_bForceTruform=(INDEX)0; -persistent extern user INDEX gap_iTruformLevel=(INDEX)0; -persistent extern user INDEX gap_iDepthBits=(INDEX)0; -persistent extern user INDEX gap_iStencilBits=(INDEX)0; -persistent extern user FLOAT mdl_fLODMul=(FLOAT)1; -persistent extern user FLOAT mdl_fLODAdd=(FLOAT)0; -persistent extern user INDEX mdl_iLODDisappear=(INDEX)1; -persistent extern user INDEX mdl_bRenderDetail=(INDEX)1; -persistent extern user INDEX mdl_bRenderSpecular=(INDEX)1; -persistent extern user INDEX mdl_bRenderReflection=(INDEX)1; -persistent extern user INDEX mdl_bAllowOverbright=(INDEX)1; -persistent extern user INDEX mdl_bFineQuality=(INDEX)1; -persistent extern user INDEX mdl_iShadowQuality=(INDEX)1; -persistent extern user FLOAT ska_fLODMul=(FLOAT)1; -persistent extern user FLOAT ska_fLODAdd=(FLOAT)0; -persistent extern user FLOAT gfx_tmProbeDecay=(FLOAT)30; -persistent extern user INDEX gfx_iProbeSize=(INDEX)256; -persistent extern user INDEX gfx_bClearScreen=(INDEX)0; -persistent extern user INDEX gfx_bDisableMultiMonSupport=(INDEX)1; -persistent extern user INDEX gfx_bDisableWindowsKeys=(INDEX)1; -persistent extern user INDEX gfx_bDecoratedText=(INDEX)1; -persistent extern user INDEX tex_iNormalQuality=(INDEX)22; -persistent extern user INDEX tex_iAnimationQuality=(INDEX)11; -persistent extern user INDEX tex_bFineEffect=(INDEX)0; -persistent extern user INDEX tex_bFineFog=(INDEX)1; -persistent extern user INDEX tex_iNormalSize=(INDEX)9; -persistent extern user INDEX tex_iAnimationSize=(INDEX)7; -persistent extern user INDEX tex_iEffectSize=(INDEX)7; -persistent extern user INDEX tex_iFogSize=(INDEX)7; -persistent extern user INDEX tex_bCompressAlphaChannel=(INDEX)0; -persistent extern user INDEX tex_bAlternateCompression=(INDEX)0; -persistent extern user INDEX tex_bDynamicMipmaps=(INDEX)0; -persistent extern user INDEX tex_iDithering=(INDEX)3; -persistent extern user INDEX tex_iFiltering=(INDEX)0; -persistent extern user INDEX tex_iEffectFiltering=(INDEX)4; -persistent extern user INDEX tex_bProgressiveFilter=(INDEX)0; -persistent extern user INDEX shd_iStaticSize=(INDEX)8; -persistent extern user INDEX shd_iDynamicSize=(INDEX)8; -persistent extern user INDEX shd_bFineQuality=(INDEX)1; -persistent extern user INDEX shd_iAllowDynamic=(INDEX)1; -persistent extern user INDEX shd_bDynamicMipmaps=(INDEX)1; -persistent extern user INDEX shd_iFiltering=(INDEX)3; -persistent extern user INDEX shd_iDithering=(INDEX)1; -persistent extern user FLOAT shd_tmFlushDelay=(FLOAT)30; -persistent extern user FLOAT shd_fCacheSize=(FLOAT)8; -persistent extern user INDEX shd_bCacheAll=(INDEX)0; -persistent extern user INDEX shd_bAllowFlats=(INDEX)1; -persistent extern INDEX shd_iForceFlats=(INDEX)0; -persistent extern user INDEX gfx_iLensFlareQuality=(INDEX)3; -persistent extern user INDEX wld_bTextureLayers=(INDEX)111; -persistent extern user INDEX wld_bRenderMirrors=(INDEX)1; -persistent extern user FLOAT wld_fEdgeOffsetI=(FLOAT)0; -persistent extern user FLOAT wld_fEdgeAdjustK=(FLOAT)1; -persistent extern user INDEX wld_iDetailRemovingBias=(INDEX)3; -persistent extern user INDEX wed_bUseBaseForReplacement=(INDEX)0; -persistent extern user INDEX tex_iHueShift=(INDEX)0; -persistent extern user FLOAT tex_fSaturation=(FLOAT)1; -persistent extern user INDEX shd_iHueShift=(INDEX)0; -persistent extern user FLOAT shd_fSaturation=(FLOAT)1; -persistent extern user INDEX gfx_iHueShift=(INDEX)0; -persistent extern user FLOAT gfx_fSaturation=(FLOAT)1; -persistent extern user FLOAT gfx_fBrightness=(FLOAT)0; -persistent extern user FLOAT gfx_fContrast=(FLOAT)1; -persistent extern user FLOAT gfx_fGamma=(FLOAT)1; -persistent extern user FLOAT gfx_fBiasR=(FLOAT)1; -persistent extern user FLOAT gfx_fBiasG=(FLOAT)1; -persistent extern user FLOAT gfx_fBiasB=(FLOAT)1; -persistent extern user INDEX gfx_iLevels=(INDEX)256; -persistent extern user INDEX gfx_iStereo=(INDEX)0; -persistent extern user INDEX gfx_bStereoInvert=(INDEX)0; -persistent extern user INDEX gfx_iStereoOffset=(INDEX)10; -persistent extern user FLOAT gfx_fStereoSeparation=(FLOAT)0.25; -persistent extern user FLOAT snd_fEarsDistance=(FLOAT)0.2; -persistent extern user FLOAT snd_fDelaySoundSpeed=(FLOAT)1e+010; -persistent extern user FLOAT snd_fDopplerSoundSpeed=(FLOAT)330; -persistent extern user FLOAT snd_fPanStrength=(FLOAT)0.1; -persistent extern user FLOAT snd_fLRFilter=(FLOAT)3; -persistent extern user FLOAT snd_fBFilter=(FLOAT)5; -persistent extern user FLOAT snd_fUFilter=(FLOAT)1; -persistent extern user FLOAT snd_fDFilter=(FLOAT)3; -persistent extern user FLOAT snd_fSoundVolume=(FLOAT)1; -persistent extern user FLOAT snd_fMusicVolume=(FLOAT)1; -persistent extern user FLOAT snd_fNormalizer=(FLOAT)0.9; -persistent extern user FLOAT snd_tmMixAhead=(FLOAT)0.2; -persistent extern user INDEX snd_iInterface=(INDEX)1; -persistent extern user INDEX snd_iDevice=(INDEX)-1; -persistent extern user INDEX snd_iFormat=(INDEX)3; -persistent extern user INDEX snd_iMaxExtraChannels=(INDEX)32; -persistent extern user INDEX snd_iMaxOpenRetries=(INDEX)3; -persistent extern user FLOAT snd_tmOpenFailDelay=(FLOAT)0.5; -persistent extern user FLOAT snd_fEAXPanning=(FLOAT)0; -persistent extern user INDEX gam_bPretouch=(INDEX)0; -persistent extern user CTString cmd_cmdOnTick=""; -persistent extern user CTString cmd_cmdOnChat=""; -persistent extern user INDEX ent_bReportSpawnInWall=(INDEX)0; -persistent extern user FLOAT ser_tmSyncCheckFrequency=(FLOAT)1; -persistent extern user INDEX ser_iSyncCheckBuffer=(INDEX)60; -persistent extern user INDEX cli_bLerpActions=(INDEX)0; -persistent extern user INDEX cli_bReportPredicted=(INDEX)0; -persistent extern user INDEX net_iExactTimer=(INDEX)2; -persistent extern user CTString net_strLocalHost=""; -persistent extern user CTString net_strLocationCode=""; -persistent extern user INDEX ser_iExtensiveSyncCheck=(INDEX)0; -persistent extern user INDEX net_bLookupHostNames=(INDEX)0; -persistent extern user INDEX net_iCompression=(INDEX)1; -persistent extern user INDEX net_bReportPackets=(INDEX)0; -persistent extern user INDEX net_iMaxSendRetries=(INDEX)10; -persistent extern user FLOAT net_fSendRetryWait=(FLOAT)0.5; -persistent extern user INDEX net_bReportTraffic=(INDEX)0; -persistent extern user INDEX net_bReportICMPErrors=(INDEX)0; -persistent extern user INDEX net_bReportMiscErrors=(INDEX)0; -persistent extern user INDEX net_bLerping=(INDEX)1; -persistent extern user INDEX ser_bClientsMayPause=(INDEX)1; -persistent extern user INDEX ser_bEnumeration=(INDEX)1; -persistent extern user INDEX ser_bPingGameAgent=(INDEX)1; -persistent extern user FLOAT ser_tmKeepAlive=(FLOAT)0.1; -persistent extern user FLOAT ser_tmPingUpdate=(FLOAT)3; -persistent extern user INDEX ser_bWaitFirstPlayer=(INDEX)0; -persistent extern user INDEX ser_iMaxAllowedBPS=(INDEX)8000; -persistent extern user CTString ser_strIPMask=""; -persistent extern user CTString ser_strNameMask=""; -persistent extern user INDEX ser_bInverseBanning=(INDEX)0; -persistent extern user CTString ser_strMOTD=""; -persistent extern user INDEX cli_bAutoAdjustSettings=(INDEX)0; -persistent extern user FLOAT cli_tmAutoAdjustThreshold=(FLOAT)2; -persistent extern user INDEX cli_bPrediction=(INDEX)0; -persistent extern user INDEX cli_iMaxPredictionSteps=(INDEX)10; -persistent extern user INDEX cli_bPredictIfServer=(INDEX)0; -persistent extern user INDEX cli_bPredictLocalPlayers=(INDEX)1; -persistent extern user INDEX cli_bPredictRemotePlayers=(INDEX)0; -persistent extern user FLOAT cli_fPredictEntitiesRange=(FLOAT)20; -persistent extern user FLOAT cli_fPredictionFilter=(FLOAT)0.5; -persistent extern user INDEX cli_iSendBehind=(INDEX)3; -persistent extern user INDEX cli_iPredictionFlushing=(INDEX)1; -persistent extern user INDEX cli_iBufferActions=(INDEX)1; -persistent extern user INDEX cli_iMaxBPS=(INDEX)4000; -persistent extern user INDEX cli_iMinBPS=(INDEX)100; -persistent extern user INDEX net_iGraphBuffer=(INDEX)100; -persistent extern user INDEX gam_iPrecachePolicy=(INDEX)1; -persistent extern user INDEX inp_iKeyboardReadingMethod=(INDEX)2; -persistent extern user INDEX inp_bAllowMouseAcceleration=(INDEX)1; -persistent extern user FLOAT inp_fMouseSensitivity=(FLOAT)1; -persistent extern user INDEX inp_bMousePrecision=(INDEX)0; -persistent extern user FLOAT inp_fMousePrecisionFactor=(FLOAT)4; -persistent extern user FLOAT inp_fMousePrecisionThreshold=(FLOAT)10; -persistent extern user FLOAT inp_fMousePrecisionTimeout=(FLOAT)0.25; -persistent extern user INDEX inp_bInvertMouse=(INDEX)0; -persistent extern user INDEX inp_bFilterMouse=(INDEX)0; -persistent extern user INDEX inp_bAllowPrescan=(INDEX)1; -persistent extern user INDEX inp_i2ndMousePort=(INDEX)0; -persistent extern user INDEX inp_bInvert2ndMouse=(INDEX)0; -persistent extern user INDEX inp_bFilter2ndMouse=(INDEX)0; -persistent extern user FLOAT inp_f2ndMouseSensitivity=(FLOAT)1; -persistent extern user INDEX inp_b2ndMousePrecision=(INDEX)0; -persistent extern user FLOAT inp_f2ndMousePrecisionFactor=(FLOAT)4; -persistent extern user FLOAT inp_f2ndMousePrecisionThreshold=(FLOAT)10; -persistent extern user FLOAT inp_f2ndMousePrecisionTimeout=(FLOAT)0.25; -persistent extern user INDEX inp_bMsgDebugger=(INDEX)0; -persistent extern user INDEX inp_iMButton4Up=(INDEX)131072; -persistent extern user INDEX inp_iMButton4Dn=(INDEX)131136; -persistent extern user INDEX inp_iMButton5Up=(INDEX)65536; -persistent extern user INDEX inp_iMButton5Dn=(INDEX)65568; -persistent extern user INDEX inp_ctJoysticksAllowed=(INDEX)8; -persistent extern user INDEX inp_bForceJoystickPolling=(INDEX)0; -persistent extern user INDEX inp_bAutoDisableJoysticks=(INDEX)0; -persistent extern user INDEX wed_bUseGenericTextureReplacement=(INDEX)0; -persistent extern user FLOAT ctl_tmComputerDoubleClick=(FLOAT)0.5; -persistent extern user FLOAT ctl_fButtonRotationSpeedH=(FLOAT)300; -persistent extern user FLOAT ctl_fButtonRotationSpeedP=(FLOAT)150; -persistent extern user FLOAT ctl_fButtonRotationSpeedB=(FLOAT)150; -persistent extern user FLOAT ctl_fAxisStrafingModifier=(FLOAT)1; -persistent extern user FLOAT cli_fPredictPlayersRange=(FLOAT)0; -persistent extern user FLOAT cli_fPredictItemsRange=(FLOAT)3; -persistent extern user FLOAT cli_tmPredictFoe=(FLOAT)10; -persistent extern user FLOAT cli_tmPredictAlly=(FLOAT)10; -persistent extern user FLOAT cli_tmPredictEnemy=(FLOAT)10; -persistent extern user INDEX hud_bShowLatency=(INDEX)0; -persistent extern user INDEX hud_iShowPlayers=(INDEX)-1; -persistent extern user INDEX hud_iSortPlayers=(INDEX)-1; -persistent extern user INDEX hud_bShowWeapon=(INDEX)1; -persistent extern user INDEX hud_bShowMessages=(INDEX)1; -persistent extern user FLOAT hud_fScaling=(FLOAT)1; -persistent extern user FLOAT hud_fOpacity=(FLOAT)0.9; -persistent extern user FLOAT hud_tmWeaponsOnScreen=(FLOAT)3; -persistent extern user FLOAT hud_tmLatencySnapshot=(FLOAT)1; -persistent extern user FLOAT plr_fBreathingStrength=(FLOAT)0; -persistent extern user INDEX hud_bShowMatchInfo=(INDEX)1; -wpn_fRecoilSpeed[0]=(FLOAT)0; -wpn_fRecoilSpeed[1]=(FLOAT)0; -wpn_fRecoilSpeed[2]=(FLOAT)0; -wpn_fRecoilSpeed[3]=(FLOAT)0; -wpn_fRecoilSpeed[4]=(FLOAT)0; -wpn_fRecoilSpeed[5]=(FLOAT)0; -wpn_fRecoilSpeed[6]=(FLOAT)0; -wpn_fRecoilSpeed[7]=(FLOAT)0; -wpn_fRecoilSpeed[8]=(FLOAT)0; -wpn_fRecoilSpeed[9]=(FLOAT)0; -wpn_fRecoilSpeed[10]=(FLOAT)0; -wpn_fRecoilSpeed[11]=(FLOAT)0; -wpn_fRecoilSpeed[12]=(FLOAT)0; -wpn_fRecoilSpeed[13]=(FLOAT)0; -wpn_fRecoilSpeed[14]=(FLOAT)0; -wpn_fRecoilSpeed[15]=(FLOAT)0; -wpn_fRecoilSpeed[16]=(FLOAT)0; -wpn_fRecoilLimit[0]=(FLOAT)0; -wpn_fRecoilLimit[1]=(FLOAT)0; -wpn_fRecoilLimit[2]=(FLOAT)0; -wpn_fRecoilLimit[3]=(FLOAT)0; -wpn_fRecoilLimit[4]=(FLOAT)0; -wpn_fRecoilLimit[5]=(FLOAT)0; -wpn_fRecoilLimit[6]=(FLOAT)0; -wpn_fRecoilLimit[7]=(FLOAT)0; -wpn_fRecoilLimit[8]=(FLOAT)0; -wpn_fRecoilLimit[9]=(FLOAT)0; -wpn_fRecoilLimit[10]=(FLOAT)0; -wpn_fRecoilLimit[11]=(FLOAT)0; -wpn_fRecoilLimit[12]=(FLOAT)0; -wpn_fRecoilLimit[13]=(FLOAT)0; -wpn_fRecoilLimit[14]=(FLOAT)0; -wpn_fRecoilLimit[15]=(FLOAT)0; -wpn_fRecoilLimit[16]=(FLOAT)0; -wpn_fRecoilDampUp[0]=(FLOAT)0; -wpn_fRecoilDampUp[1]=(FLOAT)0; -wpn_fRecoilDampUp[2]=(FLOAT)0; -wpn_fRecoilDampUp[3]=(FLOAT)0; -wpn_fRecoilDampUp[4]=(FLOAT)0; -wpn_fRecoilDampUp[5]=(FLOAT)0; -wpn_fRecoilDampUp[6]=(FLOAT)0; -wpn_fRecoilDampUp[7]=(FLOAT)0; -wpn_fRecoilDampUp[8]=(FLOAT)0; -wpn_fRecoilDampUp[9]=(FLOAT)0; -wpn_fRecoilDampUp[10]=(FLOAT)0; -wpn_fRecoilDampUp[11]=(FLOAT)0; -wpn_fRecoilDampUp[12]=(FLOAT)0; -wpn_fRecoilDampUp[13]=(FLOAT)0; -wpn_fRecoilDampUp[14]=(FLOAT)0; -wpn_fRecoilDampUp[15]=(FLOAT)0; -wpn_fRecoilDampUp[16]=(FLOAT)0; -wpn_fRecoilDampDn[0]=(FLOAT)0; -wpn_fRecoilDampDn[1]=(FLOAT)0; -wpn_fRecoilDampDn[2]=(FLOAT)0; -wpn_fRecoilDampDn[3]=(FLOAT)0; -wpn_fRecoilDampDn[4]=(FLOAT)0; -wpn_fRecoilDampDn[5]=(FLOAT)0; -wpn_fRecoilDampDn[6]=(FLOAT)0; -wpn_fRecoilDampDn[7]=(FLOAT)0; -wpn_fRecoilDampDn[8]=(FLOAT)0; -wpn_fRecoilDampDn[9]=(FLOAT)0; -wpn_fRecoilDampDn[10]=(FLOAT)0; -wpn_fRecoilDampDn[11]=(FLOAT)0; -wpn_fRecoilDampDn[12]=(FLOAT)0; -wpn_fRecoilDampDn[13]=(FLOAT)0; -wpn_fRecoilDampDn[14]=(FLOAT)0; -wpn_fRecoilDampDn[15]=(FLOAT)0; -wpn_fRecoilDampDn[16]=(FLOAT)0; -wpn_fRecoilOffset[0]=(FLOAT)0; -wpn_fRecoilOffset[1]=(FLOAT)0; -wpn_fRecoilOffset[2]=(FLOAT)0; -wpn_fRecoilOffset[3]=(FLOAT)0; -wpn_fRecoilOffset[4]=(FLOAT)0; -wpn_fRecoilOffset[5]=(FLOAT)0; -wpn_fRecoilOffset[6]=(FLOAT)0; -wpn_fRecoilOffset[7]=(FLOAT)0; -wpn_fRecoilOffset[8]=(FLOAT)0; -wpn_fRecoilOffset[9]=(FLOAT)0; -wpn_fRecoilOffset[10]=(FLOAT)0; -wpn_fRecoilOffset[11]=(FLOAT)0; -wpn_fRecoilOffset[12]=(FLOAT)0; -wpn_fRecoilOffset[13]=(FLOAT)0; -wpn_fRecoilOffset[14]=(FLOAT)0; -wpn_fRecoilOffset[15]=(FLOAT)0; -wpn_fRecoilOffset[16]=(FLOAT)0; -wpn_fRecoilFactorP[0]=(FLOAT)0; -wpn_fRecoilFactorP[1]=(FLOAT)0; -wpn_fRecoilFactorP[2]=(FLOAT)0; -wpn_fRecoilFactorP[3]=(FLOAT)0; -wpn_fRecoilFactorP[4]=(FLOAT)0; -wpn_fRecoilFactorP[5]=(FLOAT)0; -wpn_fRecoilFactorP[6]=(FLOAT)0; -wpn_fRecoilFactorP[7]=(FLOAT)0; -wpn_fRecoilFactorP[8]=(FLOAT)0; -wpn_fRecoilFactorP[9]=(FLOAT)0; -wpn_fRecoilFactorP[10]=(FLOAT)0; -wpn_fRecoilFactorP[11]=(FLOAT)0; -wpn_fRecoilFactorP[12]=(FLOAT)0; -wpn_fRecoilFactorP[13]=(FLOAT)0; -wpn_fRecoilFactorP[14]=(FLOAT)0; -wpn_fRecoilFactorP[15]=(FLOAT)0; -wpn_fRecoilFactorP[16]=(FLOAT)0; -wpn_fRecoilFactorZ[0]=(FLOAT)0; -wpn_fRecoilFactorZ[1]=(FLOAT)0; -wpn_fRecoilFactorZ[2]=(FLOAT)0; -wpn_fRecoilFactorZ[3]=(FLOAT)0; -wpn_fRecoilFactorZ[4]=(FLOAT)0; -wpn_fRecoilFactorZ[5]=(FLOAT)0; -wpn_fRecoilFactorZ[6]=(FLOAT)0; -wpn_fRecoilFactorZ[7]=(FLOAT)0; -wpn_fRecoilFactorZ[8]=(FLOAT)0; -wpn_fRecoilFactorZ[9]=(FLOAT)0; -wpn_fRecoilFactorZ[10]=(FLOAT)0; -wpn_fRecoilFactorZ[11]=(FLOAT)0; -wpn_fRecoilFactorZ[12]=(FLOAT)0; -wpn_fRecoilFactorZ[13]=(FLOAT)0; -wpn_fRecoilFactorZ[14]=(FLOAT)0; -wpn_fRecoilFactorZ[15]=(FLOAT)0; -wpn_fRecoilFactorZ[16]=(FLOAT)0; -persistent extern user FLOAT plr_fFOV=(FLOAT)90; -persistent extern user FLOAT plr_fFrontClipDistance=(FLOAT)0.25; -persistent extern user INDEX plr_bRenderPicked=(INDEX)0; -persistent extern user INDEX plr_bRenderPickedParticles=(INDEX)0; -persistent extern user INDEX plr_bOnlySam=(INDEX)0; -persistent extern user INDEX ent_bReportBrokenChains=(INDEX)0; -persistent extern user FLOAT ent_tmMentalIn=(FLOAT)0.5; -persistent extern user FLOAT ent_tmMentalOut=(FLOAT)0.75; -persistent extern user FLOAT ent_tmMentalFade=(FLOAT)0.5; -persistent extern user FLOAT gfx_fEnvParticlesDensity=(FLOAT)1; -persistent extern user FLOAT gfx_fEnvParticlesRange=(FLOAT)1; -persistent extern user INDEX hud_bCrosshairFixed=(INDEX)0; -persistent extern user INDEX hud_bCrosshairColoring=(INDEX)1; -persistent extern user FLOAT hud_fCrosshairScale=(FLOAT)1; -persistent extern user FLOAT hud_fCrosshairRatio=(FLOAT)0.5; -persistent extern user FLOAT hud_fCrosshairOpacity=(FLOAT)1; -persistent extern user INDEX hud_bShowPlayerName=(INDEX)1; -persistent extern user INDEX hud_bShowCoords=(INDEX)0; -persistent extern user FLOAT plr_tmSnoopingTime=(FLOAT)1; -persistent extern user FLOAT plr_tmSnoopingDelay=(FLOAT)1; -persistent extern user FLOAT inp_fIFeelGain=(FLOAT)1; -persistent extern INDEX sam_bFullScreen=(INDEX)0; -persistent extern INDEX sam_iScreenSizeI=(INDEX)1024; -persistent extern INDEX sam_iScreenSizeJ=(INDEX)768; -persistent extern INDEX sam_iDisplayDepth=(INDEX)0; -persistent extern INDEX sam_iDisplayAdapter=(INDEX)0; -persistent extern INDEX sam_iGfxAPI=(INDEX)0; -persistent extern INDEX sam_bFirstStarted=(INDEX)0; -persistent extern INDEX sam_bAutoAdjustAudio=(INDEX)1; -persistent extern user INDEX sam_bWideScreen=(INDEX)0; -persistent extern user FLOAT sam_fPlayerOffset=(FLOAT)0; -persistent extern user INDEX sam_bAutoPlayDemos=(INDEX)1; -persistent extern user INDEX sam_iMaxFPSActive=(INDEX)500; -persistent extern user INDEX sam_iMaxFPSInactive=(INDEX)10; -persistent extern user INDEX sam_bPauseOnMinimize=(INDEX)1; -persistent extern user FLOAT sam_tmDisplayModeReport=(FLOAT)5; -persistent extern user CTString sam_strNetworkSettings=""; -persistent extern user CTString sam_strIntroLevel="Levels\\LevelsMP\\Intro.wld"; -persistent extern user CTString sam_strGameName="serioussamse"; -persistent extern INDEX sam_bShowAllLevels=(INDEX)0; -persistent extern INDEX sam_bMentalActivated=(INDEX)0; -persistent extern user INDEX sam_iVideoSetup=(INDEX)3; -persistent extern user INDEX hud_bShowTime=(INDEX)0; -persistent extern user INDEX hud_bShowClock=(INDEX)0; -persistent extern user INDEX dem_iProfileRate=(INDEX)5; -persistent extern user INDEX hud_bShowNetGraph=(INDEX)0; -persistent extern user FLOAT gam_fManaTransferFactor=(FLOAT)0.5; -persistent extern user FLOAT gam_fExtraEnemyStrength=(FLOAT)0; -persistent extern user FLOAT gam_fExtraEnemyStrengthPerPlayer=(FLOAT)0; -persistent extern user INDEX gam_iInitialMana=(INDEX)100; -persistent extern user INDEX gam_iScoreLimit=(INDEX)100000; -persistent extern user INDEX gam_iFragLimit=(INDEX)20; -persistent extern user INDEX gam_iTimeLimit=(INDEX)0; -persistent extern user INDEX gam_ctMaxPlayers=(INDEX)8; -persistent extern user INDEX gam_bWaitAllPlayers=(INDEX)0; -persistent extern user INDEX gam_bFriendlyFire=(INDEX)0; -persistent extern user INDEX gam_bPlayEntireGame=(INDEX)1; -persistent extern user INDEX gam_bWeaponsStay=(INDEX)1; -persistent extern user INDEX gam_bAmmoStays=(INDEX)1; -persistent extern user INDEX gam_bHealthArmorStays=(INDEX)1; -persistent extern user INDEX gam_bAllowHealth=(INDEX)1; -persistent extern user INDEX gam_bAllowArmor=(INDEX)1; -persistent extern user INDEX gam_bInfiniteAmmo=(INDEX)0; -persistent extern user INDEX gam_bRespawnInPlace=(INDEX)1; -persistent extern user INDEX gam_iCredits=(INDEX)-1; -persistent extern user FLOAT gam_tmSpawnInvulnerability=(FLOAT)3; -persistent extern user INDEX gam_iBlood=(INDEX)2; -persistent extern user INDEX gam_bGibs=(INDEX)1; -persistent extern user INDEX gam_bUseExtraEnemies=(INDEX)1; -persistent extern user INDEX gam_iStartDifficulty=(INDEX)1; -persistent extern user INDEX gam_iStartMode=(INDEX)0; -persistent extern user CTString gam_strGameAgentExtras=""; -persistent extern user CTString gam_strCustomLevel="Levels\\Default.wld"; -persistent extern user CTString gam_strSessionName="Unnamed session"; -persistent extern user CTString gam_strJoinAddress="serveraddress"; -persistent extern user INDEX gam_bEnableAdvancedObserving=(INDEX)0; -persistent extern user FLOAT con_fHeightFactor=(FLOAT)0.5; -persistent extern user FLOAT con_tmLastLines=(FLOAT)5; -persistent extern user INDEX wed_iMaxFPSActive=(INDEX)500; -persistent extern user FLOAT wed_fFrontClipDistance=(FLOAT)0.5; -persistent extern CTString sam_strLastRenderer="none"; -persistent extern INDEX sam_iLastSetup=(INDEX)1; diff --git a/Sources/Ecc/Scanner.cpp b/Sources/Ecc/Scanner.cpp deleted file mode 100644 index d31f14b..0000000 --- a/Sources/Ecc/Scanner.cpp +++ /dev/null @@ -1,2211 +0,0 @@ -#line 2 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.cpp" -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.85 95/04/24 10:48:47 vern Exp $ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include -#include - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN yy_start = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START ((yy_start - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 84 -#define YY_END_OF_BUFFER 85 -static yyconst short int yy_accept[415] = - { 0, - 0, 0, 0, 0, 76, 76, 85, 83, 81, 82, - 65, 83, 65, 83, 65, 66, 66, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 79, 79, 76, 75, 76, 81, 0, 70, 73, - 0, 71, 77, 0, 68, 66, 0, 0, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 9, 72, 72, 72, - 72, 72, 72, 72, 72, 5, 72, 72, 72, 72, - 33, 72, 72, 72, 72, 72, 72, 72, 72, 72, - - 72, 72, 72, 72, 72, 78, 76, 74, 0, 80, - 68, 68, 0, 69, 67, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 4, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 69, 72, 72, 44, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 35, 3, 72, 72, 72, 6, 7, 72, 72, - 72, 72, 72, 72, 36, 72, 20, 72, 39, 72, - - 72, 72, 72, 72, 72, 37, 72, 72, 72, 23, - 72, 10, 32, 72, 58, 72, 72, 72, 72, 45, - 72, 72, 72, 72, 46, 72, 47, 48, 72, 72, - 8, 72, 11, 19, 72, 72, 64, 72, 72, 27, - 72, 72, 72, 72, 72, 26, 72, 72, 72, 72, - 72, 72, 1, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 24, 72, 72, 12, 72, 72, 72, 38, 15, - 13, 2, 72, 72, 72, 72, 62, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 61, 72, 72, 72, - - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 25, 72, 14, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 40, 72, 72, 72, 72, 72, 17, 16, - 72, 22, 72, 72, 72, 72, 72, 72, 59, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 30, 34, 72, 72, 21, 18, 72, - 72, 72, 72, 72, 72, 42, 72, 72, 72, 72, - 72, 72, 29, 31, 28, 52, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 57, 72, 72, 72, - 50, 54, 53, 72, 72, 72, 72, 63, 72, 72, - - 72, 72, 41, 55, 56, 72, 49, 51, 72, 72, - 43, 72, 60, 0 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 4, 5, 1, 1, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, - 19, 18, 18, 18, 18, 18, 18, 20, 21, 22, - 23, 24, 25, 1, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 33, 33, 35, 36, 37, 38, 39, - 33, 40, 41, 42, 43, 33, 33, 44, 45, 33, - 46, 1, 47, 48, 33, 1, 49, 50, 51, 52, - - 53, 54, 55, 56, 57, 58, 33, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 33, 73, 74, 75, 76, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst int yy_meta[77] = - { 0, - 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, - 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, - 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 1, 1, 1, 3, 3, - 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 1, 1, 1, 1 - } ; - -static yyconst short int yy_base[423] = - { 0, - 0, 0, 74, 75, 76, 77, 511, 512, 508, 512, - 512, 504, 435, 499, 73, 73, 78, 469, 467, 68, - 0, 469, 64, 477, 434, 53, 439, 52, 65, 68, - 432, 437, 449, 20, 51, 444, 58, 61, 430, 73, - 83, 512, 479, 0, 512, 419, 491, 487, 512, 512, - 483, 512, 512, 487, 119, 128, 142, 0, 0, 108, - 451, 427, 426, 424, 450, 425, 421, 110, 444, 446, - 451, 442, 411, 89, 428, 92, 0, 410, 407, 421, - 410, 423, 422, 405, 408, 0, 409, 407, 414, 405, - 0, 408, 397, 400, 96, 393, 108, 403, 388, 390, - - 404, 391, 398, 397, 396, 512, 0, 0, 449, 512, - 147, 512, 150, 157, 0, 416, 414, 414, 391, 380, - 394, 407, 395, 375, 385, 374, 414, 396, 408, 405, - 374, 376, 381, 367, 369, 365, 377, 369, 367, 365, - 359, 370, 0, 373, 366, 359, 368, 367, 366, 352, - 120, 349, 348, 354, 347, 350, 345, 344, 350, 343, - 341, 355, 339, 346, 512, 374, 377, 0, 342, 344, - 347, 359, 347, 336, 337, 330, 352, 357, 348, 361, - 128, 0, 0, 324, 327, 321, 0, 0, 320, 321, - 317, 318, 316, 321, 0, 322, 0, 315, 0, 326, - - 325, 317, 311, 323, 317, 0, 322, 304, 321, 0, - 302, 0, 316, 315, 348, 324, 327, 297, 304, 0, - 309, 309, 307, 302, 161, 324, 0, 0, 308, 307, - 0, 294, 0, 0, 287, 288, 0, 295, 298, 0, - 280, 297, 283, 294, 285, 0, 294, 288, 278, 281, - 292, 271, 0, 310, 304, 287, 264, 148, 275, 296, - 296, 271, 302, 281, 280, 269, 259, 289, 266, 267, - 270, 0, 269, 259, 0, 263, 251, 251, 0, 0, - 0, 0, 264, 267, 256, 261, 0, 275, 254, 272, - 249, 259, 255, 257, 257, 250, 0, 254, 236, 253, - - 252, 274, 240, 231, 236, 230, 234, 228, 228, 235, - 0, 234, 0, 229, 252, 235, 225, 220, 227, 223, - 225, 222, 239, 230, 214, 217, 210, 234, 0, 0, - 208, 0, 208, 220, 219, 218, 211, 202, 0, 217, - 210, 199, 212, 197, 210, 209, 196, 198, 202, 205, - 238, 222, 189, 0, 0, 188, 187, 0, 0, 185, - 184, 190, 184, 204, 171, 183, 170, 147, 146, 197, - 186, 176, 0, 0, 0, 0, 146, 151, 142, 179, - 140, 144, 144, 185, 184, 173, 0, 162, 144, 145, - 0, 0, 0, 166, 128, 164, 163, 0, 149, 125, - - 136, 134, 0, 0, 0, 140, 0, 0, 121, 95, - 0, 89, 0, 512, 225, 229, 233, 237, 239, 243, - 247, 102 - } ; - -static yyconst short int yy_def[423] = - { 0, - 414, 1, 415, 415, 416, 416, 414, 414, 414, 414, - 414, 417, 414, 418, 414, 414, 414, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 414, 414, 420, 414, 420, 414, 417, 414, 414, - 418, 414, 414, 421, 414, 414, 414, 422, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - - 419, 419, 419, 419, 419, 414, 420, 420, 421, 414, - 414, 414, 414, 414, 422, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 414, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 0, 414, 414, 414, 414, 414, 414, - 414, 414 - } ; - -static yyconst short int yy_nxt[589] = - { 0, - 8, 9, 10, 11, 12, 13, 11, 14, 11, 11, - 11, 11, 11, 11, 11, 15, 16, 17, 17, 11, - 11, 11, 11, 11, 11, 18, 19, 20, 21, 21, - 22, 21, 21, 23, 21, 21, 21, 21, 21, 24, - 21, 21, 21, 21, 21, 11, 11, 11, 25, 21, - 26, 27, 28, 29, 21, 21, 30, 31, 21, 32, - 33, 34, 35, 21, 36, 37, 38, 39, 40, 41, - 21, 21, 11, 11, 11, 11, 10, 10, 45, 45, - 91, 46, 46, 53, 43, 43, 92, 55, 54, 56, - 56, 56, 55, 62, 56, 56, 56, 63, 70, 93, - - 71, 74, 57, 64, 115, 65, 66, 57, 67, 68, - 78, 75, 79, 99, 76, 94, 100, 82, 413, 96, - 80, 86, 81, 83, 97, 57, 84, 98, 87, 102, - 57, 104, 85, 412, 103, 111, 111, 111, 105, 116, - 125, 117, 55, 58, 56, 56, 56, 132, 57, 112, - 126, 135, 136, 113, 133, 113, 155, 57, 114, 114, - 114, 152, 153, 111, 111, 111, 114, 114, 114, 156, - 200, 57, 112, 114, 114, 114, 57, 112, 229, 263, - 57, 291, 201, 411, 410, 292, 409, 165, 408, 407, - 406, 405, 404, 403, 402, 401, 400, 230, 399, 57, - - 112, 398, 397, 396, 395, 394, 393, 392, 391, 264, - 165, 390, 389, 388, 387, 386, 385, 384, 383, 382, - 265, 381, 380, 266, 267, 42, 42, 42, 42, 44, - 44, 44, 44, 48, 379, 48, 48, 51, 378, 51, - 51, 59, 59, 107, 377, 107, 107, 109, 109, 109, - 109, 376, 375, 374, 373, 372, 371, 370, 369, 368, - 367, 366, 365, 364, 363, 362, 361, 360, 359, 358, - 357, 356, 355, 354, 353, 352, 351, 350, 349, 348, - 347, 346, 345, 344, 343, 342, 341, 340, 339, 338, - 337, 336, 335, 334, 333, 332, 331, 330, 329, 328, - - 327, 326, 325, 324, 323, 322, 321, 320, 319, 318, - 317, 316, 315, 314, 313, 312, 311, 310, 309, 308, - 307, 306, 305, 304, 303, 302, 301, 300, 299, 298, - 297, 296, 295, 294, 293, 290, 289, 288, 287, 286, - 285, 284, 283, 282, 281, 280, 279, 278, 277, 276, - 275, 274, 273, 272, 271, 270, 269, 268, 262, 261, - 260, 259, 258, 257, 256, 255, 254, 253, 252, 251, - 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, - 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, - 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, - - 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, - 208, 207, 206, 205, 204, 203, 202, 199, 198, 197, - 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, - 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, - 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, - 166, 110, 164, 163, 162, 161, 160, 159, 158, 157, - 154, 151, 150, 149, 148, 147, 146, 145, 144, 143, - 142, 141, 140, 139, 138, 137, 134, 131, 130, 129, - 128, 127, 124, 123, 122, 121, 120, 119, 118, 110, - 52, 49, 47, 108, 106, 101, 95, 90, 89, 88, - - 77, 73, 72, 69, 61, 60, 52, 50, 49, 47, - 414, 7, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 414, 414, 414, 414, 414 - } ; - -static yyconst short int yy_chk[589] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, - 34, 5, 6, 15, 3, 4, 34, 16, 15, 16, - 16, 16, 17, 20, 17, 17, 17, 20, 23, 35, - - 23, 26, 16, 20, 422, 20, 20, 17, 20, 20, - 28, 26, 28, 38, 26, 35, 38, 29, 412, 37, - 28, 30, 28, 29, 37, 16, 29, 37, 30, 40, - 17, 41, 29, 410, 40, 55, 55, 55, 41, 60, - 68, 60, 56, 16, 56, 56, 56, 74, 55, 55, - 68, 76, 76, 57, 74, 57, 97, 56, 57, 57, - 57, 95, 95, 111, 111, 111, 113, 113, 113, 97, - 151, 55, 55, 114, 114, 114, 111, 111, 181, 225, - 56, 258, 151, 409, 406, 258, 402, 114, 401, 400, - 399, 397, 396, 395, 394, 390, 389, 181, 388, 111, - - 111, 386, 385, 384, 383, 382, 381, 380, 379, 225, - 114, 378, 377, 372, 371, 370, 369, 368, 367, 366, - 225, 365, 364, 225, 225, 415, 415, 415, 415, 416, - 416, 416, 416, 417, 363, 417, 417, 418, 362, 418, - 418, 419, 419, 420, 361, 420, 420, 421, 421, 421, - 421, 360, 357, 356, 353, 352, 351, 350, 349, 348, - 347, 346, 345, 344, 343, 342, 341, 340, 338, 337, - 336, 335, 334, 333, 331, 328, 327, 326, 325, 324, - 323, 322, 321, 320, 319, 318, 317, 316, 315, 314, - 312, 310, 309, 308, 307, 306, 305, 304, 303, 302, - - 301, 300, 299, 298, 296, 295, 294, 293, 292, 291, - 290, 289, 288, 286, 285, 284, 283, 278, 277, 276, - 274, 273, 271, 270, 269, 268, 267, 266, 265, 264, - 263, 262, 261, 260, 259, 257, 256, 255, 254, 252, - 251, 250, 249, 248, 247, 245, 244, 243, 242, 241, - 239, 238, 236, 235, 232, 230, 229, 226, 224, 223, - 222, 221, 219, 218, 217, 216, 215, 214, 213, 211, - 209, 208, 207, 205, 204, 203, 202, 201, 200, 198, - 196, 194, 193, 192, 191, 190, 189, 186, 185, 184, - 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, - - 170, 169, 167, 166, 164, 163, 162, 161, 160, 159, - 158, 157, 156, 155, 154, 153, 152, 150, 149, 148, - 147, 146, 145, 144, 142, 141, 140, 139, 138, 137, - 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, - 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, - 116, 109, 105, 104, 103, 102, 101, 100, 99, 98, - 96, 94, 93, 92, 90, 89, 88, 87, 85, 84, - 83, 82, 81, 80, 79, 78, 75, 73, 72, 71, - 70, 69, 67, 66, 65, 64, 63, 62, 61, 54, - 51, 48, 47, 46, 43, 39, 36, 33, 32, 31, - - 27, 25, 24, 22, 19, 18, 14, 13, 12, 9, - 7, 414, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 414, 414, 414, 414, 414 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -char *yytext; -#line 1 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -#define INITIAL 0 -#line 2 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -// rcg10042001 Changed to specify Ecc directory... -#include "Ecc/StdH.h" -#include "Ecc/Main.h" -#include "Ecc/Parser.h" - -#define YY_NEVER_INTERACTIVE 1 - - -int iLastLine = -1; - -#define RETURN(symbolname) \ - if (iLastLine==_iLinesCt || !_bTrackLineInformation){\ - yylval = yytext; \ - } else { \ - char strLine[200]; \ - sprintf(strLine, "\n#line %d \"%s\"\n", _iLinesCt, _strInputFileName);\ - yylval = SType(strLine)+yytext; \ - iLastLine=_iLinesCt; \ - } \ - return symbolname; - -char *_strCppBlock; - -#define COMMENT 1 - -#define CPPBLOCK 2 - -#line 660 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.cpp" - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#endif -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ - -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( yy_current_buffer->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 38 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" - - - /* standard cpp-keywords */ -#line 811 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.cpp" - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 415 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 512 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - - -do_action: /* This label is used only to access EOF actions. */ - - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yy_hold_char; - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; - goto yy_find_action; - -case 1: -YY_RULE_SETUP -#line 41 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_while);} - YY_BREAK -case 2: -YY_RULE_SETUP -#line 42 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_switch);} - YY_BREAK -case 3: -YY_RULE_SETUP -#line 43 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_case);} - YY_BREAK -case 4: -YY_RULE_SETUP -#line 44 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_for);} - YY_BREAK -case 5: -YY_RULE_SETUP -#line 45 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_if);} - YY_BREAK -case 6: -YY_RULE_SETUP -#line 46 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_else);} - YY_BREAK -case 7: -YY_RULE_SETUP -#line 47 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_enum);} - YY_BREAK -case 8: -YY_RULE_SETUP -#line 48 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_class);} - YY_BREAK -case 9: -YY_RULE_SETUP -#line 49 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_do);} - YY_BREAK -case 10: -YY_RULE_SETUP -#line 50 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_void);} - YY_BREAK -case 11: -YY_RULE_SETUP -#line 51 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_const);} - YY_BREAK -case 12: -YY_RULE_SETUP -#line 52 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_inline);} - YY_BREAK -case 13: -YY_RULE_SETUP -#line 53 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_static);} - YY_BREAK -case 14: -YY_RULE_SETUP -#line 54 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_virtual);} - YY_BREAK -case 15: -YY_RULE_SETUP -#line 55 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_return);} - YY_BREAK -case 16: -YY_RULE_SETUP -#line 56 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_autowait);} - YY_BREAK -case 17: -YY_RULE_SETUP -#line 57 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_autocall);} - YY_BREAK -case 18: -YY_RULE_SETUP -#line 58 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_waitevent);} - YY_BREAK -/* aditional keywords */ -case 19: -YY_RULE_SETUP -#line 61 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_event);} - YY_BREAK -case 20: -YY_RULE_SETUP -#line 62 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_name);} - YY_BREAK -case 21: -YY_RULE_SETUP -#line 63 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_thumbnail);} - YY_BREAK -case 22: -YY_RULE_SETUP -#line 64 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_features);} - YY_BREAK -case 23: -YY_RULE_SETUP -#line 65 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_uses);} - YY_BREAK -case 24: -YY_RULE_SETUP -#line 66 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_export);} - YY_BREAK -case 25: -YY_RULE_SETUP -#line 68 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_texture);} - YY_BREAK -case 26: -YY_RULE_SETUP -#line 69 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_sound);} - YY_BREAK -case 27: -YY_RULE_SETUP -#line 70 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_model);} - YY_BREAK -case 28: -YY_RULE_SETUP -#line 72 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_properties);} - YY_BREAK -case 29: -YY_RULE_SETUP -#line 73 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_components);} - YY_BREAK -case 30: -YY_RULE_SETUP -#line 74 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_functions);} - YY_BREAK -case 31: -YY_RULE_SETUP -#line 75 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_procedures);} - YY_BREAK -case 32: -YY_RULE_SETUP -#line 77 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_wait );} - YY_BREAK -case 33: -YY_RULE_SETUP -#line 78 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_on );} - YY_BREAK -case 34: -YY_RULE_SETUP -#line 79 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_otherwise);} - YY_BREAK -case 35: -YY_RULE_SETUP -#line 81 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_call );} - YY_BREAK -case 36: -YY_RULE_SETUP -#line 82 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_jump );} - YY_BREAK -case 37: -YY_RULE_SETUP -#line 83 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_stop );} - YY_BREAK -case 38: -YY_RULE_SETUP -#line 84 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_resume );} - YY_BREAK -case 39: -YY_RULE_SETUP -#line 85 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_pass );} - YY_BREAK -/* special data types */ -case 40: -YY_RULE_SETUP -#line 88 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_CTString);} - YY_BREAK -case 41: -YY_RULE_SETUP -#line 89 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_CTStringTrans);} - YY_BREAK -case 42: -YY_RULE_SETUP -#line 90 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_CTFileName);} - YY_BREAK -case 43: -YY_RULE_SETUP -#line 91 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_CTFileNameNoDep);} - YY_BREAK -case 44: -YY_RULE_SETUP -#line 92 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_BOOL);} - YY_BREAK -case 45: -YY_RULE_SETUP -#line 93 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_COLOR);} - YY_BREAK -case 46: -YY_RULE_SETUP -#line 94 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_FLOAT);} - YY_BREAK -case 47: -YY_RULE_SETUP -#line 95 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_INDEX);} - YY_BREAK -case 48: -YY_RULE_SETUP -#line 96 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_RANGE);} - YY_BREAK -case 49: -YY_RULE_SETUP -#line 97 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_CEntityPointer);} - YY_BREAK -case 50: -YY_RULE_SETUP -#line 98 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_CModelObject);} - YY_BREAK -case 51: -YY_RULE_SETUP -#line 99 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_CModelInstance);} - YY_BREAK -case 52: -YY_RULE_SETUP -#line 100 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_CAnimObject);} - YY_BREAK -case 53: -YY_RULE_SETUP -#line 101 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_CSoundObject);} - YY_BREAK -case 54: -YY_RULE_SETUP -#line 102 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_CPlacement3D);} - YY_BREAK -case 55: -YY_RULE_SETUP -#line 103 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_FLOATaabbox3D);} - YY_BREAK -case 56: -YY_RULE_SETUP -#line 104 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_FLOATmatrix3D);} - YY_BREAK -case 57: -YY_RULE_SETUP -#line 105 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_FLOATquat3D);} - YY_BREAK -case 58: -YY_RULE_SETUP -#line 106 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_ANGLE);}; - YY_BREAK -case 59: -YY_RULE_SETUP -#line 107 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_ANIMATION);}; - YY_BREAK -case 60: -YY_RULE_SETUP -#line 108 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_ILLUMINATIONTYPE);}; - YY_BREAK -case 61: -YY_RULE_SETUP -#line 109 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_FLOAT3D);}; - YY_BREAK -case 62: -YY_RULE_SETUP -#line 110 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_ANGLE3D);}; - YY_BREAK -case 63: -YY_RULE_SETUP -#line 111 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_FLOATplane3D);}; - YY_BREAK -case 64: -YY_RULE_SETUP -#line 112 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(k_FLAGS);}; - YY_BREAK -/* single character operators and punctuations */ -case 65: -YY_RULE_SETUP -#line 115 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ - RETURN(yytext[0]);} - YY_BREAK -/* constants */ -case 66: -YY_RULE_SETUP -#line 119 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ RETURN(c_int); } - YY_BREAK -case 67: -YY_RULE_SETUP -#line 120 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ RETURN(c_int)}; - YY_BREAK -case 68: -YY_RULE_SETUP -#line 121 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ RETURN(c_int); } - YY_BREAK -case 69: -YY_RULE_SETUP -#line 122 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ RETURN(c_int); } - YY_BREAK -case 70: -YY_RULE_SETUP -#line 123 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ RETURN(c_string); } - YY_BREAK -case 71: -YY_RULE_SETUP -#line 124 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ RETURN(c_char); } - YY_BREAK -/* identifier */ -case 72: -YY_RULE_SETUP -#line 127 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{RETURN(identifier);} - YY_BREAK -/* specially bracketed cpp blocks */ -case 73: -YY_RULE_SETUP -#line 130 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ - char strLine[80]; - sprintf(strLine, "#line %d \"%s\"\n", _iLinesCt, _strInputFileName ); - _strCppBlock = strdup(strLine); - BEGIN(CPPBLOCK); -} - YY_BREAK -case 74: -YY_RULE_SETUP -#line 136 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ - BEGIN(INITIAL); - yylval = SType(_strCppBlock); - return cppblock; -} - YY_BREAK -case 75: -YY_RULE_SETUP -#line 141 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ - _iLinesCt++; - _strCppBlock = (SType(_strCppBlock)+yytext).strString; - } - YY_BREAK -case 76: -YY_RULE_SETUP -#line 145 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ - _strCppBlock = (SType(_strCppBlock)+yytext).strString; -} - YY_BREAK -/* eat up comments */ -case 77: -YY_RULE_SETUP -#line 150 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ BEGIN(COMMENT); } - YY_BREAK -case 78: -YY_RULE_SETUP -#line 151 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ BEGIN(INITIAL); } - YY_BREAK -case 79: -YY_RULE_SETUP -#line 152 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{} - YY_BREAK -case 80: -YY_RULE_SETUP -#line 153 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ _iLinesCt++; } - YY_BREAK -/* eat up whitespace */ -case 81: -YY_RULE_SETUP -#line 156 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ -} - YY_BREAK -/* eat up linefeeds and count lines in all conditions */ -case 82: -YY_RULE_SETUP -#line 159 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ - _iLinesCt++; - } - YY_BREAK -/* for all unrecognized characters */ -case 83: -YY_RULE_SETUP -#line 163 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -{ - // report an error - char strError[80]; - sprintf(strError, "Unrecognized character '%c' (ASCII 0x%02x)\n", - yytext[0], yytext[0] ); - yyerror(strError); -} - YY_BREAK -case 84: -YY_RULE_SETUP -#line 171 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" -ECHO; - YY_BREAK -#line 1348 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.cpp" -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMENT): -case YY_STATE_EOF(CPPBLOCK): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yy_hold_char; - - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = yytext_ptr + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yy_c_buf_p; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - yy_did_buffer_switch_on_eof = 0; - - if ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->yy_ch_buf[yy_n_chars]; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->yy_ch_buf; - register char *source = yytext_ptr; - register int number_to_move, i; - int ret_val; - - if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) - { - /* We matched a singled characater, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = yy_current_buffer; - - int yy_c_buf_p_offset = - (int) (yy_c_buf_p - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yy_flex_realloc( (void *) b->yy_ch_buf, - b->yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = yy_current_buffer->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; - - return ret_val; - } - - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - -static yy_state_type yy_get_previous_state() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 415 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - } - - return yy_current_state; - } - - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - register int yy_is_jam; - register char *yy_cp = yy_c_buf_p; - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 415 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 414); - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = yy_n_chars + 2; - register char *dest = &yy_current_buffer->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - - yytext_ptr = yy_bp; - yy_hold_char = *yy_cp; - yy_c_buf_p = yy_cp; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#endif - { - int c; - - *yy_c_buf_p = yy_hold_char; - - if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - /* This was really a NUL. */ - *yy_c_buf_p = '\0'; - - else - { /* need more input */ - yytext_ptr = yy_c_buf_p; - ++yy_c_buf_p; - - switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - { - yy_c_buf_p = - yytext_ptr + YY_MORE_ADJ; - return EOF; - } - - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - break; - - case EOB_ACT_LAST_MATCH: -#ifdef __cplusplus - YY_FATAL_ERROR( - "unexpected last match in yyinput()" ); -#else - YY_FATAL_ERROR( - "unexpected last match in input()" ); -#endif - } - } - } - - c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ - *yy_c_buf_p = '\0'; /* preserve yytext */ - yy_hold_char = *++yy_c_buf_p; - - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - if ( yy_current_buffer == new_buffer ) - return; - - if ( yy_current_buffer ) - { - /* Flush out information for old buffer. */ - *yy_c_buf_p = yy_hold_char; - yy_current_buffer->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *str ) -#else -YY_BUFFER_STATE yy_scan_string( str ) -yyconst char *str; -#endif - { - int len; - for ( len = 0; str[len]; ++len ) - ; - - return yy_scan_bytes( str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); - } - - - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n - YY_MORE_ADJ; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 171 "D:\\SE1_GPL\\Sources\\Ecc\\\\Scanner.l" - - diff --git a/Sources/Engine/Base/Scanner.cpp b/Sources/Engine/Base/Scanner.cpp deleted file mode 100644 index f60f4a2..0000000 --- a/Sources/Engine/Base/Scanner.cpp +++ /dev/null @@ -1,2037 +0,0 @@ -#line 2 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.cpp" -#include "StdH.h" - -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.81 95/03/20 14:02:24 vern Exp $ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -//#ifdef c_plusplus -//#ifndef __cplusplus -//#define __cplusplus -//#endif -//#endif - -#if 1 //def __cplusplus - - #include - - /* Use prototypes in function declarations. */ - #define YY_USE_PROTOS - - /* The "const" storage-class-modifier is valid. */ - #define YY_USE_CONST - -#else /* ! __cplusplus */ - - #if __STDC__ - - #define YY_USE_PROTOS - #define YY_USE_CONST - - #endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN yy_start = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START ((yy_start - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( const char *str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( const char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -//static - void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, const char *, int )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( const char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 50 -#define YY_END_OF_BUFFER 51 -static yyconst short int yy_accept[165] = - { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, - 51, 49, 47, 48, 29, 49, 49, 29, 29, 49, - 29, 30, 30, 29, 29, 29, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 38, 29, 39, - 45, 45, 42, 40, 41, 4, 4, 48, 2, 5, - 5, 6, 49, 6, 5, 47, 24, 0, 34, 0, - 37, 27, 0, 0, 43, 0, 32, 30, 0, 0, - 26, 21, 23, 22, 25, 36, 36, 36, 36, 36, - 36, 36, 36, 18, 36, 36, 36, 36, 36, 36, - 28, 44, 0, 3, 0, 2, 5, 5, 5, 0, - - 5, 0, 34, 37, 35, 35, 0, 46, 32, 32, - 0, 33, 31, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 15, 36, 36, 5, 33, 36, 36, - 36, 36, 19, 36, 17, 36, 36, 16, 12, 10, - 36, 7, 8, 11, 0, 36, 36, 36, 36, 36, - 0, 20, 14, 36, 36, 36, 20, 1, 36, 9, - 36, 36, 13, 0 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 4, 5, 6, 1, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 21, 22, 23, - 24, 25, 26, 1, 27, 28, 29, 30, 31, 32, - 33, 33, 34, 33, 33, 35, 33, 36, 37, 33, - 33, 33, 38, 39, 33, 33, 33, 40, 33, 33, - 41, 42, 43, 44, 33, 1, 28, 28, 45, 46, - - 47, 48, 49, 50, 51, 33, 33, 52, 33, 53, - 54, 55, 33, 56, 57, 58, 59, 60, 33, 61, - 33, 33, 62, 63, 64, 65, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst int yy_meta[66] = - { 0, - 1, 1, 2, 2, 1, 2, 1, 1, 1, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, - 1, 2, 1, 1, 1, 1, 5, 5, 5, 5, - 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, - 1, 1, 1, 1, 5, 5, 5, 5, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 1, 1, 1, 1 - } ; - -static yyconst short int yy_base[179] = - { 0, - 0, 0, 63, 64, 65, 66, 68, 76, 81, 89, - 323, 324, 71, 324, 298, 75, 0, 324, 312, 278, - 76, 79, 85, 77, 295, 82, 0, 279, 282, 280, - 261, 36, 267, 60, 65, 256, 258, 324, 248, 324, - 324, 292, 324, 324, 324, 303, 116, 302, 324, 265, - 131, 324, 103, 324, 82, 132, 324, 108, 324, 109, - 0, 324, 296, 295, 324, 301, 122, 127, 141, 0, - 324, 324, 324, 324, 324, 0, 265, 265, 271, 247, - 242, 240, 245, 0, 251, 239, 237, 246, 245, 240, - 324, 324, 284, 324, 160, 324, 247, 121, 135, 137, - - 324, 142, 143, 0, 324, 278, 284, 324, 156, 324, - 148, 161, 0, 228, 258, 253, 226, 235, 234, 225, - 206, 187, 150, 0, 151, 159, 150, 324, 146, 162, - 160, 140, 148, 141, 0, 137, 144, 0, 0, 0, - 143, 0, 0, 0, 155, 143, 137, 143, 129, 130, - 134, 0, 0, 131, 114, 122, 324, 0, 118, 0, - 85, 32, 0, 324, 209, 215, 221, 227, 233, 235, - 241, 244, 250, 256, 262, 265, 271, 274 - } ; - -static yyconst short int yy_def[179] = - { 0, - 164, 1, 165, 165, 166, 166, 167, 167, 168, 168, - 164, 164, 164, 164, 164, 169, 170, 164, 164, 171, - 164, 164, 164, 164, 164, 164, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 164, 164, 164, - 164, 164, 164, 164, 164, 173, 173, 173, 164, 174, - 174, 164, 175, 164, 174, 164, 164, 169, 164, 169, - 176, 164, 164, 164, 164, 177, 164, 164, 164, 178, - 164, 164, 164, 164, 164, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 164, 164, 173, 164, 173, 164, 174, 174, 174, 175, - - 164, 175, 169, 176, 164, 164, 177, 164, 164, 164, - 164, 164, 178, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 175, 164, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 164, 172, 172, 172, 172, 172, - 164, 172, 172, 172, 172, 172, 164, 172, 172, 172, - 172, 172, 172, 0, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164 - } ; - -static yyconst short int yy_nxt[390] = - { 0, - 12, 13, 14, 13, 15, 16, 17, 18, 19, 20, - 18, 18, 18, 18, 18, 18, 18, 21, 22, 23, - 18, 18, 24, 25, 26, 18, 27, 27, 28, 27, - 27, 29, 27, 30, 27, 27, 27, 27, 27, 27, - 18, 12, 18, 18, 31, 27, 32, 27, 27, 33, - 34, 27, 27, 27, 35, 27, 27, 27, 36, 37, - 27, 38, 39, 40, 18, 14, 14, 14, 14, 47, - 48, 47, 56, 49, 56, 42, 42, 47, 48, 47, - 59, 49, 51, 52, 13, 97, 53, 81, 65, 163, - 51, 52, 13, 66, 53, 67, 82, 68, 68, 71, - - 72, 67, 54, 68, 68, 74, 75, 84, 101, 69, - 54, 86, 85, 59, 103, 69, 60, 95, 87, 95, - 88, 96, 55, 98, 97, 69, 44, 44, 45, 45, - 55, 69, 99, 56, 56, 56, 99, 162, 56, 70, - 109, 109, 101, 67, 102, 68, 68, 127, 59, 60, - 60, 145, 69, 110, 111, 101, 111, 69, 145, 112, - 112, 95, 98, 95, 161, 96, 112, 112, 69, 110, - 160, 159, 98, 69, 109, 109, 98, 158, 102, 112, - 112, 157, 156, 102, 60, 155, 69, 110, 154, 153, - 152, 102, 128, 150, 149, 148, 147, 144, 146, 143, - - 142, 141, 69, 110, 140, 151, 139, 138, 128, 41, - 41, 41, 41, 41, 41, 43, 43, 43, 43, 43, - 43, 46, 46, 46, 46, 46, 46, 50, 50, 50, - 50, 50, 50, 58, 58, 58, 58, 58, 58, 61, - 61, 63, 63, 137, 63, 63, 63, 76, 76, 76, - 93, 93, 93, 93, 93, 93, 97, 136, 97, 97, - 97, 97, 100, 100, 100, 100, 100, 100, 104, 104, - 104, 107, 107, 107, 107, 107, 107, 113, 113, 135, - 134, 133, 132, 131, 130, 129, 108, 105, 98, 94, - 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, - - 116, 115, 114, 108, 106, 105, 98, 94, 94, 92, - 91, 90, 89, 83, 80, 79, 78, 77, 73, 64, - 62, 57, 164, 11, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164 - } ; - -static yyconst short int yy_chk[390] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 4, 5, 6, 7, - 7, 7, 13, 7, 13, 3, 4, 8, 8, 8, - 16, 8, 9, 9, 9, 55, 9, 32, 21, 162, - 10, 10, 10, 21, 10, 22, 32, 22, 22, 24, - - 24, 23, 9, 23, 23, 26, 26, 34, 53, 22, - 10, 35, 34, 58, 60, 23, 16, 47, 35, 47, - 35, 47, 9, 55, 98, 22, 5, 6, 5, 6, - 10, 23, 51, 56, 51, 56, 99, 161, 99, 22, - 67, 67, 100, 68, 53, 68, 68, 102, 103, 58, - 60, 133, 67, 67, 69, 127, 69, 68, 145, 69, - 69, 95, 98, 95, 159, 95, 111, 111, 67, 67, - 156, 155, 51, 68, 109, 109, 99, 154, 100, 112, - 112, 151, 150, 102, 103, 149, 109, 109, 148, 147, - 146, 127, 112, 141, 137, 136, 134, 132, 133, 131, - - 130, 129, 109, 109, 126, 145, 125, 123, 112, 165, - 165, 165, 165, 165, 165, 166, 166, 166, 166, 166, - 166, 167, 167, 167, 167, 167, 167, 168, 168, 168, - 168, 168, 168, 169, 169, 169, 169, 169, 169, 170, - 170, 171, 171, 122, 171, 171, 171, 172, 172, 172, - 173, 173, 173, 173, 173, 173, 174, 121, 174, 174, - 174, 174, 175, 175, 175, 175, 175, 175, 176, 176, - 176, 177, 177, 177, 177, 177, 177, 178, 178, 120, - 119, 118, 117, 116, 115, 114, 107, 106, 97, 93, - 90, 89, 88, 87, 86, 85, 83, 82, 81, 80, - - 79, 78, 77, 66, 64, 63, 50, 48, 46, 42, - 39, 37, 36, 33, 31, 30, 29, 28, 25, 20, - 19, 15, 11, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -char *yytext; -#line 1 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -#define INITIAL 0 -#line 2 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -#include "ParsingSymbols.h" -#include "Parser.h" - -#include -#include -#include -#include -#include - -#include - -#define YY_DECL int yylex (YYSTYPE *lvalp) -#define yylval (*lvalp) - -int yywrap(void) -{ - // no more bufers - return 1; -}; - -static int _iBlockDepth = 0; -static int _iDummyDepth = 0; -static CTString _strCmd = ""; // currently parsed command -static int _ctCmdParam = 1; // current parameter index -static BOOL _bCmdParamCountErrorReported = FALSE; - -void TranscriptEsc(CTString &str) -{ - char *pchSrc = (char *)(const char *)str; - char *pchDst = (char *)(const char *)str; - // if quoted - if (pchDst[0] == '"') { - int len = strlen(pchDst); - pchDst[len-1] = 0; - memmove(pchDst, pchDst+1, len-1); - } - for (;;pchSrc++, pchDst++) { - if (*pchSrc==0) { - break; - } - if (*pchSrc!='\\') { - *pchDst = *pchSrc; - continue; - } - pchSrc++; - switch(*pchSrc) { - case 'n': *pchDst = 10; break; - case 'r': *pchDst = 13; break; - default: *pchDst = *pchSrc; break; - } - } - *pchDst=0; -} - -#define COMMENT 1 - -#define DUMMYBLOCK 2 - -#define INCLUDE 3 - -#define COMMAND 4 - -#line 591 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.cpp" - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifdef YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#endif -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ - -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( yy_current_buffer->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 75 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" - - - /*\0 yyterminate();*/ - - /* Include file parsing. */ -#line 720 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.cpp" - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 165 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 324 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - - -do_action: /* This label is used only to access EOF actions. */ - - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yy_hold_char; - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; - goto yy_find_action; - -case 1: -YY_RULE_SETUP -#line 80 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -BEGIN(INCLUDE); - YY_BREAK -case 2: -YY_RULE_SETUP -#line 82 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -/* eat the whitespace until first quote */ - YY_BREAK -case 3: -YY_RULE_SETUP -#line 83 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ /* get the include file name until second quote */ - if (ShellGetBufferStackDepth() >= SHELL_MAX_INCLUDE_LEVEL) { - _pShell->ErrorF("Script files nested too deeply"); - } - char strFileName[256]; - strcpy(strFileName, yytext); - strFileName[strlen(strFileName)-1] = 0; - - CTString strIncludeFile; - try { - strIncludeFile.Load_t(CTString(strFileName)); - ShellPushBuffer(strFileName, strIncludeFile, FALSE); - - } catch(char *strError) { - _pShell->ErrorF("Cannot load script file '%s': %s", yytext, strError); - } - BEGIN(INITIAL); -} - YY_BREAK -case 4: -YY_RULE_SETUP -#line 101 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ /* something unrecognized inside include statement */ - _pShell->ErrorF("Wrong syntax for include statement"); - BEGIN(INITIAL); -} - YY_BREAK -/* command parsing */ -case 5: -YY_RULE_SETUP -#line 107 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ // for each parameter - _ctCmdParam++; - CTString strParam = yytext; - TranscriptEsc(strParam); - // insert the parameter in the command string - CTString strParamNo = CTString(1, "%%%d", _ctCmdParam); - if (strParam.FindSubstr(strParamNo)!=-1) { - _pShell->ErrorF("Parameter substitution recursion detected!"); - } else { - INDEX ctFound=0; - for(;; ctFound++) { - if (!_strCmd.ReplaceSubstr(strParamNo, strParam)) { - break; - } - } - // if not found and parameter count error not reported yet - if (ctFound==0 && !_bCmdParamCountErrorReported) { - // report error - _bCmdParamCountErrorReported = TRUE; - _pShell->ErrorF("Too many parameters for command expansion"); - } - } -} - YY_BREAK -case 6: -YY_RULE_SETUP -#line 130 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ - // at the end of the command - - // switch to the new input buffer with that command - ShellPushBuffer(ShellGetBufferName(), _strCmd, FALSE); - BEGIN(INITIAL); -} - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMENT): -case YY_STATE_EOF(DUMMYBLOCK): -case YY_STATE_EOF(INCLUDE): -case YY_STATE_EOF(COMMAND): -#line 138 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ - if (ShellPopBuffer()) { - yyterminate(); - } -} - YY_BREAK -/* special data types */ -case 7: -YY_RULE_SETUP -#line 145 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return(k_FLOAT);} - YY_BREAK -case 8: -YY_RULE_SETUP -#line 146 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return(k_INDEX);} - YY_BREAK -case 9: -YY_RULE_SETUP -#line 147 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return(k_CTString);} - YY_BREAK -/* keywords */ -case 10: -YY_RULE_SETUP -#line 150 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return(k_void); } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 151 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return(k_const); } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 152 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return(k_user); } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 153 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return(k_persistent); } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 154 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return(k_extern); } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 155 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return(k_pre); } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 156 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return(k_post); } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 157 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return(k_help); } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 158 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return(k_if); } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 159 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return(k_else); } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 160 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return(k_else_if); } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 162 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return (LEQ); } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 163 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return (GEQ); } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 164 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return (EQ); } - YY_BREAK -case 24: -YY_RULE_SETUP -#line 165 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return (NEQ); } - YY_BREAK -case 25: -YY_RULE_SETUP -#line 167 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return (SHR); } - YY_BREAK -case 26: -YY_RULE_SETUP -#line 168 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return (SHL); } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 170 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return (LOGAND); } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 171 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return (LOGOR); } - YY_BREAK -/* single character operators and punctuations */ -case 29: -YY_RULE_SETUP -#line 174 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ - return(yytext[0]);} - YY_BREAK -/* constants */ -case 30: -YY_RULE_SETUP -#line 178 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ yylval.val.iIndex = atoi(yytext); return(c_int); } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 179 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ yylval.val.iIndex = strtoul(yytext+2, NULL, 16); return(c_int); } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 180 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ yylval.val.fFloat = (float) atof(yytext); return(c_float); } - YY_BREAK -case 33: -YY_RULE_SETUP -#line 181 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ yylval.val.fFloat = (float) atof(yytext); return(c_float); } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 182 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ - CTString &strNew = _shell_astrTempStrings.Push(); - // remove double-quotes - strNew = yytext; - // parse escape symbols and remove double quotes - TranscriptEsc(strNew); - yylval.val.strString = (const char*)strNew; - return(c_string); -} - YY_BREAK -case 35: -YY_RULE_SETUP -#line 191 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ return(c_char); } - YY_BREAK -/* identifier */ -case 36: -YY_RULE_SETUP -#line 194 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ - // get the symbol - yylval.pssSymbol = _pShell->GetSymbol(yytext, FALSE); - BOOL bCommand = FALSE; - // if it is string - if (_shell_ast[yylval.pssSymbol->ss_istType].st_sttType==STT_STRING) { - // get the value - CTString str = *(CTString*)yylval.pssSymbol->ss_pvValue; - // if the value tells that it is a command - if (str.RemovePrefix("!command ")) { - // parse the command - bCommand = TRUE; - _strCmd = str; - _ctCmdParam = 0; - _bCmdParamCountErrorReported = FALSE; - BEGIN(COMMAND); - } - } - // normally, just return the identifier - if (!bCommand) { - return(identifier); - } -} - YY_BREAK -case 37: -YY_RULE_SETUP -#line 217 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ // special case of identifier, used to bypass command parsing - // get the symbol - yylval.pssSymbol = _pShell->GetSymbol(yytext+1, FALSE); - return(identifier); -} - YY_BREAK -/* eat up or execute blocks */ -case 38: -YY_RULE_SETUP -#line 224 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ - _iBlockDepth++; - if (!_bExecNextBlock) { - _iDummyDepth++; - BEGIN(DUMMYBLOCK); - } - return block_beg; -} - YY_BREAK -case 39: -YY_RULE_SETUP -#line 233 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ - _iBlockDepth--; - if (_iBlockDepth<0) { - _pShell->ErrorF("Mismatched '}'"); - } - return block_end; -} - YY_BREAK -case 40: -YY_RULE_SETUP -#line 240 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ - _iBlockDepth++; - _iDummyDepth++; -} - YY_BREAK -case 41: -YY_RULE_SETUP -#line 244 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ - _iBlockDepth--; - _iDummyDepth--; - if (_iDummyDepth==0) { - BEGIN(INITIAL); - return block_end; - } -} - YY_BREAK -case 42: -YY_RULE_SETUP -#line 252 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{} - YY_BREAK -/* eat up comments */ -case 43: -YY_RULE_SETUP -#line 255 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ BEGIN(COMMENT); } - YY_BREAK -case 44: -YY_RULE_SETUP -#line 256 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ BEGIN(INITIAL); } - YY_BREAK -case 45: -YY_RULE_SETUP -#line 257 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{} - YY_BREAK -case 46: -YY_RULE_SETUP -#line 258 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ ShellCountOneLine(); } - YY_BREAK -/* eat up whitespace */ -case 47: -YY_RULE_SETUP -#line 262 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ -} - YY_BREAK -/* eat up linefeeds and count lines in all conditions */ -case 48: -YY_RULE_SETUP -#line 265 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ - ShellCountOneLine(); -} - YY_BREAK -/* for all unrecognized characters */ -case 49: -YY_RULE_SETUP -#line 270 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -{ - // report an error - _pShell->ErrorF("Unrecognized character '%c' (ASCII 0x%02x)", yytext[0], yytext[0] ); -} - YY_BREAK -case 50: -YY_RULE_SETUP -#line 275 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" -ECHO; - YY_BREAK -#line 1188 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.cpp" - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yy_hold_char; - - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = yytext_ptr + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yy_c_buf_p; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - yy_did_buffer_switch_on_eof = 0; - - if ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->yy_ch_buf[yy_n_chars]; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->yy_ch_buf; - register char *source = yytext_ptr; - register int number_to_move, i; - int ret_val; - - if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) - { - /* We matched a singled characater, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = yy_current_buffer; - - int yy_c_buf_p_offset = - (int) (yy_c_buf_p - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yy_flex_realloc( (void *) b->yy_ch_buf, - b->yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = yy_current_buffer->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; - - return ret_val; - } - - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - -static yy_state_type yy_get_previous_state() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 165 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - } - - return yy_current_state; - } - - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - register int yy_is_jam; - register char *yy_cp = yy_c_buf_p; - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 165 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 164); - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifdef YY_USE_PROTOS -//static - void yyunput( int c, register char *yy_bp ) -#else -//static - void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = yy_n_chars + 2; - register char *dest = &yy_current_buffer->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - - yytext_ptr = yy_bp; - yy_hold_char = *yy_cp; - yy_c_buf_p = yy_cp; - } - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#endif - { - int c; - - *yy_c_buf_p = yy_hold_char; - - if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - /* This was really a NUL. */ - *yy_c_buf_p = '\0'; - - else - { /* need more input */ - yytext_ptr = yy_c_buf_p; - ++yy_c_buf_p; - - switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - { - yy_c_buf_p = - yytext_ptr + YY_MORE_ADJ; - return EOF; - } - - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - break; - - case EOB_ACT_LAST_MATCH: -#ifdef __cplusplus - YY_FATAL_ERROR( - "unexpected last match in yyinput()" ); -#else - YY_FATAL_ERROR( - "unexpected last match in input()" ); -#endif - } - } - } - - c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ - *yy_c_buf_p = '\0'; /* preserve yytext */ - yy_hold_char = *++yy_c_buf_p; - - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - if ( yy_current_buffer == new_buffer ) - return; - - if ( yy_current_buffer ) - { - /* Flush out information for old buffer. */ - *yy_c_buf_p = yy_hold_char; - yy_current_buffer->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#ifdef YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#ifdef YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( const char *str ) -#else -YY_BUFFER_STATE yy_scan_string( str ) -const char *str; -#endif - { - int len; - for ( len = 0; str[len]; ++len ) - ; - - return yy_scan_bytes( str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( const char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -const char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( const char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); - } - - - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n - YY_MORE_ADJ; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, const char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -const char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - return (void *) realloc( ptr, size ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#ifdef YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 275 "D:\\SE1_GPL\\Sources\\Engine\\Base\\\\Scanner.l" - - diff --git a/Sources/Engine/Ska/smcPars.cpp b/Sources/Engine/Ska/smcPars.cpp deleted file mode 100644 index 6efa7c3..0000000 --- a/Sources/Engine/Ska/smcPars.cpp +++ /dev/null @@ -1,1142 +0,0 @@ - -/* A Bison parser, made from engine/ska/smcpars.y with Bison version GNU Bison version 1.24 - */ - -#define YYBISON 1 /* Identify Bison output. */ - -#define yyparse syyparse -#define yylex syylex -#define yyerror syyerror -#define yylval syylval -#define yychar syychar -#define yydebug syydebug -#define yynerrs syynerrs -#define c_float 258 -#define c_int 259 -#define c_string 260 -#define c_modelinstance 261 -#define k_PARENTBONE 262 -#define k_SE_SMC 263 -#define k_SE_END 264 -#define k_NAME 265 -#define k_TFNM 266 -#define k_MESH 267 -#define k_SKELETON 268 -#define k_ANIMSET 269 -#define K_ANIMATION 270 -#define k_TEXTURES 271 -#define k_OFFSET 272 -#define k_COLISION 273 -#define k_ALLFRAMESBBOX 274 -#define k_ANIMSPEED 275 -#define k_COLOR 276 - -#line 1 "engine/ska/smcpars.y" - -#include -#include -#include -#include -#include -#include -#include -#include "ParsingSmbs.h" - -extern BOOL bRememberSourceFN; -BOOL bOffsetAllreadySet = FALSE; -#line 15 "engine/ska/smcpars.y" - -#define YYERROR_VERBOSE 0 -// if error occurs in parsing -void syyerror(char *str) -{ - // just report the string - _pShell->ErrorF("%s", str); -}; - -#line 27 "engine/ska/smcpars.y" -typedef union { - int i; - float f; - const char *str; - CModelInstance *pmi; - float f6[6]; -} YYSTYPE; - -#ifndef YYLTYPE -typedef - struct yyltype - { - int timestamp; - int first_line; - int first_column; - int last_line; - int last_column; - char *text; - } - yyltype; - -#define YYLTYPE yyltype -#endif - -#include - -#ifndef __cplusplus -#ifndef __STDC__ -#define const -#endif -#endif - - - -#define YYFINAL 123 -#define YYFLAG -32768 -#define YYNTBASE 26 - -#define YYTRANSLATE(x) ((unsigned)(x) <= 276 ? yytranslate[x] : 55) - -static const char yytranslate[] = { 0, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 25, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 22, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 23, 2, 24, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21 -}; - -#if YYDEBUG != 0 -static const short yyprhs[] = { 0, - 0, 1, 10, 11, 14, 16, 18, 20, 22, 24, - 26, 28, 30, 31, 33, 37, 42, 43, 45, 47, - 50, 66, 67, 69, 83, 84, 87, 101, 102, 114, - 115, 122, 127, 130, 135, 137, 140, 144, 145, 147, - 151, 152, 155, 160, 161, 164, 169, 171, 173 -}; - -static const short yyrhs[] = { -1, - 38, 10, 5, 22, 27, 23, 28, 24, 0, 0, - 29, 28, 0, 42, 0, 44, 0, 45, 0, 48, - 0, 40, 0, 32, 0, 36, 0, 30, 0, 0, - 31, 0, 21, 4, 22, 0, 18, 23, 33, 24, - 0, 0, 34, 0, 35, 0, 34, 35, 0, 5, - 23, 54, 25, 54, 25, 54, 25, 54, 25, 54, - 25, 54, 22, 24, 0, 0, 37, 0, 19, 54, - 25, 54, 25, 54, 25, 54, 25, 54, 25, 54, - 22, 0, 0, 39, 38, 0, 17, 54, 25, 54, - 25, 54, 25, 54, 25, 54, 25, 54, 22, 0, - 0, 7, 5, 22, 38, 10, 5, 22, 41, 23, - 28, 24, 0, 0, 12, 11, 5, 22, 43, 50, - 0, 13, 11, 5, 22, 0, 14, 47, 0, 14, - 23, 46, 24, 0, 47, 0, 46, 47, 0, 11, - 5, 22, 0, 0, 49, 0, 15, 5, 22, 0, - 0, 50, 51, 0, 16, 23, 52, 24, 0, 0, - 52, 53, 0, 5, 11, 5, 22, 0, 3, 0, - 4, 0, 4, 0 -}; - -#endif - -#if YYDEBUG != 0 -static const short yyrline[] = { 0, - 72, 91, 95, 96, 100, 101, 102, 103, 104, 105, - 106, 107, 111, 112, 116, 124, 130, 131, 135, 136, - 140, 150, 151, 155, 164, 174, 181, 200, 225, 234, - 240, 243, 250, 251, 255, 256, 260, 268, 269, 273, - 285, 286, 290, 294, 295, 299, 306, 310, 317 -}; - -static const char * const yytname[] = { "$","error","$undefined.","c_float", -"c_int","c_string","c_modelinstance","k_PARENTBONE","k_SE_SMC","k_SE_END","k_NAME", -"k_TFNM","k_MESH","k_SKELETON","k_ANIMSET","K_ANIMATION","k_TEXTURES","k_OFFSET", -"k_COLISION","k_ALLFRAMESBBOX","k_ANIMSPEED","k_COLOR","';'","'{'","'}'","','", -"parent_model","@1","components","component","mdl_color_opt","mdl_color","colision_header", -"colision_opt","colision_array","colision","all_frames_bbox_opt","all_frames_bbox", -"offset_opt","offset","child_model","@2","mesh","@3","skeleton","animset_header", -"animset_array","animset","animation_opt","animation","opt_textures","textures", -"textures_array","texture","float_const","\37777777735\37777777735\37777777735\37777777735\37777777735\37777777735\37777777735\37777777735\37777777735\37777777735\37777777735\37777777735\37777777735\37777777735" -}; -#endif - -static const short yyr1[] = { 0, - 27, 26, 28, 28, 29, 29, 29, 29, 29, 29, - 29, 29, 30, 30, 31, 32, 33, 33, 34, 34, - 35, 36, 36, 37, 38, 38, 39, 41, 40, 43, - 42, 44, 45, 45, 46, 46, 47, 48, 48, 49, - 50, 50, 51, 52, 52, 53, 54, 54, -1 -}; - -static const short yyr2[] = { 0, - 0, 8, 0, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 1, 3, 4, 0, 1, 1, 2, - 15, 0, 1, 13, 0, 2, 13, 0, 11, 0, - 6, 4, 2, 4, 1, 2, 3, 0, 1, 3, - 0, 2, 4, 0, 2, 4, 1, 1, 1 -}; - -static const short yydefact[] = { 25, - 0, 0, 25, 47, 48, 0, 0, 26, 0, 0, - 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3, 12, 14, 10, - 11, 23, 9, 5, 6, 7, 8, 39, 0, 0, - 0, 0, 0, 0, 33, 0, 17, 0, 0, 2, - 4, 0, 25, 0, 0, 0, 0, 35, 40, 0, - 0, 18, 19, 0, 15, 0, 0, 30, 32, 37, - 34, 36, 0, 16, 20, 0, 0, 0, 41, 0, - 0, 0, 0, 31, 0, 0, 27, 28, 0, 42, - 0, 0, 0, 44, 0, 0, 3, 0, 0, 0, - 0, 0, 43, 45, 0, 0, 29, 0, 0, 0, - 0, 0, 0, 46, 0, 24, 0, 0, 0, 21, - 0, 0, 0 -}; - -static const short yydefgoto[] = { 121, - 14, 26, 27, 28, 29, 30, 61, 62, 63, 31, - 32, 2, 3, 33, 93, 34, 79, 35, 36, 57, - 45, 37, 38, 84, 90, 98, 104, 6 -}; - -static const short yypact[] = { -12, - 6, -4, -12,-32768,-32768, -18, 16,-32768, 6, -11, - 7,-32768, 6, 8, 9, 5, 6, 23, 19, 22, - 2, 30, 13, 6, 33, 14, 5,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 15, 17, - 36, 37, 39, 34,-32768, 24, 42, 25, 26,-32768, --32768, 6, -12, 27, 29, 31, 3,-32768,-32768, 35, - 32, 42,-32768, 6,-32768, 38, 44,-32768,-32768,-32768, --32768,-32768, 6,-32768,-32768, 40, 6, 52,-32768, 41, - 6, 45, 47, 43, 6, 48,-32768,-32768, 51,-32768, - 50, 6, 54,-32768, 6, 53, 5, -2, 55, 6, - 46, 49,-32768,-32768, 6, 56,-32768, 57, 59, 6, - 60, 6, 63,-32768, 62,-32768, 6, 66, 65,-32768, - 61, 79,-32768 -}; - -static const short yypgoto[] = {-32768, --32768, -26,-32768,-32768,-32768,-32768,-32768,-32768, 28,-32768, --32768, -1,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -28,-32768,-32768,-32768,-32768,-32768,-32768, -9 -}; - - -#define YYLAST 108 - - -static const short yytable[] = { 11, - 51, 8, 102, 15, 1, 7, 9, 39, 4, 5, - 12, 18, 43, 43, 48, 58, 19, 20, 21, 22, - 10, 103, 23, 24, 44, 25, 71, 40, 72, 41, - 16, 13, 42, 17, 46, 47, 49, 50, 53, 52, - 54, 55, 66, 56, 43, 59, 60, 65, 68, 64, - 69, 67, 70, 78, 76, 74, 83, 73, 89, 108, - 122, 111, 77, 80, 81, 85, 87, 82, 88, 107, - 101, 86, 92, 94, 95, 91, 97, 100, 123, 105, - 110, 114, 96, 112, 116, 99, 117, 119, 120, 75, - 106, 0, 0, 0, 0, 109, 0, 0, 0, 0, - 113, 0, 115, 0, 0, 0, 0, 118 -}; - -static const short yycheck[] = { 9, - 27, 3, 5, 13, 17, 10, 25, 17, 3, 4, - 22, 7, 11, 11, 24, 44, 12, 13, 14, 15, - 5, 24, 18, 19, 23, 21, 24, 5, 57, 11, - 23, 25, 11, 25, 5, 23, 4, 24, 22, 25, - 5, 5, 52, 5, 11, 22, 5, 22, 22, 25, - 22, 53, 22, 10, 64, 24, 5, 23, 16, 11, - 0, 5, 25, 73, 25, 25, 22, 77, 22, 24, - 97, 81, 25, 23, 25, 85, 23, 25, 0, 25, - 25, 22, 92, 25, 22, 95, 25, 22, 24, 62, - 100, -1, -1, -1, -1, 105, -1, -1, -1, -1, - 110, -1, 112, -1, -1, -1, -1, 117 -}; -/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "bison.simple" - -/* Skeleton output parser for bison, - Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -#undef YYERROR_VERBOSE -#ifndef alloca -#ifdef __GNUC__ -#define alloca __builtin_alloca -#else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) -#include -#else /* not sparc */ -#if defined (MSDOS) && !defined (__TURBOC__) -#include -#else /* not MSDOS, or __TURBOC__ */ -#if defined(_AIX) -#include - #pragma alloca -#else /* not MSDOS, __TURBOC__, or _AIX */ -#ifdef __hpux -#ifdef __cplusplus -extern "C" { -void *alloca (unsigned int); -}; -#else /* not __cplusplus */ -void *alloca (); -#endif /* not __cplusplus */ -#endif /* __hpux */ -#endif /* not _AIX */ -#endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc. */ -#endif /* not GNU C. */ -#endif /* alloca not defined. */ - -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ - -/* Note: there must be only one dollar sign in this file. - It is replaced by the list of actions, each action - as one case of the switch. */ - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY -2 -#define YYEOF 0 -#define YYACCEPT return(0) -#define YYABORT return(1) -#define YYERROR goto yyerrlab1 -/* Like YYERROR except do call yyerror. - This remains here temporarily to ease the - transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ -#define YYFAIL goto yyerrlab -#define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(token, value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { yychar = (token), yylval = (value); \ - yychar1 = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { yyerror ("syntax error: cannot back up"); YYERROR; } \ -while (0) - -#define YYTERROR 1 -#define YYERRCODE 256 - -#ifndef YYPURE -#define YYLEX yylex() -#endif - -#ifdef YYPURE -#ifdef YYLSP_NEEDED -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval, &yylloc) -#endif -#else /* not YYLSP_NEEDED */ -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval) -#endif -#endif /* not YYLSP_NEEDED */ -#endif - -/* If nonreentrant, generate the variables here */ - -#ifndef YYPURE - -int yychar; /* the lookahead symbol */ -YYSTYPE yylval; /* the semantic value of the */ - /* lookahead symbol */ - -#ifdef YYLSP_NEEDED -YYLTYPE yylloc; /* location data for the lookahead */ - /* symbol */ -#endif - -int yynerrs; /* number of parse errors so far */ -#endif /* not YYPURE */ - -#if YYDEBUG != 0 -int yydebug; /* nonzero means print parse trace */ -/* Since this is uninitialized, it does not stop multiple parsers - from coexisting. */ -#endif - -/* YYINITDEPTH indicates the initial size of the parser's stacks */ - -#ifndef YYINITDEPTH -#define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH is the maximum size the stacks can grow to - (effective only if the built-in stack extension method is used). */ - -#if YYMAXDEPTH == 0 -#undef YYMAXDEPTH -#endif - -#ifndef YYMAXDEPTH -#define YYMAXDEPTH 10000 -#endif - -/* Prevent warning if -Wstrict-prototypes. */ -#ifdef __GNUC__ -int yyparse (void); -#endif - -#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ -#define __yy_memcpy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT) -#else /* not GNU C or C++ */ -#ifndef __cplusplus - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (from, to, count) - char *from; - char *to; - int count; -{ - register char *f = from; - register char *t = to; - register int i = count; - - while (i-- > 0) - *t++ = *f++; -} - -#else /* __cplusplus */ - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (char *from, char *to, int count) -{ - register char *f = from; - register char *t = to; - register int i = count; - - while (i-- > 0) - *t++ = *f++; -} - -#endif -#endif - -#line 192 "bison.simple" - -/* The user can define YYPARSE_PARAM as the name of an argument to be passed - into yyparse. The argument should have type void *. - It should actually point to an object. - Grammar actions can access the variable by casting it - to the proper pointer type. */ - -#ifdef YYPARSE_PARAM -#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; -#else -#define YYPARSE_PARAM -#define YYPARSE_PARAM_DECL -#endif - -int -yyparse(YYPARSE_PARAM) - YYPARSE_PARAM_DECL -{ - register int yystate; - register int yyn; - register short *yyssp; - register YYSTYPE *yyvsp; - int yyerrstatus; /* number of tokens to shift before error messages enabled */ - int yychar1 = 0; /* lookahead token as an internal (translated) token number */ - - short yyssa[YYINITDEPTH]; /* the state stack */ - YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ - - short *yyss = yyssa; /* refer to the stacks thru separate pointers */ - YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ - -#ifdef YYLSP_NEEDED - YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ - YYLTYPE *yyls = yylsa; - YYLTYPE *yylsp; - -#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) -#else -#define YYPOPSTACK (yyvsp--, yyssp--) -#endif - - int yystacksize = YYINITDEPTH; - -#ifdef YYPURE - int yychar; - YYSTYPE yylval; - int yynerrs; -#ifdef YYLSP_NEEDED - YYLTYPE yylloc; -#endif -#endif - - YYSTYPE yyval; /* the variable used to return */ - /* semantic values from the action */ - /* routines */ - - int yylen; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Starting parse\n"); -#endif - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss - 1; - yyvsp = yyvs; -#ifdef YYLSP_NEEDED - yylsp = yyls; -#endif - -/* Push a new state, which is found in yystate . */ -/* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. */ -yynewstate: - - *++yyssp = yystate; - - if (yyssp >= yyss + yystacksize - 1) - { - /* Give user a chance to reallocate the stack */ - /* Use copies of these so that the &'s don't force the real ones into memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; -#ifdef YYLSP_NEEDED - YYLTYPE *yyls1 = yyls; -#endif - - /* Get the current used size of the three stacks, in elements. */ - int size = yyssp - yyss + 1; - -#ifdef yyoverflow - /* Each stack pointer address is followed by the size of - the data in use in that stack, in bytes. */ -#ifdef YYLSP_NEEDED - /* This used to be a conditional around just the two extra args, - but that might be undefined if yyoverflow is a macro. */ - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yyls1, size * sizeof (*yylsp), - &yystacksize); -#else - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yystacksize); -#endif - - yyss = yyss1; yyvs = yyvs1; -#ifdef YYLSP_NEEDED - yyls = yyls1; -#endif -#else /* no yyoverflow */ - /* Extend the stack our own way. */ - if (yystacksize >= YYMAXDEPTH) - { - yyerror("parser stack overflow"); - return 2; - } - yystacksize *= 2; - if (yystacksize > YYMAXDEPTH) - yystacksize = YYMAXDEPTH; - yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp)); - yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp)); -#ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp)); -#endif -#endif /* no yyoverflow */ - - yyssp = yyss + size - 1; - yyvsp = yyvs + size - 1; -#ifdef YYLSP_NEEDED - yylsp = yyls + size - 1; -#endif - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Stack size increased to %d\n", yystacksize); -#endif - - if (yyssp >= yyss + yystacksize - 1) - YYABORT; - } - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Entering state %d\n", yystate); -#endif - - goto yybackup; - yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to lookahead token. */ - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* yychar is either YYEMPTY or YYEOF - or a valid token in external form. */ - - if (yychar == YYEMPTY) - { -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Reading a token: "); -#endif - yychar = YYLEX; - } - - /* Convert token to internal form (in yychar1) for indexing tables with */ - - if (yychar <= 0) /* This means end of input. */ - { - yychar1 = 0; - yychar = YYEOF; /* Don't call YYLEX any more */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Now at end of input.\n"); -#endif - } - else - { - yychar1 = YYTRANSLATE(yychar); - -#if YYDEBUG != 0 - if (yydebug) - { - fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); - /* Give the individual parser a way to print the precise meaning - of a token, for further debugging info. */ -#ifdef YYPRINT - YYPRINT (stderr, yychar, yylval); -#endif - fprintf (stderr, ")\n"); - } -#endif - } - - yyn += yychar1; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) - goto yydefault; - - yyn = yytable[yyn]; - - /* yyn is what to do for this token type in this state. - Negative => reduce, -yyn is rule number. - Positive => shift, yyn is new state. - New state is final state => don't bother to shift, - just return success. - 0, or most negative number => error. */ - - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrlab; - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the lookahead token. */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); -#endif - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif - - /* count tokens shifted since error; after three, turn off error status. */ - if (yyerrstatus) yyerrstatus--; - - yystate = yyn; - goto yynewstate; - -/* Do the default action for the current state. */ -yydefault: - - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - -/* Do a reduction. yyn is the number of a rule to reduce with. */ -yyreduce: - yylen = yyr2[yyn]; - if (yylen > 0) - yyval = yyvsp[1-yylen]; /* implement default value of the action */ - -#if YYDEBUG != 0 - if (yydebug) - { - int i; - - fprintf (stderr, "Reducing via rule %d (line %d), ", - yyn, yyrline[yyn]); - - /* Print the symbols being reduced, and their result. */ - for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) - fprintf (stderr, "%s ", yytname[yyrhs[i]]); - fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); - } -#endif - - - switch (yyn) { - -case 1: -#line 73 "engine/ska/smcpars.y" -{ - if(_yy_mi==0) { - yyerror("_yy_mi = NULL"); - } - // create new model instance - // _yy_mi = CreateModelInstance($3); - _yy_mi->SetName(yyvsp[-1].str); - // set its offset - _yy_mi->SetOffset(yyvsp[-3].f6); - // mark offset as read - bOffsetAllreadySet = FALSE; - // check if flag to remember source file name is set - if(bRememberSourceFN) - { - // remember source file name - _yy_mi->mi_fnSourceFile = CTString(SMCGetBufferName()); - } -; - break;} -case 15: -#line 117 "engine/ska/smcpars.y" -{ - COLOR c = yyvsp[-1].i; - // _yy_mi->SetModelColor($2); -; - break;} -case 16: -#line 125 "engine/ska/smcpars.y" -{ - -; - break;} -case 21: -#line 141 "engine/ska/smcpars.y" -{ - FLOAT3D vMin = FLOAT3D(yyvsp[-12].f, yyvsp[-10].f, yyvsp[-8].f); - FLOAT3D vMax = FLOAT3D(yyvsp[-6].f,yyvsp[-4].f,yyvsp[-2].f); - // add new colision box to current model instance - _yy_mi->AddColisionBox(yyvsp[-14].str,vMin,vMax); -; - break;} -case 24: -#line 156 "engine/ska/smcpars.y" -{ - // add new colision box to current model instance - _yy_mi->mi_cbAllFramesBBox.SetMin(FLOAT3D(yyvsp[-11].f, yyvsp[-9].f, yyvsp[-7].f)); - _yy_mi->mi_cbAllFramesBBox.SetMax(FLOAT3D(yyvsp[-5].f,yyvsp[-3].f,yyvsp[-1].f)); -; - break;} -case 25: -#line 165 "engine/ska/smcpars.y" -{ - // set offset with default offset values - yyval.f6[0] = 0; - yyval.f6[1] = 0; - yyval.f6[2] = 0; - yyval.f6[3] = 0; - yyval.f6[4] = 0; - yyval.f6[5] = 0; -; - break;} -case 26: -#line 175 "engine/ska/smcpars.y" -{ - // return new offset - memcpy(yyval.f6,yyvsp[-1].f6,sizeof(float)*6); -; - break;} -case 27: -#line 182 "engine/ska/smcpars.y" -{ - // if offset is not set - if(!bOffsetAllreadySet) - { - // set offset - yyval.f6[0] = yyvsp[-11].f; - yyval.f6[1] = yyvsp[-9].f; - yyval.f6[2] = yyvsp[-7].f; - yyval.f6[3] = yyvsp[-5].f; - yyval.f6[4] = yyvsp[-3].f; - yyval.f6[5] = yyvsp[-1].f; - // mark it as set now - bOffsetAllreadySet = TRUE; - } -; - break;} -case 28: -#line 201 "engine/ska/smcpars.y" -{ - // get parent ID - int iParentBoneID = ska_FindStringInTable(yyvsp[-5].str); - if(iParentBoneID<0) iParentBoneID=0; - // remember current model instance in parent bone token - yyvsp[-6].pmi = _yy_mi; - // set _yy_mi as new child - _yy_mi = CreateModelInstance(yyvsp[-1].str); - // add child to parent model instance - yyvsp[-6].pmi->AddChild(_yy_mi); - // add offset - _yy_mi->SetOffset(yyvsp[-3].f6); - // set its parent bone - _yy_mi->SetParentBone(iParentBoneID); - // - bOffsetAllreadySet = FALSE; - // if flag to remember source file is set - if(bRememberSourceFN) - { - // remember source name - _yy_mi->mi_fnSourceFile = CTString(SMCGetBufferName()); - } -; - break;} -case 29: -#line 226 "engine/ska/smcpars.y" -{ - // set parent model instance to _yy_mi again - _yy_mi = yyvsp[-10].pmi; -; - break;} -case 30: -#line 235 "engine/ska/smcpars.y" -{ - // add mesh to current model instance - _yy_mi->AddMesh_t((CTString)yyvsp[-1].str); -; - break;} -case 32: -#line 244 "engine/ska/smcpars.y" -{ - // add skeleton to current model instance - _yy_mi->AddSkeleton_t((CTString)yyvsp[-1].str); -; - break;} -case 37: -#line 261 "engine/ska/smcpars.y" -{ - // add animset to curent model instnce - _yy_mi->AddAnimSet_t((CTString)yyvsp[-1].str); -; - break;} -case 40: -#line 274 "engine/ska/smcpars.y" -{ - // set new clear state in model instance - _yy_mi->NewClearState(1); - // get anim ID - INDEX iAnimID = ska_GetIDFromStringTable(yyvsp[-1].str); - // add animation to curent model instance - _yy_mi->AddAnimation(iAnimID,AN_LOOPING,1,0); -; - break;} -case 46: -#line 300 "engine/ska/smcpars.y" -{ - // add texture to current model instance - _yy_mi->AddTexture_t((CTString)yyvsp[-1].str,yyvsp[-3].str,NULL); -; - break;} -case 47: -#line 307 "engine/ska/smcpars.y" -{ - yyval.f = yyvsp[0].f; -; - break;} -case 48: -#line 311 "engine/ska/smcpars.y" -{ - yyval.f = (float)yyvsp[0].i; -; - break;} -case 49: -#line 318 "engine/ska/smcpars.y" -{ - yyval.i = yyvsp[0].i; -; - break;} -} - /* the action file gets copied in in place of this dollarsign */ -#line 487 "bison.simple" - - yyvsp -= yylen; - yyssp -= yylen; -#ifdef YYLSP_NEEDED - yylsp -= yylen; -#endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif - - *++yyvsp = yyval; - -#ifdef YYLSP_NEEDED - yylsp++; - if (yylen == 0) - { - yylsp->first_line = yylloc.first_line; - yylsp->first_column = yylloc.first_column; - yylsp->last_line = (yylsp-1)->last_line; - yylsp->last_column = (yylsp-1)->last_column; - yylsp->text = 0; - } - else - { - yylsp->last_line = (yylsp+yylen-1)->last_line; - yylsp->last_column = (yylsp+yylen-1)->last_column; - } -#endif - - /* Now "shift" the result of the reduction. - Determine what state that goes to, - based on the state we popped back to - and the rule number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTBASE] + *yyssp; - if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTBASE]; - - goto yynewstate; - -yyerrlab: /* here on detecting error */ - - if (! yyerrstatus) - /* If not already recovering from an error, report this error. */ - { - ++yynerrs; - -#ifdef YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (yyn > YYFLAG && yyn < YYLAST) - { - int size = 0; - char *msg; - int x, count; - - count = 0; - /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - size += strlen(yytname[x]) + 15, count++; - msg = (char *) malloc(size + 15); - if (msg != 0) - { - strcpy(msg, "parse error"); - - if (count < 5) - { - count = 0; - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - { - strcat(msg, count == 0 ? ", expecting `" : " or `"); - strcat(msg, yytname[x]); - strcat(msg, "'"); - count++; - } - } - yyerror(msg); - free(msg); - } - else - yyerror ("parse error; also virtual memory exceeded"); - } - else -#endif /* YYERROR_VERBOSE */ - yyerror("parse error"); - } - - goto yyerrlab1; -yyerrlab1: /* here on error raised explicitly by an action */ - - if (yyerrstatus == 3) - { - /* if just tried and failed to reuse lookahead token after an error, discard it. */ - - /* return failure if at end of input */ - if (yychar == YYEOF) - YYABORT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); -#endif - - yychar = YYEMPTY; - } - - /* Else will try to reuse lookahead token - after shifting the error token. */ - - yyerrstatus = 3; /* Each real token shifted decrements this */ - - goto yyerrhandle; - -yyerrdefault: /* current state does not do anything special for the error token. */ - -#if 0 - /* This is wrong; only states that explicitly want error tokens - should shift them. */ - yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ - if (yyn) goto yydefault; -#endif - -yyerrpop: /* pop the current state because it cannot handle the error token */ - - if (yyssp == yyss) YYABORT; - yyvsp--; - yystate = *--yyssp; -#ifdef YYLSP_NEEDED - yylsp--; -#endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "Error: state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif - -yyerrhandle: - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yyerrdefault; - - yyn += YYTERROR; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) - goto yyerrdefault; - - yyn = yytable[yyn]; - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrpop; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrpop; - - if (yyn == YYFINAL) - YYACCEPT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting error token, "); -#endif - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif - - yystate = yyn; - goto yynewstate; -} -#line 323 "engine/ska/smcpars.y" diff --git a/Sources/Engine/Ska/smcScan.cpp b/Sources/Engine/Ska/smcScan.cpp deleted file mode 100644 index 9aeacf5..0000000 --- a/Sources/Engine/Ska/smcScan.cpp +++ /dev/null @@ -1,1869 +0,0 @@ -#define yy_create_buffer syy_create_buffer -#define yy_delete_buffer syy_delete_buffer -#define yy_scan_buffer syy_scan_buffer -#define yy_scan_string syy_scan_string -#define yy_scan_bytes syy_scan_bytes -#define yy_flex_debug syy_flex_debug -#define yy_init_buffer syy_init_buffer -#define yy_flush_buffer syy_flush_buffer -#define yy_load_buffer_state syy_load_buffer_state -#define yy_switch_to_buffer syy_switch_to_buffer -#define yyin syyin -#define yyleng syyleng -#define yylex syylex -#define yyout syyout -#define yyrestart syyrestart -#define yytext syytext -#define yywrap syywrap - -#line 20 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.cpp" -#include - -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.81 95/03/20 14:02:24 vern Exp $ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -//#ifdef c_plusplus -//#ifndef __cplusplus -//#define __cplusplus -//#endif -//#endif - -#if 1 //def __cplusplus - - #include - - /* Use prototypes in function declarations. */ - #define YY_USE_PROTOS - - /* The "const" storage-class-modifier is valid. */ - #define YY_USE_CONST - -#else /* ! __cplusplus */ - - #if __STDC__ - - #define YY_USE_PROTOS - #define YY_USE_CONST - - #endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN yy_start = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START ((yy_start - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) syyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( const char *str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( const char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -//static - void syyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, const char *, int )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( const char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 33 -#define YY_END_OF_BUFFER 34 -static yyconst short int yy_accept[146] = - { 0, - 0, 0, 0, 0, 0, 0, 34, 32, 30, 31, - 32, 32, 20, 32, 32, 21, 21, 32, 32, 32, - 32, 32, 32, 32, 32, 28, 28, 19, 19, 31, - 17, 30, 0, 25, 0, 0, 21, 26, 0, 23, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 18, 0, 17, 25, 0, - 0, 29, 23, 23, 0, 24, 22, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, - 24, 0, 0, 0, 0, 6, 5, 0, 0, 0, - 0, 0, 0, 4, 0, 0, 0, 0, 0, 15, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 12, 0, 3, 2, 0, 0, 0, 0, - 0, 8, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 13, 0, 7, 10, 0, 9, 14, 0, 0, - 11, 0, 0, 16, 0 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 4, 1, 5, 6, 1, 1, 1, 1, 1, - 1, 7, 8, 9, 10, 11, 12, 13, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 1, 15, 1, - 1, 1, 1, 1, 16, 17, 18, 19, 20, 21, - 1, 22, 23, 1, 24, 25, 26, 27, 28, 29, - 1, 30, 31, 32, 33, 1, 1, 34, 1, 1, - 1, 35, 1, 1, 36, 1, 37, 37, 37, 37, - - 38, 39, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 40, - 1, 1, 41, 1, 42, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst int yy_meta[43] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 1, 2, 2, 2, 2, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, - 1, 1 - } ; - -static yyconst short int yy_base[152] = - { 0, - 0, 0, 40, 41, 47, 51, 221, 222, 55, 222, - 40, 197, 222, 47, 51, 51, 56, 41, 191, 198, - 201, 195, 199, 53, 58, 222, 210, 208, 78, 207, - 222, 70, 76, 222, 79, 184, 79, 222, 207, 82, - 96, 0, 184, 185, 182, 175, 179, 183, 173, 166, - 181, 166, 172, 186, 192, 222, 83, 222, 81, 178, - 192, 222, 87, 222, 84, 109, 0, 173, 167, 90, - 170, 171, 159, 169, 104, 163, 155, 160, 222, 160, - 222, 154, 96, 152, 152, 222, 222, 161, 153, 152, - 152, 157, 143, 222, 142, 158, 141, 99, 149, 222, - - 139, 138, 150, 150, 135, 136, 146, 138, 140, 130, - 141, 132, 222, 142, 222, 222, 119, 126, 125, 124, - 115, 222, 122, 114, 112, 112, 107, 222, 106, 109, - 115, 222, 106, 222, 222, 115, 222, 222, 111, 112, - 222, 87, 71, 222, 222, 148, 150, 152, 154, 156, - 44 - } ; - -static yyconst short int yy_def[152] = - { 0, - 145, 1, 146, 146, 147, 147, 145, 145, 145, 145, - 148, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 149, 149, 149, - 145, 145, 148, 145, 148, 145, 145, 145, 150, 145, - 145, 151, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 149, 145, 149, 145, 148, 145, - 150, 145, 145, 145, 145, 145, 151, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 0, 145, 145, 145, 145, 145, - 145 - } ; - -static yyconst short int yy_nxt[265] = - { 0, - 8, 9, 10, 9, 11, 12, 8, 8, 13, 14, - 8, 15, 16, 17, 13, 18, 8, 19, 8, 8, - 8, 8, 8, 8, 8, 20, 21, 22, 23, 8, - 24, 25, 8, 8, 8, 8, 8, 8, 8, 8, - 13, 13, 10, 10, 34, 67, 27, 27, 29, 30, - 29, 31, 29, 30, 29, 31, 32, 38, 32, 37, - 37, 40, 39, 37, 37, 43, 40, 44, 37, 37, - 41, 32, 50, 32, 35, 41, 51, 52, 53, 57, - 34, 57, 58, 59, 57, 34, 57, 58, 41, 40, - 42, 37, 37, 41, 63, 63, 66, 66, 41, 63, - - 63, 41, 64, 65, 144, 65, 41, 64, 66, 66, - 35, 97, 84, 35, 143, 35, 41, 85, 110, 41, - 64, 66, 66, 90, 41, 64, 98, 111, 142, 81, - 141, 140, 139, 138, 91, 137, 136, 135, 134, 133, - 132, 131, 130, 129, 128, 127, 126, 81, 26, 26, - 28, 28, 33, 33, 55, 55, 61, 61, 125, 124, - 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, - 113, 112, 109, 108, 107, 106, 105, 104, 103, 102, - 101, 100, 99, 96, 95, 94, 93, 92, 89, 88, - 87, 86, 83, 82, 62, 80, 56, 79, 78, 77, - - 76, 75, 74, 73, 72, 71, 70, 69, 68, 62, - 60, 56, 56, 54, 49, 48, 47, 46, 45, 36, - 145, 7, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145 - } ; - -static yyconst short int yy_chk[265] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 4, 11, 151, 3, 4, 5, 5, - 5, 5, 6, 6, 6, 6, 9, 15, 9, 14, - 14, 16, 15, 16, 16, 18, 17, 18, 17, 17, - 16, 32, 24, 32, 11, 17, 24, 25, 25, 29, - 33, 29, 29, 35, 57, 59, 57, 57, 16, 37, - 16, 37, 37, 17, 40, 40, 65, 65, 37, 63, - - 63, 40, 40, 41, 143, 41, 63, 63, 41, 41, - 33, 83, 70, 35, 142, 59, 37, 70, 98, 40, - 40, 66, 66, 75, 63, 63, 83, 98, 140, 66, - 139, 136, 133, 131, 75, 130, 129, 127, 126, 125, - 124, 123, 121, 120, 119, 118, 117, 66, 146, 146, - 147, 147, 148, 148, 149, 149, 150, 150, 114, 112, - 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, - 101, 99, 97, 96, 95, 93, 92, 91, 90, 89, - 88, 85, 84, 82, 80, 78, 77, 76, 74, 73, - 72, 71, 69, 68, 61, 60, 55, 54, 53, 52, - - 51, 50, 49, 48, 47, 46, 45, 44, 43, 39, - 36, 30, 28, 27, 23, 22, 21, 20, 19, 12, - 7, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -char *yytext; -#line 1 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -#define INITIAL 0 -#line 3 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -#include "ParsingSmbs.h" -#include "smcPars.h" - -#include -#include -#include -#include - -#include -extern CTFileName _fnmApplicationPath; - -int syywrap(void) -{ - // no more buffers - return 1; -}; - -// declarations for recursive SMC script parsing -struct BufferStackEntry { - YY_BUFFER_STATE bse_bs; - const char *bse_strName; - const char *bse_strContents; - int bse_iLineCt; - BOOL bse_bParserEnd; -}; - -static BufferStackEntry _abseBufferStack[SMC_MAX_INCLUDE_LEVEL]; -static int _ibsBufferStackTop = -1; - -void SMCPushBuffer(const char *strName, const char *strBuffer, BOOL bParserEnd) -{ - _ibsBufferStackTop++; - - _abseBufferStack[_ibsBufferStackTop].bse_strContents = strdup(strBuffer); - _abseBufferStack[_ibsBufferStackTop].bse_strName = strdup(strName); - _abseBufferStack[_ibsBufferStackTop].bse_iLineCt = 1; - _abseBufferStack[_ibsBufferStackTop].bse_bParserEnd = bParserEnd; - - _abseBufferStack[_ibsBufferStackTop].bse_bs = syy_scan_string((char*)(const char*)strBuffer); - - syy_switch_to_buffer(_abseBufferStack[_ibsBufferStackTop].bse_bs); -} -BOOL SMCPopBuffer(void) -{ - syy_delete_buffer( _abseBufferStack[_ibsBufferStackTop].bse_bs); - free((void*)_abseBufferStack[_ibsBufferStackTop].bse_strName); - free((void*)_abseBufferStack[_ibsBufferStackTop].bse_strContents); - BOOL bParserEnd = _abseBufferStack[_ibsBufferStackTop].bse_bParserEnd; - - _ibsBufferStackTop--; - - if (_ibsBufferStackTop>=0) { - syy_switch_to_buffer(_abseBufferStack[_ibsBufferStackTop].bse_bs); - } - return bParserEnd; -} -const char *SMCGetBufferName(void) -{ - return _abseBufferStack[_ibsBufferStackTop].bse_strName; -} -int SMCGetBufferLineNumber(void) -{ - return _abseBufferStack[_ibsBufferStackTop].bse_iLineCt; -} -int SMCGetBufferStackDepth(void) -{ - return _ibsBufferStackTop; -} -const char *SMCGetBufferContents(void) -{ - return _abseBufferStack[_ibsBufferStackTop].bse_strContents; -} -void SMCCountOneLine(void) -{ - _abseBufferStack[_ibsBufferStackTop].bse_iLineCt++; -} -#define COMMENT 1 - -#define INCLUDE 2 - -#line 593 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.cpp" - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifdef YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#endif -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ - -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( yy_current_buffer->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 91 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" - - -#line 719 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.cpp" - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 146 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 222 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - - -do_action: /* This label is used only to access EOF actions. */ - - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yy_hold_char; - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; - goto yy_find_action; - -case 1: -YY_RULE_SETUP -#line 93 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -BEGIN(INCLUDE); - YY_BREAK -case 2: -YY_RULE_SETUP -#line 94 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ return(k_SE_SMC); } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 95 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ return(k_SE_END); } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 96 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ return(k_TFNM); } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 97 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ return(k_NAME); } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 98 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ return(k_MESH); } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 99 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ return(k_SKELETON);} - YY_BREAK -case 8: -YY_RULE_SETUP -#line 100 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ return(k_ANIMSET);} - YY_BREAK -case 9: -YY_RULE_SETUP -#line 101 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ return(K_ANIMATION);} - YY_BREAK -case 10: -YY_RULE_SETUP -#line 102 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ return(k_TEXTURES);} - YY_BREAK -case 11: -YY_RULE_SETUP -#line 103 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ return(k_PARENTBONE);} - YY_BREAK -case 12: -YY_RULE_SETUP -#line 104 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ return(k_OFFSET);} - YY_BREAK -case 13: -YY_RULE_SETUP -#line 105 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ return(k_COLISION);} - YY_BREAK -case 14: -YY_RULE_SETUP -#line 106 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ return(k_ANIMSPEED);} - YY_BREAK -case 15: -YY_RULE_SETUP -#line 107 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ return(k_COLOR);} - YY_BREAK -case 16: -YY_RULE_SETUP -#line 108 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ return(k_ALLFRAMESBBOX);} - YY_BREAK -case 17: -YY_RULE_SETUP -#line 110 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -/* eat the whitespace */ - YY_BREAK -case 18: -YY_RULE_SETUP -#line 111 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ /* got the include file name */ - - if (SMCGetBufferStackDepth() >= SMC_MAX_INCLUDE_LEVEL) { - ThrowF_t("File '%s' line %d\nIncludes nested too deeply '%s'",SMCGetBufferName(), SMCGetBufferLineNumber(),yytext); - } - char strFileName[256]; - strcpy(strFileName, yytext); - strFileName[strlen(strFileName)-1] = 0; - - CTString strIncludeFile; - try { - strIncludeFile.Load_t(CTString(strFileName)); - SMCPushBuffer(strFileName, strIncludeFile, FALSE); - - } catch(char *strError) { - (void)strError; - ThrowF_t("File '%s'\n Could not open '%s' (line %d)",SMCGetBufferName(), strFileName, SMCGetBufferLineNumber()); - } - BEGIN(INITIAL); -} - YY_BREAK -case 19: -YY_RULE_SETUP -#line 131 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ /* something unrecognized inside include statement */ - BEGIN(INITIAL); - ThrowF_t("File '%s'\n Wrong syntax for include statement",SMCGetBufferName()); -} - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMENT): -case YY_STATE_EOF(INCLUDE): -#line 135 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ - if (SMCPopBuffer()) { - yyterminate(); - } -} - YY_BREAK -/* single character operators and punctuations */ -case 20: -YY_RULE_SETUP -#line 143 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ - return(yytext[0]);} - YY_BREAK -/* constants */ -case 21: -YY_RULE_SETUP -#line 148 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ syylval.i = atoi(yytext); return(c_int); } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 149 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ syylval.i = strtoul(yytext+2, NULL, 16); return(c_int);} - YY_BREAK -case 23: -YY_RULE_SETUP -#line 150 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ syylval.f = (float) atof(yytext); return(c_float); } - YY_BREAK -case 24: -YY_RULE_SETUP -#line 151 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ syylval.f = (float) atof(yytext); return(c_float); } - YY_BREAK -case 25: -YY_RULE_SETUP -#line 152 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ - char *strNew; - // remove double-quotes - yytext[strlen(yytext)-1] = 0; - strNew = yytext+1; - syylval.str = (const char*)strNew; - return(c_string); -} - YY_BREAK -/* eat up comments */ -case 26: -YY_RULE_SETUP -#line 162 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ BEGIN(COMMENT); } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 163 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ BEGIN(INITIAL); } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 164 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{} - YY_BREAK -case 29: -YY_RULE_SETUP -#line 165 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ SMCCountOneLine(); } - YY_BREAK -/* eat up whitespace */ -case 30: -YY_RULE_SETUP -#line 168 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ -} - YY_BREAK -/* eat up linefeeds and count lines in all conditions */ -case 31: -YY_RULE_SETUP -#line 171 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ - SMCCountOneLine();; -} - YY_BREAK -/* for all unrecognized characters */ -case 32: -YY_RULE_SETUP -#line 176 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -{ - // report an error - ThrowF_t("File '%s'\n Unrecognized character '%c' (line %d)", SMCGetBufferName(), yytext[0], SMCGetBufferLineNumber()); - //ThrowF_t("Unrecognized character '%c' in line %d)", yytext[0], _yy_iLine ); -} - YY_BREAK -case 33: -YY_RULE_SETUP -#line 182 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" -ECHO; - YY_BREAK -#line 1020 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.cpp" - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yy_hold_char; - - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = yytext_ptr + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yy_c_buf_p; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - yy_did_buffer_switch_on_eof = 0; - - if ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->yy_ch_buf[yy_n_chars]; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->yy_ch_buf; - register char *source = yytext_ptr; - register int number_to_move, i; - int ret_val; - - if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) - { - /* We matched a singled characater, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = yy_current_buffer; - - int yy_c_buf_p_offset = - (int) (yy_c_buf_p - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yy_flex_realloc( (void *) b->yy_ch_buf, - b->yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = yy_current_buffer->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; - - return ret_val; - } - - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - -static yy_state_type yy_get_previous_state() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 146 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - } - - return yy_current_state; - } - - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - register int yy_is_jam; - register char *yy_cp = yy_c_buf_p; - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 146 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 145); - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifdef YY_USE_PROTOS -//static - void syyunput( int c, register char *yy_bp ) -#else -//static - void syyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = yy_n_chars + 2; - register char *dest = &yy_current_buffer->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - - yytext_ptr = yy_bp; - yy_hold_char = *yy_cp; - yy_c_buf_p = yy_cp; - } - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#endif - { - int c; - - *yy_c_buf_p = yy_hold_char; - - if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - /* This was really a NUL. */ - *yy_c_buf_p = '\0'; - - else - { /* need more input */ - yytext_ptr = yy_c_buf_p; - ++yy_c_buf_p; - - switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - { - yy_c_buf_p = - yytext_ptr + YY_MORE_ADJ; - return EOF; - } - - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - break; - - case EOB_ACT_LAST_MATCH: -#ifdef __cplusplus - YY_FATAL_ERROR( - "unexpected last match in yyinput()" ); -#else - YY_FATAL_ERROR( - "unexpected last match in input()" ); -#endif - } - } - } - - c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ - *yy_c_buf_p = '\0'; /* preserve yytext */ - yy_hold_char = *++yy_c_buf_p; - - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - if ( yy_current_buffer == new_buffer ) - return; - - if ( yy_current_buffer ) - { - /* Flush out information for old buffer. */ - *yy_c_buf_p = yy_hold_char; - yy_current_buffer->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#ifdef YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#ifdef YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( const char *str ) -#else -YY_BUFFER_STATE yy_scan_string( str ) -const char *str; -#endif - { - int len; - for ( len = 0; str[len]; ++len ) - ; - - return yy_scan_bytes( str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( const char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -const char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( const char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); - } - - - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n - YY_MORE_ADJ; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, const char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -const char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - return (void *) realloc( ptr, size ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#ifdef YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 182 "D:\\SE1_GPL\\Sources\\Engine\\Ska\\\\smcScan.l" - - diff --git a/Sources/SeriousSkaStudio/Scanner.cpp b/Sources/SeriousSkaStudio/Scanner.cpp deleted file mode 100644 index a771713..0000000 --- a/Sources/SeriousSkaStudio/Scanner.cpp +++ /dev/null @@ -1,2146 +0,0 @@ -#line 2 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.cpp" -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.85 95/04/24 10:48:47 vern Exp $ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include -#include - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN yy_start = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START ((yy_start - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 66 -#define YY_END_OF_BUFFER 67 -static yyconst short int yy_accept[397] = - { 0, - 0, 0, 0, 0, 0, 0, 67, 65, 63, 64, - 65, 65, 53, 65, 65, 54, 54, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 61, 61, 52, 52, 64, 50, 63, - 0, 58, 0, 0, 54, 59, 0, 56, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 51, 0, 50, - 58, 0, 0, 62, 56, 56, 0, 57, 55, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 60, 0, 57, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 20, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, - 0, 36, 0, 0, 0, 12, 0, 0, 19, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 5, 0, 0, 0, 0, 0, 30, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4, 0, 0, 22, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 10, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 8, 0, 34, 0, - 3, 0, 0, 37, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, - - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 29, 0, 0, 0, 0, 0, 32, 0, - 0, 26, 17, 18, 0, 0, 0, 40, 0, 0, - 0, 0, 0, 0, 0, 25, 0, 0, 31, 0, - 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, - 9, 27, 0, 0, 0, 23, 0, 45, 46, 38, - 0, 0, 44, 0, 0, 0, 28, 0, 0, 42, - 0, 0, 0, 0, 21, 0, 41, 43, 33, 0, - 0, 0, 48, 49, 39, 0 - - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 4, 1, 5, 6, 1, 1, 1, 1, 1, - 1, 7, 8, 9, 10, 11, 12, 13, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 1, 15, 1, - 1, 1, 1, 1, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 1, 25, 26, 27, 28, 29, 30, - 1, 31, 32, 33, 34, 35, 36, 37, 1, 1, - 1, 38, 1, 1, 39, 1, 40, 40, 40, 40, - - 41, 42, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 43, - 1, 1, 44, 1, 45, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst int yy_meta[46] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 1, 2, 2, 2, 2, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 1, 1, 1 - } ; - -static yyconst short int yy_base[403] = - { 0, - 0, 0, 43, 44, 50, 54, 467, 468, 58, 468, - 43, 442, 468, 50, 54, 54, 58, 437, 435, 434, - 442, 54, 445, 440, 57, 60, 443, 438, 59, 60, - 422, 436, 435, 468, 450, 448, 96, 447, 468, 88, - 70, 468, 78, 423, 91, 468, 447, 93, 107, 0, - 425, 420, 420, 425, 419, 428, 417, 416, 413, 403, - 407, 407, 410, 405, 404, 408, 85, 417, 412, 400, - 393, 99, 402, 397, 403, 414, 420, 468, 123, 468, - 91, 406, 420, 468, 117, 468, 96, 126, 0, 395, - 401, 390, 403, 386, 390, 390, 394, 392, 374, 389, - - 381, 390, 382, 388, 391, 367, 125, 386, 378, 382, - 384, 369, 384, 379, 382, 364, 374, 468, 369, 468, - 55, 116, 363, 359, 372, 371, 351, 350, 355, 368, - 360, 362, 468, 368, 355, 349, 351, 352, 359, 353, - 357, 356, 359, 345, 350, 344, 468, 341, 346, 346, - 334, 92, 343, 338, 468, 345, 338, 468, 331, 341, - 340, 337, 335, 329, 122, 331, 323, 331, 334, 329, - 320, 331, 319, 316, 330, 318, 317, 323, 312, 325, - 309, 322, 307, 319, 319, 302, 304, 302, 468, 318, - 317, 468, 300, 312, 302, 468, 297, 296, 468, 292, - - 295, 298, 301, 297, 283, 292, 300, 288, 292, 291, - 468, 296, 111, 295, 288, 293, 468, 292, 287, 271, - 291, 290, 274, 280, 270, 284, 468, 283, 263, 262, - 261, 279, 151, 270, 265, 277, 276, 274, 261, 468, - 260, 468, 267, 271, 263, 259, 257, 266, 265, 268, - 259, 262, 248, 468, 259, 259, 258, 244, 247, 249, - 258, 257, 238, 251, 235, 243, 468, 236, 468, 228, - 468, 246, 233, 468, 235, 235, 233, 222, 221, 231, - 226, 231, 468, 225, 227, 226, 224, 226, 133, 224, - 219, 218, 211, 220, 217, 468, 213, 211, 210, 212, - - 468, 209, 219, 218, 220, 204, 207, 219, 215, 214, - 204, 202, 208, 213, 208, 211, 205, 192, 208, 204, - 202, 468, 468, 201, 200, 190, 189, 197, 468, 186, - 188, 468, 468, 175, 182, 180, 178, 468, 183, 193, - 174, 177, 180, 172, 172, 468, 172, 171, 468, 181, - 180, 179, 166, 468, 165, 164, 164, 149, 146, 153, - 468, 468, 140, 139, 142, 468, 145, 468, 468, 132, - 150, 147, 468, 134, 149, 148, 468, 144, 140, 124, - 123, 120, 120, 115, 468, 117, 468, 468, 468, 125, - 107, 99, 468, 468, 468, 468, 185, 187, 189, 191, - - 193, 47 - } ; - -static yyconst short int yy_def[403] = - { 0, - 396, 1, 397, 397, 398, 398, 396, 396, 396, 396, - 399, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 400, 400, 400, 396, 396, - 399, 396, 399, 396, 396, 396, 401, 396, 396, 402, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 400, 396, 400, 396, - 399, 396, 401, 396, 396, 396, 396, 396, 402, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 0, 396, 396, 396, 396, - - 396, 396 - } ; - -static yyconst short int yy_nxt[514] = - { 0, - 8, 9, 10, 9, 11, 12, 8, 8, 13, 14, - 8, 15, 16, 17, 13, 18, 19, 20, 21, 8, - 22, 8, 23, 8, 8, 24, 25, 26, 8, 27, - 28, 29, 30, 31, 32, 33, 8, 8, 8, 8, - 8, 8, 8, 13, 13, 10, 10, 42, 89, 35, - 35, 37, 38, 37, 39, 37, 38, 37, 39, 40, - 46, 40, 45, 45, 48, 47, 45, 45, 48, 55, - 45, 45, 60, 49, 42, 63, 61, 49, 67, 71, - 43, 68, 81, 69, 56, 62, 152, 57, 64, 40, - 72, 40, 70, 153, 49, 42, 50, 79, 49, 79, - - 80, 48, 106, 45, 45, 85, 85, 43, 88, 88, - 49, 183, 49, 86, 87, 43, 87, 395, 112, 88, - 88, 184, 113, 107, 79, 394, 79, 80, 43, 85, - 85, 49, 114, 49, 86, 154, 49, 86, 88, 88, - 138, 195, 240, 393, 392, 391, 120, 155, 313, 241, - 390, 139, 389, 196, 388, 387, 140, 49, 86, 386, - 197, 314, 385, 384, 383, 382, 381, 120, 259, 380, - 379, 260, 378, 377, 376, 375, 374, 373, 261, 372, - 262, 371, 263, 264, 265, 34, 34, 36, 36, 41, - 41, 77, 77, 83, 83, 370, 369, 368, 367, 366, - - 365, 364, 363, 362, 361, 360, 359, 358, 357, 356, - 355, 354, 353, 352, 351, 350, 349, 348, 347, 346, - 345, 344, 343, 342, 341, 340, 339, 338, 337, 336, - 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, - 325, 324, 323, 322, 321, 320, 319, 318, 317, 316, - 315, 312, 311, 310, 309, 308, 307, 306, 305, 304, - 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, - 293, 292, 291, 290, 289, 288, 287, 286, 285, 284, - 283, 282, 281, 280, 279, 278, 277, 276, 275, 274, - 273, 272, 271, 270, 269, 268, 267, 266, 258, 257, - - 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, - 246, 245, 244, 243, 242, 239, 238, 237, 236, 235, - 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, - 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, - 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, - 204, 203, 202, 201, 200, 199, 198, 194, 193, 192, - 191, 190, 189, 188, 187, 186, 185, 182, 181, 180, - 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, - 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, - 159, 158, 157, 156, 151, 150, 149, 148, 147, 146, - - 145, 144, 143, 142, 141, 137, 136, 135, 134, 133, - 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, - 122, 121, 84, 119, 78, 118, 117, 116, 115, 111, - 110, 109, 108, 105, 104, 103, 102, 101, 100, 99, - 98, 97, 96, 95, 94, 93, 92, 91, 90, 84, - 82, 78, 78, 76, 75, 74, 73, 66, 65, 59, - 58, 54, 53, 52, 51, 44, 396, 7, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396 - } ; - -static yyconst short int yy_chk[514] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 4, 11, 402, 3, - 4, 5, 5, 5, 5, 6, 6, 6, 6, 9, - 15, 9, 14, 14, 16, 15, 16, 16, 17, 22, - 17, 17, 25, 16, 41, 26, 25, 17, 29, 30, - 11, 29, 43, 29, 22, 25, 121, 22, 26, 40, - 30, 40, 29, 121, 16, 81, 16, 37, 17, 37, - - 37, 45, 67, 45, 45, 48, 48, 41, 87, 87, - 45, 152, 48, 48, 49, 43, 49, 392, 72, 49, - 49, 152, 72, 67, 79, 391, 79, 79, 81, 85, - 85, 45, 72, 48, 48, 122, 85, 85, 88, 88, - 107, 165, 213, 390, 386, 384, 88, 122, 289, 213, - 383, 107, 382, 165, 381, 380, 107, 85, 85, 379, - 165, 289, 378, 376, 375, 374, 372, 88, 233, 371, - 370, 233, 367, 365, 364, 363, 360, 359, 233, 358, - 233, 357, 233, 233, 233, 397, 397, 398, 398, 399, - 399, 400, 400, 401, 401, 356, 355, 353, 352, 351, - - 350, 348, 347, 345, 344, 343, 342, 341, 340, 339, - 337, 336, 335, 334, 331, 330, 328, 327, 326, 325, - 324, 321, 320, 319, 318, 317, 316, 315, 314, 313, - 312, 311, 310, 309, 308, 307, 306, 305, 304, 303, - 302, 300, 299, 298, 297, 295, 294, 293, 292, 291, - 290, 288, 287, 286, 285, 284, 282, 281, 280, 279, - 278, 277, 276, 275, 273, 272, 270, 268, 266, 265, - 264, 263, 262, 261, 260, 259, 258, 257, 256, 255, - 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, - 243, 241, 239, 238, 237, 236, 235, 234, 232, 231, - - 230, 229, 228, 226, 225, 224, 223, 222, 221, 220, - 219, 218, 216, 215, 214, 212, 210, 209, 208, 207, - 206, 205, 204, 203, 202, 201, 200, 198, 197, 195, - 194, 193, 191, 190, 188, 187, 186, 185, 184, 183, - 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, - 172, 171, 170, 169, 168, 167, 166, 164, 163, 162, - 161, 160, 159, 157, 156, 154, 153, 151, 150, 149, - 148, 146, 145, 144, 143, 142, 141, 140, 139, 138, - 137, 136, 135, 134, 132, 131, 130, 129, 128, 127, - 126, 125, 124, 123, 119, 117, 116, 115, 114, 113, - - 112, 111, 110, 109, 108, 106, 105, 104, 103, 102, - 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, - 91, 90, 83, 82, 77, 76, 75, 74, 73, 71, - 70, 69, 68, 66, 65, 64, 63, 62, 61, 60, - 59, 58, 57, 56, 55, 54, 53, 52, 51, 47, - 44, 38, 36, 35, 33, 32, 31, 28, 27, 24, - 23, 21, 20, 19, 18, 12, 7, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -char *yytext; -#line 1 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -#define INITIAL 0 -#line 2 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -#include "StdAfx.h" -#include "ParsingSymbols.h" -#include "Parser.h" - -#include -#include - -#include - -extern "C" { - int yywrap(void) - { - // no more buffers - return 1; - }; -} -YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH]; -CTFileName include_fnStack[MAX_INCLUDE_DEPTH]; -INDEX include_lineStack[MAX_INCLUDE_DEPTH]; -FILE *include_FileStack[MAX_INCLUDE_DEPTH]; -int include_stack_ptr = 0; - -CTFileName strCurentFileName; -CDynamicStackArray astrText; - -#define COMMENT 1 - -#define INCLUDE 2 - -#line 639 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.cpp" - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#endif -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ - -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( yy_current_buffer->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 39 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" - - - // keywords -#line 790 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.cpp" - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 397 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 468 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - - -do_action: /* This label is used only to access EOF actions. */ - - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yy_hold_char; - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; - goto yy_find_action; - -case 1: -YY_RULE_SETUP -#line 42 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -BEGIN(INCLUDE); - YY_BREAK -case 2: -YY_RULE_SETUP -#line 43 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SE_MESH); } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 44 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_VERTICES); } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 45 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_NORMALS); } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 46 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_UVMAPS); } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 47 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_NAME); } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 48 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_TEXCOORDS); } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 49 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SURFACES); } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 50 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_TRIANGLE_SET); } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 51 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_WEIGHTS); } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 52 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_WEIGHT_SET); } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 53 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_MORPHS); } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 54 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_RELATIVE); } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 55 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_TRUE); } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 56 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_FALSE); } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 57 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_MORPH_SET); } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 58 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SE_MESH_END); } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 59 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SE_SKELETON); } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 60 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_PARENT);} - YY_BREAK -case 20: -YY_RULE_SETUP -#line 61 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_BONES);} - YY_BREAK -case 21: -YY_RULE_SETUP -#line 62 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SE_SKELETON_END);} - YY_BREAK -case 22: -YY_RULE_SETUP -#line 63 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SE_ANIM);} - YY_BREAK -case 23: -YY_RULE_SETUP -#line 64 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SEC_PER_FRAME);} - YY_BREAK -case 24: -YY_RULE_SETUP -#line 65 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_FRAMES);} - YY_BREAK -case 25: -YY_RULE_SETUP -#line 66 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_DEFAULT_POSE);} - YY_BREAK -case 26: -YY_RULE_SETUP -#line 67 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SE_ANIM_END);} - YY_BREAK -case 27: -YY_RULE_SETUP -#line 68 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_BONEENVELOPES);} - YY_BREAK -case 28: -YY_RULE_SETUP -#line 69 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_MORPHENVELOPES);} - YY_BREAK -case 29: -YY_RULE_SETUP -#line 70 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_ANIM_SET_LIST);} - YY_BREAK -case 30: -YY_RULE_SETUP -#line 71 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_ANIM_ID);} - YY_BREAK -case 31: -YY_RULE_SETUP -#line 72 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_MAX_DISTANCE);} - YY_BREAK -case 32: -YY_RULE_SETUP -#line 73 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_MESHLODLIST);} - YY_BREAK -case 33: -YY_RULE_SETUP -#line 74 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SKELETONLODLIST);} - YY_BREAK -case 34: -YY_RULE_SETUP -#line 75 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_TRESHOLD);} - YY_BREAK -case 35: -YY_RULE_SETUP -#line 76 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_COMPRESION);} - YY_BREAK -case 36: -YY_RULE_SETUP -#line 77 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_LENGTH);} - YY_BREAK -case 37: -YY_RULE_SETUP -#line 78 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_ANIMSPEED);} - YY_BREAK -case 38: -YY_RULE_SETUP -#line 79 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SHADER_PARAMS);} - YY_BREAK -case 39: -YY_RULE_SETUP -#line 80 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SHADER_PARAMS_END);} - YY_BREAK -case 40: -YY_RULE_SETUP -#line 81 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SHADER_NAME);} - YY_BREAK -case 41: -YY_RULE_SETUP -#line 82 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SHADER_SURFACES);} - YY_BREAK -case 42: -YY_RULE_SETUP -#line 83 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SHADER_SURFACE);} - YY_BREAK -case 43: -YY_RULE_SETUP -#line 84 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SHADER_TEXTURES);} - YY_BREAK -case 44: -YY_RULE_SETUP -#line 85 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SHADER_UVMAPS);} - YY_BREAK -case 45: -YY_RULE_SETUP -#line 86 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SHADER_COLORS);} - YY_BREAK -case 46: -YY_RULE_SETUP -#line 87 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SHADER_FLOATS);} - YY_BREAK -case 47: -YY_RULE_SETUP -#line 88 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_SHADER_FLAGS);} - YY_BREAK -case 48: -YY_RULE_SETUP -#line 89 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_FULL_FACE_FORWARD);} - YY_BREAK -case 49: -YY_RULE_SETUP -#line 90 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ return(k_HALF_FACE_FORWARD);} - YY_BREAK -case 50: -YY_RULE_SETUP -#line 94 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -/* eat the whitespace */ - YY_BREAK -case 51: -YY_RULE_SETUP -#line 95 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ /* got the include file name */ - if(include_stack_ptr >= MAX_INCLUDE_DEPTH) - { - BEGIN(INITIAL); - ThrowF_t("Includes nested too deeply '%c' in line %d)", yytext[0], _yy_iLine ); - } - - char strFileName[256]; - strcpy(strFileName,(const char*)_fnmApplicationPath); - strcat(strFileName, yytext); - strFileName[strlen(strFileName)-1] = 0; - - try - { - include_stack[include_stack_ptr] = YY_CURRENT_BUFFER; - include_fnStack[include_stack_ptr] = strCurentFileName; - include_lineStack[include_stack_ptr] = _yy_iLine; - include_FileStack[include_stack_ptr] = yyin; - yyin = fopen( strFileName, "r" ); - - if(yyin == NULL) - ThrowF_t("File '%s'\n Could not open '%s' (line %d)",(const char*)strCurentFileName, strFileName, _yy_iLine); - - include_stack_ptr++; - yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE )); - strCurentFileName = (CTString)strFileName; - // try to remove app path from source file name - try { strCurentFileName.RemoveApplicationPath_t(); } - catch(char *){} - _yy_iLine = 1; - } - catch(char *strError) - { - BEGIN(INITIAL); - ThrowF_t(strError); - } - BEGIN(INITIAL); -} - YY_BREAK -case 52: -YY_RULE_SETUP -#line 133 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ /* something unrecognized inside include statement */ - ThrowF_t("Wrong syntax for include statement"); - BEGIN(INITIAL); -} - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMENT): -case YY_STATE_EOF(INCLUDE): -#line 137 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ - if ( --include_stack_ptr < 0 ) - { - yyterminate(); - exit(1); - } - else - { - fclose(yyin); - yy_delete_buffer( YY_CURRENT_BUFFER ); - yy_switch_to_buffer( include_stack[include_stack_ptr] ); - strCurentFileName = include_fnStack[include_stack_ptr]; - yyin = include_FileStack[include_stack_ptr]; - _yy_iLine = include_lineStack[include_stack_ptr]; - } -} - YY_BREAK -/* single character operators and punctuations */ -case 53: -YY_RULE_SETUP -#line 155 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ - return(yytext[0]);} - YY_BREAK -/* constants */ -case 54: -YY_RULE_SETUP -#line 159 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ yylval.i = atoi(yytext); return(c_int); } - YY_BREAK -case 55: -YY_RULE_SETUP -#line 160 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ yylval.i = strtoul(yytext+2, NULL, 16); return(c_int);} - YY_BREAK -case 56: -YY_RULE_SETUP -#line 161 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ yylval.f = (float) atof(yytext); return(c_float); } - YY_BREAK -case 57: -YY_RULE_SETUP -#line 162 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ yylval.f = (float) atof(yytext); return(c_float); } - YY_BREAK -case 58: -YY_RULE_SETUP -#line 163 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ - CTString &strNew = astrText.Push(); - char *pstrNew; - // remove double-quotes - yytext[strlen(yytext)-1] = 0; - pstrNew = yytext+1; - //yylval.str = (const char*)strNew; - strNew = (const char*)pstrNew; - yylval.str = (const char*)strNew; - return(c_string); -} - YY_BREAK -/* eat up comments */ -case 59: -YY_RULE_SETUP -#line 176 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ BEGIN(COMMENT); } - YY_BREAK -case 60: -YY_RULE_SETUP -#line 177 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ BEGIN(INITIAL); } - YY_BREAK -case 61: -YY_RULE_SETUP -#line 178 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{} - YY_BREAK -case 62: -YY_RULE_SETUP -#line 179 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ _yy_iLine++; } - YY_BREAK -/* eat up whitespace */ -case 63: -YY_RULE_SETUP -#line 182 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ -} - YY_BREAK -/* eat up linefeeds and count lines in all conditions */ -case 64: -YY_RULE_SETUP -#line 185 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ - _yy_iLine++; -} - YY_BREAK -/* for all unrecognized characters */ -case 65: -YY_RULE_SETUP -#line 190 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -{ - // report an error - ThrowF_t("File '%s'\n Unrecognized character '%c' (line %d)",(const char*)strCurentFileName,yytext,_yy_iLine); -} - YY_BREAK -case 66: -YY_RULE_SETUP -#line 195 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" -ECHO; - YY_BREAK -#line 1287 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.cpp" - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yy_hold_char; - - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = yytext_ptr + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yy_c_buf_p; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - yy_did_buffer_switch_on_eof = 0; - - if ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->yy_ch_buf[yy_n_chars]; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->yy_ch_buf; - register char *source = yytext_ptr; - register int number_to_move, i; - int ret_val; - - if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) - { - /* We matched a singled characater, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = yy_current_buffer; - - int yy_c_buf_p_offset = - (int) (yy_c_buf_p - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yy_flex_realloc( (void *) b->yy_ch_buf, - b->yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = yy_current_buffer->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; - - return ret_val; - } - - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - -static yy_state_type yy_get_previous_state() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 397 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - } - - return yy_current_state; - } - - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - register int yy_is_jam; - register char *yy_cp = yy_c_buf_p; - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 397 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 396); - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = yy_n_chars + 2; - register char *dest = &yy_current_buffer->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - - yytext_ptr = yy_bp; - yy_hold_char = *yy_cp; - yy_c_buf_p = yy_cp; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#endif - { - int c; - - *yy_c_buf_p = yy_hold_char; - - if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - /* This was really a NUL. */ - *yy_c_buf_p = '\0'; - - else - { /* need more input */ - yytext_ptr = yy_c_buf_p; - ++yy_c_buf_p; - - switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - { - yy_c_buf_p = - yytext_ptr + YY_MORE_ADJ; - return EOF; - } - - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - break; - - case EOB_ACT_LAST_MATCH: -#ifdef __cplusplus - YY_FATAL_ERROR( - "unexpected last match in yyinput()" ); -#else - YY_FATAL_ERROR( - "unexpected last match in input()" ); -#endif - } - } - } - - c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ - *yy_c_buf_p = '\0'; /* preserve yytext */ - yy_hold_char = *++yy_c_buf_p; - - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - if ( yy_current_buffer == new_buffer ) - return; - - if ( yy_current_buffer ) - { - /* Flush out information for old buffer. */ - *yy_c_buf_p = yy_hold_char; - yy_current_buffer->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *str ) -#else -YY_BUFFER_STATE yy_scan_string( str ) -yyconst char *str; -#endif - { - int len; - for ( len = 0; str[len]; ++len ) - ; - - return yy_scan_bytes( str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); - } - - - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n - YY_MORE_ADJ; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 195 "D:\\SE1_GPL\\Sources\\SeriousSkaStudio\\\\Scanner.l" - - From dceb5522653c18dd71c7f8607de6425e9ff4f3df Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Mon, 14 Mar 2016 02:57:22 +0300 Subject: [PATCH 13/34] Update .gitignore AGAAAAAAIN! --- .gitignore | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 35413f2..f6437c7 100644 --- a/.gitignore +++ b/.gitignore @@ -44,18 +44,35 @@ *.suo *.tlog -# Engine Generated Stuff -Sources/Engine/Classes/*.h -Sources/Engine/Classes/*.cpp - -# EntitiesMP Generated Stuff +# Files generated by ECC Sources/EntitiesMP/*.cpp Sources/EntitiesMP/*.h !Sources/EntitiesMP/Common/* !Sources/EntitiesMP/StdH/* +Sources/Engine/Classes/*.h +Sources/Engine/Classes/*.cpp + +# Other generated files: +Sources/Engine/Ska/smcScan.cpp +Sources/Engine/Ska/smcPars.h +Sources/Engine/Ska/smcPars.cpp +Sources/Engine/Base/Parser.cpp +Sources/Engine/Base/Parser.h +Sources/Engine/Base/Scanner.cpp +Sources/Ecc/Parser.cpp +Sources/Ecc/Parser.h +Sources/Ecc/Scanner.cpp +Sources/SeriousSkaStudio/Parser.cpp +Sources/SeriousSkaStudio/Parser.h +Sources/SeriousSkaStudio/Scanner.cpp # Game Generated Stuff +*.plr +Temp/ConsoleHistory.txt +Temp/Profile_CSG.txt +*.log +*.rpt # crashinfo +*.gms +Data/*.pri Data/*.bin -Data/*.gms -Players/* -Temp/ConsoleHistory.txt \ No newline at end of file +Scripts/PersistentSymbols.ini \ No newline at end of file From 899d297f7b7b91bd2d36538231e32979054277e3 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Mon, 14 Mar 2016 03:59:44 +0300 Subject: [PATCH 14/34] GameExecutable: Move some stuff from Menu.cpp into files PART THREE Menu.cpp is so large(>6000 lines). I'll separate it! --- Sources/SeriousSam/MNetworkJoin.cpp | 43 +++ Sources/SeriousSam/MNetworkJoin.h | 7 + Sources/SeriousSam/MNetworkOpen.cpp | 66 +++++ Sources/SeriousSam/MNetworkOpen.h | 13 +- Sources/SeriousSam/MSplitScreen.cpp | 46 +++ Sources/SeriousSam/MSplitScreen.h | 8 +- Sources/SeriousSam/MSplitStart.cpp | 103 +++++++ Sources/SeriousSam/MSplitStart.h | 11 +- Sources/SeriousSam/Menu.cpp | 270 +++--------------- Sources/SeriousSam/SeriousSam.vcxproj | 4 + Sources/SeriousSam/SeriousSam.vcxproj.filters | 12 + 11 files changed, 350 insertions(+), 233 deletions(-) create mode 100644 Sources/SeriousSam/MNetworkJoin.cpp create mode 100644 Sources/SeriousSam/MNetworkOpen.cpp create mode 100644 Sources/SeriousSam/MSplitScreen.cpp create mode 100644 Sources/SeriousSam/MSplitStart.cpp diff --git a/Sources/SeriousSam/MNetworkJoin.cpp b/Sources/SeriousSam/MNetworkJoin.cpp new file mode 100644 index 0000000..6afc217 --- /dev/null +++ b/Sources/SeriousSam/MNetworkJoin.cpp @@ -0,0 +1,43 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MenuStuff.h" +#include "MNetworkJoin.h" + + +void CNetworkJoinMenu::Initialize_t(void) +{ + // title + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("JOIN GAME"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + + gm_mgLAN.mg_bfsFontSize = BFS_LARGE; + gm_mgLAN.mg_boxOnScreen = BoxBigRow(1.0f); + gm_mgLAN.mg_pmgUp = &gm_mgOpen; + gm_mgLAN.mg_pmgDown = &gm_mgNET; + gm_mgLAN.mg_strText = TRANS("SEARCH LAN"); + gm_mgLAN.mg_strTip = TRANS("search local network for servers"); + gm_lhGadgets.AddTail(gm_mgLAN.mg_lnNode); + gm_mgLAN.mg_pActivatedFunction = NULL; + + gm_mgNET.mg_bfsFontSize = BFS_LARGE; + gm_mgNET.mg_boxOnScreen = BoxBigRow(2.0f); + gm_mgNET.mg_pmgUp = &gm_mgLAN; + gm_mgNET.mg_pmgDown = &gm_mgOpen; + gm_mgNET.mg_strText = TRANS("SEARCH INTERNET"); + gm_mgNET.mg_strTip = TRANS("search internet for servers"); + gm_lhGadgets.AddTail(gm_mgNET.mg_lnNode); + gm_mgNET.mg_pActivatedFunction = NULL; + + gm_mgOpen.mg_bfsFontSize = BFS_LARGE; + gm_mgOpen.mg_boxOnScreen = BoxBigRow(3.0f); + gm_mgOpen.mg_pmgUp = &gm_mgNET; + gm_mgOpen.mg_pmgDown = &gm_mgLAN; + gm_mgOpen.mg_strText = TRANS("SPECIFY SERVER"); + gm_mgOpen.mg_strTip = TRANS("type in server address to connect to"); + gm_lhGadgets.AddTail(gm_mgOpen.mg_lnNode); + gm_mgOpen.mg_pActivatedFunction = NULL; +} \ No newline at end of file diff --git a/Sources/SeriousSam/MNetworkJoin.h b/Sources/SeriousSam/MNetworkJoin.h index d38984e..0410a5e 100644 --- a/Sources/SeriousSam/MNetworkJoin.h +++ b/Sources/SeriousSam/MNetworkJoin.h @@ -7,10 +7,17 @@ #endif #include "GameMenu.h" +#include "MGButton.h" +#include "MGTitle.h" class CNetworkJoinMenu : public CGameMenu { public: + CMGTitle gm_mgTitle; + CMGButton gm_mgLAN; + CMGButton gm_mgNET; + CMGButton gm_mgOpen; + void Initialize_t(void); }; diff --git a/Sources/SeriousSam/MNetworkOpen.cpp b/Sources/SeriousSam/MNetworkOpen.cpp new file mode 100644 index 0000000..1dbdc55 --- /dev/null +++ b/Sources/SeriousSam/MNetworkOpen.cpp @@ -0,0 +1,66 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MenuStuff.h" +#include "MNetworkOpen.h" + + +void CNetworkOpenMenu::Initialize_t(void) +{ + // intialize network join menu + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("JOIN"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + + gm_mgAddressLabel.mg_strText = TRANS("Address:"); + gm_mgAddressLabel.mg_boxOnScreen = BoxMediumLeft(1); + gm_mgAddressLabel.mg_iCenterI = -1; + gm_lhGadgets.AddTail(gm_mgAddressLabel.mg_lnNode); + + gm_mgAddress.mg_strText = _pGame->gam_strJoinAddress; + gm_mgAddress.mg_ctMaxStringLen = 20; + gm_mgAddress.mg_pstrToChange = &_pGame->gam_strJoinAddress; + gm_mgAddress.mg_boxOnScreen = BoxMediumMiddle(1); + gm_mgAddress.mg_bfsFontSize = BFS_MEDIUM; + gm_mgAddress.mg_iCenterI = -1; + gm_mgAddress.mg_pmgUp = &gm_mgJoin; + gm_mgAddress.mg_pmgDown = &gm_mgPort; + gm_mgAddress.mg_strTip = TRANS("specify server address"); + gm_lhGadgets.AddTail(gm_mgAddress.mg_lnNode); + + gm_mgPortLabel.mg_strText = TRANS("Port:"); + gm_mgPortLabel.mg_boxOnScreen = BoxMediumLeft(2); + gm_mgPortLabel.mg_iCenterI = -1; + gm_lhGadgets.AddTail(gm_mgPortLabel.mg_lnNode); + + gm_mgPort.mg_strText = ""; + gm_mgPort.mg_ctMaxStringLen = 10; + gm_mgPort.mg_pstrToChange = &gm_strPort; + gm_mgPort.mg_boxOnScreen = BoxMediumMiddle(2); + gm_mgPort.mg_bfsFontSize = BFS_MEDIUM; + gm_mgPort.mg_iCenterI = -1; + gm_mgPort.mg_pmgUp = &gm_mgAddress; + gm_mgPort.mg_pmgDown = &gm_mgJoin; + gm_mgPort.mg_strTip = TRANS("specify server address"); + gm_lhGadgets.AddTail(gm_mgPort.mg_lnNode); + + gm_mgJoin.mg_boxOnScreen = BoxMediumMiddle(3); + gm_mgJoin.mg_pmgUp = &gm_mgPort; + gm_mgJoin.mg_pmgDown = &gm_mgAddress; + gm_mgJoin.mg_strText = TRANS("Join"); + gm_lhGadgets.AddTail(gm_mgJoin.mg_lnNode); + gm_mgJoin.mg_pActivatedFunction = NULL; +} + +void CNetworkOpenMenu::StartMenu(void) +{ + gm_strPort = _pShell->GetValue("net_iPort"); + gm_mgPort.mg_strText = gm_strPort; +} + +void CNetworkOpenMenu::EndMenu(void) +{ + _pShell->SetValue("net_iPort", gm_strPort); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MNetworkOpen.h b/Sources/SeriousSam/MNetworkOpen.h index c526b4e..5c8c51d 100644 --- a/Sources/SeriousSam/MNetworkOpen.h +++ b/Sources/SeriousSam/MNetworkOpen.h @@ -7,10 +7,21 @@ #endif #include "GameMenu.h" - +#include "MGButton.h" +#include "MGEdit.h" +#include "MGTitle.h" class CNetworkOpenMenu : public CGameMenu { public: + CTString gm_strPort; + + CMGTitle gm_mgTitle; + CMGButton gm_mgAddressLabel; + CMGEdit gm_mgAddress; + CMGButton gm_mgPortLabel; + CMGEdit gm_mgPort; + CMGButton gm_mgJoin; + void Initialize_t(void); void StartMenu(void); void EndMenu(void); diff --git a/Sources/SeriousSam/MSplitScreen.cpp b/Sources/SeriousSam/MSplitScreen.cpp new file mode 100644 index 0000000..9fbb57e --- /dev/null +++ b/Sources/SeriousSam/MSplitScreen.cpp @@ -0,0 +1,46 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MSplitScreen.h" + +void CSplitScreenMenu::Initialize_t(void) +{ + // intialize split screen menu + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("SPLIT SCREEN"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + + gm_mgStart.mg_bfsFontSize = BFS_LARGE; + gm_mgStart.mg_boxOnScreen = BoxBigRow(0); + gm_mgStart.mg_pmgUp = &gm_mgLoad; + gm_mgStart.mg_pmgDown = &gm_mgQuickLoad; + gm_mgStart.mg_strText = TRANS("NEW GAME"); + gm_mgStart.mg_strTip = TRANS("start new split-screen game"); + gm_lhGadgets.AddTail(gm_mgStart.mg_lnNode); + gm_mgStart.mg_pActivatedFunction = NULL; + + gm_mgQuickLoad.mg_bfsFontSize = BFS_LARGE; + gm_mgQuickLoad.mg_boxOnScreen = BoxBigRow(1); + 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(2); + gm_mgLoad.mg_pmgUp = &gm_mgQuickLoad; + gm_mgLoad.mg_pmgDown = &gm_mgStart; + gm_mgLoad.mg_strText = TRANS("LOAD"); + gm_mgLoad.mg_strTip = TRANS("load a saved split-screen game"); + gm_lhGadgets.AddTail(gm_mgLoad.mg_lnNode); + gm_mgLoad.mg_pActivatedFunction = NULL; +} + +void CSplitScreenMenu::StartMenu(void) +{ + CGameMenu::StartMenu(); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MSplitScreen.h b/Sources/SeriousSam/MSplitScreen.h index 72592fd..721faea 100644 --- a/Sources/SeriousSam/MSplitScreen.h +++ b/Sources/SeriousSam/MSplitScreen.h @@ -7,10 +7,16 @@ #endif #include "GameMenu.h" - +#include "MGButton.h" +#include "MGTitle.h" class CSplitScreenMenu : public CGameMenu { public: + CMGTitle gm_mgTitle; + CMGButton gm_mgStart; + CMGButton gm_mgQuickLoad; + CMGButton gm_mgLoad; + void Initialize_t(void); void StartMenu(void); }; diff --git a/Sources/SeriousSam/MSplitStart.cpp b/Sources/SeriousSam/MSplitStart.cpp new file mode 100644 index 0000000..4266823 --- /dev/null +++ b/Sources/SeriousSam/MSplitStart.cpp @@ -0,0 +1,103 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "LevelInfo.h" +#include "MenuStuff.h" +#include "MSplitStart.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 UpdateSplitLevel(INDEX iDummy); +extern void SplitStartMenuSubInit(CSplitStartMenu* gm); + +void CSplitStartMenu::Initialize_t(void) +{ + // intialize split screen menu + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("START SPLIT SCREEN"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + + // game type trigger + extern CTString astrGameTypeRadioTexts[20]; + TRIGGER_MG(gm_mgGameType, 0, + gm_mgStart, 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 = &UpdateSplitLevel; + + // difficulty trigger + extern CTString astrDifficultyRadioTexts[6]; + TRIGGER_MG(gm_mgDifficulty, 1, + 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(2); + gm_mgLevel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgLevel.mg_iCenterI = -1; + gm_mgLevel.mg_pmgUp = &gm_mgDifficulty; + gm_mgLevel.mg_pmgDown = &gm_mgOptions; + gm_mgLevel.mg_strTip = TRANS("choose the level to start"); + gm_mgLevel.mg_pActivatedFunction = NULL; + gm_lhGadgets.AddTail(gm_mgLevel.mg_lnNode); + + // options button + gm_mgOptions.mg_strText = TRANS("Game options"); + gm_mgOptions.mg_boxOnScreen = BoxMediumRow(3); + gm_mgOptions.mg_bfsFontSize = BFS_MEDIUM; + gm_mgOptions.mg_iCenterI = 0; + gm_mgOptions.mg_pmgUp = &gm_mgLevel; + gm_mgOptions.mg_pmgDown = &gm_mgStart; + gm_mgOptions.mg_strTip = TRANS("adjust game rules"); + gm_mgOptions.mg_pActivatedFunction = NULL; + gm_lhGadgets.AddTail(gm_mgOptions.mg_lnNode); + + // start button + gm_mgStart.mg_bfsFontSize = BFS_LARGE; + gm_mgStart.mg_boxOnScreen = BoxBigRow(4); + gm_mgStart.mg_pmgUp = &gm_mgOptions; + gm_mgStart.mg_pmgDown = &gm_mgGameType; + gm_mgStart.mg_strText = TRANS("START"); + gm_lhGadgets.AddTail(gm_mgStart.mg_lnNode); + gm_mgStart.mg_pActivatedFunction = NULL; +} + +void CSplitStartMenu::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(); + + // clamp maximum number of players to at least 4 + _pShell->SetINDEX("gam_ctMaxPlayers", ClampDn(_pShell->GetINDEX("gam_ctMaxPlayers"), 4L)); + + UpdateSplitLevel(0); + CGameMenu::StartMenu(); +} + +void CSplitStartMenu::EndMenu(void) +{ + _pShell->SetINDEX("gam_iStartDifficulty", gm_mgDifficulty.mg_iSelected - 1); + _pShell->SetINDEX("gam_iStartMode", gm_mgGameType.mg_iSelected); + + CGameMenu::EndMenu(); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MSplitStart.h b/Sources/SeriousSam/MSplitStart.h index 832a52c..1ed2838 100644 --- a/Sources/SeriousSam/MSplitStart.h +++ b/Sources/SeriousSam/MSplitStart.h @@ -7,10 +7,19 @@ #endif #include "GameMenu.h" - +#include "MGButton.h" +#include "MGTitle.h" +#include "MGTrigger.h" class CSplitStartMenu : public CGameMenu { public: + CMGTitle gm_mgTitle; + CMGTrigger gm_mgGameType; + CMGTrigger gm_mgDifficulty; + CMGButton gm_mgLevel; + CMGButton gm_mgOptions; + CMGButton gm_mgStart; + void Initialize_t(void); void StartMenu(void); void EndMenu(void); diff --git a/Sources/SeriousSam/Menu.cpp b/Sources/SeriousSam/Menu.cpp index e81e157..dee47a1 100644 --- a/Sources/SeriousSam/Menu.cpp +++ b/Sources/SeriousSam/Menu.cpp @@ -106,8 +106,12 @@ void (*_pAfterLevelChosen)(void); void InitActionsForConfirmMenu(); void InitActionsForMainMenu(); void InitActionsForInGameMenu(); +void InitActionsForNetworkJoinMenu(); +void InitActionsForNetworkOpenMenu(); void InitActionsForSinglePlayerMenu(); void InitActionsForSinglePlayerNewMenu(); +void InitActionsForSplitScreenMenu(); +void InitActionsForSplitStartMenu(); void InitActionsForVarMenu(); @@ -257,14 +261,15 @@ CTString astrMaxPlayersRadioTexts[] = { }; // here, we just reserve space for up to 16 different game types // actual names are added later -CTString astrGameTypeRadioTexts[] = { +extern CTString astrGameTypeRadioTexts[] = { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", }; -INDEX ctGameTypeRadioTexts = 1; -CTString astrDifficultyRadioTexts[] = { + +extern INDEX ctGameTypeRadioTexts = 1; +extern CTString astrDifficultyRadioTexts[] = { RADIOTRANS("Tourist"), RADIOTRANS("Easy"), RADIOTRANS("Normal"), @@ -272,6 +277,7 @@ CTString astrDifficultyRadioTexts[] = { RADIOTRANS("Serious"), RADIOTRANS("Mental"), }; + CTString astrSplitScreenRadioTexts[] = { RADIOTRANS( "1"), RADIOTRANS( "2 - split screen"), @@ -457,10 +463,6 @@ CMGButton mgNetworkLoad; // -------- Network join menu CNetworkJoinMenu gmNetworkJoinMenu; -CMGTitle mgNetworkJoinTitle; -CMGButton mgNetworkJoinLAN; -CMGButton mgNetworkJoinNET; -CMGButton mgNetworkJoinOpen; // -------- Network start menu CNetworkStartMenu gmNetworkStartMenu; @@ -477,28 +479,12 @@ CMGButton mgNetworkStartStart; // -------- Network open menu CNetworkOpenMenu gmNetworkOpenMenu; -CMGTitle mgNetworkOpenTitle; -CMGButton mgNetworkOpenAddressLabel; -CMGEdit mgNetworkOpenAddress; -CMGButton mgNetworkOpenPortLabel; -CMGEdit mgNetworkOpenPort; -CMGButton mgNetworkOpenJoin; // -------- Split screen menu CSplitScreenMenu gmSplitScreenMenu; -CMGTitle mgSplitScreenTitle; -CMGButton mgSplitScreenStart; -CMGButton mgSplitScreenQuickLoad; -CMGButton mgSplitScreenLoad; // -------- Split screen start menu CSplitStartMenu gmSplitStartMenu; -CMGTitle mgSplitStartTitle; -CMGTrigger mgSplitGameType; -CMGTrigger mgSplitDifficulty; -CMGButton mgSplitLevel; -CMGButton mgSplitOptions; -CMGButton mgSplitStartStart; // -------- Select players menu CSelectPlayersMenu gmSelectPlayersMenu; @@ -1285,7 +1271,7 @@ void StartSelectServerNET(void) void StartSelectLevelFromSplit(void) { - FilterLevels(GetSpawnFlagsForGameType(mgSplitGameType.mg_iSelected)); + FilterLevels(GetSpawnFlagsForGameType(gmSplitStartMenu.gm_mgGameType.mg_iSelected)); void StartSplitStartMenu(void); _pAfterLevelChosen = StartSplitStartMenu; ChangeToMenu( &gmLevelsMenu); @@ -2277,8 +2263,9 @@ void InitializeMenus(void) gmNetworkJoinMenu.Initialize_t(); gmNetworkJoinMenu.gm_strName="NetworkJoin"; - gmNetworkJoinMenu.gm_pmgSelectedByDefault = &mgNetworkJoinLAN; + gmNetworkJoinMenu.gm_pmgSelectedByDefault = &gmNetworkJoinMenu.gm_mgLAN; gmNetworkJoinMenu.gm_pgmParentMenu = &gmNetworkMenu; + InitActionsForNetworkJoinMenu(); gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; gmSelectPlayersMenu.gm_bAllowObserving = FALSE; @@ -2288,18 +2275,21 @@ void InitializeMenus(void) gmNetworkOpenMenu.Initialize_t(); gmNetworkOpenMenu.gm_strName="NetworkOpen"; - gmNetworkOpenMenu.gm_pmgSelectedByDefault = &mgNetworkOpenJoin; + gmNetworkOpenMenu.gm_pmgSelectedByDefault = &gmNetworkOpenMenu.gm_mgJoin; gmNetworkOpenMenu.gm_pgmParentMenu = &gmNetworkJoinMenu; + InitActionsForNetworkOpenMenu(); gmSplitScreenMenu.Initialize_t(); gmSplitScreenMenu.gm_strName="SplitScreen"; - gmSplitScreenMenu.gm_pmgSelectedByDefault = &mgSplitScreenStart; + gmSplitScreenMenu.gm_pmgSelectedByDefault = &gmSplitScreenMenu.gm_mgStart; gmSplitScreenMenu.gm_pgmParentMenu = &gmMainMenu; + InitActionsForSplitScreenMenu(); gmSplitStartMenu.Initialize_t(); gmSplitStartMenu.gm_strName="SplitStart"; - gmSplitStartMenu.gm_pmgSelectedByDefault = &mgSplitStartStart; + gmSplitStartMenu.gm_pmgSelectedByDefault = &gmSplitStartMenu.gm_mgStart; gmSplitStartMenu.gm_pgmParentMenu = &gmSplitScreenMenu; + InitActionsForSplitStartMenu(); } catch( char *strError) { @@ -4829,39 +4819,11 @@ void UpdateNetworkLevel(INDEX iDummy) } // ------------------------ CNetworkJoinMenu implementation -void CNetworkJoinMenu::Initialize_t(void) +void InitActionsForNetworkJoinMenu() { - // title - mgNetworkJoinTitle.mg_boxOnScreen = BoxTitle(); - mgNetworkJoinTitle.mg_strText = TRANS("JOIN GAME"); - gm_lhGadgets.AddTail( mgNetworkJoinTitle.mg_lnNode); - - mgNetworkJoinLAN.mg_bfsFontSize = BFS_LARGE; - mgNetworkJoinLAN.mg_boxOnScreen = BoxBigRow(1.0f); - mgNetworkJoinLAN.mg_pmgUp = &mgNetworkJoinOpen; - mgNetworkJoinLAN.mg_pmgDown = &mgNetworkJoinNET; - mgNetworkJoinLAN.mg_strText = TRANS("SEARCH LAN"); - mgNetworkJoinLAN.mg_strTip = TRANS("search local network for servers"); - gm_lhGadgets.AddTail( mgNetworkJoinLAN.mg_lnNode); - mgNetworkJoinLAN.mg_pActivatedFunction = &StartSelectServerLAN; - - mgNetworkJoinNET.mg_bfsFontSize = BFS_LARGE; - mgNetworkJoinNET.mg_boxOnScreen = BoxBigRow(2.0f); - mgNetworkJoinNET.mg_pmgUp = &mgNetworkJoinLAN; - mgNetworkJoinNET.mg_pmgDown = &mgNetworkJoinOpen; - mgNetworkJoinNET.mg_strText = TRANS("SEARCH INTERNET"); - mgNetworkJoinNET.mg_strTip = TRANS("search internet for servers"); - gm_lhGadgets.AddTail( mgNetworkJoinNET.mg_lnNode); - mgNetworkJoinNET.mg_pActivatedFunction = &StartSelectServerNET; - - mgNetworkJoinOpen.mg_bfsFontSize = BFS_LARGE; - mgNetworkJoinOpen.mg_boxOnScreen = BoxBigRow(3.0f); - mgNetworkJoinOpen.mg_pmgUp = &mgNetworkJoinNET; - mgNetworkJoinOpen.mg_pmgDown = &mgNetworkJoinLAN; - mgNetworkJoinOpen.mg_strText = TRANS("SPECIFY SERVER"); - mgNetworkJoinOpen.mg_strTip = TRANS("type in server address to connect to"); - gm_lhGadgets.AddTail( mgNetworkJoinOpen.mg_lnNode); - mgNetworkJoinOpen.mg_pActivatedFunction = &StartNetworkOpenMenu; + gmNetworkJoinMenu.gm_mgLAN.mg_pActivatedFunction = &StartSelectServerLAN; + gmNetworkJoinMenu.gm_mgNET.mg_pActivatedFunction = &StartSelectServerNET; + gmNetworkJoinMenu.gm_mgOpen.mg_pActivatedFunction = &StartNetworkOpenMenu; } // ------------------------ CNetworkStartMenu implementation @@ -4891,6 +4853,7 @@ void CNetworkStartMenu::Initialize_t(void) mgNetworkGameType.mg_ctTexts = ctGameTypeRadioTexts; mgNetworkGameType.mg_strTip = TRANS("choose type of multiplayer game"); mgNetworkGameType.mg_pOnTriggerChange = &UpdateNetworkLevel; + // difficulty trigger TRIGGER_MG(mgNetworkDifficulty, 3, mgNetworkGameType, mgNetworkLevel, TRANS("Difficulty:"), astrDifficultyRadioTexts); @@ -5022,6 +4985,7 @@ INDEX FindUnusedPlayer(void) ASSERT(FALSE); return iPlayer; } + void SelectPlayersFillMenu(void) { INDEX *ai = _pGame->gm_aiMenuLocalPlayers; @@ -5150,6 +5114,7 @@ void SelectPlayersFillMenu(void) mgSelectPlayersNotes.mg_strText = ""; } } + void SelectPlayersApplyMenu(void) { if (gmSelectPlayersMenu.gm_bAllowDedicated && mgDedicated.mg_iSelected) { @@ -5255,187 +5220,32 @@ void CSelectPlayersMenu::EndMenu(void) CGameMenu::EndMenu(); } -CTString _strPort; + // ------------------------ CNetworkOpenMenu implementation -void CNetworkOpenMenu::Initialize_t(void) +void InitActionsForNetworkOpenMenu() { - // intialize network join menu - mgNetworkOpenTitle.mg_boxOnScreen = BoxTitle(); - mgNetworkOpenTitle.mg_strText = TRANS("JOIN"); - gm_lhGadgets.AddTail( mgNetworkOpenTitle.mg_lnNode); - - mgNetworkOpenAddressLabel.mg_strText = TRANS("Address:"); - mgNetworkOpenAddressLabel.mg_boxOnScreen = BoxMediumLeft(1); - mgNetworkOpenAddressLabel.mg_iCenterI = -1; - gm_lhGadgets.AddTail( mgNetworkOpenAddressLabel.mg_lnNode); - - mgNetworkOpenAddress.mg_strText = _pGame->gam_strJoinAddress; - mgNetworkOpenAddress.mg_ctMaxStringLen = 20; - mgNetworkOpenAddress.mg_pstrToChange = &_pGame->gam_strJoinAddress; - mgNetworkOpenAddress.mg_boxOnScreen = BoxMediumMiddle(1); - mgNetworkOpenAddress.mg_bfsFontSize = BFS_MEDIUM; - mgNetworkOpenAddress.mg_iCenterI = -1; - mgNetworkOpenAddress.mg_pmgUp = &mgNetworkOpenJoin; - mgNetworkOpenAddress.mg_pmgDown = &mgNetworkOpenPort; - mgNetworkOpenAddress.mg_strTip = TRANS("specify server address"); - gm_lhGadgets.AddTail( mgNetworkOpenAddress.mg_lnNode); - - mgNetworkOpenPortLabel.mg_strText = TRANS("Port:"); - mgNetworkOpenPortLabel.mg_boxOnScreen = BoxMediumLeft(2); - mgNetworkOpenPortLabel.mg_iCenterI = -1; - gm_lhGadgets.AddTail( mgNetworkOpenPortLabel.mg_lnNode); - - mgNetworkOpenPort.mg_strText = ""; - mgNetworkOpenPort.mg_ctMaxStringLen = 10; - mgNetworkOpenPort.mg_pstrToChange = &_strPort; - mgNetworkOpenPort.mg_boxOnScreen = BoxMediumMiddle(2); - mgNetworkOpenPort.mg_bfsFontSize = BFS_MEDIUM; - mgNetworkOpenPort.mg_iCenterI = -1; - mgNetworkOpenPort.mg_pmgUp = &mgNetworkOpenAddress; - mgNetworkOpenPort.mg_pmgDown = &mgNetworkOpenJoin; - mgNetworkOpenPort.mg_strTip = TRANS("specify server address"); - gm_lhGadgets.AddTail( mgNetworkOpenPort.mg_lnNode); - - mgNetworkOpenJoin.mg_boxOnScreen = BoxMediumMiddle(3); - mgNetworkOpenJoin.mg_pmgUp = &mgNetworkOpenPort; - mgNetworkOpenJoin.mg_pmgDown = &mgNetworkOpenAddress; - mgNetworkOpenJoin.mg_strText = TRANS("Join"); - gm_lhGadgets.AddTail( mgNetworkOpenJoin.mg_lnNode); - mgNetworkOpenJoin.mg_pActivatedFunction = &StartSelectPlayersMenuFromOpen; -} - -void CNetworkOpenMenu::StartMenu(void) -{ - _strPort = _pShell->GetValue("net_iPort"); - mgNetworkOpenPort.mg_strText = _strPort; -} - -void CNetworkOpenMenu::EndMenu(void) -{ - _pShell->SetValue("net_iPort", _strPort); + gmNetworkOpenMenu.gm_mgJoin.mg_pActivatedFunction = &StartSelectPlayersMenuFromOpen; } // ------------------------ CSplitScreenMenu implementation -void CSplitScreenMenu::Initialize_t(void) +void InitActionsForSplitScreenMenu() { - // intialize split screen menu - mgSplitScreenTitle.mg_boxOnScreen = BoxTitle(); - mgSplitScreenTitle.mg_strText = TRANS("SPLIT SCREEN"); - gm_lhGadgets.AddTail( mgSplitScreenTitle.mg_lnNode); - - mgSplitScreenStart.mg_bfsFontSize = BFS_LARGE; - mgSplitScreenStart.mg_boxOnScreen = BoxBigRow(0); - mgSplitScreenStart.mg_pmgUp = &mgSplitScreenLoad; - mgSplitScreenStart.mg_pmgDown = &mgSplitScreenQuickLoad; - mgSplitScreenStart.mg_strText = TRANS("NEW GAME"); - mgSplitScreenStart.mg_strTip = TRANS("start new split-screen game"); - gm_lhGadgets.AddTail( mgSplitScreenStart.mg_lnNode); - mgSplitScreenStart.mg_pActivatedFunction = &StartSplitStartMenu; - - mgSplitScreenQuickLoad.mg_bfsFontSize = BFS_LARGE; - mgSplitScreenQuickLoad.mg_boxOnScreen = BoxBigRow(1); - mgSplitScreenQuickLoad.mg_pmgUp = &mgSplitScreenStart; - mgSplitScreenQuickLoad.mg_pmgDown = &mgSplitScreenLoad; - mgSplitScreenQuickLoad.mg_strText = TRANS("QUICK LOAD"); - mgSplitScreenQuickLoad.mg_strTip = TRANS("load a quick-saved game (F9)"); - gm_lhGadgets.AddTail( mgSplitScreenQuickLoad.mg_lnNode); - mgSplitScreenQuickLoad.mg_pActivatedFunction = &StartSplitScreenQuickLoadMenu; - - mgSplitScreenLoad.mg_bfsFontSize = BFS_LARGE; - mgSplitScreenLoad.mg_boxOnScreen = BoxBigRow(2); - mgSplitScreenLoad.mg_pmgUp = &mgSplitScreenQuickLoad; - mgSplitScreenLoad.mg_pmgDown = &mgSplitScreenStart; - mgSplitScreenLoad.mg_strText = TRANS("LOAD"); - mgSplitScreenLoad.mg_strTip = TRANS("load a saved split-screen game"); - gm_lhGadgets.AddTail( mgSplitScreenLoad.mg_lnNode); - mgSplitScreenLoad.mg_pActivatedFunction = &StartSplitScreenLoadMenu; -} - -void CSplitScreenMenu::StartMenu(void) -{ - CGameMenu::StartMenu(); -} - -void UpdateSplitLevel(INDEX iDummy) -{ - ValidateLevelForFlags(_pGame->gam_strCustomLevel, - GetSpawnFlagsForGameType(mgSplitGameType.mg_iSelected)); - mgSplitLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; + gmSplitScreenMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitStartMenu; + gmSplitScreenMenu.gm_mgQuickLoad.mg_pActivatedFunction = &StartSplitScreenQuickLoadMenu; + gmSplitScreenMenu.gm_mgLoad.mg_pActivatedFunction = &StartSplitScreenLoadMenu; } // ------------------------ CSplitStartMenu implementation -void CSplitStartMenu::Initialize_t(void) +void InitActionsForSplitStartMenu() { - // intialize split screen menu - mgSplitStartTitle.mg_boxOnScreen = BoxTitle(); - mgSplitStartTitle.mg_strText = TRANS("START SPLIT SCREEN"); - gm_lhGadgets.AddTail( mgSplitStartTitle.mg_lnNode); - - // game type trigger - TRIGGER_MG(mgSplitGameType, 0, - mgSplitStartStart, mgSplitDifficulty, TRANS("Game type:"), astrGameTypeRadioTexts); - mgSplitGameType.mg_ctTexts = ctGameTypeRadioTexts; - mgSplitGameType.mg_strTip = TRANS("choose type of multiplayer game"); - mgSplitGameType.mg_pOnTriggerChange = UpdateSplitLevel; - // difficulty trigger - TRIGGER_MG(mgSplitDifficulty, 1, - mgSplitGameType, mgSplitLevel, TRANS("Difficulty:"), astrDifficultyRadioTexts); - mgSplitDifficulty.mg_strTip = TRANS("choose difficulty level"); - - // level name - mgSplitLevel.mg_strText = ""; - mgSplitLevel.mg_strLabel = TRANS("Level:"); - mgSplitLevel.mg_boxOnScreen = BoxMediumRow(2); - mgSplitLevel.mg_bfsFontSize = BFS_MEDIUM; - mgSplitLevel.mg_iCenterI = -1; - mgSplitLevel.mg_pmgUp = &mgSplitDifficulty; - mgSplitLevel.mg_pmgDown = &mgSplitOptions; - mgSplitLevel.mg_strTip = TRANS("choose the level to start"); - mgSplitLevel.mg_pActivatedFunction = &StartSelectLevelFromSplit; - gm_lhGadgets.AddTail( mgSplitLevel.mg_lnNode); - - // 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; + gmSplitStartMenu.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromSplit; + gmSplitStartMenu.gm_mgOptions.mg_pActivatedFunction = &StartGameOptionsFromSplitScreen; + gmSplitStartMenu.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromSplit; } -void CSplitStartMenu::StartMenu(void) +extern void UpdateSplitLevel(INDEX iDummy) { - extern INDEX sam_bMentalActivated; - mgSplitDifficulty.mg_ctTexts = sam_bMentalActivated?6:5; - - mgSplitGameType.mg_iSelected = Clamp(_pShell->GetINDEX("gam_iStartMode"), 0L, ctGameTypeRadioTexts-1L); - mgSplitGameType.ApplyCurrentSelection(); - mgSplitDifficulty.mg_iSelected = _pShell->GetINDEX("gam_iStartDifficulty")+1; - mgSplitDifficulty.ApplyCurrentSelection(); - - // clamp maximum number of players to at least 4 - _pShell->SetINDEX("gam_ctMaxPlayers", ClampDn(_pShell->GetINDEX("gam_ctMaxPlayers"), 4L)); - - UpdateSplitLevel(0); - CGameMenu::StartMenu(); -} - -void CSplitStartMenu::EndMenu(void) -{ - _pShell->SetINDEX("gam_iStartDifficulty", mgSplitDifficulty.mg_iSelected-1); - _pShell->SetINDEX("gam_iStartMode", mgSplitGameType.mg_iSelected); - - CGameMenu::EndMenu(); + ValidateLevelForFlags(_pGame->gam_strCustomLevel, + GetSpawnFlagsForGameType(gmSplitStartMenu.gm_mgGameType.mg_iSelected)); + gmSplitStartMenu.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; } \ No newline at end of file diff --git a/Sources/SeriousSam/SeriousSam.vcxproj b/Sources/SeriousSam/SeriousSam.vcxproj index cf65491..2d764e2 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj +++ b/Sources/SeriousSam/SeriousSam.vcxproj @@ -213,8 +213,12 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + + + + Use diff --git a/Sources/SeriousSam/SeriousSam.vcxproj.filters b/Sources/SeriousSam/SeriousSam.vcxproj.filters index 378cb3c..921821f 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj.filters +++ b/Sources/SeriousSam/SeriousSam.vcxproj.filters @@ -144,6 +144,18 @@ Source Files\Menus + + Source Files\Menus + + + Source Files\Menus + + + Source Files\Menus + + + Source Files\Menus + From 16990d713c7b63d10713d1c2d10e3a63cc4fe15a Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Mon, 14 Mar 2016 23:45:56 +0300 Subject: [PATCH 15/34] 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 + From 2fcc548f29cd2619cf6fdd3eaa3ca2edf1c215c7 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Tue, 15 Mar 2016 01:03:22 +0300 Subject: [PATCH 16/34] GameExecutable: Move some stuff from Menu.cpp into files PART V Now it's 4463 lines! --- Sources/SeriousSam/MNetworkStart.cpp | 151 +++++ Sources/SeriousSam/MNetworkStart.h | 15 + Sources/SeriousSam/MSelectPlayers.cpp | 115 ++++ Sources/SeriousSam/MSelectPlayers.h | 20 + Sources/SeriousSam/MServers.cpp | 97 +++ Sources/SeriousSam/MServers.h | 11 +- Sources/SeriousSam/MSplitStart.cpp | 5 +- Sources/SeriousSam/Menu.cpp | 634 +++--------------- Sources/SeriousSam/MenuStuff.cpp | 105 +++ Sources/SeriousSam/MenuStuff.h | 16 + Sources/SeriousSam/SeriousSam.vcxproj | 3 + Sources/SeriousSam/SeriousSam.vcxproj.filters | 15 +- 12 files changed, 642 insertions(+), 545 deletions(-) create mode 100644 Sources/SeriousSam/MNetworkStart.cpp create mode 100644 Sources/SeriousSam/MSelectPlayers.cpp create mode 100644 Sources/SeriousSam/MServers.cpp diff --git a/Sources/SeriousSam/MNetworkStart.cpp b/Sources/SeriousSam/MNetworkStart.cpp new file mode 100644 index 0000000..414db34 --- /dev/null +++ b/Sources/SeriousSam/MNetworkStart.cpp @@ -0,0 +1,151 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#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(); +} diff --git a/Sources/SeriousSam/MNetworkStart.h b/Sources/SeriousSam/MNetworkStart.h index 2072e6e..79bbdc5 100644 --- a/Sources/SeriousSam/MNetworkStart.h +++ b/Sources/SeriousSam/MNetworkStart.h @@ -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); diff --git a/Sources/SeriousSam/MSelectPlayers.cpp b/Sources/SeriousSam/MSelectPlayers.cpp new file mode 100644 index 0000000..f16fe4f --- /dev/null +++ b/Sources/SeriousSam/MSelectPlayers.cpp @@ -0,0 +1,115 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#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(); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MSelectPlayers.h b/Sources/SeriousSam/MSelectPlayers.h index 5d5f4da..4f747d8 100644 --- a/Sources/SeriousSam/MSelectPlayers.h +++ b/Sources/SeriousSam/MSelectPlayers.h @@ -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); diff --git a/Sources/SeriousSam/MServers.cpp b/Sources/SeriousSam/MServers.cpp new file mode 100644 index 0000000..92f67e5 --- /dev/null +++ b/Sources/SeriousSam/MServers.cpp @@ -0,0 +1,97 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MServers.h" + +CTString _strServerFilter[7]; +CMGButton mgServerColumn[7]; +CMGEdit mgServerFilter[7]; + +void CServersMenu::Initialize_t(void) +{ + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("CHOOSE SERVER"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + + gm_mgList.mg_boxOnScreen = FLOATaabbox2D(FLOAT2D(0, 0), FLOAT2D(1, 1)); + gm_mgList.mg_pmgLeft = &gm_mgList; // make sure it can get focus + gm_mgList.mg_bEnabled = TRUE; + gm_lhGadgets.AddTail(gm_mgList.mg_lnNode); + + ASSERT(ARRAYCOUNT(mgServerColumn) == ARRAYCOUNT(mgServerFilter)); + for (INDEX i = 0; i=2)"); + mgServerFilter[4].mg_strTip = TRANS("filter by game (ie. coop)"); + mgServerFilter[5].mg_strTip = TRANS("filter by mod"); + mgServerFilter[6].mg_strTip = TRANS("filter by version"); +} + +void CServersMenu::StartMenu(void) +{ + extern void RefreshServerList(void); + RefreshServerList(); + + CGameMenu::StartMenu(); +} + +void CServersMenu::Think(void) +{ + if (!_pNetwork->ga_bEnumerationChange) { + return; + } + _pNetwork->ga_bEnumerationChange = FALSE; +} diff --git a/Sources/SeriousSam/MServers.h b/Sources/SeriousSam/MServers.h index c8e7304..bc8f5bd 100644 --- a/Sources/SeriousSam/MServers.h +++ b/Sources/SeriousSam/MServers.h @@ -7,16 +7,23 @@ #endif #include "GameMenu.h" +#include "MGButton.h" +#include "MGEdit.h" +#include "MGServerList.h" +#include "MGTitle.h" class CServersMenu : public CGameMenu { public: BOOL m_bInternet; + + CMGTitle gm_mgTitle; + CMGServerList gm_mgList; + CMGButton gm_mgRefresh; + void Initialize_t(void); void StartMenu(void); void Think(void); - - BOOL OnKeyDown(int iVKey); // __Evolution }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/MSplitStart.cpp b/Sources/SeriousSam/MSplitStart.cpp index 4266823..6df0b44 100644 --- a/Sources/SeriousSam/MSplitStart.cpp +++ b/Sources/SeriousSam/MSplitStart.cpp @@ -18,10 +18,9 @@ mg.mg_strLabel = text; \ mg.mg_strValue = astr[0]; - extern INDEX ctGameTypeRadioTexts; extern void UpdateSplitLevel(INDEX iDummy); -extern void SplitStartMenuSubInit(CSplitStartMenu* gm); + void CSplitStartMenu::Initialize_t(void) { @@ -31,7 +30,6 @@ void CSplitStartMenu::Initialize_t(void) gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); // game type trigger - extern CTString astrGameTypeRadioTexts[20]; TRIGGER_MG(gm_mgGameType, 0, gm_mgStart, gm_mgDifficulty, TRANS("Game type:"), astrGameTypeRadioTexts); gm_mgGameType.mg_ctTexts = ctGameTypeRadioTexts; @@ -39,7 +37,6 @@ void CSplitStartMenu::Initialize_t(void) gm_mgGameType.mg_pOnTriggerChange = &UpdateSplitLevel; // difficulty trigger - extern CTString astrDifficultyRadioTexts[6]; TRIGGER_MG(gm_mgDifficulty, 1, gm_mgGameType, gm_mgLevel, TRANS("Difficulty:"), astrDifficultyRadioTexts); gm_mgDifficulty.mg_strTip = TRANS("choose difficulty level"); diff --git a/Sources/SeriousSam/Menu.cpp b/Sources/SeriousSam/Menu.cpp index 2b465a8..be8214d 100644 --- a/Sources/SeriousSam/Menu.cpp +++ b/Sources/SeriousSam/Menu.cpp @@ -57,7 +57,6 @@ #include "MenuStuff.h" // macros for translating radio button text arrays -#define RADIOTRANS(str) ("ETRS" str) #define TRANSLATERADIOARRAY(array) TranslateRadioTexts(array, ARRAYCOUNT(array)) extern CMenuGadget *_pmgLastActivatedGadget; @@ -110,7 +109,10 @@ void InitActionsForInGameMenu(); void InitActionsForNetworkMenu(); void InitActionsForNetworkJoinMenu(); void InitActionsForNetworkOpenMenu(); +void InitActionsForNetworkStartMenu(); void InitActionsForOptionsMenu(); +void InitActionsForSelectPlayersMenu(); +void InitActionsForServersMenu(); void InitActionsForSinglePlayerMenu(); void InitActionsForSinglePlayerNewMenu(); void InitActionsForSplitScreenMenu(); @@ -219,74 +221,6 @@ static CTextureObject _toLogoMenuB; #define PLACEMENT(x,y,z) CPlacement3D( FLOAT3D( x, y, z), \ ANGLE3D( AngleDeg(0.0f), AngleDeg(0.0f), AngleDeg(0.0f))) -extern CTString astrNoYes[] = { - RADIOTRANS( "No"), - RADIOTRANS( "Yes"), -}; -CTString astrComputerInvoke[] = { - RADIOTRANS( "Use"), - RADIOTRANS( "Double-click use"), -}; -CTString astrWeapon[] = { - RADIOTRANS( "Only if new"), - RADIOTRANS( "Never"), - RADIOTRANS( "Always"), - RADIOTRANS( "Only if stronger"), -}; -CTString astrCrosshair[] = { - "", - "Textures\\Interface\\Crosshairs\\Crosshair1.tex", - "Textures\\Interface\\Crosshairs\\Crosshair2.tex", - "Textures\\Interface\\Crosshairs\\Crosshair3.tex", - "Textures\\Interface\\Crosshairs\\Crosshair4.tex", - "Textures\\Interface\\Crosshairs\\Crosshair5.tex", - "Textures\\Interface\\Crosshairs\\Crosshair6.tex", - "Textures\\Interface\\Crosshairs\\Crosshair7.tex", -}; - -CTString astrMaxPlayersRadioTexts[] = { - RADIOTRANS( "2"), - RADIOTRANS( "3"), - RADIOTRANS( "4"), - RADIOTRANS( "5"), - RADIOTRANS( "6"), - RADIOTRANS( "7"), - RADIOTRANS( "8"), - RADIOTRANS( "9"), - RADIOTRANS( "10"), - RADIOTRANS( "11"), - RADIOTRANS( "12"), - RADIOTRANS( "13"), - RADIOTRANS( "14"), - RADIOTRANS( "15"), - RADIOTRANS( "16"), -}; -// here, we just reserve space for up to 16 different game types -// actual names are added later -extern CTString astrGameTypeRadioTexts[] = { - "", "", "", "", "", - "", "", "", "", "", - "", "", "", "", "", - "", "", "", "", "", -}; - -extern INDEX ctGameTypeRadioTexts = 1; -extern CTString astrDifficultyRadioTexts[] = { - RADIOTRANS("Tourist"), - RADIOTRANS("Easy"), - RADIOTRANS("Normal"), - RADIOTRANS("Hard"), - RADIOTRANS("Serious"), - RADIOTRANS("Mental"), -}; - -CTString astrSplitScreenRadioTexts[] = { - RADIOTRANS( "1"), - RADIOTRANS( "2 - split screen"), - RADIOTRANS( "3 - split screen"), - RADIOTRANS( "4 - split screen"), -}; - // ptr to current menu CGameMenu *pgmCurrentMenu = NULL; @@ -368,11 +302,6 @@ CCustomizeKeyboardMenu gmCustomizeKeyboardMenu; // -------- Choose servers menu CServersMenu gmServersMenu; -CMGTitle mgServersTitle; -CMGServerList mgServerList; -CMGButton mgServerColumn[7]; -CMGEdit mgServerFilter[7]; -CMGButton mgServerRefresh; // -------- Customize axis menu CCustomizeAxisMenu gmCustomizeAxisMenu; @@ -384,20 +313,11 @@ COptionsMenu gmOptionsMenu; CVideoOptionsMenu gmVideoOptionsMenu; CMGTitle mgVideoOptionsTitle; CMGTrigger mgDisplayAPITrigger; -CTString astrDisplayAPIRadioTexts[] = { - RADIOTRANS( "OpenGL"), - RADIOTRANS( "Direct3D"), -}; CMGTrigger mgDisplayAdaptersTrigger; CMGTrigger mgFullScreenTrigger; CMGTrigger mgResolutionsTrigger; CMGTrigger mgDisplayPrefsTrigger; -CTString astrDisplayPrefsRadioTexts[] = { - RADIOTRANS( "Speed"), - RADIOTRANS( "Normal"), - RADIOTRANS( "Quality"), - RADIOTRANS( "Custom"), -}; + INDEX _ctResolutions = 0; CTString * _astrResolutionTexts = NULL; CDisplayMode *_admResolutionModes = NULL; @@ -405,12 +325,6 @@ INDEX _ctAdapters = 0; CTString * _astrAdapterTexts = NULL; CMGButton mgVideoRendering; CMGTrigger mgBitsPerPixelTrigger; -CTString astrBitsPerPixelRadioTexts[] = { - RADIOTRANS( "Desktop"), - RADIOTRANS( "16 BPP"), - RADIOTRANS( "32 BPP"), -}; - CMGButton mgVideoOptionsApply; // -------- Audio options menu @@ -419,17 +333,6 @@ CMGTitle mgAudioOptionsTitle; CMGTrigger mgAudioAutoTrigger; CMGTrigger mgAudioAPITrigger; CMGTrigger mgFrequencyTrigger; -CTString astrFrequencyRadioTexts[] = { - RADIOTRANS( "No sound"), - RADIOTRANS( "11kHz"), - RADIOTRANS( "22kHz"), - RADIOTRANS( "44kHz"), -}; -CTString astrSoundAPIRadioTexts[] = { - RADIOTRANS( "WaveOut"), - RADIOTRANS( "DirectSound"), - RADIOTRANS( "EAX"), -}; CMGSlider mgWaveVolume; CMGSlider mgMPEGVolume; CMGButton mgAudioOptionsApply; @@ -442,16 +345,6 @@ CNetworkJoinMenu gmNetworkJoinMenu; // -------- Network start menu CNetworkStartMenu gmNetworkStartMenu; -CMGTitle mgNetworkStartTitle; -CMGEdit mgNetworkSessionName; -CMGTrigger mgNetworkGameType; -CMGTrigger mgNetworkDifficulty; -CMGButton mgNetworkLevel; -CMGTrigger mgNetworkMaxPlayers; -CMGTrigger mgNetworkWaitAllPlayers; -CMGTrigger mgNetworkVisible; -CMGButton mgNetworkGameOptions; -CMGButton mgNetworkStartStart; // -------- Network open menu CNetworkOpenMenu gmNetworkOpenMenu; @@ -464,20 +357,6 @@ CSplitStartMenu gmSplitStartMenu; // -------- Select players menu CSelectPlayersMenu gmSelectPlayersMenu; -CMGTitle mgSelectPlayerTitle; - -CMGTrigger mgDedicated; -CMGTrigger mgObserver; -CMGTrigger mgSplitScreenCfg; - -CMGChangePlayer mgPlayer0Change; -CMGChangePlayer mgPlayer1Change; -CMGChangePlayer mgPlayer2Change; -CMGChangePlayer mgPlayer3Change; - -CMGButton mgSelectPlayersNotes; - -CMGButton mgSelectPlayersStart; extern void PlayMenuSound(CSoundData *psd) { @@ -502,49 +381,6 @@ CModelObject *AddAttachment_t(CModelObject *pmoParent, INDEX iPosition, return &pamo->amo_moModelObject; } -void SetPlayerModel(CModelObject *pmoPlayer) -{ -/* try { - pmoPlayer->SetData_t( CTFILENAME( "Models\\Player\\SeriousSam\\Player.mdl")); - pmoPlayer->mo_toTexture.SetData_t( CTFILENAME( "Models\\Player\\SeriousSam\\Player.tex")); - pmoPlayer->PlayAnim(PLAYER_ANIM_WALK, AOF_LOOPING); - CModelObject *pmoBody = AddAttachment_t(pmoPlayer, PLAYER_ATTACHMENT_TORSO, - CTFILENAME("Models\\Player\\SeriousSam\\Body.mdl"), BODY_ANIM_MINIGUN_STAND, - CTFILENAME("Models\\Player\\SeriousSam\\Body.tex"), - CTFILENAME(""), - CTFILENAME("")); - CModelObject *pmoHead = AddAttachment_t(pmoBody, BODY_ATTACHMENT_HEAD, - CTFILENAME("Models\\Player\\SeriousSam\\Head.mdl"), 0, - CTFILENAME("Models\\Player\\SeriousSam\\Head.tex"), - CTFILENAME(""), - CTFILENAME("")); - CModelObject *pmoMiniGun = AddAttachment_t(pmoBody, BODY_ATTACHMENT_MINIGUN, - CTFILENAME("Models\\Weapons\\MiniGun\\MiniGunItem.mdl"), 0, - CTFILENAME("Models\\Weapons\\MiniGun\\MiniGun.tex"), - CTFILENAME(""), - CTFILENAME("")); - AddAttachment_t(pmoMiniGun, MINIGUNITEM_ATTACHMENT_BARRELS, - CTFILENAME("Models\\Weapons\\MiniGun\\Barrels.mdl"), 0, - CTFILENAME("Models\\Weapons\\MiniGun\\MiniGun.tex"), - CTFILENAME("Models\\ReflectionTextures\\LightBlueMetal01.tex"), - CTFILENAME("Models\\SpecularTextures\\Medium.tex")); - AddAttachment_t(pmoMiniGun, MINIGUNITEM_ATTACHMENT_BODY, - CTFILENAME("Models\\Weapons\\MiniGun\\Body.mdl"), 0, - CTFILENAME("Models\\Weapons\\MiniGun\\MiniGun.tex"), - CTFILENAME("Models\\ReflectionTextures\\LightBlueMetal01.tex"), - CTFILENAME("Models\\SpecularTextures\\Medium.tex")); - AddAttachment_t(pmoMiniGun, MINIGUNITEM_ATTACHMENT_ENGINE, - CTFILENAME("Models\\Weapons\\MiniGun\\Engine.mdl"), 0, - CTFILENAME("Models\\Weapons\\MiniGun\\MiniGun.tex"), - CTFILENAME("Models\\ReflectionTextures\\LightBlueMetal01.tex"), - CTFILENAME("Models\\SpecularTextures\\Medium.tex")); - - } catch( char *strError) { - FatalError( strError); - } - */ -} - // translate all texts in array for one radio button void TranslateRadioTexts(CTString astr[], INDEX ct) { @@ -1186,7 +1022,7 @@ void StartSelectPlayersMenuFromSplit(void) { gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; gmSelectPlayersMenu.gm_bAllowObserving = FALSE; - mgSelectPlayersStart.mg_pActivatedFunction = &StartSplitScreenGame; + gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; gmSelectPlayersMenu.gm_pgmParentMenu = &gmSplitStartMenu; ChangeToMenu( &gmSelectPlayersMenu); } @@ -1195,7 +1031,7 @@ void StartSelectPlayersMenuFromNetwork(void) { gmSelectPlayersMenu.gm_bAllowDedicated = TRUE; gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - mgSelectPlayersStart.mg_pActivatedFunction = &StartNetworkGame; + gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkGame; gmSelectPlayersMenu.gm_pgmParentMenu = &gmNetworkStartMenu; ChangeToMenu( &gmSelectPlayersMenu); } @@ -1204,7 +1040,7 @@ void StartSelectPlayersMenuFromOpen(void) { gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - mgSelectPlayersStart.mg_pActivatedFunction = &JoinNetworkGame; + gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; gmSelectPlayersMenu.gm_pgmParentMenu = &gmNetworkOpenMenu; ChangeToMenu( &gmSelectPlayersMenu); @@ -1220,7 +1056,7 @@ void StartSelectPlayersMenuFromServers(void) { gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - mgSelectPlayersStart.mg_pActivatedFunction = &JoinNetworkGame; + gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; gmSelectPlayersMenu.gm_pgmParentMenu = &gmServersMenu; ChangeToMenu( &gmSelectPlayersMenu); @@ -1255,7 +1091,7 @@ void StartSelectLevelFromSplit(void) } void StartSelectLevelFromNetwork(void) { - FilterLevels(GetSpawnFlagsForGameType(mgNetworkGameType.mg_iSelected)); + FilterLevels(GetSpawnFlagsForGameType(gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); void StartNetworkStartMenu(void); _pAfterLevelChosen = StartNetworkStartMenu; ChangeToMenu( &gmLevelsMenu); @@ -1266,7 +1102,7 @@ void StartSelectPlayersMenuFromSplitScreen(void) { gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; gmSelectPlayersMenu.gm_bAllowObserving = FALSE; -// mgSelectPlayersStart.mg_pActivatedFunction = &StartSplitScreenGame; +// gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; gmSelectPlayersMenu.gm_pgmParentMenu = &gmSplitScreenMenu; ChangeToMenu( &gmSelectPlayersMenu); } @@ -1274,7 +1110,7 @@ void StartSelectPlayersMenuFromNetworkLoad(void) { gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - mgSelectPlayersStart.mg_pActivatedFunction = &StartNetworkLoadGame; + gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkLoadGame; gmSelectPlayersMenu.gm_pgmParentMenu = &gmLoadSaveMenu; ChangeToMenu( &gmSelectPlayersMenu); } @@ -1283,7 +1119,7 @@ void StartSelectPlayersMenuFromSplitScreenLoad(void) { gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; gmSelectPlayersMenu.gm_bAllowObserving = FALSE; - mgSelectPlayersStart.mg_pActivatedFunction = &StartSplitScreenGameLoad; + gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGameLoad; gmSelectPlayersMenu.gm_pgmParentMenu = &gmLoadSaveMenu; ChangeToMenu( &gmSelectPlayersMenu); } @@ -2226,8 +2062,9 @@ void InitializeMenus(void) gmServersMenu.Initialize_t(); gmServersMenu.gm_strName="Servers"; - gmServersMenu.gm_pmgSelectedByDefault = &mgServerList; + gmServersMenu.gm_pmgSelectedByDefault = &gmServersMenu.gm_mgList; gmServersMenu.gm_pgmParentMenu = &gmNetworkOpenMenu; + InitActionsForServersMenu(); gmNetworkMenu.Initialize_t(); gmNetworkMenu.gm_strName="Network"; @@ -2237,9 +2074,10 @@ void InitializeMenus(void) gmNetworkStartMenu.Initialize_t(); gmNetworkStartMenu.gm_strName="NetworkStart"; - gmNetworkStartMenu.gm_pmgSelectedByDefault = &mgNetworkStartStart; + gmNetworkStartMenu.gm_pmgSelectedByDefault = &gmNetworkStartMenu.gm_mgStart; gmNetworkStartMenu.gm_pgmParentMenu = &gmNetworkMenu; - + InitActionsForNetworkStartMenu(); + gmNetworkJoinMenu.Initialize_t(); gmNetworkJoinMenu.gm_strName="NetworkJoin"; gmNetworkJoinMenu.gm_pmgSelectedByDefault = &gmNetworkJoinMenu.gm_mgLAN; @@ -2250,7 +2088,8 @@ void InitializeMenus(void) gmSelectPlayersMenu.gm_bAllowObserving = FALSE; gmSelectPlayersMenu.Initialize_t(); gmSelectPlayersMenu.gm_strName="SelectPlayers"; - gmSelectPlayersMenu.gm_pmgSelectedByDefault = &mgSelectPlayersStart; + gmSelectPlayersMenu.gm_pmgSelectedByDefault = &gmSelectPlayersMenu.gm_mgStart; + InitActionsForSelectPlayersMenu(); gmNetworkOpenMenu.Initialize_t(); gmNetworkOpenMenu.gm_strName="NetworkOpen"; @@ -4325,7 +4164,7 @@ void InitActionsForVarMenu() { } // ------------------------ CServersMenu implementation -void RefreshServerList(void) +extern void RefreshServerList(void) { _pNetwork->EnumSessions(gmServersMenu.m_bInternet); } @@ -4335,24 +4174,14 @@ void RefreshServerListManually(void) ChangeToMenu(&gmServersMenu); // this refreshes the list and sets focuses } -void CServersMenu::Think(void) -{ - if (!_pNetwork->ga_bEnumerationChange) { - return; - } - _pNetwork->ga_bEnumerationChange = FALSE; -} - -CTString _strServerFilter[7]; - void SortByColumn(int i) { - if (mgServerList.mg_iSort==i) { - mgServerList.mg_bSortDown = !mgServerList.mg_bSortDown; + if (gmServersMenu.gm_mgList.mg_iSort==i) { + gmServersMenu.gm_mgList.mg_bSortDown = !gmServersMenu.gm_mgList.mg_bSortDown; } else { - mgServerList.mg_bSortDown = FALSE; + gmServersMenu.gm_mgList.mg_bSortDown = FALSE; } - mgServerList.mg_iSort=i; + gmServersMenu.gm_mgList.mg_iSort = i; } void SortByServer(void) { SortByColumn(0); } @@ -4363,95 +4192,21 @@ void SortByGame(void) { SortByColumn(4); } void SortByMod(void) { SortByColumn(5); } void SortByVer(void) { SortByColumn(6); } -void CServersMenu::Initialize_t(void) -{ - mgServersTitle.mg_boxOnScreen = BoxTitle(); - mgServersTitle.mg_strText = TRANS("CHOOSE SERVER"); - gm_lhGadgets.AddTail( mgServersTitle.mg_lnNode); +extern CMGButton mgServerColumn[7]; +extern CMGEdit mgServerFilter[7]; - mgServerList.mg_boxOnScreen = FLOATaabbox2D(FLOAT2D(0,0), FLOAT2D(1,1)); - mgServerList.mg_pmgLeft = &mgServerList; // make sure it can get focus - mgServerList.mg_bEnabled = TRUE; - gm_lhGadgets.AddTail(mgServerList.mg_lnNode); +void InitActionsForServersMenu() { + gmServersMenu.gm_mgRefresh.mg_pActivatedFunction = &RefreshServerList; - ASSERT(ARRAYCOUNT(mgServerColumn)==ARRAYCOUNT(mgServerFilter)); - for (INDEX i=0; i=2)"); - mgServerFilter[4].mg_strTip = TRANS("filter by game (ie. coop)") ; - mgServerFilter[5].mg_strTip = TRANS("filter by mod") ; - mgServerFilter[6].mg_strTip = TRANS("filter by version"); + mgServerColumn[0].mg_pActivatedFunction = SortByServer; + mgServerColumn[1].mg_pActivatedFunction = SortByMap; + mgServerColumn[2].mg_pActivatedFunction = SortByPing; + mgServerColumn[3].mg_pActivatedFunction = SortByPlayers; + mgServerColumn[4].mg_pActivatedFunction = SortByGame; + mgServerColumn[5].mg_pActivatedFunction = SortByMod; + mgServerColumn[6].mg_pActivatedFunction = SortByVer; } -void CServersMenu::StartMenu(void) -{ - RefreshServerList(); - - CGameMenu::StartMenu(); -} - -// __Evolution -BOOL CServersMenu::OnKeyDown(int iVKey) -{ - if (iVKey == VK_F5) { - RefreshServerListManually(); - return TRUE; - } - return CGameMenu::OnKeyDown(iVKey); -} -// __Evolution - // ------------------------ CNetworkMenu implementation void InitActionsForNetworkMenu() { @@ -4470,136 +4225,21 @@ void InitActionsForNetworkJoinMenu() } // ------------------------ CNetworkStartMenu implementation -void UpdateNetworkLevel(INDEX iDummy) +extern void UpdateNetworkLevel(INDEX iDummy) { ValidateLevelForFlags(_pGame->gam_strCustomLevel, - GetSpawnFlagsForGameType(mgNetworkGameType.mg_iSelected)); - mgNetworkLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; + GetSpawnFlagsForGameType(gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); + gmNetworkStartMenu.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; } -void CNetworkStartMenu::Initialize_t(void) +void InitActionsForNetworkStartMenu() { - // title - mgNetworkStartTitle.mg_boxOnScreen = BoxTitle(); - mgNetworkStartTitle.mg_strText = TRANS("START SERVER"); - gm_lhGadgets.AddTail( mgNetworkStartTitle.mg_lnNode); - - // session name edit box - mgNetworkSessionName.mg_strText = _pGame->gam_strSessionName; - mgNetworkSessionName.mg_strLabel = TRANS("Session name:"); - mgNetworkSessionName.mg_ctMaxStringLen = 25; - mgNetworkSessionName.mg_pstrToChange = &_pGame->gam_strSessionName; - mgNetworkSessionName.mg_boxOnScreen = BoxMediumRow(1); - mgNetworkSessionName.mg_bfsFontSize = BFS_MEDIUM; - mgNetworkSessionName.mg_iCenterI = -1; - mgNetworkSessionName.mg_pmgUp = &mgNetworkStartStart; - mgNetworkSessionName.mg_pmgDown = &mgNetworkGameType; - mgNetworkSessionName.mg_strTip = TRANS("name the session to start"); - gm_lhGadgets.AddTail( mgNetworkSessionName.mg_lnNode); - - // game type trigger - TRIGGER_MG(mgNetworkGameType, 2, - mgNetworkSessionName, mgNetworkDifficulty, TRANS("Game type:"), astrGameTypeRadioTexts); - mgNetworkGameType.mg_ctTexts = ctGameTypeRadioTexts; - mgNetworkGameType.mg_strTip = TRANS("choose type of multiplayer game"); - mgNetworkGameType.mg_pOnTriggerChange = &UpdateNetworkLevel; - - // difficulty trigger - TRIGGER_MG(mgNetworkDifficulty, 3, - mgNetworkGameType, mgNetworkLevel, TRANS("Difficulty:"), astrDifficultyRadioTexts); - mgNetworkDifficulty.mg_strTip = TRANS("choose difficulty level"); - - // level name - mgNetworkLevel.mg_strText = ""; - mgNetworkLevel.mg_strLabel = TRANS("Level:"); - mgNetworkLevel.mg_boxOnScreen = BoxMediumRow(4); - mgNetworkLevel.mg_bfsFontSize = BFS_MEDIUM; - mgNetworkLevel.mg_iCenterI = -1; - mgNetworkLevel.mg_pmgUp = &mgNetworkDifficulty; - mgNetworkLevel.mg_pmgDown = &mgNetworkMaxPlayers; - mgNetworkLevel.mg_strTip = TRANS("choose the level to start"); - mgNetworkLevel.mg_pActivatedFunction = &StartSelectLevelFromNetwork; - gm_lhGadgets.AddTail( mgNetworkLevel.mg_lnNode); - - // max players trigger - TRIGGER_MG(mgNetworkMaxPlayers, 5, - mgNetworkLevel, mgNetworkWaitAllPlayers, TRANS("Max players:"), astrMaxPlayersRadioTexts); - mgNetworkMaxPlayers.mg_strTip = TRANS("choose maximum allowed number of players"); - - // wait all players trigger - TRIGGER_MG(mgNetworkWaitAllPlayers, 6, - mgNetworkMaxPlayers, mgNetworkVisible, TRANS("Wait for all players:"), astrNoYes); - mgNetworkWaitAllPlayers.mg_strTip = TRANS("if on, game won't start until all players have joined"); - - // server visible trigger - TRIGGER_MG(mgNetworkVisible, 7, - mgNetworkMaxPlayers, mgNetworkGameOptions, TRANS("Server visible:"), astrNoYes); - mgNetworkVisible.mg_strTip = TRANS("invisible servers are not listed, cleints have to join manually"); - - // options button - mgNetworkGameOptions.mg_strText = TRANS("Game options"); - mgNetworkGameOptions.mg_boxOnScreen = BoxMediumRow(8); - mgNetworkGameOptions.mg_bfsFontSize = BFS_MEDIUM; - mgNetworkGameOptions.mg_iCenterI = 0; - mgNetworkGameOptions.mg_pmgUp = &mgNetworkVisible; - mgNetworkGameOptions.mg_pmgDown = &mgNetworkStartStart; - mgNetworkGameOptions.mg_strTip = TRANS("adjust game rules"); - mgNetworkGameOptions.mg_pActivatedFunction = &StartGameOptionsFromNetwork; - gm_lhGadgets.AddTail( mgNetworkGameOptions.mg_lnNode); - - // start button - mgNetworkStartStart.mg_bfsFontSize = BFS_LARGE; - mgNetworkStartStart.mg_boxOnScreen = BoxBigRow(7); - mgNetworkStartStart.mg_pmgUp = &mgNetworkGameOptions; - mgNetworkStartStart.mg_pmgDown = &mgNetworkSessionName; - mgNetworkStartStart.mg_strText = TRANS("START"); - gm_lhGadgets.AddTail( mgNetworkStartStart.mg_lnNode); - mgNetworkStartStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromNetwork; -} - -void CNetworkStartMenu::StartMenu(void) -{ - extern INDEX sam_bMentalActivated; - mgNetworkDifficulty.mg_ctTexts = sam_bMentalActivated?6:5; - - mgNetworkGameType.mg_iSelected = Clamp(_pShell->GetINDEX("gam_iStartMode"), 0L, ctGameTypeRadioTexts-1L); - mgNetworkGameType.ApplyCurrentSelection(); - mgNetworkDifficulty.mg_iSelected = _pShell->GetINDEX("gam_iStartDifficulty")+1; - mgNetworkDifficulty.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); - } - - mgNetworkMaxPlayers.mg_iSelected = ctMaxPlayers-2; - mgNetworkMaxPlayers.ApplyCurrentSelection(); - - mgNetworkWaitAllPlayers.mg_iSelected = Clamp(_pShell->GetINDEX("gam_bWaitAllPlayers"), 0L, 1L); - mgNetworkWaitAllPlayers.ApplyCurrentSelection(); - - mgNetworkVisible.mg_iSelected = _pShell->GetINDEX("ser_bEnumeration"); - mgNetworkVisible.ApplyCurrentSelection(); - - UpdateNetworkLevel(0); - - CGameMenu::StartMenu(); -} - -void CNetworkStartMenu::EndMenu(void) -{ - _pShell->SetINDEX("gam_iStartDifficulty", mgNetworkDifficulty.mg_iSelected-1); - _pShell->SetINDEX("gam_iStartMode", mgNetworkGameType.mg_iSelected); - _pShell->SetINDEX("gam_bWaitAllPlayers", mgNetworkWaitAllPlayers.mg_iSelected); - _pShell->SetINDEX("gam_ctMaxPlayers", mgNetworkMaxPlayers.mg_iSelected+2); - _pShell->SetINDEX("ser_bEnumeration", mgNetworkVisible.mg_iSelected); - - CGameMenu::EndMenu(); + gmNetworkStartMenu.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromNetwork; + gmNetworkStartMenu.gm_mgGameOptions.mg_pActivatedFunction = &StartGameOptionsFromNetwork; + gmNetworkStartMenu.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromNetwork; } +// #define ADD_GADGET( gd, box, up, dn, lf, rt, txt) \ gd.mg_boxOnScreen = box;\ gd.mg_pmgUp = up;\ @@ -4636,44 +4276,44 @@ INDEX FindUnusedPlayer(void) return iPlayer; } -void SelectPlayersFillMenu(void) +extern void SelectPlayersFillMenu(void) { INDEX *ai = _pGame->gm_aiMenuLocalPlayers; - mgPlayer0Change.mg_iLocalPlayer = 0; - mgPlayer1Change.mg_iLocalPlayer = 1; - mgPlayer2Change.mg_iLocalPlayer = 2; - mgPlayer3Change.mg_iLocalPlayer = 3; + gmSelectPlayersMenu.gm_mgPlayer0Change.mg_iLocalPlayer = 0; + gmSelectPlayersMenu.gm_mgPlayer1Change.mg_iLocalPlayer = 1; + gmSelectPlayersMenu.gm_mgPlayer2Change.mg_iLocalPlayer = 2; + gmSelectPlayersMenu.gm_mgPlayer3Change.mg_iLocalPlayer = 3; if (gmSelectPlayersMenu.gm_bAllowDedicated && _pGame->gm_MenuSplitScreenCfg==CGame::SSC_DEDICATED) { - mgDedicated.mg_iSelected = 1; + gmSelectPlayersMenu.gm_mgDedicated.mg_iSelected = 1; } else { - mgDedicated.mg_iSelected = 0; + gmSelectPlayersMenu.gm_mgDedicated.mg_iSelected = 0; } - mgDedicated.ApplyCurrentSelection(); + gmSelectPlayersMenu.gm_mgDedicated.ApplyCurrentSelection(); if (gmSelectPlayersMenu.gm_bAllowObserving && _pGame->gm_MenuSplitScreenCfg==CGame::SSC_OBSERVER) { - mgObserver.mg_iSelected = 1; + gmSelectPlayersMenu.gm_mgObserver.mg_iSelected = 1; } else { - mgObserver.mg_iSelected = 0; + gmSelectPlayersMenu.gm_mgObserver.mg_iSelected = 0; } - mgObserver.ApplyCurrentSelection(); + gmSelectPlayersMenu.gm_mgObserver.ApplyCurrentSelection(); if (_pGame->gm_MenuSplitScreenCfg>=CGame::SSC_PLAY1) { - mgSplitScreenCfg.mg_iSelected = _pGame->gm_MenuSplitScreenCfg; - mgSplitScreenCfg.ApplyCurrentSelection(); + gmSelectPlayersMenu.gm_mgSplitScreenCfg.mg_iSelected = _pGame->gm_MenuSplitScreenCfg; + gmSelectPlayersMenu.gm_mgSplitScreenCfg.ApplyCurrentSelection(); } BOOL bHasDedicated = gmSelectPlayersMenu.gm_bAllowDedicated; BOOL bHasObserver = gmSelectPlayersMenu.gm_bAllowObserving; BOOL bHasPlayers = TRUE; - if (bHasDedicated && mgDedicated.mg_iSelected) { + if (bHasDedicated && gmSelectPlayersMenu.gm_mgDedicated.mg_iSelected) { bHasObserver = FALSE; bHasPlayers = FALSE; } - if (bHasObserver && mgObserver.mg_iSelected) { + if (bHasObserver && gmSelectPlayersMenu.gm_mgObserver.mg_iSelected) { bHasPlayers = FALSE; } @@ -4682,16 +4322,16 @@ void SelectPlayersFillMenu(void) INDEX i=0; if (bHasDedicated) { - mgDedicated.Appear(); - apmg[i++] = &mgDedicated; + gmSelectPlayersMenu.gm_mgDedicated.Appear(); + apmg[i++] = &gmSelectPlayersMenu.gm_mgDedicated; } else { - mgDedicated.Disappear(); + gmSelectPlayersMenu.gm_mgDedicated.Disappear(); } if (bHasObserver) { - mgObserver.Appear(); - apmg[i++] = &mgObserver; + gmSelectPlayersMenu.gm_mgObserver.Appear(); + apmg[i++] = &gmSelectPlayersMenu.gm_mgObserver; } else { - mgObserver.Disappear(); + gmSelectPlayersMenu.gm_mgObserver.Disappear(); } for (INDEX iLocal=0; iLocal<4; iLocal++) { @@ -4705,32 +4345,32 @@ void SelectPlayersFillMenu(void) } } - mgPlayer0Change.Disappear(); - mgPlayer1Change.Disappear(); - mgPlayer2Change.Disappear(); - mgPlayer3Change.Disappear(); + gmSelectPlayersMenu.gm_mgPlayer0Change.Disappear(); + gmSelectPlayersMenu.gm_mgPlayer1Change.Disappear(); + gmSelectPlayersMenu.gm_mgPlayer2Change.Disappear(); + gmSelectPlayersMenu.gm_mgPlayer3Change.Disappear(); if (bHasPlayers) { - mgSplitScreenCfg.Appear(); - apmg[i++] = &mgSplitScreenCfg; - mgPlayer0Change.Appear(); - apmg[i++] = &mgPlayer0Change; - if (mgSplitScreenCfg.mg_iSelected>=1) { - mgPlayer1Change.Appear(); - apmg[i++] = &mgPlayer1Change; + gmSelectPlayersMenu.gm_mgSplitScreenCfg.Appear(); + apmg[i++] = &gmSelectPlayersMenu.gm_mgSplitScreenCfg; + gmSelectPlayersMenu.gm_mgPlayer0Change.Appear(); + apmg[i++] = &gmSelectPlayersMenu.gm_mgPlayer0Change; + if (gmSelectPlayersMenu.gm_mgSplitScreenCfg.mg_iSelected >= 1) { + gmSelectPlayersMenu.gm_mgPlayer1Change.Appear(); + apmg[i++] = &gmSelectPlayersMenu.gm_mgPlayer1Change; } - if (mgSplitScreenCfg.mg_iSelected>=2) { - mgPlayer2Change.Appear(); - apmg[i++] = &mgPlayer2Change; + if (gmSelectPlayersMenu.gm_mgSplitScreenCfg.mg_iSelected >= 2) { + gmSelectPlayersMenu.gm_mgPlayer2Change.Appear(); + apmg[i++] = &gmSelectPlayersMenu.gm_mgPlayer2Change; } - if (mgSplitScreenCfg.mg_iSelected>=3) { - mgPlayer3Change.Appear(); - apmg[i++] = &mgPlayer3Change; + if (gmSelectPlayersMenu.gm_mgSplitScreenCfg.mg_iSelected >= 3) { + gmSelectPlayersMenu.gm_mgPlayer3Change.Appear(); + apmg[i++] = &gmSelectPlayersMenu.gm_mgPlayer3Change; } } else { - mgSplitScreenCfg.Disappear(); + gmSelectPlayersMenu.gm_mgSplitScreenCfg.Disappear(); } - apmg[i++] = &mgSelectPlayersStart; + apmg[i++] = &gmSelectPlayersMenu.gm_mgStart; // relink for (INDEX img=0; img<8; img++) { @@ -4753,31 +4393,31 @@ void SelectPlayersFillMenu(void) apmg[img]->mg_pmgDown = apmg[imgSucc]; } - mgPlayer0Change.SetPlayerText(); - mgPlayer1Change.SetPlayerText(); - mgPlayer2Change.SetPlayerText(); - mgPlayer3Change.SetPlayerText(); + gmSelectPlayersMenu.gm_mgPlayer0Change.SetPlayerText(); + gmSelectPlayersMenu.gm_mgPlayer1Change.SetPlayerText(); + gmSelectPlayersMenu.gm_mgPlayer2Change.SetPlayerText(); + gmSelectPlayersMenu.gm_mgPlayer3Change.SetPlayerText(); - if (bHasPlayers && mgSplitScreenCfg.mg_iSelected>=1) { - mgSelectPlayersNotes.mg_strText = TRANS("Make sure you set different controls for each player!"); + if (bHasPlayers && gmSelectPlayersMenu.gm_mgSplitScreenCfg.mg_iSelected>=1) { + gmSelectPlayersMenu.gm_mgNotes.mg_strText = TRANS("Make sure you set different controls for each player!"); } else { - mgSelectPlayersNotes.mg_strText = ""; + gmSelectPlayersMenu.gm_mgNotes.mg_strText = ""; } } -void SelectPlayersApplyMenu(void) +extern void SelectPlayersApplyMenu(void) { - if (gmSelectPlayersMenu.gm_bAllowDedicated && mgDedicated.mg_iSelected) { + if (gmSelectPlayersMenu.gm_bAllowDedicated && gmSelectPlayersMenu.gm_mgDedicated.mg_iSelected) { _pGame->gm_MenuSplitScreenCfg = CGame::SSC_DEDICATED; return; } - if (gmSelectPlayersMenu.gm_bAllowObserving && mgObserver.mg_iSelected) { + if (gmSelectPlayersMenu.gm_bAllowObserving && gmSelectPlayersMenu.gm_mgObserver.mg_iSelected) { _pGame->gm_MenuSplitScreenCfg = CGame::SSC_OBSERVER; return; } - _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) gmSelectPlayersMenu.gm_mgSplitScreenCfg.mg_iSelected; } void UpdateSelectPlayers(INDEX i) @@ -4786,91 +4426,13 @@ void UpdateSelectPlayers(INDEX i) SelectPlayersFillMenu(); } -void CSelectPlayersMenu::Initialize_t(void) +void InitActionsForSelectPlayersMenu() { - // intialize split screen menu - mgSelectPlayerTitle.mg_boxOnScreen = BoxTitle(); - mgSelectPlayerTitle.mg_strText = TRANS("SELECT PLAYERS"); - gm_lhGadgets.AddTail( mgSelectPlayerTitle.mg_lnNode); - - TRIGGER_MG(mgDedicated, 0, mgSelectPlayersStart, mgObserver, TRANS("Dedicated:"), astrNoYes); - mgDedicated.mg_strTip = TRANS("select to start dedicated server"); - mgDedicated.mg_pOnTriggerChange = UpdateSelectPlayers; - - TRIGGER_MG(mgObserver, 1, mgDedicated, mgSplitScreenCfg, TRANS("Observer:"), astrNoYes); - mgObserver.mg_strTip = TRANS("select to join in for observing, not for playing"); - mgObserver.mg_pOnTriggerChange = UpdateSelectPlayers; - - // split screen config trigger - TRIGGER_MG(mgSplitScreenCfg, 2, mgObserver, mgPlayer0Change, TRANS("Number of players:"), astrSplitScreenRadioTexts); - mgSplitScreenCfg.mg_strTip = TRANS("choose more than one player to play in split screen"); - mgSplitScreenCfg.mg_pOnTriggerChange = UpdateSelectPlayers; - - mgPlayer0Change.mg_iCenterI = -1; - mgPlayer1Change.mg_iCenterI = -1; - mgPlayer2Change.mg_iCenterI = -1; - mgPlayer3Change.mg_iCenterI = -1; - mgPlayer0Change.mg_boxOnScreen = BoxMediumMiddle(4); - mgPlayer1Change.mg_boxOnScreen = BoxMediumMiddle(5); - mgPlayer2Change.mg_boxOnScreen = BoxMediumMiddle(6); - mgPlayer3Change.mg_boxOnScreen = BoxMediumMiddle(7); - mgPlayer0Change.mg_strTip = - mgPlayer1Change.mg_strTip = - mgPlayer2Change.mg_strTip = - mgPlayer3Change.mg_strTip = TRANS("select profile for this player"); - gm_lhGadgets.AddTail( mgPlayer0Change.mg_lnNode); - gm_lhGadgets.AddTail( mgPlayer1Change.mg_lnNode); - gm_lhGadgets.AddTail( mgPlayer2Change.mg_lnNode); - gm_lhGadgets.AddTail( mgPlayer3Change.mg_lnNode); - - mgSelectPlayersNotes.mg_boxOnScreen = BoxMediumRow(9.0); - mgSelectPlayersNotes.mg_bfsFontSize = BFS_MEDIUM; - mgSelectPlayersNotes.mg_iCenterI = -1; - mgSelectPlayersNotes.mg_bEnabled = FALSE; - mgSelectPlayersNotes.mg_bLabel = TRUE; - gm_lhGadgets.AddTail( mgSelectPlayersNotes.mg_lnNode); - mgSelectPlayersNotes.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( mgSelectPlayersStart, BoxMediumRow(11), &mgSplitScreenCfg, &mgPlayer0Change, NULL, NULL, TRANS("START")); - mgSelectPlayersStart.mg_bfsFontSize = BFS_LARGE; - mgSelectPlayersStart.mg_iCenterI = 0; + gmSelectPlayersMenu.gm_mgDedicated.mg_pOnTriggerChange = UpdateSelectPlayers; + gmSelectPlayersMenu.gm_mgObserver.mg_pOnTriggerChange = UpdateSelectPlayers; + gmSelectPlayersMenu.gm_mgSplitScreenCfg.mg_pOnTriggerChange = UpdateSelectPlayers; } -void CSelectPlayersMenu::StartMenu(void) -{ - CGameMenu::StartMenu(); - SelectPlayersFillMenu(); - SelectPlayersApplyMenu(); -} - -void CSelectPlayersMenu::EndMenu(void) -{ - SelectPlayersApplyMenu(); - CGameMenu::EndMenu(); -} - - // ------------------------ CNetworkOpenMenu implementation void InitActionsForNetworkOpenMenu() { diff --git a/Sources/SeriousSam/MenuStuff.cpp b/Sources/SeriousSam/MenuStuff.cpp index 735252b..8713855 100644 --- a/Sources/SeriousSam/MenuStuff.cpp +++ b/Sources/SeriousSam/MenuStuff.cpp @@ -5,6 +5,111 @@ #include "MenuStuff.h" +#define RADIOTRANS(str) ("ETRS" str) + +extern CTString astrNoYes[] = { + RADIOTRANS("No"), + RADIOTRANS("Yes"), +}; + +extern CTString astrComputerInvoke[] = { + RADIOTRANS("Use"), + RADIOTRANS("Double-click use"), +}; + +extern CTString astrWeapon[] = { + RADIOTRANS("Only if new"), + RADIOTRANS("Never"), + RADIOTRANS("Always"), + RADIOTRANS("Only if stronger"), +}; + +extern CTString astrCrosshair[] = { + "", + "Textures\\Interface\\Crosshairs\\Crosshair1.tex", + "Textures\\Interface\\Crosshairs\\Crosshair2.tex", + "Textures\\Interface\\Crosshairs\\Crosshair3.tex", + "Textures\\Interface\\Crosshairs\\Crosshair4.tex", + "Textures\\Interface\\Crosshairs\\Crosshair5.tex", + "Textures\\Interface\\Crosshairs\\Crosshair6.tex", + "Textures\\Interface\\Crosshairs\\Crosshair7.tex", +}; + +extern CTString astrMaxPlayersRadioTexts[] = { + RADIOTRANS("2"), + RADIOTRANS("3"), + RADIOTRANS("4"), + RADIOTRANS("5"), + RADIOTRANS("6"), + RADIOTRANS("7"), + RADIOTRANS("8"), + RADIOTRANS("9"), + RADIOTRANS("10"), + RADIOTRANS("11"), + RADIOTRANS("12"), + RADIOTRANS("13"), + RADIOTRANS("14"), + RADIOTRANS("15"), + RADIOTRANS("16"), +}; +// here, we just reserve space for up to 16 different game types +// actual names are added later +extern CTString astrGameTypeRadioTexts[] = { + "", "", "", "", "", + "", "", "", "", "", + "", "", "", "", "", + "", "", "", "", "", +}; + +extern INDEX ctGameTypeRadioTexts = 1; + +extern CTString astrDifficultyRadioTexts[] = { + RADIOTRANS("Tourist"), + RADIOTRANS("Easy"), + RADIOTRANS("Normal"), + RADIOTRANS("Hard"), + RADIOTRANS("Serious"), + RADIOTRANS("Mental"), +}; + +extern CTString astrSplitScreenRadioTexts[] = { + RADIOTRANS("1"), + RADIOTRANS("2 - split screen"), + RADIOTRANS("3 - split screen"), + RADIOTRANS("4 - split screen"), +}; + +extern CTString astrDisplayPrefsRadioTexts[] = { + RADIOTRANS("Speed"), + RADIOTRANS("Normal"), + RADIOTRANS("Quality"), + RADIOTRANS("Custom"), +}; + +extern CTString astrDisplayAPIRadioTexts[] = { + RADIOTRANS("OpenGL"), + RADIOTRANS("Direct3D"), +}; + +extern CTString astrBitsPerPixelRadioTexts[] = { + RADIOTRANS("Desktop"), + RADIOTRANS("16 BPP"), + RADIOTRANS("32 BPP"), +}; + +extern CTString astrFrequencyRadioTexts[] = { + RADIOTRANS("No sound"), + RADIOTRANS("11kHz"), + RADIOTRANS("22kHz"), + RADIOTRANS("44kHz"), +}; + +extern CTString astrSoundAPIRadioTexts[] = { + RADIOTRANS("WaveOut"), + RADIOTRANS("DirectSound"), + RADIOTRANS("EAX"), +}; + ULONG GetSpawnFlagsForGameType(INDEX iGameType) { if (iGameType == -1) return SPF_SINGLEPLAYER; diff --git a/Sources/SeriousSam/MenuStuff.h b/Sources/SeriousSam/MenuStuff.h index afbdd4a..efc7a68 100644 --- a/Sources/SeriousSam/MenuStuff.h +++ b/Sources/SeriousSam/MenuStuff.h @@ -6,6 +6,22 @@ #pragma once #endif +extern INDEX ctGameTypeRadioTexts; + +extern CTString astrNoYes[2]; +extern CTString astrWeapon[4]; +extern CTString astrComputerInvoke[2]; +extern CTString astrCrosshair[8]; +extern CTString astrMaxPlayersRadioTexts[15]; +extern CTString astrGameTypeRadioTexts[20]; +extern CTString astrDifficultyRadioTexts[6]; +extern CTString astrSplitScreenRadioTexts[4]; +extern CTString astrDisplayPrefsRadioTexts[4]; +extern CTString astrDisplayAPIRadioTexts[2]; +extern CTString astrBitsPerPixelRadioTexts[3]; +extern CTString astrFrequencyRadioTexts[4]; +extern CTString astrSoundAPIRadioTexts[3]; + ULONG GetSpawnFlagsForGameType(INDEX iGameType); BOOL IsMenuEnabled(const CTString &strMenuName); diff --git a/Sources/SeriousSam/SeriousSam.vcxproj b/Sources/SeriousSam/SeriousSam.vcxproj index 39a8681..813b63d 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj +++ b/Sources/SeriousSam/SeriousSam.vcxproj @@ -219,7 +219,10 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + + + diff --git a/Sources/SeriousSam/SeriousSam.vcxproj.filters b/Sources/SeriousSam/SeriousSam.vcxproj.filters index 28357aa..132d40c 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj.filters +++ b/Sources/SeriousSam/SeriousSam.vcxproj.filters @@ -111,9 +111,6 @@ Source Files\Gadgets - - Header Files - Source Files @@ -171,6 +168,15 @@ Source Files\Menus + + Source Files\Menus + + + Source Files\Menus + + + Source Files\Menus + @@ -350,6 +356,9 @@ Header Files\Menus headers + + Header Files + From 7745f8ced1cf8be77c4c5b3328ebe7d75288c277 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Wed, 16 Mar 2016 00:24:35 +0300 Subject: [PATCH 17/34] GameExecutable: Move some stuff from Menu.cpp into files PART VI 4183 lines... Continue working... --- Sources/SeriousSam/MAudioOptions.cpp | 65 +++ Sources/SeriousSam/MAudioOptions.h | 12 + Sources/SeriousSam/MControls.cpp | 148 +++++ Sources/SeriousSam/MControls.h | 16 +- Sources/SeriousSam/MCustomizeAxis.cpp | 13 +- Sources/SeriousSam/MCustomizeKeyboard.cpp | 6 +- Sources/SeriousSam/MNetworkStart.cpp | 14 - Sources/SeriousSam/MSelectPlayers.cpp | 12 +- Sources/SeriousSam/MSplitStart.cpp | 12 - Sources/SeriousSam/MVideoOptions.cpp | 73 +++ Sources/SeriousSam/MVideoOptions.h | 10 + Sources/SeriousSam/Menu.cpp | 508 ++++-------------- Sources/SeriousSam/MenuStuff.cpp | 25 + Sources/SeriousSam/MenuStuff.h | 19 + Sources/SeriousSam/SeriousSam.vcxproj | 3 + Sources/SeriousSam/SeriousSam.vcxproj.filters | 9 + 16 files changed, 498 insertions(+), 447 deletions(-) create mode 100644 Sources/SeriousSam/MAudioOptions.cpp create mode 100644 Sources/SeriousSam/MControls.cpp create mode 100644 Sources/SeriousSam/MVideoOptions.cpp diff --git a/Sources/SeriousSam/MAudioOptions.cpp b/Sources/SeriousSam/MAudioOptions.cpp new file mode 100644 index 0000000..74f768d --- /dev/null +++ b/Sources/SeriousSam/MAudioOptions.cpp @@ -0,0 +1,65 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MenuStuff.h" +#include "MAudioOptions.h" + +extern void RefreshSoundFormat(void); + + +void CAudioOptionsMenu::Initialize_t(void) +{ + // intialize Audio options menu + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("AUDIO"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + + TRIGGER_MG(gm_mgAudioAutoTrigger, 0, + gm_mgApply, gm_mgFrequencyTrigger, TRANS("AUTO-ADJUST"), astrNoYes); + gm_mgAudioAutoTrigger.mg_strTip = TRANS("adjust quality to fit your system"); + + TRIGGER_MG(gm_mgFrequencyTrigger, 1, + gm_mgAudioAutoTrigger, gm_mgAudioAPITrigger, TRANS("FREQUENCY"), astrFrequencyRadioTexts); + gm_mgFrequencyTrigger.mg_strTip = TRANS("select sound quality or turn sound off"); + gm_mgFrequencyTrigger.mg_pOnTriggerChange = NULL; + + TRIGGER_MG(gm_mgAudioAPITrigger, 2, + gm_mgFrequencyTrigger, gm_mgWaveVolume, TRANS("SOUND SYSTEM"), astrSoundAPIRadioTexts); + gm_mgAudioAPITrigger.mg_strTip = TRANS("choose sound system (API) to use"); + gm_mgAudioAPITrigger.mg_pOnTriggerChange = NULL; + + gm_mgWaveVolume.mg_boxOnScreen = BoxMediumRow(3); + gm_mgWaveVolume.mg_strText = TRANS("SOUND EFFECTS VOLUME"); + gm_mgWaveVolume.mg_strTip = TRANS("adjust volume of in-game sound effects"); + gm_mgWaveVolume.mg_pmgUp = &gm_mgAudioAPITrigger; + gm_mgWaveVolume.mg_pmgDown = &gm_mgMPEGVolume; + gm_mgWaveVolume.mg_pOnSliderChange = NULL; + gm_mgWaveVolume.mg_pActivatedFunction = NULL; + gm_lhGadgets.AddTail(gm_mgWaveVolume.mg_lnNode); + + gm_mgMPEGVolume.mg_boxOnScreen = BoxMediumRow(4); + gm_mgMPEGVolume.mg_strText = TRANS("MUSIC VOLUME"); + gm_mgMPEGVolume.mg_strTip = TRANS("adjust volume of in-game music"); + gm_mgMPEGVolume.mg_pmgUp = &gm_mgWaveVolume; + gm_mgMPEGVolume.mg_pmgDown = &gm_mgApply; + gm_mgMPEGVolume.mg_pOnSliderChange = NULL; + gm_mgMPEGVolume.mg_pActivatedFunction = NULL; + gm_lhGadgets.AddTail(gm_mgMPEGVolume.mg_lnNode); + + gm_mgApply.mg_bfsFontSize = BFS_LARGE; + gm_mgApply.mg_boxOnScreen = BoxBigRow(4); + gm_mgApply.mg_strText = TRANS("APPLY"); + gm_mgApply.mg_strTip = TRANS("activate selected options"); + gm_lhGadgets.AddTail(gm_mgApply.mg_lnNode); + gm_mgApply.mg_pmgUp = &gm_mgMPEGVolume; + gm_mgApply.mg_pmgDown = &gm_mgAudioAutoTrigger; + gm_mgApply.mg_pActivatedFunction = NULL; +} + +void CAudioOptionsMenu::StartMenu(void) +{ + RefreshSoundFormat(); + CGameMenu::StartMenu(); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MAudioOptions.h b/Sources/SeriousSam/MAudioOptions.h index cf4a94b..8b76fa2 100644 --- a/Sources/SeriousSam/MAudioOptions.h +++ b/Sources/SeriousSam/MAudioOptions.h @@ -7,10 +7,22 @@ #endif #include "GameMenu.h" +#include "MGButton.h" +#include "MGSlider.h" +#include "MGTrigger.h" +#include "MGTitle.h" class CAudioOptionsMenu : public CGameMenu { public: + CMGTitle gm_mgTitle; + CMGTrigger gm_mgAudioAutoTrigger; + CMGTrigger gm_mgAudioAPITrigger; + CMGTrigger gm_mgFrequencyTrigger; + CMGSlider gm_mgWaveVolume; + CMGSlider gm_mgMPEGVolume; + CMGButton gm_mgApply; + void StartMenu(void); void Initialize_t(void); }; diff --git a/Sources/SeriousSam/MControls.cpp b/Sources/SeriousSam/MControls.cpp new file mode 100644 index 0000000..971c309 --- /dev/null +++ b/Sources/SeriousSam/MControls.cpp @@ -0,0 +1,148 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MenuStuff.h" +#include "MControls.h" + +extern void ControlsMenuOn(); +extern void ControlsMenuOff(); +extern CTFileName _fnmControlsToCustomize; + + +void CControlsMenu::Initialize_t(void) +{ + // intialize player and controls menu + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("CONTROLS"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + + gm_mgNameLabel.mg_strText = ""; + gm_mgNameLabel.mg_boxOnScreen = BoxMediumRow(0.0); + gm_mgNameLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgNameLabel.mg_iCenterI = -1; + gm_mgNameLabel.mg_bEnabled = FALSE; + gm_mgNameLabel.mg_bLabel = TRUE; + gm_lhGadgets.AddTail(gm_mgNameLabel.mg_lnNode); + + gm_mgButtons.mg_strText = TRANS("CUSTOMIZE BUTTONS"); + gm_mgButtons.mg_boxOnScreen = BoxMediumRow(2.0); + gm_mgButtons.mg_bfsFontSize = BFS_MEDIUM; + gm_mgButtons.mg_iCenterI = 0; + gm_lhGadgets.AddTail(gm_mgButtons.mg_lnNode); + gm_mgButtons.mg_pmgUp = &gm_mgPredefined; + gm_mgButtons.mg_pmgDown = &gm_mgAdvanced; + gm_mgButtons.mg_pActivatedFunction = NULL; + gm_mgButtons.mg_strTip = TRANS("customize buttons in current controls"); + + gm_mgAdvanced.mg_strText = TRANS("ADVANCED JOYSTICK SETUP"); + gm_mgAdvanced.mg_iCenterI = 0; + gm_mgAdvanced.mg_boxOnScreen = BoxMediumRow(3); + gm_mgAdvanced.mg_bfsFontSize = BFS_MEDIUM; + gm_lhGadgets.AddTail(gm_mgAdvanced.mg_lnNode); + gm_mgAdvanced.mg_pmgUp = &gm_mgButtons; + gm_mgAdvanced.mg_pmgDown = &gm_mgSensitivity; + gm_mgAdvanced.mg_pActivatedFunction = NULL; + gm_mgAdvanced.mg_strTip = TRANS("adjust advanced settings for joystick axis"); + + gm_mgSensitivity.mg_boxOnScreen = BoxMediumRow(4.5); + gm_mgSensitivity.mg_strText = TRANS("SENSITIVITY"); + gm_mgSensitivity.mg_pmgUp = &gm_mgAdvanced; + gm_mgSensitivity.mg_pmgDown = &gm_mgInvertTrigger; + gm_mgSensitivity.mg_strTip = TRANS("sensitivity for all axis in this control set"); + gm_lhGadgets.AddTail(gm_mgSensitivity.mg_lnNode); + + TRIGGER_MG(gm_mgInvertTrigger, 5.5, gm_mgSensitivity, gm_mgSmoothTrigger, + TRANS("INVERT LOOK"), astrNoYes); + gm_mgInvertTrigger.mg_strTip = TRANS("invert up/down looking"); + TRIGGER_MG(gm_mgSmoothTrigger, 6.5, gm_mgInvertTrigger, gm_mgAccelTrigger, + TRANS("SMOOTH AXIS"), astrNoYes); + gm_mgSmoothTrigger.mg_strTip = TRANS("smooth mouse/joystick movements"); + TRIGGER_MG(gm_mgAccelTrigger, 7.5, gm_mgSmoothTrigger, gm_mgIFeelTrigger, + TRANS("MOUSE ACCELERATION"), astrNoYes); + gm_mgAccelTrigger.mg_strTip = TRANS("allow mouse acceleration"); + TRIGGER_MG(gm_mgIFeelTrigger, 8.5, gm_mgAccelTrigger, gm_mgPredefined, + TRANS("ENABLE IFEEL"), astrNoYes); + gm_mgIFeelTrigger.mg_strTip = TRANS("enable support for iFeel tactile feedback mouse"); + + gm_mgPredefined.mg_strText = TRANS("LOAD PREDEFINED SETTINGS"); + gm_mgPredefined.mg_iCenterI = 0; + gm_mgPredefined.mg_boxOnScreen = BoxMediumRow(10); + gm_mgPredefined.mg_bfsFontSize = BFS_MEDIUM; + gm_lhGadgets.AddTail(gm_mgPredefined.mg_lnNode); + gm_mgPredefined.mg_pmgUp = &gm_mgIFeelTrigger; + gm_mgPredefined.mg_pmgDown = &gm_mgButtons; + gm_mgPredefined.mg_pActivatedFunction = NULL; + gm_mgPredefined.mg_strTip = TRANS("load one of several predefined control settings"); +} + +void CControlsMenu::StartMenu(void) +{ + gm_pmgSelectedByDefault = &gm_mgButtons; + INDEX iPlayer = _pGame->gm_iSinglePlayer; + if (_iLocalPlayer >= 0 && _iLocalPlayer<4) { + iPlayer = _pGame->gm_aiMenuLocalPlayers[_iLocalPlayer]; + } + _fnmControlsToCustomize.PrintF("Controls\\Controls%d.ctl", iPlayer); + + ControlsMenuOn(); + + gm_mgNameLabel.mg_strText.PrintF(TRANS("CONTROLS FOR: %s"), _pGame->gm_apcPlayers[iPlayer].GetNameForPrinting()); + + ObtainActionSettings(); + CGameMenu::StartMenu(); +} + +void CControlsMenu::EndMenu(void) +{ + ApplyActionSettings(); + + ControlsMenuOff(); + + CGameMenu::EndMenu(); +} + +void CControlsMenu::ObtainActionSettings(void) +{ + CControls &ctrls = _pGame->gm_ctrlControlsExtra; + + gm_mgSensitivity.mg_iMinPos = 0; + gm_mgSensitivity.mg_iMaxPos = 50; + gm_mgSensitivity.mg_iCurPos = ctrls.ctrl_fSensitivity / 2; + gm_mgSensitivity.ApplyCurrentPosition(); + + gm_mgInvertTrigger.mg_iSelected = ctrls.ctrl_bInvertLook ? 1 : 0; + gm_mgSmoothTrigger.mg_iSelected = ctrls.ctrl_bSmoothAxes ? 1 : 0; + gm_mgAccelTrigger.mg_iSelected = _pShell->GetINDEX("inp_bAllowMouseAcceleration") ? 1 : 0; + gm_mgIFeelTrigger.mg_bEnabled = _pShell->GetINDEX("sys_bIFeelEnabled") ? 1 : 0; + gm_mgIFeelTrigger.mg_iSelected = _pShell->GetFLOAT("inp_fIFeelGain")>0 ? 1 : 0; + + gm_mgInvertTrigger.ApplyCurrentSelection(); + gm_mgSmoothTrigger.ApplyCurrentSelection(); + gm_mgAccelTrigger.ApplyCurrentSelection(); + gm_mgIFeelTrigger.ApplyCurrentSelection(); +} + +void CControlsMenu::ApplyActionSettings(void) +{ + CControls &ctrls = _pGame->gm_ctrlControlsExtra; + + FLOAT fSensitivity = + FLOAT(gm_mgSensitivity.mg_iCurPos - gm_mgSensitivity.mg_iMinPos) / + FLOAT(gm_mgSensitivity.mg_iMaxPos - gm_mgSensitivity.mg_iMinPos)*100.0f; + + BOOL bInvert = gm_mgInvertTrigger.mg_iSelected != 0; + BOOL bSmooth = gm_mgSmoothTrigger.mg_iSelected != 0; + BOOL bAccel = gm_mgAccelTrigger.mg_iSelected != 0; + BOOL bIFeel = gm_mgIFeelTrigger.mg_iSelected != 0; + + if (INDEX(ctrls.ctrl_fSensitivity) != INDEX(fSensitivity)) { + ctrls.ctrl_fSensitivity = fSensitivity; + } + ctrls.ctrl_bInvertLook = bInvert; + ctrls.ctrl_bSmoothAxes = bSmooth; + _pShell->SetINDEX("inp_bAllowMouseAcceleration", bAccel); + _pShell->SetFLOAT("inp_fIFeelGain", bIFeel ? 1.0f : 0.0f); + ctrls.CalculateInfluencesForAllAxis(); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MControls.h b/Sources/SeriousSam/MControls.h index 949e17e..dafbc7c 100644 --- a/Sources/SeriousSam/MControls.h +++ b/Sources/SeriousSam/MControls.h @@ -7,10 +7,24 @@ #endif #include "GameMenu.h" - +#include "MGButton.h" +#include "MGSlider.h" +#include "MGTitle.h" +#include "MGTrigger.h" class CControlsMenu : public CGameMenu { public: + CMGTitle gm_mgTitle; + CMGButton gm_mgNameLabel; + CMGButton gm_mgButtons; + CMGSlider gm_mgSensitivity; + CMGTrigger gm_mgInvertTrigger; + CMGTrigger gm_mgSmoothTrigger; + CMGTrigger gm_mgAccelTrigger; + CMGTrigger gm_mgIFeelTrigger; + CMGButton gm_mgPredefined; + CMGButton gm_mgAdvanced; + void Initialize_t(void); void StartMenu(void); void EndMenu(void); diff --git a/Sources/SeriousSam/MCustomizeAxis.cpp b/Sources/SeriousSam/MCustomizeAxis.cpp index ef1b020..a819fb3 100644 --- a/Sources/SeriousSam/MCustomizeAxis.cpp +++ b/Sources/SeriousSam/MCustomizeAxis.cpp @@ -3,20 +3,9 @@ #include "StdH.h" #include #include "MenuPrinting.h" +#include "MenuStuff.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(); diff --git a/Sources/SeriousSam/MCustomizeKeyboard.cpp b/Sources/SeriousSam/MCustomizeKeyboard.cpp index 7fdc950..589ba3d 100644 --- a/Sources/SeriousSam/MCustomizeKeyboard.cpp +++ b/Sources/SeriousSam/MCustomizeKeyboard.cpp @@ -5,6 +5,9 @@ #include "MenuPrinting.h" #include "MCustomizeKeyboard.h" +extern void ControlsMenuOn(); +extern void ControlsMenuOff(); + void CCustomizeKeyboardMenu::FillListItems(void) { @@ -82,9 +85,6 @@ void CCustomizeKeyboardMenu::Initialize_t(void) gm_pmgListBottom = &gm_mgKey[KEYS_ON_SCREEN - 1]; } -extern void ControlsMenuOn(); -extern void ControlsMenuOff(); - void CCustomizeKeyboardMenu::StartMenu(void) { ControlsMenuOn(); diff --git a/Sources/SeriousSam/MNetworkStart.cpp b/Sources/SeriousSam/MNetworkStart.cpp index 414db34..3602efb 100644 --- a/Sources/SeriousSam/MNetworkStart.cpp +++ b/Sources/SeriousSam/MNetworkStart.cpp @@ -7,21 +7,7 @@ #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) diff --git a/Sources/SeriousSam/MSelectPlayers.cpp b/Sources/SeriousSam/MSelectPlayers.cpp index f16fe4f..1c90f16 100644 --- a/Sources/SeriousSam/MSelectPlayers.cpp +++ b/Sources/SeriousSam/MSelectPlayers.cpp @@ -3,6 +3,7 @@ #include "StdH.h" #include #include "MenuPrinting.h" +#include "MenuStuff.h" #include "MSelectPlayers.h" #define ADD_GADGET( gd, box, up, dn, lf, rt, txt) \ @@ -14,17 +15,6 @@ 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); diff --git a/Sources/SeriousSam/MSplitStart.cpp b/Sources/SeriousSam/MSplitStart.cpp index 6df0b44..fafaccf 100644 --- a/Sources/SeriousSam/MSplitStart.cpp +++ b/Sources/SeriousSam/MSplitStart.cpp @@ -7,18 +7,6 @@ #include "MenuStuff.h" #include "MSplitStart.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 UpdateSplitLevel(INDEX iDummy); diff --git a/Sources/SeriousSam/MVideoOptions.cpp b/Sources/SeriousSam/MVideoOptions.cpp new file mode 100644 index 0000000..b83a6bd --- /dev/null +++ b/Sources/SeriousSam/MVideoOptions.cpp @@ -0,0 +1,73 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MenuStuff.h" +#include "MVideoOptions.h" + +extern void InitVideoOptionsButtons(); +extern void UpdateVideoOptionsButtons(INDEX iSelected); + + +void CVideoOptionsMenu::Initialize_t(void) +{ + // intialize video options menu + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("VIDEO"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + + TRIGGER_MG(gm_mgDisplayAPITrigger, 0, + gm_mgApply, gm_mgDisplayAdaptersTrigger, TRANS("GRAPHICS API"), astrDisplayAPIRadioTexts); + gm_mgDisplayAPITrigger.mg_strTip = TRANS("choose graphics API to be used"); + TRIGGER_MG(gm_mgDisplayAdaptersTrigger, 1, + gm_mgDisplayAPITrigger, gm_mgDisplayPrefsTrigger, TRANS("DISPLAY ADAPTER"), astrNoYes); + gm_mgDisplayAdaptersTrigger.mg_strTip = TRANS("choose display adapter to be used"); + TRIGGER_MG(gm_mgDisplayPrefsTrigger, 2, + gm_mgDisplayAdaptersTrigger, gm_mgResolutionsTrigger, TRANS("PREFERENCES"), astrDisplayPrefsRadioTexts); + gm_mgDisplayPrefsTrigger.mg_strTip = TRANS("balance between speed and rendering quality, depending on your system"); + TRIGGER_MG(gm_mgResolutionsTrigger, 3, + gm_mgDisplayPrefsTrigger, gm_mgFullScreenTrigger, TRANS("RESOLUTION"), astrNoYes); + gm_mgResolutionsTrigger.mg_strTip = TRANS("select video mode resolution"); + TRIGGER_MG(gm_mgFullScreenTrigger, 4, + gm_mgResolutionsTrigger, gm_mgBitsPerPixelTrigger, TRANS("FULL SCREEN"), astrNoYes); + gm_mgFullScreenTrigger.mg_strTip = TRANS("make game run in a window or in full screen"); + TRIGGER_MG(gm_mgBitsPerPixelTrigger, 5, + gm_mgFullScreenTrigger, gm_mgVideoRendering, TRANS("BITS PER PIXEL"), astrBitsPerPixelRadioTexts); + gm_mgBitsPerPixelTrigger.mg_strTip = TRANS("select number of colors used for display"); + + gm_mgDisplayPrefsTrigger.mg_pOnTriggerChange = NULL; + gm_mgDisplayAPITrigger.mg_pOnTriggerChange = NULL; + gm_mgDisplayAdaptersTrigger.mg_pOnTriggerChange = NULL; + gm_mgFullScreenTrigger.mg_pOnTriggerChange = NULL; + gm_mgResolutionsTrigger.mg_pOnTriggerChange = NULL; + gm_mgBitsPerPixelTrigger.mg_pOnTriggerChange = NULL; + + gm_mgVideoRendering.mg_bfsFontSize = BFS_MEDIUM; + gm_mgVideoRendering.mg_boxOnScreen = BoxMediumRow(7.0f); + gm_mgVideoRendering.mg_pmgUp = &gm_mgBitsPerPixelTrigger; + gm_mgVideoRendering.mg_pmgDown = &gm_mgApply; + gm_mgVideoRendering.mg_strText = TRANS("RENDERING OPTIONS"); + gm_mgVideoRendering.mg_strTip = TRANS("manually adjust rendering settings"); + gm_lhGadgets.AddTail(gm_mgVideoRendering.mg_lnNode); + gm_mgVideoRendering.mg_pActivatedFunction = NULL; + + gm_mgApply.mg_bfsFontSize = BFS_LARGE; + gm_mgApply.mg_boxOnScreen = BoxBigRow(5.5f); + gm_mgApply.mg_pmgUp = &gm_mgVideoRendering; + gm_mgApply.mg_pmgDown = &gm_mgDisplayAPITrigger; + gm_mgApply.mg_strText = TRANS("APPLY"); + gm_mgApply.mg_strTip = TRANS("apply selected options"); + gm_lhGadgets.AddTail(gm_mgApply.mg_lnNode); + gm_mgApply.mg_pActivatedFunction = NULL; +} + + +void CVideoOptionsMenu::StartMenu(void) +{ + InitVideoOptionsButtons(); + + CGameMenu::StartMenu(); + + UpdateVideoOptionsButtons(-1); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MVideoOptions.h b/Sources/SeriousSam/MVideoOptions.h index 14572d3..9904f48 100644 --- a/Sources/SeriousSam/MVideoOptions.h +++ b/Sources/SeriousSam/MVideoOptions.h @@ -11,6 +11,16 @@ class CVideoOptionsMenu : public CGameMenu { public: + CMGTitle gm_mgTitle; + CMGTrigger gm_mgDisplayAPITrigger; + CMGTrigger gm_mgDisplayAdaptersTrigger; + CMGTrigger gm_mgFullScreenTrigger; + CMGTrigger gm_mgResolutionsTrigger; + CMGTrigger gm_mgDisplayPrefsTrigger; + CMGButton gm_mgVideoRendering; + CMGTrigger gm_mgBitsPerPixelTrigger; + CMGButton gm_mgApply; + void StartMenu(void); void Initialize_t(void); }; diff --git a/Sources/SeriousSam/Menu.cpp b/Sources/SeriousSam/Menu.cpp index be8214d..faf5c82 100644 --- a/Sources/SeriousSam/Menu.cpp +++ b/Sources/SeriousSam/Menu.cpp @@ -102,7 +102,9 @@ extern CTString sam_strNetworkSettings; void (*_pAfterLevelChosen)(void); // functions for init actions +void InitActionsForAudioOptionsMenu(); void InitActionsForConfirmMenu(); +void InitActionsForControlsMenu(); void InitActionsForCustomizeAxisMenu(); void InitActionsForMainMenu(); void InitActionsForInGameMenu(); @@ -117,6 +119,7 @@ void InitActionsForSinglePlayerMenu(); void InitActionsForSinglePlayerNewMenu(); void InitActionsForSplitScreenMenu(); void InitActionsForSplitStartMenu(); +void InitActionsForVideoOptionsMenu(); void InitActionsForVarMenu(); // functions to activate when user chose 'yes/no' on confirmation @@ -201,17 +204,6 @@ static CTextureObject _toLogoMenuB; #define BIG_BUTTONS_CT 6 #define SAVELOAD_BUTTONS_CT 14 -#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]; - #define CHANGETRIGGERARRAY(ltbmg, astr) \ ltbmg.mg_astrTexts = astr;\ ltbmg.mg_ctTexts = sizeof( astr)/sizeof( astr[0]);\ @@ -275,16 +267,6 @@ CMGModel mgPlayerModel; // -------- Controls menu CControlsMenu gmControls; -CMGTitle mgControlsTitle; -CMGButton mgControlsNameLabel; -CMGButton mgControlsButtons; -CMGSlider mgControlsSensitivity; -CMGTrigger mgControlsInvertTrigger; -CMGTrigger mgControlsSmoothTrigger; -CMGTrigger mgControlsAccelTrigger; -CMGTrigger mgControlsIFeelTrigger; -CMGButton mgControlsPredefined; -CMGButton mgControlsAdvanced; // -------- Load/Save menu CLoadSaveMenu gmLoadSaveMenu; @@ -311,31 +293,16 @@ COptionsMenu gmOptionsMenu; // -------- Video options menu CVideoOptionsMenu gmVideoOptionsMenu; -CMGTitle mgVideoOptionsTitle; -CMGTrigger mgDisplayAPITrigger; -CMGTrigger mgDisplayAdaptersTrigger; -CMGTrigger mgFullScreenTrigger; -CMGTrigger mgResolutionsTrigger; -CMGTrigger mgDisplayPrefsTrigger; INDEX _ctResolutions = 0; CTString * _astrResolutionTexts = NULL; CDisplayMode *_admResolutionModes = NULL; INDEX _ctAdapters = 0; CTString * _astrAdapterTexts = NULL; -CMGButton mgVideoRendering; -CMGTrigger mgBitsPerPixelTrigger; -CMGButton mgVideoOptionsApply; + // -------- Audio options menu CAudioOptionsMenu gmAudioOptionsMenu; -CMGTitle mgAudioOptionsTitle; -CMGTrigger mgAudioAutoTrigger; -CMGTrigger mgAudioAPITrigger; -CMGTrigger mgFrequencyTrigger; -CMGSlider mgWaveVolume; -CMGSlider mgMPEGVolume; -CMGButton mgAudioOptionsApply; // -------- Network menu CNetworkMenu gmNetworkMenu; @@ -1724,8 +1691,8 @@ static enum DisplayDepth SwitchToDepth(INDEX i) } } -static void InitVideoOptionsButtons(void); -static void UpdateVideoOptionsButtons(INDEX i); +extern void InitVideoOptionsButtons(void); +extern void UpdateVideoOptionsButtons(INDEX i); void RevertVideoSettings(void) { @@ -1757,17 +1724,17 @@ void ApplyVideoOptions(void) sam_old_iGfxAPI = sam_iGfxAPI; sam_old_iVideoSetup = sam_iVideoSetup; - BOOL bFullScreenMode = mgFullScreenTrigger.mg_iSelected == 1; + BOOL bFullScreenMode = gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_iSelected == 1; PIX pixWindowSizeI, pixWindowSizeJ; - ResolutionToSize(mgResolutionsTrigger.mg_iSelected, pixWindowSizeI, pixWindowSizeJ); - enum GfxAPIType gat = SwitchToAPI(mgDisplayAPITrigger.mg_iSelected); - enum DisplayDepth dd = SwitchToDepth(mgBitsPerPixelTrigger.mg_iSelected); - const INDEX iAdapter = mgDisplayAdaptersTrigger.mg_iSelected; + ResolutionToSize(gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_iSelected, pixWindowSizeI, pixWindowSizeJ); + enum GfxAPIType gat = SwitchToAPI(gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_iSelected); + enum DisplayDepth dd = SwitchToDepth(gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_iSelected); + const INDEX iAdapter = gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_iSelected; // setup preferences extern INDEX _iLastPreferences; if( sam_iVideoSetup==3) _iLastPreferences = 3; - sam_iVideoSetup = mgDisplayPrefsTrigger.mg_iSelected; + sam_iVideoSetup = gmVideoOptionsMenu.gm_mgDisplayPrefsTrigger.mg_iSelected; // force fullscreen mode if needed CDisplayAdapter &da = _pGfx->gl_gaAPI[gat].ga_adaAdapter[iAdapter]; @@ -1789,44 +1756,44 @@ void ApplyVideoOptions(void) #define VOLUME_STEPS 50 -void RefreshSoundFormat( void) +extern void RefreshSoundFormat( void) { switch( _pSound->GetFormat()) { - case CSoundLibrary::SF_NONE: {mgFrequencyTrigger.mg_iSelected = 0;break;} - case CSoundLibrary::SF_11025_16: {mgFrequencyTrigger.mg_iSelected = 1;break;} - case CSoundLibrary::SF_22050_16: {mgFrequencyTrigger.mg_iSelected = 2;break;} - case CSoundLibrary::SF_44100_16: {mgFrequencyTrigger.mg_iSelected = 3;break;} - default: mgFrequencyTrigger.mg_iSelected = 0; + case CSoundLibrary::SF_NONE: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 0; break; } + case CSoundLibrary::SF_11025_16: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 1; break; } + case CSoundLibrary::SF_22050_16: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 2; break; } + case CSoundLibrary::SF_44100_16: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 3; break; } + default: gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 0; } - mgAudioAutoTrigger.mg_iSelected = Clamp(sam_bAutoAdjustAudio, 0, 1); - mgAudioAPITrigger.mg_iSelected = Clamp(_pShell->GetINDEX("snd_iInterface"), 0L, 2L); + gmAudioOptionsMenu.gm_mgAudioAutoTrigger.mg_iSelected = Clamp(sam_bAutoAdjustAudio, 0, 1); + gmAudioOptionsMenu.gm_mgAudioAPITrigger.mg_iSelected = Clamp(_pShell->GetINDEX("snd_iInterface"), 0L, 2L); - mgWaveVolume.mg_iMinPos = 0; - mgWaveVolume.mg_iMaxPos = VOLUME_STEPS; - mgWaveVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fSoundVolume")*VOLUME_STEPS +0.5f); - mgWaveVolume.ApplyCurrentPosition(); + gmAudioOptionsMenu.gm_mgWaveVolume.mg_iMinPos = 0; + gmAudioOptionsMenu.gm_mgWaveVolume.mg_iMaxPos = VOLUME_STEPS; + gmAudioOptionsMenu.gm_mgWaveVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fSoundVolume")*VOLUME_STEPS + 0.5f); + gmAudioOptionsMenu.gm_mgWaveVolume.ApplyCurrentPosition(); - mgMPEGVolume.mg_iMinPos = 0; - mgMPEGVolume.mg_iMaxPos = VOLUME_STEPS; - mgMPEGVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fMusicVolume")*VOLUME_STEPS +0.5f); - mgMPEGVolume.ApplyCurrentPosition(); + gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iMinPos = 0; + gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iMaxPos = VOLUME_STEPS; + gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fMusicVolume")*VOLUME_STEPS + 0.5f); + gmAudioOptionsMenu.gm_mgMPEGVolume.ApplyCurrentPosition(); - mgAudioAutoTrigger.ApplyCurrentSelection(); - mgAudioAPITrigger.ApplyCurrentSelection(); - mgFrequencyTrigger.ApplyCurrentSelection(); + gmAudioOptionsMenu.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); + gmAudioOptionsMenu.gm_mgAudioAPITrigger.ApplyCurrentSelection(); + gmAudioOptionsMenu.gm_mgFrequencyTrigger.ApplyCurrentSelection(); } void ApplyAudioOptions(void) { - sam_bAutoAdjustAudio = mgAudioAutoTrigger.mg_iSelected; + sam_bAutoAdjustAudio = gmAudioOptionsMenu.gm_mgAudioAutoTrigger.mg_iSelected; if (sam_bAutoAdjustAudio) { _pShell->Execute("include \"Scripts\\Addons\\SFX-AutoAdjust.ini\""); } else { - _pShell->SetINDEX("snd_iInterface", mgAudioAPITrigger.mg_iSelected); + _pShell->SetINDEX("snd_iInterface", gmAudioOptionsMenu.gm_mgAudioAPITrigger.mg_iSelected); - switch( mgFrequencyTrigger.mg_iSelected) + switch (gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected) { case 0: {_pSound->SetFormat(CSoundLibrary::SF_NONE) ;break;} case 1: {_pSound->SetFormat(CSoundLibrary::SF_11025_16);break;} @@ -2010,7 +1977,8 @@ void InitializeMenus(void) gmControls.Initialize_t(); gmControls.gm_strName="Controls"; - gmControls.gm_pmgSelectedByDefault = &mgControlsButtons; + gmControls.gm_pmgSelectedByDefault = &gmControls.gm_mgButtons; + InitActionsForControlsMenu(); // warning! parent menu has to be set inside button activate function from where // Load/Save menu is called @@ -2041,13 +2009,15 @@ void InitializeMenus(void) gmVideoOptionsMenu.Initialize_t(); gmVideoOptionsMenu.gm_strName="VideoOptions"; - gmVideoOptionsMenu.gm_pmgSelectedByDefault = &mgDisplayAPITrigger; + gmVideoOptionsMenu.gm_pmgSelectedByDefault = &gmVideoOptionsMenu.gm_mgDisplayAPITrigger; gmVideoOptionsMenu.gm_pgmParentMenu = &gmOptionsMenu; + InitActionsForVideoOptionsMenu(); gmAudioOptionsMenu.Initialize_t(); gmAudioOptionsMenu.gm_strName="AudioOptions"; - gmAudioOptionsMenu.gm_pmgSelectedByDefault = &mgFrequencyTrigger; + gmAudioOptionsMenu.gm_pmgSelectedByDefault = &gmAudioOptionsMenu.gm_mgFrequencyTrigger; gmAudioOptionsMenu.gm_pgmParentMenu = &gmOptionsMenu; + InitActionsForAudioOptionsMenu(); gmLevelsMenu.Initialize_t(); gmLevelsMenu.gm_strName="Levels"; @@ -3426,141 +3396,13 @@ void CPlayerProfileMenu::EndMenu(void) } // ------------------------ CControlsMenu implementation -void CControlsMenu::Initialize_t(void) +void InitActionsForControlsMenu() { - // intialize player and controls menu - mgControlsTitle.mg_boxOnScreen = BoxTitle(); - mgControlsTitle.mg_strText = TRANS("CONTROLS"); - gm_lhGadgets.AddTail( mgControlsTitle.mg_lnNode); - - mgControlsNameLabel.mg_strText = ""; - mgControlsNameLabel.mg_boxOnScreen = BoxMediumRow(0.0); - mgControlsNameLabel.mg_bfsFontSize = BFS_MEDIUM; - mgControlsNameLabel.mg_iCenterI = -1; - mgControlsNameLabel.mg_bEnabled = FALSE; - mgControlsNameLabel.mg_bLabel = TRUE; - gm_lhGadgets.AddTail( mgControlsNameLabel.mg_lnNode); - - mgControlsButtons.mg_strText = TRANS("CUSTOMIZE BUTTONS"); - mgControlsButtons.mg_boxOnScreen = BoxMediumRow(2.0); - mgControlsButtons.mg_bfsFontSize = BFS_MEDIUM; - mgControlsButtons.mg_iCenterI = 0; - gm_lhGadgets.AddTail( mgControlsButtons.mg_lnNode); - mgControlsButtons.mg_pmgUp = &mgControlsPredefined; - mgControlsButtons.mg_pmgDown = &mgControlsAdvanced; - mgControlsButtons.mg_pActivatedFunction = &StartCustomizeKeyboardMenu; - mgControlsButtons.mg_strTip = TRANS("customize buttons in current controls"); - - mgControlsAdvanced.mg_strText = TRANS("ADVANCED JOYSTICK SETUP"); - mgControlsAdvanced.mg_iCenterI = 0; - mgControlsAdvanced.mg_boxOnScreen = BoxMediumRow(3); - mgControlsAdvanced.mg_bfsFontSize = BFS_MEDIUM; - gm_lhGadgets.AddTail( mgControlsAdvanced.mg_lnNode); - mgControlsAdvanced.mg_pmgUp = &mgControlsButtons; - mgControlsAdvanced.mg_pmgDown = &mgControlsSensitivity; - mgControlsAdvanced.mg_pActivatedFunction = &StartCustomizeAxisMenu; - mgControlsAdvanced.mg_strTip = TRANS("adjust advanced settings for joystick axis"); - - mgControlsSensitivity.mg_boxOnScreen = BoxMediumRow(4.5); - mgControlsSensitivity.mg_strText = TRANS("SENSITIVITY"); - mgControlsSensitivity.mg_pmgUp = &mgControlsAdvanced; - mgControlsSensitivity.mg_pmgDown = &mgControlsInvertTrigger; - mgControlsSensitivity.mg_strTip = TRANS("sensitivity for all axis in this control set"); - gm_lhGadgets.AddTail( mgControlsSensitivity.mg_lnNode); - - TRIGGER_MG( mgControlsInvertTrigger, 5.5, mgControlsSensitivity, mgControlsSmoothTrigger, - TRANS("INVERT LOOK"), astrNoYes); - mgControlsInvertTrigger.mg_strTip = TRANS("invert up/down looking"); - TRIGGER_MG( mgControlsSmoothTrigger, 6.5, mgControlsInvertTrigger, mgControlsAccelTrigger, - TRANS("SMOOTH AXIS"), astrNoYes); - mgControlsSmoothTrigger.mg_strTip = TRANS("smooth mouse/joystick movements"); - TRIGGER_MG( mgControlsAccelTrigger, 7.5, mgControlsSmoothTrigger, mgControlsIFeelTrigger, - TRANS("MOUSE ACCELERATION"), astrNoYes); - mgControlsAccelTrigger.mg_strTip = TRANS("allow mouse acceleration"); - TRIGGER_MG( mgControlsIFeelTrigger, 8.5, mgControlsAccelTrigger, mgControlsPredefined, - TRANS("ENABLE IFEEL"), astrNoYes); - mgControlsIFeelTrigger.mg_strTip = TRANS("enable support for iFeel tactile feedback mouse"); - - mgControlsPredefined.mg_strText = TRANS("LOAD PREDEFINED SETTINGS"); - mgControlsPredefined.mg_iCenterI = 0; - mgControlsPredefined.mg_boxOnScreen = BoxMediumRow(10); - mgControlsPredefined.mg_bfsFontSize = BFS_MEDIUM; - gm_lhGadgets.AddTail( mgControlsPredefined.mg_lnNode); - mgControlsPredefined.mg_pmgUp = &mgControlsIFeelTrigger; - mgControlsPredefined.mg_pmgDown = &mgControlsButtons; - mgControlsPredefined.mg_pActivatedFunction = &StartControlsLoadMenu; - mgControlsPredefined.mg_strTip = TRANS("load one of several predefined control settings"); + gmControls.gm_mgButtons.mg_pActivatedFunction = &StartCustomizeKeyboardMenu; + gmControls.gm_mgAdvanced.mg_pActivatedFunction = &StartCustomizeAxisMenu; + gmControls.gm_mgPredefined.mg_pActivatedFunction = &StartControlsLoadMenu; } -void CControlsMenu::StartMenu(void) -{ - gm_pmgSelectedByDefault = &mgControlsButtons; - INDEX iPlayer = _pGame->gm_iSinglePlayer; - if (_iLocalPlayer>=0 && _iLocalPlayer<4) { - iPlayer = _pGame->gm_aiMenuLocalPlayers[_iLocalPlayer]; - } - _fnmControlsToCustomize.PrintF("Controls\\Controls%d.ctl", iPlayer); - - ControlsMenuOn(); - - mgControlsNameLabel.mg_strText.PrintF(TRANS("CONTROLS FOR: %s"), _pGame->gm_apcPlayers[iPlayer].GetNameForPrinting()); - - ObtainActionSettings(); - CGameMenu::StartMenu(); -} - -void CControlsMenu::EndMenu(void) -{ - ApplyActionSettings(); - - ControlsMenuOff(); - - CGameMenu::EndMenu(); -} - -void CControlsMenu::ObtainActionSettings(void) -{ - CControls &ctrls = _pGame->gm_ctrlControlsExtra; - - mgControlsSensitivity.mg_iMinPos = 0; - mgControlsSensitivity.mg_iMaxPos = 50; - mgControlsSensitivity.mg_iCurPos = ctrls.ctrl_fSensitivity/2; - mgControlsSensitivity.ApplyCurrentPosition(); - - mgControlsInvertTrigger.mg_iSelected = ctrls.ctrl_bInvertLook ? 1 : 0; - mgControlsSmoothTrigger.mg_iSelected = ctrls.ctrl_bSmoothAxes ? 1 : 0; - mgControlsAccelTrigger .mg_iSelected = _pShell->GetINDEX("inp_bAllowMouseAcceleration") ? 1 : 0; - mgControlsIFeelTrigger .mg_bEnabled = _pShell->GetINDEX("sys_bIFeelEnabled") ? 1 : 0; - mgControlsIFeelTrigger .mg_iSelected = _pShell->GetFLOAT("inp_fIFeelGain")>0 ? 1 : 0; - - mgControlsInvertTrigger.ApplyCurrentSelection(); - mgControlsSmoothTrigger.ApplyCurrentSelection(); - mgControlsAccelTrigger .ApplyCurrentSelection(); - mgControlsIFeelTrigger .ApplyCurrentSelection(); -} - -void CControlsMenu::ApplyActionSettings(void) -{ - CControls &ctrls = _pGame->gm_ctrlControlsExtra; - - FLOAT fSensitivity = - FLOAT(mgControlsSensitivity.mg_iCurPos-mgControlsSensitivity.mg_iMinPos) / - FLOAT(mgControlsSensitivity.mg_iMaxPos-mgControlsSensitivity.mg_iMinPos)*100.0f; - - BOOL bInvert = mgControlsInvertTrigger.mg_iSelected != 0; - BOOL bSmooth = mgControlsSmoothTrigger.mg_iSelected != 0; - BOOL bAccel = mgControlsAccelTrigger .mg_iSelected != 0; - BOOL bIFeel = mgControlsIFeelTrigger .mg_iSelected != 0; - - if (INDEX(ctrls.ctrl_fSensitivity)!=INDEX(fSensitivity)) { - ctrls.ctrl_fSensitivity = fSensitivity; - } - ctrls.ctrl_bInvertLook = bInvert; - ctrls.ctrl_bSmoothAxes = bSmooth; - _pShell->SetINDEX("inp_bAllowMouseAcceleration", bAccel); - _pShell->SetFLOAT("inp_fIFeelGain", bIFeel ? 1.0f : 0.0f); - ctrls.CalculateInfluencesForAllAxis(); -} // ------------------------ CLoadSaveMenu implementation void CLoadSaveMenu::Initialize_t(void) @@ -3606,31 +3448,6 @@ void CLoadSaveMenu::Initialize_t(void) gm_pmgListBottom = &amgLSButton[SAVELOAD_BUTTONS_CT-1]; } -int qsort_CompareFileInfos_NameUp(const void *elem1, const void *elem2 ) -{ - const CFileInfo &fi1 = **(CFileInfo **)elem1; - const CFileInfo &fi2 = **(CFileInfo **)elem2; - return strcmp(fi1.fi_strName, fi2.fi_strName); -} -int qsort_CompareFileInfos_NameDn(const void *elem1, const void *elem2 ) -{ - const CFileInfo &fi1 = **(CFileInfo **)elem1; - const CFileInfo &fi2 = **(CFileInfo **)elem2; - return -strcmp(fi1.fi_strName, fi2.fi_strName); -} -int qsort_CompareFileInfos_FileUp(const void *elem1, const void *elem2 ) -{ - const CFileInfo &fi1 = **(CFileInfo **)elem1; - const CFileInfo &fi2 = **(CFileInfo **)elem2; - return strcmp(fi1.fi_fnFile, fi2.fi_fnFile); -} -int qsort_CompareFileInfos_FileDn(const void *elem1, const void *elem2 ) -{ - const CFileInfo &fi1 = **(CFileInfo **)elem1; - const CFileInfo &fi2 = **(CFileInfo **)elem2; - return -strcmp(fi1.fi_fnFile, fi2.fi_fnFile); -} - void CLoadSaveMenu::StartMenu(void) { gm_bNoEscape = FALSE; @@ -3837,7 +3654,7 @@ static void FillResolutionsList(void) _ctResolutions = 0; // if window - if( mgFullScreenTrigger.mg_iSelected==0) { + if (gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_iSelected == 0) { // always has fixed resolutions, but not greater than desktop static PIX apixWidths[][2] = { 320, 240, @@ -3876,7 +3693,7 @@ static void FillResolutionsList(void) } else { // get resolutions list from engine CDisplayMode *pdm = _pGfx->EnumDisplayModes(_ctResolutions, - SwitchToAPI(mgDisplayAPITrigger.mg_iSelected), mgDisplayAdaptersTrigger.mg_iSelected); + SwitchToAPI(gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_iSelected), gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_iSelected); // allocate that much _astrResolutionTexts = new CTString [_ctResolutions]; _admResolutionModes = new CDisplayMode[_ctResolutions]; @@ -3886,8 +3703,8 @@ static void FillResolutionsList(void) SetResolutionInList( iRes, pdm[iRes].dm_pixSizeI, pdm[iRes].dm_pixSizeJ); } } - mgResolutionsTrigger.mg_astrTexts = _astrResolutionTexts; - mgResolutionsTrigger.mg_ctTexts = _ctResolutions; + gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_astrTexts = _astrResolutionTexts; + gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_ctTexts = _ctResolutions; } @@ -3898,18 +3715,18 @@ static void FillAdaptersList(void) } _ctAdapters = 0; - INDEX iApi = SwitchToAPI(mgDisplayAPITrigger.mg_iSelected); + INDEX iApi = SwitchToAPI(gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_iSelected); _ctAdapters = _pGfx->gl_gaAPI[iApi].ga_ctAdapters; _astrAdapterTexts = new CTString[_ctAdapters]; for(INDEX iAdapter = 0; iAdapter<_ctAdapters; iAdapter++) { _astrAdapterTexts[iAdapter] = _pGfx->gl_gaAPI[iApi].ga_adaAdapter[iAdapter].da_strRenderer; } - mgDisplayAdaptersTrigger.mg_astrTexts = _astrAdapterTexts; - mgDisplayAdaptersTrigger.mg_ctTexts = _ctAdapters; + gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_astrTexts = _astrAdapterTexts; + gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_ctTexts = _ctAdapters; } -static void UpdateVideoOptionsButtons(INDEX iSelected) +extern void UpdateVideoOptionsButtons(INDEX iSelected) { const BOOL _bVideoOptionsChanged = (iSelected != -1); @@ -3920,142 +3737,90 @@ static void UpdateVideoOptionsButtons(INDEX iSelected) #else // ASSERT( bOGLEnabled ); #endif // SE1_D3D - CDisplayAdapter &da = _pGfx->gl_gaAPI[SwitchToAPI(mgDisplayAPITrigger.mg_iSelected)] - .ga_adaAdapter[mgDisplayAdaptersTrigger.mg_iSelected]; + CDisplayAdapter &da = _pGfx->gl_gaAPI[SwitchToAPI(gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_iSelected)] + .ga_adaAdapter[gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_iSelected]; // number of available preferences is higher if video setup is custom - mgDisplayPrefsTrigger.mg_ctTexts = 3; - if( sam_iVideoSetup==3) mgDisplayPrefsTrigger.mg_ctTexts++; + gmVideoOptionsMenu.gm_mgDisplayPrefsTrigger.mg_ctTexts = 3; + if (sam_iVideoSetup == 3) gmVideoOptionsMenu.gm_mgDisplayPrefsTrigger.mg_ctTexts++; // enumerate adapters FillAdaptersList(); // show or hide buttons - mgDisplayAPITrigger.mg_bEnabled = bOGLEnabled + gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_bEnabled = bOGLEnabled #ifdef SE1_D3D && bD3DEnabled #endif // SE1_D3D ; - mgDisplayAdaptersTrigger.mg_bEnabled = _ctAdapters>1; - mgVideoOptionsApply.mg_bEnabled = _bVideoOptionsChanged; + gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_bEnabled = _ctAdapters>1; + gmVideoOptionsMenu.gm_mgApply.mg_bEnabled = _bVideoOptionsChanged; // determine which should be visible - mgFullScreenTrigger.mg_bEnabled = TRUE; + gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_bEnabled = TRUE; if( da.da_ulFlags&DAF_FULLSCREENONLY) { - mgFullScreenTrigger.mg_bEnabled = FALSE; - mgFullScreenTrigger.mg_iSelected = 1; - mgFullScreenTrigger.ApplyCurrentSelection(); + gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_bEnabled = FALSE; + gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_iSelected = 1; + gmVideoOptionsMenu.gm_mgFullScreenTrigger.ApplyCurrentSelection(); } - mgBitsPerPixelTrigger.mg_bEnabled = TRUE; - if( mgFullScreenTrigger.mg_iSelected==0) { - mgBitsPerPixelTrigger.mg_bEnabled = FALSE; - mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_DEFAULT); - mgBitsPerPixelTrigger.ApplyCurrentSelection(); + gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_bEnabled = TRUE; + if (gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_iSelected == 0) { + gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; + gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_DEFAULT); + gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); } else if( da.da_ulFlags&DAF_16BITONLY) { - mgBitsPerPixelTrigger.mg_bEnabled = FALSE; - mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_16BIT); - mgBitsPerPixelTrigger.ApplyCurrentSelection(); + gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; + gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_16BIT); + gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); } // remember current selected resolution PIX pixSizeI, pixSizeJ; - ResolutionToSize(mgResolutionsTrigger.mg_iSelected, pixSizeI, pixSizeJ); + ResolutionToSize(gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_iSelected, pixSizeI, pixSizeJ); // select same resolution again if possible FillResolutionsList(); - SizeToResolution(pixSizeI, pixSizeJ, mgResolutionsTrigger.mg_iSelected); + SizeToResolution(pixSizeI, pixSizeJ, gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_iSelected); // apply adapter and resolutions - mgDisplayAdaptersTrigger.ApplyCurrentSelection(); - mgResolutionsTrigger.ApplyCurrentSelection(); + gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); + gmVideoOptionsMenu.gm_mgResolutionsTrigger.ApplyCurrentSelection(); } -static void InitVideoOptionsButtons(void) +extern void InitVideoOptionsButtons(void) { if( sam_bFullScreenActive) { - mgFullScreenTrigger.mg_iSelected = 1; + gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_iSelected = 1; } else { - mgFullScreenTrigger.mg_iSelected = 0; + gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_iSelected = 0; } - mgDisplayAPITrigger.mg_iSelected = APIToSwitch((GfxAPIType)(INDEX)sam_iGfxAPI); - mgDisplayAdaptersTrigger.mg_iSelected = sam_iDisplayAdapter; - mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch((enum DisplayDepth)(INDEX)sam_iDisplayDepth); + gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_iSelected = APIToSwitch((GfxAPIType)(INDEX)sam_iGfxAPI); + gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_iSelected = sam_iDisplayAdapter; + gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch((enum DisplayDepth)(INDEX)sam_iDisplayDepth); FillResolutionsList(); - SizeToResolution( sam_iScreenSizeI, sam_iScreenSizeJ, mgResolutionsTrigger.mg_iSelected); - mgDisplayPrefsTrigger.mg_iSelected = Clamp(int(sam_iVideoSetup), 0,3); + SizeToResolution(sam_iScreenSizeI, sam_iScreenSizeJ, gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_iSelected); + gmVideoOptionsMenu.gm_mgDisplayPrefsTrigger.mg_iSelected = Clamp(int(sam_iVideoSetup), 0, 3); - mgFullScreenTrigger.ApplyCurrentSelection(); - mgDisplayPrefsTrigger.ApplyCurrentSelection(); - mgDisplayAPITrigger.ApplyCurrentSelection(); - mgDisplayAdaptersTrigger.ApplyCurrentSelection(); - mgResolutionsTrigger.ApplyCurrentSelection(); - mgBitsPerPixelTrigger.ApplyCurrentSelection(); + gmVideoOptionsMenu.gm_mgFullScreenTrigger.ApplyCurrentSelection(); + gmVideoOptionsMenu.gm_mgDisplayPrefsTrigger.ApplyCurrentSelection(); + gmVideoOptionsMenu.gm_mgDisplayAPITrigger.ApplyCurrentSelection(); + gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); + gmVideoOptionsMenu.gm_mgResolutionsTrigger.ApplyCurrentSelection(); + gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); } - -void CVideoOptionsMenu::Initialize_t(void) +void InitActionsForVideoOptionsMenu() { - // intialize video options menu - mgVideoOptionsTitle.mg_boxOnScreen = BoxTitle(); - mgVideoOptionsTitle.mg_strText = TRANS("VIDEO"); - gm_lhGadgets.AddTail( mgVideoOptionsTitle.mg_lnNode); - - TRIGGER_MG(mgDisplayAPITrigger, 0, - mgVideoOptionsApply, mgDisplayAdaptersTrigger, TRANS("GRAPHICS API"), astrDisplayAPIRadioTexts); - mgDisplayAPITrigger.mg_strTip = TRANS("choose graphics API to be used"); - TRIGGER_MG(mgDisplayAdaptersTrigger, 1, - mgDisplayAPITrigger, mgDisplayPrefsTrigger, TRANS("DISPLAY ADAPTER"), astrNoYes); - mgDisplayAdaptersTrigger.mg_strTip = TRANS("choose display adapter to be used"); - TRIGGER_MG(mgDisplayPrefsTrigger, 2, - mgDisplayAdaptersTrigger, mgResolutionsTrigger, TRANS("PREFERENCES"), astrDisplayPrefsRadioTexts); - mgDisplayPrefsTrigger.mg_strTip = TRANS("balance between speed and rendering quality, depending on your system"); - TRIGGER_MG(mgResolutionsTrigger, 3, - mgDisplayPrefsTrigger, mgFullScreenTrigger, TRANS("RESOLUTION"), astrNoYes); - mgResolutionsTrigger.mg_strTip = TRANS("select video mode resolution"); - TRIGGER_MG(mgFullScreenTrigger, 4, - mgResolutionsTrigger, mgBitsPerPixelTrigger, TRANS("FULL SCREEN"), astrNoYes); - mgFullScreenTrigger.mg_strTip = TRANS("make game run in a window or in full screen"); - TRIGGER_MG(mgBitsPerPixelTrigger, 5, - mgFullScreenTrigger, mgVideoRendering, TRANS("BITS PER PIXEL"), astrBitsPerPixelRadioTexts); - mgBitsPerPixelTrigger.mg_strTip = TRANS("select number of colors used for display"); - - mgDisplayPrefsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - mgDisplayAPITrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - mgDisplayAdaptersTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - mgFullScreenTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - mgResolutionsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - mgBitsPerPixelTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - - - mgVideoRendering.mg_bfsFontSize = BFS_MEDIUM; - mgVideoRendering.mg_boxOnScreen = BoxMediumRow(7.0f); - mgVideoRendering.mg_pmgUp = &mgBitsPerPixelTrigger; - mgVideoRendering.mg_pmgDown = &mgVideoOptionsApply; - mgVideoRendering.mg_strText = TRANS("RENDERING OPTIONS"); - mgVideoRendering.mg_strTip = TRANS("manually adjust rendering settings"); - gm_lhGadgets.AddTail( mgVideoRendering.mg_lnNode); - mgVideoRendering.mg_pActivatedFunction = &StartRenderingOptionsMenu; - - mgVideoOptionsApply.mg_bfsFontSize = BFS_LARGE; - mgVideoOptionsApply.mg_boxOnScreen = BoxBigRow(5.5f); - mgVideoOptionsApply.mg_pmgUp = &mgVideoRendering; - mgVideoOptionsApply.mg_pmgDown = &mgDisplayAPITrigger; - mgVideoOptionsApply.mg_strText = TRANS("APPLY"); - mgVideoOptionsApply.mg_strTip = TRANS("apply selected options"); - gm_lhGadgets.AddTail( mgVideoOptionsApply.mg_lnNode); - mgVideoOptionsApply.mg_pActivatedFunction = &ApplyVideoOptions; -} - - -void CVideoOptionsMenu::StartMenu(void) -{ - InitVideoOptionsButtons(); - - CGameMenu::StartMenu(); - - UpdateVideoOptionsButtons(-1); + gmVideoOptionsMenu.gm_mgDisplayPrefsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmVideoOptionsMenu.gm_mgVideoRendering.mg_pActivatedFunction = &StartRenderingOptionsMenu; + gmVideoOptionsMenu.gm_mgApply.mg_pActivatedFunction = &ApplyVideoOptions; } // ------------------------ CAudioOptionsMenu implementation @@ -4067,88 +3832,43 @@ static void OnWaveVolumeChange(INDEX iCurPos) void WaveSliderChange(void) { if (_bMouseRight) { - mgWaveVolume.mg_iCurPos+=5; + gmAudioOptionsMenu.gm_mgWaveVolume.mg_iCurPos += 5; } else { - mgWaveVolume.mg_iCurPos-=5; + gmAudioOptionsMenu.gm_mgWaveVolume.mg_iCurPos -= 5; } - mgWaveVolume.ApplyCurrentPosition(); + gmAudioOptionsMenu.gm_mgWaveVolume.ApplyCurrentPosition(); } void FrequencyTriggerChange(INDEX iDummy) { sam_bAutoAdjustAudio = 0; - mgAudioAutoTrigger.mg_iSelected = 0; - mgAudioAutoTrigger.ApplyCurrentSelection(); + gmAudioOptionsMenu.gm_mgAudioAutoTrigger.mg_iSelected = 0; + gmAudioOptionsMenu.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); } void MPEGSliderChange(void) { if (_bMouseRight) { - mgMPEGVolume.mg_iCurPos+=5; + gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iCurPos += 5; } else { - mgMPEGVolume.mg_iCurPos-=5; + gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iCurPos -= 5; } - mgMPEGVolume.ApplyCurrentPosition(); + gmAudioOptionsMenu.gm_mgMPEGVolume.ApplyCurrentPosition(); } static void OnMPEGVolumeChange(INDEX iCurPos) { - _pShell->SetFLOAT("snd_fMusicVolume", iCurPos/FLOAT(VOLUME_STEPS)); + _pShell->SetFLOAT("snd_fMusicVolume", iCurPos / FLOAT(VOLUME_STEPS)); } -void CAudioOptionsMenu::Initialize_t(void) +void InitActionsForAudioOptionsMenu() { - // intialize Audio options menu - mgAudioOptionsTitle.mg_boxOnScreen = BoxTitle(); - mgAudioOptionsTitle.mg_strText = TRANS("AUDIO"); - gm_lhGadgets.AddTail( mgAudioOptionsTitle.mg_lnNode); - - TRIGGER_MG(mgAudioAutoTrigger, 0, - mgAudioOptionsApply, mgFrequencyTrigger, TRANS("AUTO-ADJUST"), astrNoYes); - mgAudioAutoTrigger.mg_strTip = TRANS("adjust quality to fit your system"); - - TRIGGER_MG(mgFrequencyTrigger, 1, - mgAudioAutoTrigger, mgAudioAPITrigger, TRANS("FREQUENCY"), astrFrequencyRadioTexts); - mgFrequencyTrigger.mg_strTip = TRANS("select sound quality or turn sound off"); - mgFrequencyTrigger.mg_pOnTriggerChange = FrequencyTriggerChange; - - TRIGGER_MG(mgAudioAPITrigger, 2, - mgFrequencyTrigger, mgWaveVolume, TRANS("SOUND SYSTEM"), astrSoundAPIRadioTexts); - mgAudioAPITrigger.mg_strTip = TRANS("choose sound system (API) to use"); - mgAudioAPITrigger.mg_pOnTriggerChange = FrequencyTriggerChange; - - mgWaveVolume.mg_boxOnScreen = BoxMediumRow(3); - mgWaveVolume.mg_strText = TRANS("SOUND EFFECTS VOLUME"); - mgWaveVolume.mg_strTip = TRANS("adjust volume of in-game sound effects"); - mgWaveVolume.mg_pmgUp = &mgAudioAPITrigger; - mgWaveVolume.mg_pmgDown = &mgMPEGVolume; - mgWaveVolume.mg_pOnSliderChange = &OnWaveVolumeChange; - mgWaveVolume.mg_pActivatedFunction = WaveSliderChange; - gm_lhGadgets.AddTail( mgWaveVolume.mg_lnNode); - - mgMPEGVolume.mg_boxOnScreen = BoxMediumRow(4); - mgMPEGVolume.mg_strText = TRANS("MUSIC VOLUME"); - mgMPEGVolume.mg_strTip = TRANS("adjust volume of in-game music"); - mgMPEGVolume.mg_pmgUp = &mgWaveVolume; - mgMPEGVolume.mg_pmgDown = &mgAudioOptionsApply; - mgMPEGVolume.mg_pOnSliderChange = &OnMPEGVolumeChange; - mgMPEGVolume.mg_pActivatedFunction = MPEGSliderChange; - gm_lhGadgets.AddTail( mgMPEGVolume.mg_lnNode); - - mgAudioOptionsApply.mg_bfsFontSize = BFS_LARGE; - mgAudioOptionsApply.mg_boxOnScreen = BoxBigRow(4); - mgAudioOptionsApply.mg_strText = TRANS("APPLY"); - mgAudioOptionsApply.mg_strTip = TRANS("activate selected options"); - gm_lhGadgets.AddTail( mgAudioOptionsApply.mg_lnNode); - mgAudioOptionsApply.mg_pmgUp = &mgMPEGVolume; - mgAudioOptionsApply.mg_pmgDown = &mgAudioAutoTrigger; - mgAudioOptionsApply.mg_pActivatedFunction = &ApplyAudioOptions; -} - -void CAudioOptionsMenu::StartMenu(void) -{ - RefreshSoundFormat(); - CGameMenu::StartMenu(); + gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_pOnTriggerChange = FrequencyTriggerChange; + gmAudioOptionsMenu.gm_mgWaveVolume.mg_pOnSliderChange = &OnWaveVolumeChange; + gmAudioOptionsMenu.gm_mgWaveVolume.mg_pActivatedFunction = WaveSliderChange; + gmAudioOptionsMenu.gm_mgMPEGVolume.mg_pOnSliderChange = &OnMPEGVolumeChange; + gmAudioOptionsMenu.gm_mgMPEGVolume.mg_pActivatedFunction = MPEGSliderChange; + gmAudioOptionsMenu.gm_mgApply.mg_pActivatedFunction = &ApplyAudioOptions; } // ------------------------ CVarMenu implementation diff --git a/Sources/SeriousSam/MenuStuff.cpp b/Sources/SeriousSam/MenuStuff.cpp index 8713855..b73949b 100644 --- a/Sources/SeriousSam/MenuStuff.cpp +++ b/Sources/SeriousSam/MenuStuff.cpp @@ -140,4 +140,29 @@ BOOL IsMenuEnabled(const CTString &strMenuName) BOOL(*pFunc)(const CTString &) = (BOOL(*)(const CTString &))pss->ss_pvValue; return pFunc(strMenuName); +} + +int qsort_CompareFileInfos_NameUp(const void *elem1, const void *elem2) +{ + const CFileInfo &fi1 = **(CFileInfo **)elem1; + const CFileInfo &fi2 = **(CFileInfo **)elem2; + return strcmp(fi1.fi_strName, fi2.fi_strName); +} +int qsort_CompareFileInfos_NameDn(const void *elem1, const void *elem2) +{ + const CFileInfo &fi1 = **(CFileInfo **)elem1; + const CFileInfo &fi2 = **(CFileInfo **)elem2; + return -strcmp(fi1.fi_strName, fi2.fi_strName); +} +int qsort_CompareFileInfos_FileUp(const void *elem1, const void *elem2) +{ + const CFileInfo &fi1 = **(CFileInfo **)elem1; + const CFileInfo &fi2 = **(CFileInfo **)elem2; + return strcmp(fi1.fi_fnFile, fi2.fi_fnFile); +} +int qsort_CompareFileInfos_FileDn(const void *elem1, const void *elem2) +{ + const CFileInfo &fi1 = **(CFileInfo **)elem1; + const CFileInfo &fi2 = **(CFileInfo **)elem2; + return -strcmp(fi1.fi_fnFile, fi2.fi_fnFile); } \ No newline at end of file diff --git a/Sources/SeriousSam/MenuStuff.h b/Sources/SeriousSam/MenuStuff.h index efc7a68..859a261 100644 --- a/Sources/SeriousSam/MenuStuff.h +++ b/Sources/SeriousSam/MenuStuff.h @@ -6,6 +6,20 @@ #pragma once #endif +#include "FileInfo.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 CTString astrNoYes[2]; @@ -25,4 +39,9 @@ extern CTString astrSoundAPIRadioTexts[3]; ULONG GetSpawnFlagsForGameType(INDEX iGameType); BOOL IsMenuEnabled(const CTString &strMenuName); +int qsort_CompareFileInfos_NameUp(const void *elem1, const void *elem2); +int qsort_CompareFileInfos_NameDn(const void *elem1, const void *elem2); +int qsort_CompareFileInfos_FileUp(const void *elem1, const void *elem2); +int qsort_CompareFileInfos_FileDn(const void *elem1, const void *elem2); + #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/SeriousSam.vcxproj b/Sources/SeriousSam/SeriousSam.vcxproj index 813b63d..f8c2896 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj +++ b/Sources/SeriousSam/SeriousSam.vcxproj @@ -182,7 +182,9 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + + @@ -228,6 +230,7 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + Use StdH.h diff --git a/Sources/SeriousSam/SeriousSam.vcxproj.filters b/Sources/SeriousSam/SeriousSam.vcxproj.filters index 132d40c..81c2e84 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj.filters +++ b/Sources/SeriousSam/SeriousSam.vcxproj.filters @@ -177,6 +177,15 @@ Source Files\Menus + + Source Files\Menus + + + Source Files\Menus + + + Source Files\Menus + From d9cd480103ca3ee6e1488d7f44f93bc68adc9723 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Wed, 16 Mar 2016 01:21:35 +0300 Subject: [PATCH 18/34] GameExecutable: Move some stuff from Menu.cpp into files PART VII 3700 lines! Yay! --- Sources/SeriousSam/MConfirm.cpp | 12 +- Sources/SeriousSam/MLoadSave.cpp | 222 +++++++ Sources/SeriousSam/MLoadSave.h | 12 + Sources/SeriousSam/MPlayerProfile.cpp | 289 +++++++++ Sources/SeriousSam/MPlayerProfile.h | 25 + Sources/SeriousSam/Menu.cpp | 597 ++---------------- Sources/SeriousSam/SeriousSam.vcxproj | 2 + Sources/SeriousSam/SeriousSam.vcxproj.filters | 6 + 8 files changed, 620 insertions(+), 545 deletions(-) create mode 100644 Sources/SeriousSam/MLoadSave.cpp create mode 100644 Sources/SeriousSam/MPlayerProfile.cpp diff --git a/Sources/SeriousSam/MConfirm.cpp b/Sources/SeriousSam/MConfirm.cpp index 4673c1f..ebae619 100644 --- a/Sources/SeriousSam/MConfirm.cpp +++ b/Sources/SeriousSam/MConfirm.cpp @@ -15,11 +15,11 @@ void CConfirmMenu::Initialize_t(void) gm_mgConfirmLabel.mg_iCenterI = 0; gm_mgConfirmLabel.mg_bfsFontSize = BFS_LARGE; - gm_mgConfirmLabel.mg_strText = TRANS("YES"); - gm_lhGadgets.AddTail(gm_mgConfirmLabel.mg_lnNode); - gm_mgConfirmLabel.mg_boxOnScreen = BoxPopupYesLarge(); - gm_mgConfirmLabel.mg_pActivatedFunction = NULL; - gm_mgConfirmLabel.mg_pmgLeft = + gm_mgConfirmYes.mg_strText = TRANS("YES"); + gm_lhGadgets.AddTail(gm_mgConfirmYes.mg_lnNode); + gm_mgConfirmYes.mg_boxOnScreen = BoxPopupYesLarge(); + gm_mgConfirmYes.mg_pActivatedFunction = NULL; + gm_mgConfirmYes.mg_pmgLeft = gm_mgConfirmYes.mg_pmgRight = &gm_mgConfirmNo; gm_mgConfirmYes.mg_iCenterI = 1; gm_mgConfirmYes.mg_bfsFontSize = BFS_LARGE; @@ -39,6 +39,7 @@ void CConfirmMenu::BeLarge(void) gm_mgConfirmLabel.mg_bfsFontSize = BFS_LARGE; gm_mgConfirmYes.mg_bfsFontSize = BFS_LARGE; gm_mgConfirmNo.mg_bfsFontSize = BFS_LARGE; + gm_mgConfirmLabel.mg_iCenterI = 0; gm_mgConfirmYes.mg_boxOnScreen = BoxPopupYesLarge(); gm_mgConfirmNo.mg_boxOnScreen = BoxPopupNoLarge(); @@ -49,6 +50,7 @@ void CConfirmMenu::BeSmall(void) gm_mgConfirmLabel.mg_bfsFontSize = BFS_MEDIUM; gm_mgConfirmYes.mg_bfsFontSize = BFS_MEDIUM; gm_mgConfirmNo.mg_bfsFontSize = BFS_MEDIUM; + gm_mgConfirmLabel.mg_iCenterI = -1; gm_mgConfirmYes.mg_boxOnScreen = BoxPopupYesSmall(); gm_mgConfirmNo.mg_boxOnScreen = BoxPopupNoSmall(); diff --git a/Sources/SeriousSam/MLoadSave.cpp b/Sources/SeriousSam/MLoadSave.cpp new file mode 100644 index 0000000..ccf834e --- /dev/null +++ b/Sources/SeriousSam/MLoadSave.cpp @@ -0,0 +1,222 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MenuStuff.h" +#include "MLoadSave.h" + + +void CLoadSaveMenu::Initialize_t(void) +{ + gm_pgmNextMenu = NULL; + + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + + gm_mgNotes.mg_boxOnScreen = BoxMediumRow(10.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); + + for (INDEX iLabel = 0; iLabel afnmDir; + MakeDirList(afnmDir, gm_fnmDirectory, "", 0); + gm_iLastFile = -1; + + // for each file in the directory + for (INDEX i = 0; ifi_fnFile = fnm; + pfi->fi_strName = strName; + // add it to list + gm_lhFileInfos.AddTail(pfi->fi_lnNode); + } + } + + // sort if needed + switch (gm_iSortType) { + default: ASSERT(FALSE); + case LSSORT_NONE: break; + case LSSORT_NAMEUP: + gm_lhFileInfos.Sort(qsort_CompareFileInfos_NameUp, offsetof(CFileInfo, fi_lnNode)); + break; + case LSSORT_NAMEDN: + gm_lhFileInfos.Sort(qsort_CompareFileInfos_NameDn, offsetof(CFileInfo, fi_lnNode)); + break; + case LSSORT_FILEUP: + gm_lhFileInfos.Sort(qsort_CompareFileInfos_FileUp, offsetof(CFileInfo, fi_lnNode)); + break; + case LSSORT_FILEDN: + gm_lhFileInfos.Sort(qsort_CompareFileInfos_FileDn, offsetof(CFileInfo, fi_lnNode)); + break; + } + + // if saving + if (gm_bSave) { + // add one info as empty slot + CFileInfo *pfi = new CFileInfo; + CTString strNumber; + strNumber.PrintF("%04d", gm_iLastFile + 1); + pfi->fi_fnFile = gm_fnmDirectory + gm_fnmBaseName + strNumber + gm_fnmExt; + pfi->fi_strName = EMPTYSLOTSTRING; + // add it to beginning + gm_lhFileInfos.AddHead(pfi->fi_lnNode); + } + + // set default parameters for the list + gm_iListOffset = 0; + gm_ctListTotal = gm_lhFileInfos.Count(); + + // find which one should be selected + gm_iListWantedItem = 0; + if (gm_fnmSelected != "") { + INDEX i = 0; + FOREACHINLIST(CFileInfo, fi_lnNode, gm_lhFileInfos, itfi) { + CFileInfo &fi = *itfi; + if (fi.fi_fnFile == gm_fnmSelected) { + gm_iListWantedItem = i; + break; + } + i++; + } + } + + CGameMenu::StartMenu(); +} +void CLoadSaveMenu::EndMenu(void) +{ + // delete all file infos + FORDELETELIST(CFileInfo, fi_lnNode, gm_lhFileInfos, itfi) { + delete &itfi.Current(); + } + gm_pgmNextMenu = NULL; + CGameMenu::EndMenu(); +} + +void CLoadSaveMenu::FillListItems(void) +{ + // disable all items first + for (INDEX i = 0; i"); + gm_amgButton[i].mg_strTip = ""; + gm_amgButton[i].mg_iInList = -2; + } + + BOOL bHasFirst = FALSE; + BOOL bHasLast = FALSE; + INDEX ctLabels = gm_lhFileInfos.Count(); + INDEX iLabel = 0; + FOREACHINLIST(CFileInfo, fi_lnNode, gm_lhFileInfos, itfi) { + CFileInfo &fi = *itfi; + INDEX iInMenu = iLabel - gm_iListOffset; + if ((iLabel >= gm_iListOffset) && + (iLabel<(gm_iListOffset + SAVELOAD_BUTTONS_CT))) + { + bHasFirst |= (iLabel == 0); + bHasLast |= (iLabel == ctLabels - 1); + gm_amgButton[iInMenu].mg_iInList = iLabel; + gm_amgButton[iInMenu].mg_strDes = fi.fi_strName; + gm_amgButton[iInMenu].mg_fnm = fi.fi_fnFile; + gm_amgButton[iInMenu].mg_bEnabled = TRUE; + gm_amgButton[iInMenu].RefreshText(); + if (gm_bSave) { + if (!FileExistsForWriting(gm_amgButton[iInMenu].mg_fnm)) { + gm_amgButton[iInMenu].mg_strTip = TRANS("Enter - save in new slot"); + } + else { + gm_amgButton[iInMenu].mg_strTip = TRANS("Enter - save here, F2 - rename, Del - delete"); + } + } + else if (gm_bManage) { + gm_amgButton[iInMenu].mg_strTip = TRANS("Enter - load this, F2 - rename, Del - delete"); + } + else { + gm_amgButton[iInMenu].mg_strTip = TRANS("Enter - load this"); + } + } + iLabel++; + } + + // enable/disable up/down arrows + gm_mgArrowUp.mg_bEnabled = !bHasFirst && ctLabels>0; + gm_mgArrowDn.mg_bEnabled = !bHasLast && ctLabels>0; +} + +// called to get info of a file from directory, or to skip it +BOOL CLoadSaveMenu::ParseFile(const CTFileName &fnm, CTString &strName) +{ + if (fnm.FileExt() != gm_fnmExt) { + return FALSE; + } + CTFileName fnSaveGameDescription = fnm.NoExt() + ".des"; + try { + strName.Load_t(fnSaveGameDescription); + } + catch (char *strError) { + (void)strError; + strName = fnm.FileName(); + + if (fnm.FileExt() == ".ctl") { + INDEX iCtl = -1; + strName.ScanF("Controls%d", &iCtl); + if (iCtl >= 0 && iCtl <= 7) { + strName.PrintF(TRANS("From player: %s"), _pGame->gm_apcPlayers[iCtl].GetNameForPrinting()); + } + } + } + + INDEX iFile = -1; + fnm.FileName().ScanF((const char*)(gm_fnmBaseName + "%d"), &iFile); + + gm_iLastFile = Max(gm_iLastFile, iFile); + + return TRUE; +} \ No newline at end of file diff --git a/Sources/SeriousSam/MLoadSave.h b/Sources/SeriousSam/MLoadSave.h index b51b971..12a90b6 100644 --- a/Sources/SeriousSam/MLoadSave.h +++ b/Sources/SeriousSam/MLoadSave.h @@ -7,6 +7,12 @@ #endif #include "GameMenu.h" +#include "MGArrow.h" +#include "MGButton.h" +#include "MGFileButton.h" +#include "MGTitle.h" + +#define SAVELOAD_BUTTONS_CT 14 class CLoadSaveMenu : public CGameMenu { @@ -38,6 +44,12 @@ public: CListHead gm_lhFileInfos; // all file infos to list INDEX gm_iLastFile; // index of last saved file in numbered format + CMGTitle gm_mgTitle; + CMGButton gm_mgNotes; + CMGFileButton gm_amgButton[SAVELOAD_BUTTONS_CT]; + CMGArrow gm_mgArrowUp; + CMGArrow gm_mgArrowDn; + // called to get info of a file from directory, or to skip it BOOL ParseFile(const CTFileName &fnm, CTString &strName); diff --git a/Sources/SeriousSam/MPlayerProfile.cpp b/Sources/SeriousSam/MPlayerProfile.cpp new file mode 100644 index 0000000..5339ec8 --- /dev/null +++ b/Sources/SeriousSam/MPlayerProfile.cpp @@ -0,0 +1,289 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "MenuStuff.h" +#include "MPlayerProfile.h" + +#define ADD_SELECT_PLAYER_MG( index, mg, mgprev, mgnext, me)\ + mg.mg_iIndex = index; \ + mg.mg_bfsFontSize = BFS_MEDIUM; \ + mg.mg_boxOnScreen = BoxNoUp(index); \ + mg.mg_bRectangle = TRUE; \ + mg.mg_pmgLeft = &mgprev; \ + mg.mg_pmgRight = &mgnext; \ + mg.mg_pmgUp = &gm_mgCustomizeControls; \ + mg.mg_pmgDown = &gm_mgNameField; \ + mg.mg_pActivatedFunction = &PPOnPlayerSelect; \ + mg.mg_strText = #index; \ + mg.mg_strTip = TRANS("select new currently active player"); \ + gm_lhGadgets.AddTail(mg.mg_lnNode); + +extern BOOL _bPlayerMenuFromSinglePlayer; +extern CTString _strLastPlayerAppearance; +extern void PPOnPlayerSelect(void); + + +void CPlayerProfileMenu::Initialize_t(void) +{ + // intialize player and controls menu + _bPlayerMenuFromSinglePlayer = FALSE; + gm_mgProfileTitle.mg_boxOnScreen = BoxTitle(); + gm_mgProfileTitle.mg_strText = TRANS("PLAYER PROFILE"); + gm_lhGadgets.AddTail(gm_mgProfileTitle.mg_lnNode); + + gm_mgNoLabel.mg_strText = TRANS("PROFILE:"); + gm_mgNoLabel.mg_boxOnScreen = BoxMediumLeft(0.0f); + gm_mgNoLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgNoLabel.mg_iCenterI = -1; + gm_lhGadgets.AddTail(gm_mgNoLabel.mg_lnNode); + + ADD_SELECT_PLAYER_MG(0, gm_mgNumber[0], gm_mgNumber[7], gm_mgNumber[1], gm_mgNumber[0]); + ADD_SELECT_PLAYER_MG(1, gm_mgNumber[1], gm_mgNumber[0], gm_mgNumber[2], gm_mgNumber[1]); + ADD_SELECT_PLAYER_MG(2, gm_mgNumber[2], gm_mgNumber[1], gm_mgNumber[3], gm_mgNumber[2]); + ADD_SELECT_PLAYER_MG(3, gm_mgNumber[3], gm_mgNumber[2], gm_mgNumber[4], gm_mgNumber[3]); + ADD_SELECT_PLAYER_MG(4, gm_mgNumber[4], gm_mgNumber[3], gm_mgNumber[5], gm_mgNumber[4]); + ADD_SELECT_PLAYER_MG(5, gm_mgNumber[5], gm_mgNumber[4], gm_mgNumber[6], gm_mgNumber[5]); + ADD_SELECT_PLAYER_MG(6, gm_mgNumber[6], gm_mgNumber[5], gm_mgNumber[7], gm_mgNumber[6]); + ADD_SELECT_PLAYER_MG(7, gm_mgNumber[7], gm_mgNumber[6], gm_mgNumber[0], gm_mgNumber[7]); + gm_mgNumber[7].mg_pmgRight = &gm_mgModel; + + gm_mgNameLabel.mg_strText = TRANS("NAME:"); + gm_mgNameLabel.mg_boxOnScreen = BoxMediumLeft(1.25f); + gm_mgNameLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgNameLabel.mg_iCenterI = -1; + gm_lhGadgets.AddTail(gm_mgNameLabel.mg_lnNode); + + // setup of player name button is done on start menu + gm_mgNameField.mg_strText = ""; + gm_mgNameField.mg_ctMaxStringLen = 25; + gm_mgNameField.mg_boxOnScreen = BoxPlayerEdit(1.25); + gm_mgNameField.mg_bfsFontSize = BFS_MEDIUM; + gm_mgNameField.mg_iCenterI = -1; + gm_mgNameField.mg_pmgUp = &gm_mgNumber[0]; + gm_mgNameField.mg_pmgDown = &gm_mgTeam; + gm_mgNameField.mg_pmgRight = &gm_mgModel; + gm_mgNameField.mg_strTip = TRANS("rename currently active player"); + gm_lhGadgets.AddTail(gm_mgNameField.mg_lnNode); + + gm_mgTeamLabel.mg_strText = TRANS("TEAM:"); + gm_mgTeamLabel.mg_boxOnScreen = BoxMediumLeft(2.25f); + gm_mgTeamLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgTeamLabel.mg_iCenterI = -1; + gm_lhGadgets.AddTail(gm_mgTeamLabel.mg_lnNode); + + // setup of player name button is done on start menu + gm_mgTeam.mg_strText = ""; + gm_mgTeam.mg_ctMaxStringLen = 25; + gm_mgTeam.mg_boxOnScreen = BoxPlayerEdit(2.25f); + gm_mgTeam.mg_bfsFontSize = BFS_MEDIUM; + gm_mgTeam.mg_iCenterI = -1; + gm_mgTeam.mg_pmgUp = gm_mgNameField.mg_pmgUp = &gm_mgNumber[0]; + + gm_mgTeam.mg_pmgDown = &gm_mgCrosshair; + gm_mgTeam.mg_pmgRight = &gm_mgModel; + //gm_mgTeam.mg_strTip = TRANS("teamplay is disabled in this version"); + gm_mgTeam.mg_strTip = TRANS("enter team name, if playing in team"); + gm_lhGadgets.AddTail(gm_mgTeam.mg_lnNode); + + TRIGGER_MG(gm_mgCrosshair, 4.0, gm_mgTeam, gm_mgWeaponSelect, TRANS("CROSSHAIR"), astrCrosshair); + gm_mgCrosshair.mg_bVisual = TRUE; + gm_mgCrosshair.mg_boxOnScreen = BoxPlayerSwitch(5.0f); + gm_mgCrosshair.mg_iCenterI = -1; + gm_mgCrosshair.mg_pOnTriggerChange = NULL; + + TRIGGER_MG(gm_mgWeaponSelect, 4.0, gm_mgCrosshair, gm_mgWeaponHide, TRANS("AUTO SELECT WEAPON"), astrWeapon); + gm_mgWeaponSelect.mg_boxOnScreen = BoxPlayerSwitch(6.0f); + gm_mgWeaponSelect.mg_iCenterI = -1; + gm_mgWeaponSelect.mg_pOnTriggerChange = NULL; + + TRIGGER_MG(gm_mgWeaponHide, 4.0, gm_mgWeaponSelect, gm_mg3rdPerson, TRANS("HIDE WEAPON MODEL"), astrNoYes); + gm_mgWeaponHide.mg_boxOnScreen = BoxPlayerSwitch(7.0f); + gm_mgWeaponHide.mg_iCenterI = -1; + gm_mgWeaponHide.mg_pOnTriggerChange = NULL; + + TRIGGER_MG(gm_mg3rdPerson, 4.0, gm_mgWeaponHide, gm_mgQuotes, TRANS("PREFER 3RD PERSON VIEW"), astrNoYes); + gm_mg3rdPerson.mg_boxOnScreen = BoxPlayerSwitch(8.0f); + gm_mg3rdPerson.mg_iCenterI = -1; + gm_mg3rdPerson.mg_pOnTriggerChange = NULL; + + TRIGGER_MG(gm_mgQuotes, 4.0, gm_mg3rdPerson, gm_mgAutoSave, TRANS("VOICE QUOTES"), astrNoYes); + gm_mgQuotes.mg_boxOnScreen = BoxPlayerSwitch(9.0f); + gm_mgQuotes.mg_iCenterI = -1; + gm_mgQuotes.mg_pOnTriggerChange = NULL; + + TRIGGER_MG(gm_mgAutoSave, 4.0, gm_mgQuotes, gm_mgCompDoubleClick, TRANS("AUTO SAVE"), astrNoYes); + gm_mgAutoSave.mg_boxOnScreen = BoxPlayerSwitch(10.0f); + gm_mgAutoSave.mg_iCenterI = -1; + gm_mgAutoSave.mg_pOnTriggerChange = NULL; + + TRIGGER_MG(gm_mgCompDoubleClick, 4.0, gm_mgAutoSave, gm_mgSharpTurning, TRANS("INVOKE COMPUTER"), astrComputerInvoke); + gm_mgCompDoubleClick.mg_boxOnScreen = BoxPlayerSwitch(11.0f); + gm_mgCompDoubleClick.mg_iCenterI = -1; + gm_mgCompDoubleClick.mg_pOnTriggerChange = NULL; + + TRIGGER_MG(gm_mgSharpTurning, 4.0, gm_mgCompDoubleClick, gm_mgViewBobbing, TRANS("SHARP TURNING"), astrNoYes); + gm_mgSharpTurning.mg_boxOnScreen = BoxPlayerSwitch(12.0f); + gm_mgSharpTurning.mg_iCenterI = -1; + gm_mgSharpTurning.mg_pOnTriggerChange = NULL; + + TRIGGER_MG(gm_mgViewBobbing, 4.0, gm_mgSharpTurning, gm_mgCustomizeControls, TRANS("VIEW BOBBING"), astrNoYes); + gm_mgViewBobbing.mg_boxOnScreen = BoxPlayerSwitch(13.0f); + gm_mgViewBobbing.mg_iCenterI = -1; + gm_mgViewBobbing.mg_pOnTriggerChange = NULL; + + gm_mgCustomizeControls.mg_strText = TRANS("CUSTOMIZE CONTROLS"); + gm_mgCustomizeControls.mg_boxOnScreen = BoxMediumLeft(14.5f); + gm_mgCustomizeControls.mg_bfsFontSize = BFS_MEDIUM; + gm_mgCustomizeControls.mg_iCenterI = -1; + gm_mgCustomizeControls.mg_pmgUp = &gm_mgViewBobbing; + gm_mgCustomizeControls.mg_pActivatedFunction = NULL; + gm_mgCustomizeControls.mg_pmgDown = &gm_mgNumber[0]; + gm_mgCustomizeControls.mg_pmgRight = &gm_mgModel; + gm_mgCustomizeControls.mg_strTip = TRANS("customize controls for this player"); + gm_lhGadgets.AddTail(gm_mgCustomizeControls.mg_lnNode); + + gm_mgModel.mg_boxOnScreen = BoxPlayerModel(); + gm_mgModel.mg_pmgLeft = &gm_mgNameField; + gm_mgModel.mg_pActivatedFunction = NULL; + gm_mgModel.mg_pmgDown = &gm_mgNameField; + gm_mgModel.mg_pmgLeft = &gm_mgNameField; + gm_mgModel.mg_strTip = TRANS("change model for this player"); + gm_lhGadgets.AddTail(gm_mgModel.mg_lnNode); +} + +INDEX CPlayerProfileMenu::ComboFromPlayer(INDEX iPlayer) +{ + return iPlayer; +} + +INDEX CPlayerProfileMenu::PlayerFromCombo(INDEX iCombo) +{ + return iCombo; +} + +void CPlayerProfileMenu::SelectPlayer(INDEX iPlayer) +{ + CPlayerCharacter &pc = _pGame->gm_apcPlayers[iPlayer]; + + for (INDEX iPl = 0; iPl<8; iPl++) + { + gm_mgNumber[iPl].mg_bHighlighted = FALSE; + } + + gm_mgNumber[iPlayer].mg_bHighlighted = TRUE; + + iPlayer = Clamp(iPlayer, INDEX(0), INDEX(7)); + + if (_iLocalPlayer >= 0 && _iLocalPlayer<4) { + _pGame->gm_aiMenuLocalPlayers[_iLocalPlayer] = iPlayer; + } + else { + _pGame->gm_iSinglePlayer = iPlayer; + } + gm_mgNameField.mg_pstrToChange = &pc.pc_strName; + gm_mgNameField.SetText(*gm_mgNameField.mg_pstrToChange); + gm_mgTeam.mg_pstrToChange = &pc.pc_strTeam; + gm_mgTeam.SetText(*gm_mgTeam.mg_pstrToChange); + + CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; + + gm_mgCrosshair.mg_iSelected = pps->ps_iCrossHairType + 1; + gm_mgCrosshair.ApplyCurrentSelection(); + gm_mgWeaponSelect.mg_iSelected = pps->ps_iWeaponAutoSelect; + gm_mgWeaponSelect.ApplyCurrentSelection(); + gm_mgWeaponHide.mg_iSelected = (pps->ps_ulFlags&PSF_HIDEWEAPON) ? 1 : 0; + gm_mgWeaponHide.ApplyCurrentSelection(); + gm_mg3rdPerson.mg_iSelected = (pps->ps_ulFlags&PSF_PREFER3RDPERSON) ? 1 : 0; + gm_mg3rdPerson.ApplyCurrentSelection(); + gm_mgQuotes.mg_iSelected = (pps->ps_ulFlags&PSF_NOQUOTES) ? 0 : 1; + gm_mgQuotes.ApplyCurrentSelection(); + gm_mgAutoSave.mg_iSelected = (pps->ps_ulFlags&PSF_AUTOSAVE) ? 1 : 0; + gm_mgAutoSave.ApplyCurrentSelection(); + gm_mgCompDoubleClick.mg_iSelected = (pps->ps_ulFlags&PSF_COMPSINGLECLICK) ? 0 : 1; + gm_mgCompDoubleClick.ApplyCurrentSelection(); + gm_mgViewBobbing.mg_iSelected = (pps->ps_ulFlags&PSF_NOBOBBING) ? 0 : 1; + gm_mgViewBobbing.ApplyCurrentSelection(); + gm_mgSharpTurning.mg_iSelected = (pps->ps_ulFlags&PSF_SHARPTURNING) ? 1 : 0; + gm_mgSharpTurning.ApplyCurrentSelection(); + + // get function that will set player appearance + CShellSymbol *pss = _pShell->GetSymbol("SetPlayerAppearance", /*bDeclaredOnly=*/ TRUE); + // if none + if (pss == NULL) { + // no model + gm_mgModel.mg_moModel.SetData(NULL); + // if there is some + } + else { + // set the model + BOOL(*pFunc)(CModelObject *, CPlayerCharacter *, CTString &, BOOL) = + (BOOL(*)(CModelObject *, CPlayerCharacter *, CTString &, BOOL))pss->ss_pvValue; + CTString strName; + BOOL bSet; + if (_gmRunningGameMode != GM_SINGLE_PLAYER && !_bPlayerMenuFromSinglePlayer) { + bSet = pFunc(&gm_mgModel.mg_moModel, &pc, strName, TRUE); + gm_mgModel.mg_strTip = TRANS("change model for this player"); + gm_mgModel.mg_bEnabled = TRUE; + } + else { + // cannot change player appearance in single player mode + bSet = pFunc(&gm_mgModel.mg_moModel, NULL, strName, TRUE); + gm_mgModel.mg_strTip = TRANS("cannot change model for single-player game"); + gm_mgModel.mg_bEnabled = FALSE; + } + // ignore gender flags, if any + strName.RemovePrefix("#female#"); + strName.RemovePrefix("#male#"); + gm_mgModel.mg_plModel = CPlacement3D(FLOAT3D(0.1f, -1.0f, -3.5f), ANGLE3D(150, 0, 0)); + gm_mgModel.mg_strText = strName; + CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; + _strLastPlayerAppearance = pps->GetModelFilename(); + try { + gm_mgModel.mg_moFloor.SetData_t(CTFILENAME("Models\\Computer\\Floor.mdl")); + gm_mgModel.mg_moFloor.mo_toTexture.SetData_t(CTFILENAME("Models\\Computer\\Floor.tex")); + } + catch (char *strError) { + (void)strError; + } + } +} + +void CPlayerProfileMenu::StartMenu(void) +{ + gmPlayerProfile.gm_pmgSelectedByDefault = &gm_mgNameField; + + if (_gmRunningGameMode == GM_NONE || _gmRunningGameMode == GM_DEMO) { + for (INDEX i = 0; i<8; i++) { + gm_mgNumber[i].mg_bEnabled = TRUE; + } + } + else { + for (INDEX i = 0; i<8; i++) { + gm_mgNumber[i].mg_bEnabled = FALSE; + } + INDEX iFirstEnabled = 0; + {for (INDEX ilp = 0; ilp<4; ilp++) { + CLocalPlayer &lp = _pGame->gm_lpLocalPlayers[ilp]; + if (lp.lp_bActive) { + gm_mgNumber[lp.lp_iPlayer].mg_bEnabled = TRUE; + if (iFirstEnabled == 0) { + iFirstEnabled = lp.lp_iPlayer; + } + } + }} + // backup to first player in case current player is disabled + if (!gm_mgNumber[*gm_piCurrentPlayer].mg_bEnabled) *gm_piCurrentPlayer = iFirstEnabled; + } + // done + SelectPlayer(*gm_piCurrentPlayer); + CGameMenu::StartMenu(); +} + + +void CPlayerProfileMenu::EndMenu(void) +{ + _pGame->SavePlayersAndControls(); + CGameMenu::EndMenu(); +} \ No newline at end of file diff --git a/Sources/SeriousSam/MPlayerProfile.h b/Sources/SeriousSam/MPlayerProfile.h index 0541e5b..274dd77 100644 --- a/Sources/SeriousSam/MPlayerProfile.h +++ b/Sources/SeriousSam/MPlayerProfile.h @@ -7,11 +7,36 @@ #endif #include "GameMenu.h" +#include "MGButton.h" +#include "MGEdit.h" +#include "MGModel.h" +#include "MGTrigger.h" +#include "MGTitle.h" class CPlayerProfileMenu : public CGameMenu { public: INDEX *gm_piCurrentPlayer; + + CMGTitle gm_mgProfileTitle; + CMGButton gm_mgNoLabel; + CMGButton gm_mgNumber[8]; + CMGButton gm_mgNameLabel; + CMGEdit gm_mgNameField; + CMGButton gm_mgTeamLabel; + CMGEdit gm_mgTeam; + CMGButton gm_mgCustomizeControls; + CMGTrigger gm_mgCrosshair; + CMGTrigger gm_mgWeaponSelect; + CMGTrigger gm_mgWeaponHide; + CMGTrigger gm_mg3rdPerson; + CMGTrigger gm_mgQuotes; + CMGTrigger gm_mgAutoSave; + CMGTrigger gm_mgCompDoubleClick; + CMGTrigger gm_mgViewBobbing; + CMGTrigger gm_mgSharpTurning; + CMGModel gm_mgModel; + void Initialize_t(void); INDEX ComboFromPlayer(INDEX iPlayer); INDEX PlayerFromCombo(INDEX iCombo); diff --git a/Sources/SeriousSam/Menu.cpp b/Sources/SeriousSam/Menu.cpp index faf5c82..391e18c 100644 --- a/Sources/SeriousSam/Menu.cpp +++ b/Sources/SeriousSam/Menu.cpp @@ -67,7 +67,7 @@ extern CTextureObject *_ptoLogoODI; extern CTextureObject *_ptoLogoEAX; INDEX _iLocalPlayer = -1; -BOOL _bPlayerMenuFromSinglePlayer = FALSE; +extern BOOL _bPlayerMenuFromSinglePlayer = FALSE; GameMode _gmMenuGameMode = GM_NONE; @@ -95,7 +95,7 @@ CListHead lhMenuEntities; // controls that are currently customized CTFileName _fnmControlsToCustomize = CTString(""); -static CTString _strLastPlayerAppearance; +extern CTString _strLastPlayerAppearance = ""; extern CTString sam_strNetworkSettings; // function to activate when level is chosen @@ -113,6 +113,7 @@ void InitActionsForNetworkJoinMenu(); void InitActionsForNetworkOpenMenu(); void InitActionsForNetworkStartMenu(); void InitActionsForOptionsMenu(); +void InitActionsForPlayerProfileMenu(); void InitActionsForSelectPlayersMenu(); void InitActionsForServersMenu(); void InitActionsForSinglePlayerMenu(); @@ -202,7 +203,6 @@ static CTextureObject _toLogoMenuB; // -------------- All possible menu entities #define BIG_BUTTONS_CT 6 -#define SAVELOAD_BUTTONS_CT 14 #define CHANGETRIGGERARRAY(ltbmg, astr) \ ltbmg.mg_astrTexts = astr;\ @@ -246,35 +246,12 @@ CVarMenu gmVarMenu; // -------- Player profile menu CPlayerProfileMenu gmPlayerProfile; -CMGTitle mgPlayerProfileTitle; -CMGButton mgPlayerNoLabel; -CMGButton mgPlayerNo[8]; -CMGButton mgPlayerNameLabel; -CMGEdit mgPlayerName; -CMGButton mgPlayerTeamLabel; -CMGEdit mgPlayerTeam; -CMGButton mgPlayerCustomizeControls; -CMGTrigger mgPlayerCrosshair; -CMGTrigger mgPlayerWeaponSelect; -CMGTrigger mgPlayerWeaponHide; -CMGTrigger mgPlayer3rdPerson; -CMGTrigger mgPlayerQuotes; -CMGTrigger mgPlayerAutoSave; -CMGTrigger mgPlayerCompDoubleClick; -CMGTrigger mgPlayerViewBobbing; -CMGTrigger mgPlayerSharpTurning; -CMGModel mgPlayerModel; // -------- Controls menu CControlsMenu gmControls; // -------- Load/Save menu CLoadSaveMenu gmLoadSaveMenu; -CMGTitle mgLoadSaveTitle; -CMGButton mgLoadSaveNotes; -CMGFileButton amgLSButton[SAVELOAD_BUTTONS_CT]; -CMGArrow mgLSArrowUp; -CMGArrow mgLSArrowDn; // -------- High-score menu CHighScoreMenu gmHighScoreMenu; @@ -1224,7 +1201,7 @@ BOOL LSSaveDemo(const CTFileName &fnm) // save/load menu calling functions void StartPlayerModelLoadMenu(void) { - mgLoadSaveTitle.mg_strText = TRANS("CHOOSE MODEL"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CHOOSE MODEL"); gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; gmLoadSaveMenu.gm_bSave = FALSE; @@ -1233,7 +1210,7 @@ void StartPlayerModelLoadMenu(void) gmLoadSaveMenu.gm_fnmSelected = _strLastPlayerAppearance; gmLoadSaveMenu.gm_fnmExt = CTString(".amc"); gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadPlayerModel; - mgLoadSaveNotes.mg_strText = ""; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; gmLoadSaveMenu.gm_pgmParentMenu = &gmPlayerProfile; ChangeToMenu( &gmLoadSaveMenu); @@ -1241,7 +1218,7 @@ void StartPlayerModelLoadMenu(void) void StartControlsLoadMenu(void) { - mgLoadSaveTitle.mg_strText = TRANS("LOAD CONTROLS"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD CONTROLS"); gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; gmLoadSaveMenu.gm_bSave = FALSE; @@ -1250,7 +1227,7 @@ void StartControlsLoadMenu(void) gmLoadSaveMenu.gm_fnmSelected = CTString(""); gmLoadSaveMenu.gm_fnmExt = CTString(".ctl"); gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadControls; - mgLoadSaveNotes.mg_strText = ""; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; gmLoadSaveMenu.gm_pgmParentMenu = &gmControls; ChangeToMenu( &gmLoadSaveMenu); @@ -1258,7 +1235,7 @@ void StartControlsLoadMenu(void) void StartCustomLoadMenu(void) { - mgLoadSaveTitle.mg_strText = TRANS("ADVANCED OPTIONS"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; gmLoadSaveMenu.gm_bSave = FALSE; @@ -1267,7 +1244,7 @@ void StartCustomLoadMenu(void) gmLoadSaveMenu.gm_fnmSelected = CTString(""); gmLoadSaveMenu.gm_fnmExt = CTString(".cfg"); gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadCustom; - mgLoadSaveNotes.mg_strText = ""; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; gmLoadSaveMenu.gm_pgmParentMenu = &gmOptionsMenu; ChangeToMenu( &gmLoadSaveMenu); @@ -1275,7 +1252,7 @@ void StartCustomLoadMenu(void) void StartAddonsLoadMenu(void) { - mgLoadSaveTitle.mg_strText = TRANS("EXECUTE ADDON"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("EXECUTE ADDON"); gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; gmLoadSaveMenu.gm_bSave = FALSE; @@ -1284,7 +1261,7 @@ void StartAddonsLoadMenu(void) gmLoadSaveMenu.gm_fnmSelected = CTString(""); gmLoadSaveMenu.gm_fnmExt = CTString(".ini"); gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadAddon; - mgLoadSaveNotes.mg_strText = ""; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; gmLoadSaveMenu.gm_pgmParentMenu = &gmOptionsMenu; ChangeToMenu( &gmLoadSaveMenu); @@ -1292,7 +1269,7 @@ void StartAddonsLoadMenu(void) void StartModsLoadMenu(void) { - mgLoadSaveTitle.mg_strText = TRANS("CHOOSE MOD"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CHOOSE MOD"); gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; gmLoadSaveMenu.gm_bSave = FALSE; @@ -1308,7 +1285,7 @@ void StartModsLoadMenu(void) void StartNetworkSettingsMenu(void) { - mgLoadSaveTitle.mg_strText = TRANS("CONNECTION SETTINGS"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CONNECTION SETTINGS"); gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; gmLoadSaveMenu.gm_bSave = FALSE; @@ -1318,7 +1295,7 @@ void StartNetworkSettingsMenu(void) gmLoadSaveMenu.gm_fnmExt = CTString(".ini"); gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetSettings; if (sam_strNetworkSettings=="") { - mgLoadSaveNotes.mg_strText = TRANS( + gmLoadSaveMenu.gm_mgNotes.mg_strText = TRANS( "Before joining a network game,\n" "you have to adjust your connection parameters.\n" "Choose one option from the list.\n" @@ -1326,7 +1303,7 @@ void StartNetworkSettingsMenu(void) "these parameters again from the Options menu.\n" ); } else { - mgLoadSaveNotes.mg_strText = ""; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; } gmLoadSaveMenu.gm_pgmParentMenu = &gmOptionsMenu; @@ -1336,12 +1313,12 @@ void StartNetworkSettingsMenu(void) void SetQuickLoadNotes(void) { if (_pShell->GetINDEX("gam_iQuickSaveSlots")<=8) { - mgLoadSaveNotes.mg_strText = TRANS( + gmLoadSaveMenu.gm_mgNotes.mg_strText = TRANS( "In-game QuickSave shortcuts:\n" "F6 - save a new QuickSave\n" "F9 - load the last QuickSave\n"); } else { - mgLoadSaveNotes.mg_strText = ""; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; } } @@ -1349,7 +1326,7 @@ void StartSinglePlayerQuickLoadMenu(void) { _gmMenuGameMode = GM_SINGLE_PLAYER; - mgLoadSaveTitle.mg_strText = TRANS("QUICK LOAD"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; gmLoadSaveMenu.gm_bSave = FALSE; @@ -1368,7 +1345,7 @@ void StartSinglePlayerLoadMenu(void) { _gmMenuGameMode = GM_SINGLE_PLAYER; - mgLoadSaveTitle.mg_strText = TRANS("LOAD"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; gmLoadSaveMenu.gm_bSave = FALSE; @@ -1377,7 +1354,7 @@ void StartSinglePlayerLoadMenu(void) gmLoadSaveMenu.gm_fnmSelected = CTString(""); gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSinglePlayer; - mgLoadSaveNotes.mg_strText = ""; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; ChangeToMenu( &gmLoadSaveMenu); @@ -1391,7 +1368,7 @@ void StartSinglePlayerSaveMenu(void) return; } _gmMenuGameMode = GM_SINGLE_PLAYER; - mgLoadSaveTitle.mg_strText = TRANS("SAVE"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; gmLoadSaveMenu.gm_bSave = TRUE; @@ -1401,7 +1378,7 @@ void StartSinglePlayerSaveMenu(void) gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; - mgLoadSaveNotes.mg_strText = ""; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; @@ -1411,7 +1388,7 @@ void StartDemoLoadMenu(void) { _gmMenuGameMode = GM_DEMO; - mgLoadSaveTitle.mg_strText = TRANS("PLAY DEMO"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("PLAY DEMO"); gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; gmLoadSaveMenu.gm_bSave = FALSE; @@ -1420,7 +1397,7 @@ void StartDemoLoadMenu(void) gmLoadSaveMenu.gm_fnmSelected = CTString(""); gmLoadSaveMenu.gm_fnmExt = CTString(".dem"); gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadDemo; - mgLoadSaveNotes.mg_strText = ""; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; ChangeToMenu( &gmLoadSaveMenu); @@ -1430,7 +1407,7 @@ void StartDemoSaveMenu(void) if( _gmRunningGameMode == GM_NONE) return; _gmMenuGameMode = GM_DEMO; - mgLoadSaveTitle.mg_strText = TRANS("RECORD DEMO"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("RECORD DEMO"); gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; gmLoadSaveMenu.gm_bSave = TRUE; @@ -1440,7 +1417,7 @@ void StartDemoSaveMenu(void) gmLoadSaveMenu.gm_fnmBaseName = CTString("Demo"); gmLoadSaveMenu.gm_fnmExt = CTString(".dem"); gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveDemo; - mgLoadSaveNotes.mg_strText = ""; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(FALSE); gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; @@ -1451,7 +1428,7 @@ void StartNetworkQuickLoadMenu(void) { _gmMenuGameMode = GM_NETWORK; - mgLoadSaveTitle.mg_strText = TRANS("QUICK LOAD"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; gmLoadSaveMenu.gm_bSave = FALSE; @@ -1470,7 +1447,7 @@ void StartNetworkLoadMenu(void) { _gmMenuGameMode = GM_NETWORK; - mgLoadSaveTitle.mg_strText = TRANS("LOAD"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; gmLoadSaveMenu.gm_bSave = FALSE; @@ -1479,7 +1456,7 @@ void StartNetworkLoadMenu(void) gmLoadSaveMenu.gm_fnmSelected = CTString(""); gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetwork; - mgLoadSaveNotes.mg_strText = ""; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; ChangeToMenu( &gmLoadSaveMenu); @@ -1490,7 +1467,7 @@ void StartNetworkSaveMenu(void) if( _gmRunningGameMode != GM_NETWORK) return; _gmMenuGameMode = GM_NETWORK; - mgLoadSaveTitle.mg_strText = TRANS("SAVE"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; gmLoadSaveMenu.gm_bSave = TRUE; @@ -1500,7 +1477,7 @@ void StartNetworkSaveMenu(void) gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; - mgLoadSaveNotes.mg_strText = ""; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; @@ -1511,7 +1488,7 @@ void StartSplitScreenQuickLoadMenu(void) { _gmMenuGameMode = GM_SPLIT_SCREEN; - mgLoadSaveTitle.mg_strText = TRANS("QUICK LOAD"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; gmLoadSaveMenu.gm_bSave = FALSE; @@ -1530,7 +1507,7 @@ void StartSplitScreenLoadMenu(void) { _gmMenuGameMode = GM_SPLIT_SCREEN; - mgLoadSaveTitle.mg_strText = TRANS("LOAD"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; gmLoadSaveMenu.gm_bSave = FALSE; @@ -1539,7 +1516,7 @@ void StartSplitScreenLoadMenu(void) gmLoadSaveMenu.gm_fnmSelected = CTString(""); gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSplitScreen; - mgLoadSaveNotes.mg_strText = ""; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; ChangeToMenu( &gmLoadSaveMenu); @@ -1549,7 +1526,7 @@ void StartSplitScreenSaveMenu(void) if( _gmRunningGameMode != GM_SPLIT_SCREEN) return; _gmMenuGameMode = GM_SPLIT_SCREEN; - mgLoadSaveTitle.mg_strText = TRANS("SAVE"); + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; gmLoadSaveMenu.gm_bSave = TRUE; @@ -1559,7 +1536,7 @@ void StartSplitScreenSaveMenu(void) gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; - mgLoadSaveNotes.mg_strText = ""; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; @@ -1973,7 +1950,8 @@ void InitializeMenus(void) gmPlayerProfile.Initialize_t(); gmPlayerProfile.gm_strName="PlayerProfile"; - gmPlayerProfile.gm_pmgSelectedByDefault = &mgPlayerName; + gmPlayerProfile.gm_pmgSelectedByDefault = &gmPlayerProfile.gm_mgNameField; + InitActionsForPlayerProfileMenu(); gmControls.Initialize_t(); gmControls.gm_strName="Controls"; @@ -1984,7 +1962,7 @@ void InitializeMenus(void) // Load/Save menu is called gmLoadSaveMenu.Initialize_t(); gmLoadSaveMenu.gm_strName="LoadSave"; - gmLoadSaveMenu.gm_pmgSelectedByDefault = &amgLSButton[0]; + gmLoadSaveMenu.gm_pmgSelectedByDefault = &gmLoadSaveMenu.gm_amgButton[0]; gmHighScoreMenu.Initialize_t(); gmHighScoreMenu.gm_strName="HighScore"; @@ -2945,7 +2923,7 @@ BOOL CGameMenu::OnChar(MSG msg) // ------------------------ CConfirmMenu implementation void InitActionsForConfirmMenu() { - gmConfirmMenu.gm_mgConfirmLabel.mg_pActivatedFunction = &ConfirmYes; + gmConfirmMenu.gm_mgConfirmYes.mg_pActivatedFunction = &ConfirmYes; gmConfirmMenu.gm_mgConfirmNo.mg_pActivatedFunction = &ConfirmNo; } @@ -3123,276 +3101,27 @@ void ChangeSharpTurning(INDEX iNew) } // ------------------------ CPlayerProfileMenu implementation -void CPlayerProfileMenu::Initialize_t(void) +extern void PPOnPlayerSelect(void) { - // intialize player and controls menu - _bPlayerMenuFromSinglePlayer = FALSE; - mgPlayerProfileTitle.mg_boxOnScreen = BoxTitle(); - mgPlayerProfileTitle.mg_strText = TRANS("PLAYER PROFILE"); - gm_lhGadgets.AddTail( mgPlayerProfileTitle.mg_lnNode); - - mgPlayerNoLabel.mg_strText = TRANS("PROFILE:"); - mgPlayerNoLabel.mg_boxOnScreen = BoxMediumLeft(0.0f); - mgPlayerNoLabel.mg_bfsFontSize = BFS_MEDIUM; - mgPlayerNoLabel.mg_iCenterI = -1; - gm_lhGadgets.AddTail( mgPlayerNoLabel.mg_lnNode); - -#define ADD_SELECT_PLAYER_MG( index, mg, mgprev, mgnext, me)\ - mg.mg_iIndex = index;\ - mg.mg_bfsFontSize = BFS_MEDIUM;\ - mg.mg_boxOnScreen = BoxNoUp(index);\ - mg.mg_bRectangle = TRUE;\ - mg.mg_pmgLeft = &mgprev;\ - mg.mg_pmgRight = &mgnext;\ - mg.mg_pmgUp = &mgPlayerCustomizeControls;\ - mg.mg_pmgDown = &mgPlayerName;\ - mg.mg_pActivatedFunction = &OnPlayerSelect;\ - mg.mg_strText = #index;\ - mg.mg_strTip = TRANS("select new currently active player");\ - gm_lhGadgets.AddTail( mg.mg_lnNode); - - ADD_SELECT_PLAYER_MG( 0, mgPlayerNo[0], mgPlayerNo[7], mgPlayerNo[1], mePlayerNo[0]); - ADD_SELECT_PLAYER_MG( 1, mgPlayerNo[1], mgPlayerNo[0], mgPlayerNo[2], mePlayerNo[1]); - ADD_SELECT_PLAYER_MG( 2, mgPlayerNo[2], mgPlayerNo[1], mgPlayerNo[3], mePlayerNo[2]); - ADD_SELECT_PLAYER_MG( 3, mgPlayerNo[3], mgPlayerNo[2], mgPlayerNo[4], mePlayerNo[3]); - ADD_SELECT_PLAYER_MG( 4, mgPlayerNo[4], mgPlayerNo[3], mgPlayerNo[5], mePlayerNo[4]); - ADD_SELECT_PLAYER_MG( 5, mgPlayerNo[5], mgPlayerNo[4], mgPlayerNo[6], mePlayerNo[5]); - ADD_SELECT_PLAYER_MG( 6, mgPlayerNo[6], mgPlayerNo[5], mgPlayerNo[7], mePlayerNo[6]); - ADD_SELECT_PLAYER_MG( 7, mgPlayerNo[7], mgPlayerNo[6], mgPlayerNo[0], mePlayerNo[7]); - mgPlayerNo[7].mg_pmgRight = &mgPlayerModel; - - mgPlayerNameLabel.mg_strText = TRANS("NAME:"); - mgPlayerNameLabel.mg_boxOnScreen = BoxMediumLeft(1.25f); - mgPlayerNameLabel.mg_bfsFontSize = BFS_MEDIUM; - mgPlayerNameLabel.mg_iCenterI = -1; - gm_lhGadgets.AddTail( mgPlayerNameLabel.mg_lnNode); - - // setup of player name button is done on start menu - mgPlayerName.mg_strText = ""; - mgPlayerName.mg_ctMaxStringLen = 25; - mgPlayerName.mg_boxOnScreen = BoxPlayerEdit(1.25); - mgPlayerName.mg_bfsFontSize = BFS_MEDIUM; - mgPlayerName.mg_iCenterI = -1; - mgPlayerName.mg_pmgUp = &mgPlayerNo[0]; - mgPlayerName.mg_pmgDown = &mgPlayerTeam; - mgPlayerName.mg_pmgRight = &mgPlayerModel; - mgPlayerName.mg_strTip = TRANS("rename currently active player"); - gm_lhGadgets.AddTail( mgPlayerName.mg_lnNode); - - mgPlayerTeamLabel.mg_strText = TRANS("TEAM:"); - mgPlayerTeamLabel.mg_boxOnScreen = BoxMediumLeft(2.25f); - mgPlayerTeamLabel.mg_bfsFontSize = BFS_MEDIUM; - mgPlayerTeamLabel.mg_iCenterI = -1; - gm_lhGadgets.AddTail( mgPlayerTeamLabel.mg_lnNode); - - // setup of player name button is done on start menu - mgPlayerTeam.mg_strText = ""; - mgPlayerName.mg_ctMaxStringLen = 25; - mgPlayerTeam.mg_boxOnScreen = BoxPlayerEdit(2.25f); - mgPlayerTeam.mg_bfsFontSize = BFS_MEDIUM; - mgPlayerTeam.mg_iCenterI = -1; - mgPlayerTeam.mg_pmgUp = &mgPlayerName; - mgPlayerTeam.mg_pmgDown = &mgPlayerCrosshair; - mgPlayerTeam.mg_pmgRight = &mgPlayerModel; - //mgPlayerTeam.mg_strTip = TRANS("teamplay is disabled in this version"); - mgPlayerTeam.mg_strTip = TRANS("enter team name, if playing in team"); - gm_lhGadgets.AddTail( mgPlayerTeam.mg_lnNode); - - TRIGGER_MG(mgPlayerCrosshair, 4.0, mgPlayerTeam, mgPlayerWeaponSelect, TRANS("CROSSHAIR"), astrCrosshair); - mgPlayerCrosshair.mg_bVisual = TRUE; - mgPlayerCrosshair.mg_boxOnScreen = BoxPlayerSwitch(5.0f); - mgPlayerCrosshair.mg_iCenterI = -1; - mgPlayerCrosshair.mg_pOnTriggerChange = ChangeCrosshair; - TRIGGER_MG(mgPlayerWeaponSelect, 4.0, mgPlayerCrosshair, mgPlayerWeaponHide, TRANS("AUTO SELECT WEAPON"), astrWeapon); - mgPlayerWeaponSelect.mg_boxOnScreen = BoxPlayerSwitch(6.0f); - mgPlayerWeaponSelect.mg_iCenterI = -1; - mgPlayerWeaponSelect.mg_pOnTriggerChange = ChangeWeaponSelect; - TRIGGER_MG(mgPlayerWeaponHide, 4.0, mgPlayerWeaponSelect, mgPlayer3rdPerson, TRANS("HIDE WEAPON MODEL"), astrNoYes); - mgPlayerWeaponHide.mg_boxOnScreen = BoxPlayerSwitch(7.0f); - mgPlayerWeaponHide.mg_iCenterI = -1; - mgPlayerWeaponHide.mg_pOnTriggerChange = ChangeWeaponHide; - TRIGGER_MG(mgPlayer3rdPerson, 4.0, mgPlayerWeaponHide, mgPlayerQuotes, TRANS("PREFER 3RD PERSON VIEW"), astrNoYes); - mgPlayer3rdPerson.mg_boxOnScreen = BoxPlayerSwitch(8.0f); - mgPlayer3rdPerson.mg_iCenterI = -1; - mgPlayer3rdPerson.mg_pOnTriggerChange = Change3rdPerson; - TRIGGER_MG(mgPlayerQuotes, 4.0, mgPlayer3rdPerson, mgPlayerAutoSave, TRANS("VOICE QUOTES"), astrNoYes); - mgPlayerQuotes.mg_boxOnScreen = BoxPlayerSwitch(9.0f); - mgPlayerQuotes.mg_iCenterI = -1; - mgPlayerQuotes.mg_pOnTriggerChange = ChangeQuotes; - TRIGGER_MG(mgPlayerAutoSave, 4.0, mgPlayerQuotes, mgPlayerCompDoubleClick, TRANS("AUTO SAVE"), astrNoYes); - mgPlayerAutoSave.mg_boxOnScreen = BoxPlayerSwitch(10.0f); - mgPlayerAutoSave.mg_iCenterI = -1; - mgPlayerAutoSave.mg_pOnTriggerChange = ChangeAutoSave; - TRIGGER_MG(mgPlayerCompDoubleClick, 4.0, mgPlayerAutoSave, mgPlayerSharpTurning, TRANS("INVOKE COMPUTER"), astrComputerInvoke); - mgPlayerCompDoubleClick.mg_boxOnScreen = BoxPlayerSwitch(11.0f); - mgPlayerCompDoubleClick.mg_iCenterI = -1; - mgPlayerCompDoubleClick.mg_pOnTriggerChange = ChangeCompDoubleClick; - TRIGGER_MG(mgPlayerSharpTurning, 4.0, mgPlayerCompDoubleClick, mgPlayerViewBobbing, TRANS("SHARP TURNING"), astrNoYes); - mgPlayerSharpTurning.mg_boxOnScreen = BoxPlayerSwitch(12.0f); - mgPlayerSharpTurning.mg_iCenterI = -1; - mgPlayerSharpTurning.mg_pOnTriggerChange = ChangeSharpTurning; - TRIGGER_MG(mgPlayerViewBobbing, 4.0, mgPlayerSharpTurning, mgPlayerCustomizeControls, TRANS("VIEW BOBBING"), astrNoYes); - mgPlayerViewBobbing.mg_boxOnScreen = BoxPlayerSwitch(13.0f); - mgPlayerViewBobbing.mg_iCenterI = -1; - mgPlayerViewBobbing.mg_pOnTriggerChange = ChangeViewBobbing; - - mgPlayerCustomizeControls.mg_strText = TRANS("CUSTOMIZE CONTROLS"); - mgPlayerCustomizeControls.mg_boxOnScreen = BoxMediumLeft(14.5f); - mgPlayerCustomizeControls.mg_bfsFontSize = BFS_MEDIUM; - mgPlayerCustomizeControls.mg_iCenterI = -1; - mgPlayerCustomizeControls.mg_pmgUp = &mgPlayerViewBobbing; - mgPlayerCustomizeControls.mg_pActivatedFunction = &StartControlsMenuFromPlayer; - mgPlayerCustomizeControls.mg_pmgDown = &mgPlayerNo[0]; - mgPlayerCustomizeControls.mg_pmgRight = &mgPlayerModel; - mgPlayerCustomizeControls.mg_strTip = TRANS("customize controls for this player"); - gm_lhGadgets.AddTail( mgPlayerCustomizeControls.mg_lnNode); - - mgPlayerModel.mg_boxOnScreen = BoxPlayerModel(); - mgPlayerModel.mg_pmgLeft = &mgPlayerName; - mgPlayerModel.mg_pActivatedFunction = &StartPlayerModelLoadMenu; - mgPlayerModel.mg_pmgDown = &mgPlayerName; - mgPlayerModel.mg_pmgLeft = &mgPlayerName; - mgPlayerModel.mg_strTip = TRANS("change model for this player"); - gm_lhGadgets.AddTail( mgPlayerModel.mg_lnNode); + ASSERT(_pmgLastActivatedGadget != NULL); + if (_pmgLastActivatedGadget->mg_bEnabled) { + gmPlayerProfile.SelectPlayer(((CMGButton *)_pmgLastActivatedGadget)->mg_iIndex); + } } -INDEX CPlayerProfileMenu::ComboFromPlayer(INDEX iPlayer) +void InitActionsForPlayerProfileMenu() { - return iPlayer; -} - -INDEX CPlayerProfileMenu::PlayerFromCombo(INDEX iCombo) -{ - return iCombo; -} - -void CPlayerProfileMenu::SelectPlayer(INDEX iPlayer) -{ - CPlayerCharacter &pc = _pGame->gm_apcPlayers[iPlayer]; - - for( INDEX iPl=0; iPl<8; iPl++) - { - mgPlayerNo[iPl].mg_bHighlighted = FALSE; - } - - mgPlayerNo[iPlayer].mg_bHighlighted = TRUE; - - iPlayer = Clamp(iPlayer, INDEX(0), INDEX(7)); - - if (_iLocalPlayer>=0 && _iLocalPlayer<4) { - _pGame->gm_aiMenuLocalPlayers[_iLocalPlayer] = iPlayer; - } else { - _pGame->gm_iSinglePlayer = iPlayer; - } - mgPlayerName.mg_pstrToChange = &pc.pc_strName; - mgPlayerName.SetText( *mgPlayerName.mg_pstrToChange); - mgPlayerTeam.mg_pstrToChange = &pc.pc_strTeam; - mgPlayerTeam.SetText( *mgPlayerTeam.mg_pstrToChange); - - CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; - - mgPlayerCrosshair.mg_iSelected = pps->ps_iCrossHairType+1; - mgPlayerCrosshair.ApplyCurrentSelection(); - mgPlayerWeaponSelect.mg_iSelected = pps->ps_iWeaponAutoSelect; - mgPlayerWeaponSelect.ApplyCurrentSelection(); - mgPlayerWeaponHide.mg_iSelected = (pps->ps_ulFlags&PSF_HIDEWEAPON)?1:0; - mgPlayerWeaponHide.ApplyCurrentSelection(); - mgPlayer3rdPerson.mg_iSelected = (pps->ps_ulFlags&PSF_PREFER3RDPERSON)?1:0; - mgPlayer3rdPerson.ApplyCurrentSelection(); - mgPlayerQuotes.mg_iSelected = (pps->ps_ulFlags&PSF_NOQUOTES)?0:1; - mgPlayerQuotes.ApplyCurrentSelection(); - mgPlayerAutoSave.mg_iSelected = (pps->ps_ulFlags&PSF_AUTOSAVE)?1:0; - mgPlayerAutoSave.ApplyCurrentSelection(); - mgPlayerCompDoubleClick.mg_iSelected = (pps->ps_ulFlags&PSF_COMPSINGLECLICK)?0:1; - mgPlayerCompDoubleClick.ApplyCurrentSelection(); - mgPlayerViewBobbing.mg_iSelected = (pps->ps_ulFlags&PSF_NOBOBBING)?0:1; - mgPlayerViewBobbing.ApplyCurrentSelection(); - mgPlayerSharpTurning.mg_iSelected = (pps->ps_ulFlags&PSF_SHARPTURNING)?1:0; - mgPlayerSharpTurning.ApplyCurrentSelection(); - - // get function that will set player appearance - CShellSymbol *pss = _pShell->GetSymbol("SetPlayerAppearance", /*bDeclaredOnly=*/ TRUE); - // if none - if (pss==NULL) { - // no model - mgPlayerModel.mg_moModel.SetData(NULL); - // if there is some - } else { - // set the model - BOOL (*pFunc)(CModelObject *, CPlayerCharacter *, CTString &, BOOL) = - (BOOL (*)(CModelObject *, CPlayerCharacter *, CTString &, BOOL))pss->ss_pvValue; - CTString strName; - BOOL bSet; - if( _gmRunningGameMode!=GM_SINGLE_PLAYER && !_bPlayerMenuFromSinglePlayer) { - bSet = pFunc(&mgPlayerModel.mg_moModel, &pc, strName, TRUE); - mgPlayerModel.mg_strTip = TRANS("change model for this player"); - mgPlayerModel.mg_bEnabled = TRUE; - } else { - // cannot change player appearance in single player mode - bSet = pFunc(&mgPlayerModel.mg_moModel, NULL, strName, TRUE); - mgPlayerModel.mg_strTip = TRANS("cannot change model for single-player game"); - mgPlayerModel.mg_bEnabled = FALSE; - } - // ignore gender flags, if any - strName.RemovePrefix("#female#"); - strName.RemovePrefix("#male#"); - mgPlayerModel.mg_plModel = CPlacement3D(FLOAT3D(0.1f,-1.0f,-3.5f), ANGLE3D(150,0,0)); - mgPlayerModel.mg_strText = strName; - CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; - _strLastPlayerAppearance = pps->GetModelFilename(); - try { - mgPlayerModel.mg_moFloor.SetData_t(CTFILENAME("Models\\Computer\\Floor.mdl")); - mgPlayerModel.mg_moFloor.mo_toTexture.SetData_t(CTFILENAME("Models\\Computer\\Floor.tex")); - } catch (char *strError) { - (void)strError; - } - } -} - - -void OnPlayerSelect(void) -{ - ASSERT( _pmgLastActivatedGadget != NULL); - if (_pmgLastActivatedGadget->mg_bEnabled) { - gmPlayerProfile.SelectPlayer( ((CMGButton *)_pmgLastActivatedGadget)->mg_iIndex); - } -} - -void CPlayerProfileMenu::StartMenu(void) -{ - gmPlayerProfile.gm_pmgSelectedByDefault = &mgPlayerName; - - if (_gmRunningGameMode==GM_NONE || _gmRunningGameMode==GM_DEMO) { - for(INDEX i=0; i<8; i++) { - mgPlayerNo[i].mg_bEnabled = TRUE; - } - } else { - for(INDEX i=0; i<8; i++) { - mgPlayerNo[i].mg_bEnabled = FALSE; - } - INDEX iFirstEnabled = 0; - {for(INDEX ilp=0; ilp<4; ilp++) { - CLocalPlayer &lp = _pGame->gm_lpLocalPlayers[ilp]; - if (lp.lp_bActive) { - mgPlayerNo[lp.lp_iPlayer].mg_bEnabled = TRUE; - if (iFirstEnabled==0) { - iFirstEnabled = lp.lp_iPlayer; - } - } - }} - // backup to first player in case current player is disabled - if( !mgPlayerNo[*gm_piCurrentPlayer].mg_bEnabled) *gm_piCurrentPlayer = iFirstEnabled; - } - // done - SelectPlayer( *gm_piCurrentPlayer); - CGameMenu::StartMenu(); -} - - -void CPlayerProfileMenu::EndMenu(void) -{ - _pGame->SavePlayersAndControls(); - CGameMenu::EndMenu(); + gmPlayerProfile.gm_mgCrosshair.mg_pOnTriggerChange = ChangeCrosshair; + gmPlayerProfile.gm_mgWeaponSelect.mg_pOnTriggerChange = ChangeWeaponSelect; + gmPlayerProfile.gm_mgWeaponHide.mg_pOnTriggerChange = ChangeWeaponHide; + gmPlayerProfile.gm_mg3rdPerson.mg_pOnTriggerChange = Change3rdPerson; + gmPlayerProfile.gm_mgQuotes.mg_pOnTriggerChange = ChangeQuotes; + gmPlayerProfile.gm_mgAutoSave.mg_pOnTriggerChange = ChangeAutoSave; + gmPlayerProfile.gm_mgCompDoubleClick.mg_pOnTriggerChange = ChangeCompDoubleClick; + gmPlayerProfile.gm_mgSharpTurning.mg_pOnTriggerChange = ChangeSharpTurning; + gmPlayerProfile.gm_mgViewBobbing.mg_pOnTriggerChange = ChangeViewBobbing; + gmPlayerProfile.gm_mgCustomizeControls.mg_pActivatedFunction = &StartControlsMenuFromPlayer; + gmPlayerProfile.gm_mgModel.mg_pActivatedFunction = &StartPlayerModelLoadMenu; } // ------------------------ CControlsMenu implementation @@ -3403,218 +3132,6 @@ void InitActionsForControlsMenu() gmControls.gm_mgPredefined.mg_pActivatedFunction = &StartControlsLoadMenu; } - -// ------------------------ CLoadSaveMenu implementation -void CLoadSaveMenu::Initialize_t(void) -{ - gm_pgmNextMenu = NULL; - - mgLoadSaveTitle.mg_boxOnScreen = BoxTitle(); - gm_lhGadgets.AddTail( mgLoadSaveTitle.mg_lnNode); - - mgLoadSaveNotes.mg_boxOnScreen = BoxMediumRow(10.0); - mgLoadSaveNotes.mg_bfsFontSize = BFS_MEDIUM; - mgLoadSaveNotes.mg_iCenterI = -1; - mgLoadSaveNotes.mg_bEnabled = FALSE; - mgLoadSaveNotes.mg_bLabel = TRUE; - gm_lhGadgets.AddTail( mgLoadSaveNotes.mg_lnNode); - - for( INDEX iLabel=0; iLabel afnmDir; - MakeDirList(afnmDir, gm_fnmDirectory, "", 0); - gm_iLastFile = -1; - - // for each file in the directory - for (INDEX i=0; ifi_fnFile = fnm; - pfi->fi_strName = strName; - // add it to list - gm_lhFileInfos.AddTail(pfi->fi_lnNode); - } - } - - // sort if needed - switch (gm_iSortType) { - default: ASSERT(FALSE); - case LSSORT_NONE: break; - case LSSORT_NAMEUP: - gm_lhFileInfos.Sort(qsort_CompareFileInfos_NameUp, offsetof(CFileInfo, fi_lnNode)); - break; - case LSSORT_NAMEDN: - gm_lhFileInfos.Sort(qsort_CompareFileInfos_NameDn, offsetof(CFileInfo, fi_lnNode)); - break; - case LSSORT_FILEUP: - gm_lhFileInfos.Sort(qsort_CompareFileInfos_FileUp, offsetof(CFileInfo, fi_lnNode)); - break; - case LSSORT_FILEDN: - gm_lhFileInfos.Sort(qsort_CompareFileInfos_FileDn, offsetof(CFileInfo, fi_lnNode)); - break; - } - - // if saving - if (gm_bSave) { - // add one info as empty slot - CFileInfo *pfi = new CFileInfo; - CTString strNumber; - strNumber.PrintF("%04d", gm_iLastFile+1); - pfi->fi_fnFile = gm_fnmDirectory+gm_fnmBaseName+strNumber+gm_fnmExt; - pfi->fi_strName = EMPTYSLOTSTRING; - // add it to beginning - gm_lhFileInfos.AddHead(pfi->fi_lnNode); - } - - // set default parameters for the list - gm_iListOffset = 0; - gm_ctListTotal = gm_lhFileInfos.Count(); - - // find which one should be selected - gm_iListWantedItem = 0; - if (gm_fnmSelected != "") { - INDEX i = 0; - FOREACHINLIST(CFileInfo, fi_lnNode, gm_lhFileInfos, itfi) { - CFileInfo &fi = *itfi; - if (fi.fi_fnFile==gm_fnmSelected) { - gm_iListWantedItem = i; - break; - } - i++; - } - } - - CGameMenu::StartMenu(); -} -void CLoadSaveMenu::EndMenu(void) -{ - // delete all file infos - FORDELETELIST( CFileInfo, fi_lnNode, gm_lhFileInfos, itfi) { - delete &itfi.Current(); - } - gm_pgmNextMenu = NULL; - CGameMenu::EndMenu(); -} - -void CLoadSaveMenu::FillListItems(void) -{ - // disable all items first - for(INDEX i=0; i"); - amgLSButton[i].mg_strTip = ""; - amgLSButton[i].mg_iInList = -2; - } - - BOOL bHasFirst = FALSE; - BOOL bHasLast = FALSE; - INDEX ctLabels = gm_lhFileInfos.Count(); - INDEX iLabel=0; - FOREACHINLIST(CFileInfo, fi_lnNode, gm_lhFileInfos, itfi) { - CFileInfo &fi = *itfi; - INDEX iInMenu = iLabel-gm_iListOffset; - if( (iLabel>=gm_iListOffset) && - (iLabel<(gm_iListOffset+SAVELOAD_BUTTONS_CT)) ) - { - bHasFirst|=(iLabel==0); - bHasLast |=(iLabel==ctLabels-1); - amgLSButton[iInMenu].mg_iInList = iLabel; - amgLSButton[iInMenu].mg_strDes = fi.fi_strName; - amgLSButton[iInMenu].mg_fnm = fi.fi_fnFile; - amgLSButton[iInMenu].mg_bEnabled = TRUE; - amgLSButton[iInMenu].RefreshText(); - if (gm_bSave) { - if (!FileExistsForWriting(amgLSButton[iInMenu].mg_fnm)) { - amgLSButton[iInMenu].mg_strTip = TRANS("Enter - save in new slot"); - } else { - amgLSButton[iInMenu].mg_strTip = TRANS("Enter - save here, F2 - rename, Del - delete"); - } - } else if (gm_bManage) { - amgLSButton[iInMenu].mg_strTip = TRANS("Enter - load this, F2 - rename, Del - delete"); - } else { - amgLSButton[iInMenu].mg_strTip = TRANS("Enter - load this"); - } - } - iLabel++; - } - - // enable/disable up/down arrows - mgLSArrowUp.mg_bEnabled = !bHasFirst && ctLabels>0; - mgLSArrowDn.mg_bEnabled = !bHasLast && ctLabels>0; -} - -// called to get info of a file from directory, or to skip it -BOOL CLoadSaveMenu::ParseFile(const CTFileName &fnm, CTString &strName) -{ - if (fnm.FileExt()!=gm_fnmExt) { - return FALSE; - } - CTFileName fnSaveGameDescription = fnm.NoExt()+".des"; - try { - strName.Load_t( fnSaveGameDescription); - } catch( char *strError) { - (void)strError; - strName = fnm.FileName(); - - if (fnm.FileExt()==".ctl") { - INDEX iCtl = -1; - strName.ScanF("Controls%d", &iCtl); - if (iCtl>=0 && iCtl<=7) { - strName.PrintF(TRANS("From player: %s"), _pGame->gm_apcPlayers[iCtl].GetNameForPrinting()); - } - } - } - - INDEX iFile = -1; - fnm.FileName().ScanF((const char*)(gm_fnmBaseName+"%d"), &iFile); - - gm_iLastFile = Max(gm_iLastFile, iFile); - - return TRUE; -} - // ------------------------ CCustomizeAxisMenu implementation void PreChangeAxis(INDEX iDummy) { diff --git a/Sources/SeriousSam/SeriousSam.vcxproj b/Sources/SeriousSam/SeriousSam.vcxproj index f8c2896..b93067a 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj +++ b/Sources/SeriousSam/SeriousSam.vcxproj @@ -217,12 +217,14 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + + diff --git a/Sources/SeriousSam/SeriousSam.vcxproj.filters b/Sources/SeriousSam/SeriousSam.vcxproj.filters index 81c2e84..44b3a41 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj.filters +++ b/Sources/SeriousSam/SeriousSam.vcxproj.filters @@ -186,6 +186,12 @@ Source Files\Menus + + Source Files\Menus + + + Source Files\Menus + From 66cc1d014f12f097499195d0f1f8c3727caa7c7c Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Wed, 16 Mar 2016 21:43:05 +0300 Subject: [PATCH 19/34] GameExecutable: Some improvements. Idk how to name it. Add some empty lines. Move some files. Replace long repeating variable names with shorter preprocessors. --- .../{ => GUI/Components}/MGArrow.cpp | 0 .../SeriousSam/{ => GUI/Components}/MGArrow.h | 0 .../{ => GUI/Components}/MGButton.cpp | 0 .../{ => GUI/Components}/MGButton.h | 0 .../{ => GUI/Components}/MGChangePlayer.cpp | 0 .../{ => GUI/Components}/MGChangePlayer.h | 0 .../{ => GUI/Components}/MGEdit.cpp | 0 .../SeriousSam/{ => GUI/Components}/MGEdit.h | 0 .../{ => GUI/Components}/MGFileButton.cpp | 0 .../{ => GUI/Components}/MGFileButton.h | 0 .../{ => GUI/Components}/MGHighScore.cpp | 0 .../{ => GUI/Components}/MGHighScore.h | 0 .../{ => GUI/Components}/MGKeyDefinition.cpp | 0 .../{ => GUI/Components}/MGKeyDefinition.h | 0 .../{ => GUI/Components}/MGLevelButton.cpp | 0 .../{ => GUI/Components}/MGLevelButton.h | 0 .../{ => GUI/Components}/MGModel.cpp | 0 .../SeriousSam/{ => GUI/Components}/MGModel.h | 0 .../{ => GUI/Components}/MGServerList.cpp | 0 .../{ => GUI/Components}/MGServerList.h | 0 .../{ => GUI/Components}/MGSlider.cpp | 0 .../{ => GUI/Components}/MGSlider.h | 0 .../{ => GUI/Components}/MGTitle.cpp | 0 .../SeriousSam/{ => GUI/Components}/MGTitle.h | 0 .../{ => GUI/Components}/MGTrigger.cpp | 0 .../{ => GUI/Components}/MGTrigger.h | 0 .../{ => GUI/Components}/MGVarButton.cpp | 0 .../{ => GUI/Components}/MGVarButton.h | 0 .../{ => GUI/Components}/MenuGadget.cpp | 0 .../{ => GUI/Components}/MenuGadget.h | 0 Sources/SeriousSam/GameMenu.cpp | 339 ++++++ Sources/SeriousSam/MAudioOptions.h | 8 +- Sources/SeriousSam/MConfirm.h | 2 +- Sources/SeriousSam/MControls.h | 9 +- Sources/SeriousSam/MCustomizeAxis.h | 6 +- Sources/SeriousSam/MCustomizeKeyboard.h | 6 +- Sources/SeriousSam/MDisabled.h | 4 +- Sources/SeriousSam/MHighScore.h | 4 +- Sources/SeriousSam/MInGame.h | 5 +- Sources/SeriousSam/MLevels.h | 7 +- Sources/SeriousSam/MLoadSave.h | 8 +- Sources/SeriousSam/MMain.h | 2 +- Sources/SeriousSam/MNetwork.h | 5 +- Sources/SeriousSam/MNetworkJoin.h | 4 +- Sources/SeriousSam/MNetworkOpen.h | 7 +- Sources/SeriousSam/MNetworkStart.h | 8 +- Sources/SeriousSam/MOptions.h | 4 +- Sources/SeriousSam/MPlayerProfile.h | 10 +- Sources/SeriousSam/MSelectPlayers.h | 8 +- Sources/SeriousSam/MServers.h | 8 +- Sources/SeriousSam/MSinglePlayer.h | 4 +- Sources/SeriousSam/MSinglePlayerNew.h | 4 +- Sources/SeriousSam/MSplitScreen.h | 5 +- Sources/SeriousSam/MSplitStart.h | 7 +- Sources/SeriousSam/MVar.h | 8 +- Sources/SeriousSam/Menu.cpp | 990 ++++++------------ Sources/SeriousSam/MenuStuff.cpp | 28 + Sources/SeriousSam/MenuStuff.h | 1 + Sources/SeriousSam/SeriousSam.vcxproj | 64 +- Sources/SeriousSam/SeriousSam.vcxproj.filters | 180 ++-- 60 files changed, 907 insertions(+), 838 deletions(-) rename Sources/SeriousSam/{ => GUI/Components}/MGArrow.cpp (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGArrow.h (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGButton.cpp (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGButton.h (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGChangePlayer.cpp (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGChangePlayer.h (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGEdit.cpp (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGEdit.h (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGFileButton.cpp (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGFileButton.h (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGHighScore.cpp (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGHighScore.h (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGKeyDefinition.cpp (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGKeyDefinition.h (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGLevelButton.cpp (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGLevelButton.h (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGModel.cpp (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGModel.h (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGServerList.cpp (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGServerList.h (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGSlider.cpp (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGSlider.h (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGTitle.cpp (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGTitle.h (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGTrigger.cpp (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGTrigger.h (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGVarButton.cpp (100%) rename Sources/SeriousSam/{ => GUI/Components}/MGVarButton.h (100%) rename Sources/SeriousSam/{ => GUI/Components}/MenuGadget.cpp (100%) rename Sources/SeriousSam/{ => GUI/Components}/MenuGadget.h (100%) create mode 100644 Sources/SeriousSam/GameMenu.cpp diff --git a/Sources/SeriousSam/MGArrow.cpp b/Sources/SeriousSam/GUI/Components/MGArrow.cpp similarity index 100% rename from Sources/SeriousSam/MGArrow.cpp rename to Sources/SeriousSam/GUI/Components/MGArrow.cpp diff --git a/Sources/SeriousSam/MGArrow.h b/Sources/SeriousSam/GUI/Components/MGArrow.h similarity index 100% rename from Sources/SeriousSam/MGArrow.h rename to Sources/SeriousSam/GUI/Components/MGArrow.h diff --git a/Sources/SeriousSam/MGButton.cpp b/Sources/SeriousSam/GUI/Components/MGButton.cpp similarity index 100% rename from Sources/SeriousSam/MGButton.cpp rename to Sources/SeriousSam/GUI/Components/MGButton.cpp diff --git a/Sources/SeriousSam/MGButton.h b/Sources/SeriousSam/GUI/Components/MGButton.h similarity index 100% rename from Sources/SeriousSam/MGButton.h rename to Sources/SeriousSam/GUI/Components/MGButton.h diff --git a/Sources/SeriousSam/MGChangePlayer.cpp b/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp similarity index 100% rename from Sources/SeriousSam/MGChangePlayer.cpp rename to Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp diff --git a/Sources/SeriousSam/MGChangePlayer.h b/Sources/SeriousSam/GUI/Components/MGChangePlayer.h similarity index 100% rename from Sources/SeriousSam/MGChangePlayer.h rename to Sources/SeriousSam/GUI/Components/MGChangePlayer.h diff --git a/Sources/SeriousSam/MGEdit.cpp b/Sources/SeriousSam/GUI/Components/MGEdit.cpp similarity index 100% rename from Sources/SeriousSam/MGEdit.cpp rename to Sources/SeriousSam/GUI/Components/MGEdit.cpp diff --git a/Sources/SeriousSam/MGEdit.h b/Sources/SeriousSam/GUI/Components/MGEdit.h similarity index 100% rename from Sources/SeriousSam/MGEdit.h rename to Sources/SeriousSam/GUI/Components/MGEdit.h diff --git a/Sources/SeriousSam/MGFileButton.cpp b/Sources/SeriousSam/GUI/Components/MGFileButton.cpp similarity index 100% rename from Sources/SeriousSam/MGFileButton.cpp rename to Sources/SeriousSam/GUI/Components/MGFileButton.cpp diff --git a/Sources/SeriousSam/MGFileButton.h b/Sources/SeriousSam/GUI/Components/MGFileButton.h similarity index 100% rename from Sources/SeriousSam/MGFileButton.h rename to Sources/SeriousSam/GUI/Components/MGFileButton.h diff --git a/Sources/SeriousSam/MGHighScore.cpp b/Sources/SeriousSam/GUI/Components/MGHighScore.cpp similarity index 100% rename from Sources/SeriousSam/MGHighScore.cpp rename to Sources/SeriousSam/GUI/Components/MGHighScore.cpp diff --git a/Sources/SeriousSam/MGHighScore.h b/Sources/SeriousSam/GUI/Components/MGHighScore.h similarity index 100% rename from Sources/SeriousSam/MGHighScore.h rename to Sources/SeriousSam/GUI/Components/MGHighScore.h diff --git a/Sources/SeriousSam/MGKeyDefinition.cpp b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp similarity index 100% rename from Sources/SeriousSam/MGKeyDefinition.cpp rename to Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp diff --git a/Sources/SeriousSam/MGKeyDefinition.h b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.h similarity index 100% rename from Sources/SeriousSam/MGKeyDefinition.h rename to Sources/SeriousSam/GUI/Components/MGKeyDefinition.h diff --git a/Sources/SeriousSam/MGLevelButton.cpp b/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp similarity index 100% rename from Sources/SeriousSam/MGLevelButton.cpp rename to Sources/SeriousSam/GUI/Components/MGLevelButton.cpp diff --git a/Sources/SeriousSam/MGLevelButton.h b/Sources/SeriousSam/GUI/Components/MGLevelButton.h similarity index 100% rename from Sources/SeriousSam/MGLevelButton.h rename to Sources/SeriousSam/GUI/Components/MGLevelButton.h diff --git a/Sources/SeriousSam/MGModel.cpp b/Sources/SeriousSam/GUI/Components/MGModel.cpp similarity index 100% rename from Sources/SeriousSam/MGModel.cpp rename to Sources/SeriousSam/GUI/Components/MGModel.cpp diff --git a/Sources/SeriousSam/MGModel.h b/Sources/SeriousSam/GUI/Components/MGModel.h similarity index 100% rename from Sources/SeriousSam/MGModel.h rename to Sources/SeriousSam/GUI/Components/MGModel.h diff --git a/Sources/SeriousSam/MGServerList.cpp b/Sources/SeriousSam/GUI/Components/MGServerList.cpp similarity index 100% rename from Sources/SeriousSam/MGServerList.cpp rename to Sources/SeriousSam/GUI/Components/MGServerList.cpp diff --git a/Sources/SeriousSam/MGServerList.h b/Sources/SeriousSam/GUI/Components/MGServerList.h similarity index 100% rename from Sources/SeriousSam/MGServerList.h rename to Sources/SeriousSam/GUI/Components/MGServerList.h diff --git a/Sources/SeriousSam/MGSlider.cpp b/Sources/SeriousSam/GUI/Components/MGSlider.cpp similarity index 100% rename from Sources/SeriousSam/MGSlider.cpp rename to Sources/SeriousSam/GUI/Components/MGSlider.cpp diff --git a/Sources/SeriousSam/MGSlider.h b/Sources/SeriousSam/GUI/Components/MGSlider.h similarity index 100% rename from Sources/SeriousSam/MGSlider.h rename to Sources/SeriousSam/GUI/Components/MGSlider.h diff --git a/Sources/SeriousSam/MGTitle.cpp b/Sources/SeriousSam/GUI/Components/MGTitle.cpp similarity index 100% rename from Sources/SeriousSam/MGTitle.cpp rename to Sources/SeriousSam/GUI/Components/MGTitle.cpp diff --git a/Sources/SeriousSam/MGTitle.h b/Sources/SeriousSam/GUI/Components/MGTitle.h similarity index 100% rename from Sources/SeriousSam/MGTitle.h rename to Sources/SeriousSam/GUI/Components/MGTitle.h diff --git a/Sources/SeriousSam/MGTrigger.cpp b/Sources/SeriousSam/GUI/Components/MGTrigger.cpp similarity index 100% rename from Sources/SeriousSam/MGTrigger.cpp rename to Sources/SeriousSam/GUI/Components/MGTrigger.cpp diff --git a/Sources/SeriousSam/MGTrigger.h b/Sources/SeriousSam/GUI/Components/MGTrigger.h similarity index 100% rename from Sources/SeriousSam/MGTrigger.h rename to Sources/SeriousSam/GUI/Components/MGTrigger.h diff --git a/Sources/SeriousSam/MGVarButton.cpp b/Sources/SeriousSam/GUI/Components/MGVarButton.cpp similarity index 100% rename from Sources/SeriousSam/MGVarButton.cpp rename to Sources/SeriousSam/GUI/Components/MGVarButton.cpp diff --git a/Sources/SeriousSam/MGVarButton.h b/Sources/SeriousSam/GUI/Components/MGVarButton.h similarity index 100% rename from Sources/SeriousSam/MGVarButton.h rename to Sources/SeriousSam/GUI/Components/MGVarButton.h diff --git a/Sources/SeriousSam/MenuGadget.cpp b/Sources/SeriousSam/GUI/Components/MenuGadget.cpp similarity index 100% rename from Sources/SeriousSam/MenuGadget.cpp rename to Sources/SeriousSam/GUI/Components/MenuGadget.cpp diff --git a/Sources/SeriousSam/MenuGadget.h b/Sources/SeriousSam/GUI/Components/MenuGadget.h similarity index 100% rename from Sources/SeriousSam/MenuGadget.h rename to Sources/SeriousSam/GUI/Components/MenuGadget.h diff --git a/Sources/SeriousSam/GameMenu.cpp b/Sources/SeriousSam/GameMenu.cpp new file mode 100644 index 0000000..4518dfd --- /dev/null +++ b/Sources/SeriousSam/GameMenu.cpp @@ -0,0 +1,339 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include +#include "MenuPrinting.h" +#include "GameMenu.h" + + +CGameMenu::CGameMenu(void) +{ + gm_pgmParentMenu = NULL; + gm_pmgSelectedByDefault = NULL; + gm_pmgArrowUp = NULL; + gm_pmgArrowDn = NULL; + gm_pmgListTop = NULL; + gm_pmgListBottom = NULL; + gm_iListOffset = 0; + gm_ctListVisible = 0; + gm_ctListTotal = 0; + gm_bPopup = FALSE; +} + +void CGameMenu::Initialize_t(void) +{ +} + +void CGameMenu::Destroy(void) +{ +} + +void CGameMenu::FillListItems(void) +{ + ASSERT(FALSE); // must be implemented to scroll up/down +} + +void CGameMenu::KillAllFocuses(void) +{ + // for each menu gadget in menu + FOREACHINLIST(CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) { + itmg->mg_bFocused = FALSE; + } +} + +void CGameMenu::Think(void) +{ +} + +// +-1 -> hit top/bottom when pressing up/down on keyboard +// +-2 -> pressed pageup/pagedown on keyboard +// +-3 -> pressed arrow up/down button in menu +// +-4 -> scrolling with mouse wheel +void CGameMenu::ScrollList(INDEX iDir) +{ + // if not valid for scrolling + if (gm_ctListTotal <= 0 + || gm_pmgArrowUp == NULL || gm_pmgArrowDn == NULL + || gm_pmgListTop == NULL || gm_pmgListBottom == NULL) { + // do nothing + return; + } + + INDEX iOldTopKey = gm_iListOffset; + // change offset + switch (iDir) { + case -1: + gm_iListOffset -= 1; + break; + case -4: + gm_iListOffset -= 3; + break; + case -2: + case -3: + gm_iListOffset -= gm_ctListVisible; + break; + case +1: + gm_iListOffset += 1; + break; + case +4: + gm_iListOffset += 3; + break; + case +2: + case +3: + gm_iListOffset += gm_ctListVisible; + break; + default: + ASSERT(FALSE); + return; + } + if (gm_ctListTotal <= gm_ctListVisible) { + gm_iListOffset = 0; + } + else { + gm_iListOffset = Clamp(gm_iListOffset, INDEX(0), INDEX(gm_ctListTotal - gm_ctListVisible)); + } + + // set new names + FillListItems(); + + // if scroling with wheel + if (iDir == +4 || iDir == -4) { + // no focus changing + return; + } + + // delete all focuses + FOREACHINLIST(CMenuGadget, mg_lnNode, pgmCurrentMenu->gm_lhGadgets, itmg) { + itmg->OnKillFocus(); + } + + // set new focus + const INDEX iFirst = 0; + const INDEX iLast = gm_ctListVisible - 1; + switch (iDir) { + case +1: + gm_pmgListBottom->OnSetFocus(); + break; + case +2: + if (gm_iListOffset != iOldTopKey) { + gm_pmgListTop->OnSetFocus(); + } + else { + gm_pmgListBottom->OnSetFocus(); + } + break; + case +3: + gm_pmgArrowDn->OnSetFocus(); + break; + case -1: + gm_pmgListTop->OnSetFocus(); + break; + case -2: + gm_pmgListTop->OnSetFocus(); + break; + case -3: + gm_pmgArrowUp->OnSetFocus(); + break; + } +} + +BOOL CGameMenu::OnChar(MSG msg) +{ + // find curently active gadget + CMenuGadget *pmgActive = NULL; + // for each menu gadget in menu + FOREACHINLIST(CMenuGadget, mg_lnNode, pgmCurrentMenu->gm_lhGadgets, itmg) { + // if focused + if (itmg->mg_bFocused) { + // remember as active + pmgActive = &itmg.Current(); + } + } + + // if none focused + if (pmgActive == NULL) { + // do nothing + return FALSE; + } + + // if active gadget handles it + if (pmgActive->OnChar(msg)) { + // key is handled + return TRUE; + } + + // key is not handled + return FALSE; +} + +// return TRUE if handled +BOOL CGameMenu::OnKeyDown(int iVKey) +{ + // find curently active gadget + CMenuGadget *pmgActive = NULL; + // for each menu gadget in menu + FOREACHINLIST(CMenuGadget, mg_lnNode, pgmCurrentMenu->gm_lhGadgets, itmg) { + // if focused + if (itmg->mg_bFocused) { + // remember as active + pmgActive = &itmg.Current(); + } + } + + // if none focused + if (pmgActive == NULL) { + // do nothing + return FALSE; + } + + // if active gadget handles it + if (pmgActive->OnKeyDown(iVKey)) { + // key is handled + return TRUE; + } + + // process normal in menu movement + switch (iVKey) { + case VK_PRIOR: + ScrollList(-2); + return TRUE; + case VK_NEXT: + ScrollList(+2); + return TRUE; + + case 11: + ScrollList(-4); + return TRUE; + case 10: + ScrollList(+4); + return TRUE; + + case VK_UP: + // if this is top button in list + if (pmgActive == gm_pmgListTop) { + // scroll list up + ScrollList(-1); + // key is handled + return TRUE; + } + // if we can go up + if (pmgActive->mg_pmgUp != NULL && pmgActive->mg_pmgUp->mg_bVisible) { + // call lose focus to still active gadget and + pmgActive->OnKillFocus(); + // set focus to new one + pmgActive = pmgActive->mg_pmgUp; + pmgActive->OnSetFocus(); + // key is handled + return TRUE; + } + break; + case VK_DOWN: + // if this is bottom button in list + if (pmgActive == gm_pmgListBottom) { + // scroll list down + ScrollList(+1); + // key is handled + return TRUE; + } + // if we can go down + if (pmgActive->mg_pmgDown != NULL && pmgActive->mg_pmgDown->mg_bVisible) { + // call lose focus to still active gadget and + pmgActive->OnKillFocus(); + // set focus to new one + pmgActive = pmgActive->mg_pmgDown; + pmgActive->OnSetFocus(); + // key is handled + return TRUE; + } + break; + case VK_LEFT: + // if we can go left + if (pmgActive->mg_pmgLeft != NULL) { + // call lose focus to still active gadget and + pmgActive->OnKillFocus(); + // set focus to new one + if (!pmgActive->mg_pmgLeft->mg_bVisible && gm_pmgSelectedByDefault != NULL) { + pmgActive = gm_pmgSelectedByDefault; + } + else { + pmgActive = pmgActive->mg_pmgLeft; + } + pmgActive->OnSetFocus(); + // key is handled + return TRUE; + } + break; + case VK_RIGHT: + // if we can go right + if (pmgActive->mg_pmgRight != NULL) { + // call lose focus to still active gadget and + pmgActive->OnKillFocus(); + // set focus to new one + if (!pmgActive->mg_pmgRight->mg_bVisible && gm_pmgSelectedByDefault != NULL) { + pmgActive = gm_pmgSelectedByDefault; + } + else { + pmgActive = pmgActive->mg_pmgRight; + } + pmgActive->OnSetFocus(); + // key is handled + return TRUE; + } + break; + } + + // key is not handled + return FALSE; +} + +void CGameMenu::StartMenu(void) +{ + // for each menu gadget in menu + FOREACHINLIST(CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) + { + itmg->mg_bFocused = FALSE; + // call appear + itmg->Appear(); + } + + // if there is a list + if (gm_pmgListTop != NULL) { + // scroll it so that the wanted tem is centered + gm_iListOffset = gm_iListWantedItem - gm_ctListVisible / 2; + // clamp the scrolling + gm_iListOffset = Clamp(gm_iListOffset, 0L, Max(0L, gm_ctListTotal - gm_ctListVisible)); + + // fill the list + FillListItems(); + + // for each menu gadget in menu + FOREACHINLIST(CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) { + // if in list, but disabled + if (itmg->mg_iInList == -2) { + // hide it + itmg->mg_bVisible = FALSE; + // if in list + } + else if (itmg->mg_iInList >= 0) { + // show it + itmg->mg_bVisible = TRUE; + } + // if wanted + if (itmg->mg_iInList == gm_iListWantedItem) { + // focus it + itmg->OnSetFocus(); + gm_pmgSelectedByDefault = itmg; + } + } + } +} + +void CGameMenu::EndMenu(void) +{ + // for each menu gadget in menu + FOREACHINLIST(CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) + { + // call disappear + itmg->Disappear(); + } +} \ No newline at end of file diff --git a/Sources/SeriousSam/MAudioOptions.h b/Sources/SeriousSam/MAudioOptions.h index 8b76fa2..7f2cdf1 100644 --- a/Sources/SeriousSam/MAudioOptions.h +++ b/Sources/SeriousSam/MAudioOptions.h @@ -7,10 +7,10 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGSlider.h" -#include "MGTrigger.h" -#include "MGTitle.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGSlider.h" +#include "GUI/Components/MGTrigger.h" +#include "GUI/Components/MGTitle.h" class CAudioOptionsMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MConfirm.h b/Sources/SeriousSam/MConfirm.h index 49a9131..689fc14 100644 --- a/Sources/SeriousSam/MConfirm.h +++ b/Sources/SeriousSam/MConfirm.h @@ -7,7 +7,7 @@ #endif #include "GameMenu.h" -#include "MGButton.h" +#include "GUI/Components/MGButton.h" class CConfirmMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MControls.h b/Sources/SeriousSam/MControls.h index dafbc7c..7f07ee0 100644 --- a/Sources/SeriousSam/MControls.h +++ b/Sources/SeriousSam/MControls.h @@ -7,10 +7,11 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGSlider.h" -#include "MGTitle.h" -#include "MGTrigger.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGSlider.h" +#include "GUI/Components/MGTitle.h" +#include "GUI/Components/MGTrigger.h" + class CControlsMenu : public CGameMenu { public: diff --git a/Sources/SeriousSam/MCustomizeAxis.h b/Sources/SeriousSam/MCustomizeAxis.h index 741d1e3..f050279 100644 --- a/Sources/SeriousSam/MCustomizeAxis.h +++ b/Sources/SeriousSam/MCustomizeAxis.h @@ -7,9 +7,9 @@ #endif #include "GameMenu.h" -#include "MGSlider.h" -#include "MGTitle.h" -#include "MGTrigger.h" +#include "GUI/Components/MGSlider.h" +#include "GUI/Components/MGTitle.h" +#include "GUI/Components/MGTrigger.h" class CCustomizeAxisMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MCustomizeKeyboard.h b/Sources/SeriousSam/MCustomizeKeyboard.h index c7461b7..0f7746a 100644 --- a/Sources/SeriousSam/MCustomizeKeyboard.h +++ b/Sources/SeriousSam/MCustomizeKeyboard.h @@ -7,9 +7,9 @@ #endif #include "GameMenu.h" -#include "MGArrow.h" -#include "MGKeyDefinition.h" -#include "MGTitle.h" +#include "GUI/Components/MGArrow.h" +#include "GUI/Components/MGKeyDefinition.h" +#include "GUI/Components/MGTitle.h" class CCustomizeKeyboardMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MDisabled.h b/Sources/SeriousSam/MDisabled.h index 90de7ec..6b648c2 100644 --- a/Sources/SeriousSam/MDisabled.h +++ b/Sources/SeriousSam/MDisabled.h @@ -7,8 +7,8 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGTitle.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGTitle.h" class CDisabledMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MHighScore.h b/Sources/SeriousSam/MHighScore.h index 22d7fd7..862edbc 100644 --- a/Sources/SeriousSam/MHighScore.h +++ b/Sources/SeriousSam/MHighScore.h @@ -7,8 +7,8 @@ #endif #include "GameMenu.h" -#include "MGHighScore.h" -#include "MGTitle.h" +#include "GUI/Components/MGHighScore.h" +#include "GUI/Components/MGTitle.h" class CHighScoreMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MInGame.h b/Sources/SeriousSam/MInGame.h index b873183..548c2f6 100644 --- a/Sources/SeriousSam/MInGame.h +++ b/Sources/SeriousSam/MInGame.h @@ -7,8 +7,9 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGTitle.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGTitle.h" + class CInGameMenu : public CGameMenu { public: diff --git a/Sources/SeriousSam/MLevels.h b/Sources/SeriousSam/MLevels.h index 61b8d0c..f6272df 100644 --- a/Sources/SeriousSam/MLevels.h +++ b/Sources/SeriousSam/MLevels.h @@ -7,9 +7,10 @@ #endif #include "GameMenu.h" -#include "MGArrow.h" -#include "MGLevelButton.h" -#include "MGTitle.h" +#include "GUI/Components/MGArrow.h" +#include "GUI/Components/MGLevelButton.h" +#include "GUI/Components/MGTitle.h" + class CLevelsMenu : public CGameMenu { public: diff --git a/Sources/SeriousSam/MLoadSave.h b/Sources/SeriousSam/MLoadSave.h index 12a90b6..228cfce 100644 --- a/Sources/SeriousSam/MLoadSave.h +++ b/Sources/SeriousSam/MLoadSave.h @@ -7,10 +7,10 @@ #endif #include "GameMenu.h" -#include "MGArrow.h" -#include "MGButton.h" -#include "MGFileButton.h" -#include "MGTitle.h" +#include "GUI/Components/MGArrow.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGFileButton.h" +#include "GUI/Components/MGTitle.h" #define SAVELOAD_BUTTONS_CT 14 diff --git a/Sources/SeriousSam/MMain.h b/Sources/SeriousSam/MMain.h index 6ff5c55..5ff07ef 100644 --- a/Sources/SeriousSam/MMain.h +++ b/Sources/SeriousSam/MMain.h @@ -7,7 +7,7 @@ #endif #include "GameMenu.h" -#include "MGButton.h" +#include "GUI/Components/MGButton.h" class CMainMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MNetwork.h b/Sources/SeriousSam/MNetwork.h index c26cc60..5769349 100644 --- a/Sources/SeriousSam/MNetwork.h +++ b/Sources/SeriousSam/MNetwork.h @@ -7,8 +7,9 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGTitle.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGTitle.h" + class CNetworkMenu : public CGameMenu { public: diff --git a/Sources/SeriousSam/MNetworkJoin.h b/Sources/SeriousSam/MNetworkJoin.h index 0410a5e..144c28a 100644 --- a/Sources/SeriousSam/MNetworkJoin.h +++ b/Sources/SeriousSam/MNetworkJoin.h @@ -7,8 +7,8 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGTitle.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGTitle.h" class CNetworkJoinMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MNetworkOpen.h b/Sources/SeriousSam/MNetworkOpen.h index 5c8c51d..11a5759 100644 --- a/Sources/SeriousSam/MNetworkOpen.h +++ b/Sources/SeriousSam/MNetworkOpen.h @@ -7,9 +7,10 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGEdit.h" -#include "MGTitle.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGEdit.h" +#include "GUI/Components/MGTitle.h" + class CNetworkOpenMenu : public CGameMenu { public: diff --git a/Sources/SeriousSam/MNetworkStart.h b/Sources/SeriousSam/MNetworkStart.h index 79bbdc5..e58b27b 100644 --- a/Sources/SeriousSam/MNetworkStart.h +++ b/Sources/SeriousSam/MNetworkStart.h @@ -7,10 +7,10 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGEdit.h" -#include "MGTitle.h" -#include "MGTrigger.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGEdit.h" +#include "GUI/Components/MGTitle.h" +#include "GUI/Components/MGTrigger.h" class CNetworkStartMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MOptions.h b/Sources/SeriousSam/MOptions.h index 6510595..c0283db 100644 --- a/Sources/SeriousSam/MOptions.h +++ b/Sources/SeriousSam/MOptions.h @@ -7,8 +7,8 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGTitle.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGTitle.h" class COptionsMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MPlayerProfile.h b/Sources/SeriousSam/MPlayerProfile.h index 274dd77..53e5139 100644 --- a/Sources/SeriousSam/MPlayerProfile.h +++ b/Sources/SeriousSam/MPlayerProfile.h @@ -7,11 +7,11 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGEdit.h" -#include "MGModel.h" -#include "MGTrigger.h" -#include "MGTitle.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGEdit.h" +#include "GUI/Components/MGModel.h" +#include "GUI/Components/MGTitle.h" +#include "GUI/Components/MGTrigger.h" class CPlayerProfileMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MSelectPlayers.h b/Sources/SeriousSam/MSelectPlayers.h index 4f747d8..e08a31d 100644 --- a/Sources/SeriousSam/MSelectPlayers.h +++ b/Sources/SeriousSam/MSelectPlayers.h @@ -7,10 +7,10 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGChangePlayer.h" -#include "MGTitle.h" -#include "MGTrigger.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGChangePlayer.h" +#include "GUI/Components/MGTitle.h" +#include "GUI/Components/MGTrigger.h" class CSelectPlayersMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MServers.h b/Sources/SeriousSam/MServers.h index bc8f5bd..be7dadc 100644 --- a/Sources/SeriousSam/MServers.h +++ b/Sources/SeriousSam/MServers.h @@ -7,10 +7,10 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGEdit.h" -#include "MGServerList.h" -#include "MGTitle.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGEdit.h" +#include "GUI/Components/MGServerList.h" +#include "GUI/Components/MGTitle.h" class CServersMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MSinglePlayer.h b/Sources/SeriousSam/MSinglePlayer.h index f08d07b..e472d69 100644 --- a/Sources/SeriousSam/MSinglePlayer.h +++ b/Sources/SeriousSam/MSinglePlayer.h @@ -7,8 +7,8 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGTitle.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGTitle.h" class CSinglePlayerMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MSinglePlayerNew.h b/Sources/SeriousSam/MSinglePlayerNew.h index e0689da..37914e0 100644 --- a/Sources/SeriousSam/MSinglePlayerNew.h +++ b/Sources/SeriousSam/MSinglePlayerNew.h @@ -7,8 +7,8 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGTitle.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGTitle.h" class CSinglePlayerNewMenu : public CGameMenu { diff --git a/Sources/SeriousSam/MSplitScreen.h b/Sources/SeriousSam/MSplitScreen.h index 721faea..dca86ec 100644 --- a/Sources/SeriousSam/MSplitScreen.h +++ b/Sources/SeriousSam/MSplitScreen.h @@ -7,8 +7,9 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGTitle.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGTitle.h" + class CSplitScreenMenu : public CGameMenu { public: diff --git a/Sources/SeriousSam/MSplitStart.h b/Sources/SeriousSam/MSplitStart.h index 1ed2838..5ccaaa9 100644 --- a/Sources/SeriousSam/MSplitStart.h +++ b/Sources/SeriousSam/MSplitStart.h @@ -7,9 +7,10 @@ #endif #include "GameMenu.h" -#include "MGButton.h" -#include "MGTitle.h" -#include "MGTrigger.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGTitle.h" +#include "GUI/Components/MGTrigger.h" + class CSplitStartMenu : public CGameMenu { public: diff --git a/Sources/SeriousSam/MVar.h b/Sources/SeriousSam/MVar.h index 4f406b2..02186e0 100644 --- a/Sources/SeriousSam/MVar.h +++ b/Sources/SeriousSam/MVar.h @@ -7,10 +7,10 @@ #endif #include "GameMenu.h" -#include "MGArrow.h" -#include "MGButton.h" -#include "MGTitle.h" -#include "MGVarButton.h" +#include "GUI/Components/MGArrow.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGTitle.h" +#include "GUI/Components/MGVarButton.h" class CVarMenu : public CGameMenu { diff --git a/Sources/SeriousSam/Menu.cpp b/Sources/SeriousSam/Menu.cpp index 391e18c..f1c862d 100644 --- a/Sources/SeriousSam/Menu.cpp +++ b/Sources/SeriousSam/Menu.cpp @@ -14,20 +14,20 @@ #include "VarList.h" #include "FileInfo.h" -#include "MGArrow.h" -#include "MGButton.h" -#include "MGChangePlayer.h" -#include "MGEdit.h" -#include "MGFileButton.h" -#include "MGHighScore.h" -#include "MGKeyDefinition.h" -#include "MGLevelButton.h" -#include "MGModel.h" -#include "MGServerList.h" -#include "MGSlider.h" -#include "MGTitle.h" -#include "MGTrigger.h" -#include "MGVarButton.h" +#include "GUI/Components/MGArrow.h" +#include "GUI/Components/MGButton.h" +#include "GUI/Components/MGChangePlayer.h" +#include "GUI/Components/MGEdit.h" +#include "GUI/Components/MGFileButton.h" +#include "GUI/Components/MGHighScore.h" +#include "GUI/Components/MGKeyDefinition.h" +#include "GUI/Components/MGLevelButton.h" +#include "GUI/Components/MGModel.h" +#include "GUI/Components/MGServerList.h" +#include "GUI/Components/MGSlider.h" +#include "GUI/Components/MGTitle.h" +#include "GUI/Components/MGTrigger.h" +#include "GUI/Components/MGVarButton.h" #include "MAudioOptions.h" #include "MConfirm.h" @@ -69,7 +69,6 @@ extern CTextureObject *_ptoLogoEAX; INDEX _iLocalPlayer = -1; extern BOOL _bPlayerMenuFromSinglePlayer = FALSE; - GameMode _gmMenuGameMode = GM_NONE; GameMode _gmRunningGameMode = GM_NONE; CListHead _lhServers; @@ -146,7 +145,6 @@ void ConfirmNo(void) MenuGoToParent(); } - extern void ControlsMenuOn() { _pGame->SavePlayersAndControls(); @@ -192,7 +190,6 @@ CFontData _fdMedium; CFontData _fdSmall; CFontData _fdTitle; - CSoundData *_psdSelect = NULL; CSoundData *_psdPress = NULL; CSoundObject *_psoMenuSound = NULL; @@ -219,57 +216,35 @@ CGameMenu *pgmCurrentMenu = NULL; // global back button CMGButton mgBack; -// -------- Confirm menu +// Menus CConfirmMenu gmConfirmMenu; - -// -------- Main menu CMainMenu gmMainMenu; - -// -------- InGame menu CInGameMenu gmInGameMenu; - -// -------- Single player menu CSinglePlayerMenu gmSinglePlayerMenu; - -// -------- New single player menu CSinglePlayerNewMenu gmSinglePlayerNewMenu; - -// -------- Disabled menu CDisabledMenu gmDisabledFunction; - -// -------- Manual levels menu CLevelsMenu gmLevelsMenu; +CVarMenu gmVarMenu; +CPlayerProfileMenu gmPlayerProfile; +CControlsMenu gmControls; +CLoadSaveMenu gmLoadSaveMenu; +CHighScoreMenu gmHighScoreMenu; +CCustomizeKeyboardMenu gmCustomizeKeyboardMenu; +CServersMenu gmServersMenu; +CCustomizeAxisMenu gmCustomizeAxisMenu; +COptionsMenu gmOptionsMenu; +CVideoOptionsMenu gmVideoOptionsMenu; +CAudioOptionsMenu gmAudioOptionsMenu; +CNetworkMenu gmNetworkMenu; +CNetworkJoinMenu gmNetworkJoinMenu; +CNetworkStartMenu gmNetworkStartMenu; +CNetworkOpenMenu gmNetworkOpenMenu; +CSplitScreenMenu gmSplitScreenMenu; +CSplitStartMenu gmSplitStartMenu; +CSelectPlayersMenu gmSelectPlayersMenu; // -------- console variable adjustment menu extern BOOL _bVarChanged = FALSE; -CVarMenu gmVarMenu; - -// -------- Player profile menu -CPlayerProfileMenu gmPlayerProfile; - -// -------- Controls menu -CControlsMenu gmControls; - -// -------- Load/Save menu -CLoadSaveMenu gmLoadSaveMenu; - -// -------- High-score menu -CHighScoreMenu gmHighScoreMenu; - -// -------- Customize keyboard menu -CCustomizeKeyboardMenu gmCustomizeKeyboardMenu; - -// -------- Choose servers menu -CServersMenu gmServersMenu; - -// -------- Customize axis menu -CCustomizeAxisMenu gmCustomizeAxisMenu; - -// -------- Options menu -COptionsMenu gmOptionsMenu; - -// -------- Video options menu -CVideoOptionsMenu gmVideoOptionsMenu; INDEX _ctResolutions = 0; CTString * _astrResolutionTexts = NULL; @@ -278,30 +253,6 @@ INDEX _ctAdapters = 0; CTString * _astrAdapterTexts = NULL; -// -------- Audio options menu -CAudioOptionsMenu gmAudioOptionsMenu; - -// -------- Network menu -CNetworkMenu gmNetworkMenu; - -// -------- Network join menu -CNetworkJoinMenu gmNetworkJoinMenu; - -// -------- Network start menu -CNetworkStartMenu gmNetworkStartMenu; - -// -------- Network open menu -CNetworkOpenMenu gmNetworkOpenMenu; - -// -------- Split screen menu -CSplitScreenMenu gmSplitScreenMenu; - -// -------- Split screen start menu -CSplitStartMenu gmSplitStartMenu; - -// -------- Select players menu -CSelectPlayersMenu gmSelectPlayersMenu; - extern void PlayMenuSound(CSoundData *psd) { if (_psoMenuSound!=NULL && !_psoMenuSound->IsPlaying()) { @@ -388,7 +339,6 @@ void ClearThumbnail(void) } // start load/save menus depending on type of game running - void QuickSaveFromMenu() { _pShell->SetINDEX("gam_bQuickSave", 2); // force save with reporting @@ -408,6 +358,7 @@ void StartCurrentLoadMenu() StartSinglePlayerLoadMenu(); } } + void StartCurrentSaveMenu() { if (_gmRunningGameMode==GM_NETWORK) { @@ -421,6 +372,7 @@ void StartCurrentSaveMenu() StartSinglePlayerSaveMenu(); } } + void StartCurrentQuickLoadMenu() { if (_gmRunningGameMode==GM_NETWORK) { @@ -602,7 +554,6 @@ void SaveConfirm(void) ChangeToMenu( &gmConfirmMenu); } - void ModLoadYes(void) { extern CTFileName _fnmModToLoad; @@ -655,11 +606,13 @@ void StopCurrentGame(void) StopMenus(TRUE); StartMenus(""); } + void StartSinglePlayerNewMenuCustom(void) { gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmLevelsMenu; ChangeToMenu( &gmSinglePlayerNewMenu); } + void StartSinglePlayerNewMenu(void) { gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; @@ -702,30 +655,35 @@ void StartSinglePlayerGame_Tourist(void) _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); StartSinglePlayerGame(); } + void StartSinglePlayerGame_Easy(void) { _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EASY); _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); StartSinglePlayerGame(); } + void StartSinglePlayerGame_Normal(void) { _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_NORMAL); _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); StartSinglePlayerGame(); } + void StartSinglePlayerGame_Hard(void) { _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_HARD); _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); StartSinglePlayerGame(); } + void StartSinglePlayerGame_Serious(void) { _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EXTREME); _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); StartSinglePlayerGame(); } + void StartSinglePlayerGame_Mental(void) { _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EXTREME+1); @@ -740,6 +698,7 @@ void StartTraining(void) _pGame->gam_strCustomLevel = sam_strTrainingLevel; ChangeToMenu( &gmSinglePlayerNewMenu); } + void StartTechTest(void) { gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; @@ -770,6 +729,7 @@ void StartControlsMenuFromPlayer(void) gmControls.gm_pgmParentMenu = &gmPlayerProfile; ChangeToMenu( &gmControls); } + void StartControlsMenuFromOptions(void) { gmControls.gm_pgmParentMenu = &gmOptionsMenu; @@ -858,6 +818,7 @@ void StartNetworkGame(void) _gmRunningGameMode = GM_NONE; } } + void JoinNetworkGame(void) { // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; @@ -891,11 +852,13 @@ void JoinNetworkGame(void) _gmRunningGameMode = GM_NONE; } } + void StartHighScoreMenu(void) { gmHighScoreMenu.gm_pgmParentMenu = pgmCurrentMenu; ChangeToMenu( &gmHighScoreMenu); } + CTFileName _fnGameToLoad; void StartNetworkLoadGame(void) { @@ -1085,6 +1048,7 @@ BOOL LSLoadSinglePlayer(const CTFileName &fnm) } return TRUE; } + BOOL LSLoadNetwork(const CTFileName &fnm) { // call local players menu @@ -1092,6 +1056,7 @@ BOOL LSLoadNetwork(const CTFileName &fnm) StartSelectPlayersMenuFromNetworkLoad(); return TRUE; } + BOOL LSLoadSplitScreen(const CTFileName &fnm) { // call local players menu @@ -1099,6 +1064,7 @@ BOOL LSLoadSplitScreen(const CTFileName &fnm) StartSelectPlayersMenuFromSplitScreenLoad(); return TRUE; } + extern BOOL LSLoadDemo(const CTFileName &fnm) { // call local players menu @@ -1384,6 +1350,7 @@ void StartSinglePlayerSaveMenu(void) gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; ChangeToMenu( &gmLoadSaveMenu); } + void StartDemoLoadMenu(void) { _gmMenuGameMode = GM_DEMO; @@ -1402,6 +1369,7 @@ void StartDemoLoadMenu(void) gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; ChangeToMenu( &gmLoadSaveMenu); } + void StartDemoSaveMenu(void) { if( _gmRunningGameMode == GM_NONE) return; @@ -1521,6 +1489,7 @@ void StartSplitScreenLoadMenu(void) gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; ChangeToMenu( &gmLoadSaveMenu); } + void StartSplitScreenSaveMenu(void) { if( _gmRunningGameMode != GM_SPLIT_SCREEN) return; @@ -1550,6 +1519,7 @@ void StartVarGameOptions(void) gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\GameOptions.cfg"); ChangeToMenu( &gmVarMenu); } + void StartSinglePlayerGameOptions(void) { gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); @@ -1558,7 +1528,6 @@ void StartSinglePlayerGameOptions(void) gmVarMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; } - void StartGameOptionsFromNetwork(void) { StartVarGameOptions(); @@ -1584,21 +1553,25 @@ void StartCustomizeKeyboardMenu(void) { ChangeToMenu( &gmCustomizeKeyboardMenu); } + void StartCustomizeAxisMenu(void) { ChangeToMenu( &gmCustomizeAxisMenu); } + void StopRecordingDemo(void) { _pNetwork->StopDemoRec(); void SetDemoStartStopRecText(void); SetDemoStartStopRecText(); } + void StartOptionsMenu(void) { gmOptionsMenu.gm_pgmParentMenu = pgmCurrentMenu; ChangeToMenu( &gmOptionsMenu); } + static void ResolutionToSize(INDEX iRes, PIX &pixSizeI, PIX &pixSizeJ) { ASSERT(iRes>=0 && iRes<_ctResolutions); @@ -1606,6 +1579,7 @@ static void ResolutionToSize(INDEX iRes, PIX &pixSizeI, PIX &pixSizeJ) pixSizeI = dm.dm_pixSizeI; pixSizeJ = dm.dm_pixSizeJ; } + static void SizeToResolution(PIX pixSizeI, PIX pixSizeJ, INDEX &iRes) { for(iRes=0; iRes<_ctResolutions; iRes++) { @@ -1638,6 +1612,7 @@ static INDEX APIToSwitch(enum GfxAPIType gat) default: ASSERT(FALSE); return 0; } } + static enum GfxAPIType SwitchToAPI(INDEX i) { switch(i) { @@ -1658,6 +1633,7 @@ static INDEX DepthToSwitch(enum DisplayDepth dd) default: ASSERT(FALSE); return 0; } } + static enum DisplayDepth SwitchToDepth(INDEX i) { switch(i) { @@ -1798,10 +1774,12 @@ void StartNetworkMenu(void) { ChangeToMenu( &gmNetworkMenu); } + void StartNetworkJoinMenu(void) { ChangeToMenu( &gmNetworkJoinMenu); } + void StartNetworkStartMenu(void) { ChangeToMenu( &gmNetworkStartMenu); @@ -1816,40 +1794,12 @@ void StartSplitScreenMenu(void) { ChangeToMenu( &gmSplitScreenMenu); } + void StartSplitStartMenu(void) { ChangeToMenu( &gmSplitStartMenu); } -// initialize game type strings table -void InitGameTypes(void) -{ - // get function that will provide us the info about gametype - CShellSymbol *pss = _pShell->GetSymbol("GetGameTypeNameSS", /*bDeclaredOnly=*/ TRUE); - // if none - if (pss==NULL) { - // error - astrGameTypeRadioTexts[0] = ""; - ctGameTypeRadioTexts = 1; - return; - } - - // for each mode - for(ctGameTypeRadioTexts=0; ctGameTypeRadioTextsss_pvValue; - CTString strMode = pFunc(ctGameTypeRadioTexts); - // if no mode modes - if (strMode=="") { - // stop - break; - } - // add that mode - astrGameTypeRadioTexts[ctGameTypeRadioTexts] = strMode; - } -} - - // ------------------------ Global menu function implementation void InitializeMenus(void) { @@ -2594,333 +2544,6 @@ void ChangeToMenu( CGameMenu *pgmNewMenu) pgmCurrentMenu = pgmNewMenu; } -// ------------------------ SGameMenu implementation -CGameMenu::CGameMenu( void) -{ - gm_pgmParentMenu = NULL; - gm_pmgSelectedByDefault = NULL; - gm_pmgArrowUp = NULL; - gm_pmgArrowDn = NULL; - gm_pmgListTop = NULL; - gm_pmgListBottom = NULL; - gm_iListOffset = 0; - gm_ctListVisible = 0; - gm_ctListTotal = 0; - gm_bPopup = FALSE; -} - -void CGameMenu::Initialize_t( void) -{ -} - -void CGameMenu::Destroy(void) -{ -} -void CGameMenu::FillListItems(void) -{ - ASSERT(FALSE); // must be implemented to scroll up/down -} - -// +-1 -> hit top/bottom when pressing up/down on keyboard -// +-2 -> pressed pageup/pagedown on keyboard -// +-3 -> pressed arrow up/down button in menu -// +-4 -> scrolling with mouse wheel -void CGameMenu::ScrollList(INDEX iDir) -{ - // if not valid for scrolling - if (gm_ctListTotal<=0 - || gm_pmgArrowUp == NULL || gm_pmgArrowDn == NULL - || gm_pmgListTop == NULL || gm_pmgListBottom == NULL) { - // do nothing - return; - } - - INDEX iOldTopKey = gm_iListOffset; - // change offset - switch(iDir) { - case -1: - gm_iListOffset -= 1; - break; - case -4: - gm_iListOffset -= 3; - break; - case -2: - case -3: - gm_iListOffset -= gm_ctListVisible; - break; - case +1: - gm_iListOffset += 1; - break; - case +4: - gm_iListOffset += 3; - break; - case +2: - case +3: - gm_iListOffset += gm_ctListVisible; - break; - default: - ASSERT(FALSE); - return; - } - if (gm_ctListTotal<=gm_ctListVisible) { - gm_iListOffset = 0; - } else { - gm_iListOffset = Clamp(gm_iListOffset, INDEX(0), INDEX(gm_ctListTotal-gm_ctListVisible)); - } - - // set new names - FillListItems(); - - // if scroling with wheel - if (iDir==+4 || iDir==-4) { - // no focus changing - return; - } - - // delete all focuses - FOREACHINLIST( CMenuGadget, mg_lnNode, pgmCurrentMenu->gm_lhGadgets, itmg) { - itmg->OnKillFocus(); - } - - // set new focus - const INDEX iFirst = 0; - const INDEX iLast = gm_ctListVisible-1; - switch(iDir) { - case +1: - gm_pmgListBottom->OnSetFocus(); - break; - case +2: - if (gm_iListOffset!=iOldTopKey) { - gm_pmgListTop->OnSetFocus(); - } else { - gm_pmgListBottom->OnSetFocus(); - } - break; - case +3: - gm_pmgArrowDn->OnSetFocus(); - break; - case -1: - gm_pmgListTop->OnSetFocus(); - break; - case -2: - gm_pmgListTop->OnSetFocus(); - break; - case -3: - gm_pmgArrowUp->OnSetFocus(); - break; - } -} - -void CGameMenu::KillAllFocuses(void) -{ - // for each menu gadget in menu - FOREACHINLIST( CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) { - itmg->mg_bFocused = FALSE; - } -} - -void CGameMenu::StartMenu(void) -{ - // for each menu gadget in menu - FOREACHINLIST( CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) - { - itmg->mg_bFocused = FALSE; - // call appear - itmg->Appear(); - } - - // if there is a list - if (gm_pmgListTop!=NULL) { - // scroll it so that the wanted tem is centered - gm_iListOffset = gm_iListWantedItem-gm_ctListVisible/2; - // clamp the scrolling - gm_iListOffset = Clamp(gm_iListOffset, 0L, Max(0L, gm_ctListTotal-gm_ctListVisible)); - - // fill the list - FillListItems(); - - // for each menu gadget in menu - FOREACHINLIST( CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) { - // if in list, but disabled - if (itmg->mg_iInList==-2) { - // hide it - itmg->mg_bVisible = FALSE; - // if in list - } else if (itmg->mg_iInList>=0) { - // show it - itmg->mg_bVisible = TRUE; - } - // if wanted - if (itmg->mg_iInList==gm_iListWantedItem) { - // focus it - itmg->OnSetFocus(); - gm_pmgSelectedByDefault = itmg; - } - } - } -} - -void CGameMenu::EndMenu(void) -{ - // for each menu gadget in menu - FOREACHINLIST( CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) - { - // call disappear - itmg->Disappear(); - } -} - -// return TRUE if handled -BOOL CGameMenu::OnKeyDown( int iVKey) -{ - // find curently active gadget - CMenuGadget *pmgActive = NULL; - // for each menu gadget in menu - FOREACHINLIST( CMenuGadget, mg_lnNode, pgmCurrentMenu->gm_lhGadgets, itmg) { - // if focused - if( itmg->mg_bFocused) { - // remember as active - pmgActive = &itmg.Current(); - } - } - - // if none focused - if( pmgActive == NULL) { - // do nothing - return FALSE; - } - - // if active gadget handles it - if( pmgActive->OnKeyDown( iVKey)) { - // key is handled - return TRUE; - } - - // process normal in menu movement - switch( iVKey) { - case VK_PRIOR: - ScrollList(-2); - return TRUE; - case VK_NEXT: - ScrollList(+2); - return TRUE; - - case 11: - ScrollList(-4); - return TRUE; - case 10: - ScrollList(+4); - return TRUE; - - case VK_UP: - // if this is top button in list - if (pmgActive==gm_pmgListTop) { - // scroll list up - ScrollList(-1); - // key is handled - return TRUE; - } - // if we can go up - if(pmgActive->mg_pmgUp != NULL && pmgActive->mg_pmgUp->mg_bVisible) { - // call lose focus to still active gadget and - pmgActive->OnKillFocus(); - // set focus to new one - pmgActive = pmgActive->mg_pmgUp; - pmgActive->OnSetFocus(); - // key is handled - return TRUE; - } - break; - case VK_DOWN: - // if this is bottom button in list - if (pmgActive==gm_pmgListBottom) { - // scroll list down - ScrollList(+1); - // key is handled - return TRUE; - } - // if we can go down - if(pmgActive->mg_pmgDown != NULL && pmgActive->mg_pmgDown->mg_bVisible) { - // call lose focus to still active gadget and - pmgActive->OnKillFocus(); - // set focus to new one - pmgActive = pmgActive->mg_pmgDown; - pmgActive->OnSetFocus(); - // key is handled - return TRUE; - } - break; - case VK_LEFT: - // if we can go left - if(pmgActive->mg_pmgLeft != NULL) { - // call lose focus to still active gadget and - pmgActive->OnKillFocus(); - // set focus to new one - if (!pmgActive->mg_pmgLeft->mg_bVisible && gm_pmgSelectedByDefault!=NULL) { - pmgActive = gm_pmgSelectedByDefault; - } else { - pmgActive = pmgActive->mg_pmgLeft; - } - pmgActive->OnSetFocus(); - // key is handled - return TRUE; - } - break; - case VK_RIGHT: - // if we can go right - if(pmgActive->mg_pmgRight != NULL) { - // call lose focus to still active gadget and - pmgActive->OnKillFocus(); - // set focus to new one - if (!pmgActive->mg_pmgRight->mg_bVisible && gm_pmgSelectedByDefault!=NULL) { - pmgActive = gm_pmgSelectedByDefault; - } else { - pmgActive = pmgActive->mg_pmgRight; - } - pmgActive->OnSetFocus(); - // key is handled - return TRUE; - } - break; - } - - // key is not handled - return FALSE; -} - -void CGameMenu::Think(void) -{ -} - -BOOL CGameMenu::OnChar(MSG msg) -{ - // find curently active gadget - CMenuGadget *pmgActive = NULL; - // for each menu gadget in menu - FOREACHINLIST( CMenuGadget, mg_lnNode, pgmCurrentMenu->gm_lhGadgets, itmg) { - // if focused - if( itmg->mg_bFocused) { - // remember as active - pmgActive = &itmg.Current(); - } - } - - // if none focused - if( pmgActive == NULL) { - // do nothing - return FALSE; - } - - // if active gadget handles it - if( pmgActive->OnChar(msg)) { - // key is handled - return TRUE; - } - - // key is not handled - return FALSE; -} - // ------------------------ CConfirmMenu implementation void InitActionsForConfirmMenu() { gmConfirmMenu.gm_mgConfirmYes.mg_pActivatedFunction = &ConfirmYes; @@ -2938,98 +2561,116 @@ BOOL CConfirmMenu::OnKeyDown(int iVKey) } // ------------------------ CMainMenu implementation +#define CMENU gmMainMenu + void InitActionsForMainMenu() { - gmMainMenu.gm_mgSingle.mg_pActivatedFunction = &StartSinglePlayerMenu; - gmMainMenu.gm_mgNetwork.mg_pActivatedFunction = StartNetworkMenu; - gmMainMenu.gm_mgSplitScreen.mg_pActivatedFunction = &StartSplitScreenMenu; - gmMainMenu.gm_mgDemo.mg_pActivatedFunction = &StartDemoLoadMenu; + CMENU.gm_mgSingle.mg_pActivatedFunction = &StartSinglePlayerMenu; + CMENU.gm_mgNetwork.mg_pActivatedFunction = StartNetworkMenu; + CMENU.gm_mgSplitScreen.mg_pActivatedFunction = &StartSplitScreenMenu; + CMENU.gm_mgDemo.mg_pActivatedFunction = &StartDemoLoadMenu; #if TECHTESTONLY - gmMainMenu.gm_mgMods.mg_pActivatedFunction = &DisabledFunction; + CMENU.gm_mgMods.mg_pActivatedFunction = &DisabledFunction; #else - gmMainMenu.gm_mgMods.mg_pActivatedFunction = &StartModsLoadMenu; + CMENU.gm_mgMods.mg_pActivatedFunction = &StartModsLoadMenu; #endif - gmMainMenu.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; - gmMainMenu.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; - gmMainMenu.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; + CMENU.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; + CMENU.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; + CMENU.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; } +#undef CMENU + // ------------------------ CInGameMenu implementation +#define CMENU gmInGameMenu + void InitActionsForInGameMenu() { - gmInGameMenu.gm_mgQuickLoad.mg_pActivatedFunction = &StartCurrentQuickLoadMenu; - gmInGameMenu.gm_mgQuickSave.mg_pActivatedFunction = &QuickSaveFromMenu; - gmInGameMenu.gm_mgLoad.mg_pActivatedFunction = &StartCurrentLoadMenu; - gmInGameMenu.gm_mgSave.mg_pActivatedFunction = &StartCurrentSaveMenu; - gmInGameMenu.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; - gmInGameMenu.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; + CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartCurrentQuickLoadMenu; + CMENU.gm_mgQuickSave.mg_pActivatedFunction = &QuickSaveFromMenu; + CMENU.gm_mgLoad.mg_pActivatedFunction = &StartCurrentLoadMenu; + CMENU.gm_mgSave.mg_pActivatedFunction = &StartCurrentSaveMenu; + CMENU.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; + CMENU.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; #if TECHTESTONLY - gmInGameMenu.gm_mgStop.mg_pActivatedFunction = &ExitConfirm; + CMENU.gm_mgStop.mg_pActivatedFunction = &ExitConfirm; #else - gmInGameMenu.gm_mgStop.mg_pActivatedFunction = &StopConfirm; + CMENU.gm_mgStop.mg_pActivatedFunction = &StopConfirm; #endif - gmInGameMenu.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; + CMENU.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; } extern void SetDemoStartStopRecText(void) { if( _pNetwork->IsRecordingDemo()) { - gmInGameMenu.gm_mgDemoRec.SetText(TRANS("STOP RECORDING")); - gmInGameMenu.gm_mgDemoRec.mg_strTip = TRANS("stop current recording"); - gmInGameMenu.gm_mgDemoRec.mg_pActivatedFunction = &StopRecordingDemo; + CMENU.gm_mgDemoRec.SetText(TRANS("STOP RECORDING")); + CMENU.gm_mgDemoRec.mg_strTip = TRANS("stop current recording"); + CMENU.gm_mgDemoRec.mg_pActivatedFunction = &StopRecordingDemo; } else { - gmInGameMenu.gm_mgDemoRec.SetText(TRANS("RECORD DEMO")); - gmInGameMenu.gm_mgDemoRec.mg_strTip = TRANS("start recording current game"); - gmInGameMenu.gm_mgDemoRec.mg_pActivatedFunction = &StartDemoSaveMenu; + CMENU.gm_mgDemoRec.SetText(TRANS("RECORD DEMO")); + CMENU.gm_mgDemoRec.mg_strTip = TRANS("start recording current game"); + CMENU.gm_mgDemoRec.mg_pActivatedFunction = &StartDemoSaveMenu; } } +#undef CMENU // ------------------------ CSinglePlayerMenu implementation +#define CMENU gmSinglePlayerMenu + void InitActionsForSinglePlayerMenu() { - gmSinglePlayerMenu.gm_mgNewGame.mg_pActivatedFunction = &StartSinglePlayerNewMenu; + CMENU.gm_mgNewGame.mg_pActivatedFunction = &StartSinglePlayerNewMenu; #if _SE_DEMO || TECHTESTONLY - gmSinglePlayerMenu.gm_mgCustom.mg_pActivatedFunction = &DisabledFunction; + CMENU.gm_mgCustom.mg_pActivatedFunction = &DisabledFunction; #else - gmSinglePlayerMenu.gm_mgCustom.mg_pActivatedFunction = &StartSelectLevelFromSingle; + CMENU.gm_mgCustom.mg_pActivatedFunction = &StartSelectLevelFromSingle; #endif - gmSinglePlayerMenu.gm_mgQuickLoad.mg_pActivatedFunction = &StartSinglePlayerQuickLoadMenu; - gmSinglePlayerMenu.gm_mgLoad.mg_pActivatedFunction = &StartSinglePlayerLoadMenu; - gmSinglePlayerMenu.gm_mgTraining.mg_pActivatedFunction = &StartTraining; - gmSinglePlayerMenu.gm_mgTechTest.mg_pActivatedFunction = &StartTechTest; - gmSinglePlayerMenu.gm_mgPlayersAndControls.mg_pActivatedFunction = &StartChangePlayerMenuFromSinglePlayer; - gmSinglePlayerMenu.gm_mgOptions.mg_pActivatedFunction = &StartSinglePlayerGameOptions; + CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartSinglePlayerQuickLoadMenu; + CMENU.gm_mgLoad.mg_pActivatedFunction = &StartSinglePlayerLoadMenu; + CMENU.gm_mgTraining.mg_pActivatedFunction = &StartTraining; + CMENU.gm_mgTechTest.mg_pActivatedFunction = &StartTechTest; + CMENU.gm_mgPlayersAndControls.mg_pActivatedFunction = &StartChangePlayerMenuFromSinglePlayer; + CMENU.gm_mgOptions.mg_pActivatedFunction = &StartSinglePlayerGameOptions; } +#undef CMENU + // ------------------------ CSinglePlayerNewMenu implementation +#define CMENU gmSinglePlayerNewMenu + void InitActionsForSinglePlayerNewMenu() { - gmSinglePlayerNewMenu.gm_mgTourist.mg_pActivatedFunction = &StartSinglePlayerGame_Tourist; - gmSinglePlayerNewMenu.gm_mgEasy.mg_pActivatedFunction = &StartSinglePlayerGame_Easy; - gmSinglePlayerNewMenu.gm_mgMedium.mg_pActivatedFunction = &StartSinglePlayerGame_Normal; - gmSinglePlayerNewMenu.gm_mgHard.mg_pActivatedFunction = &StartSinglePlayerGame_Hard; - gmSinglePlayerNewMenu.gm_mgSerious.mg_pActivatedFunction = &StartSinglePlayerGame_Serious; - gmSinglePlayerNewMenu.gm_mgMental.mg_pActivatedFunction = &StartSinglePlayerGame_Mental; + CMENU.gm_mgTourist.mg_pActivatedFunction = &StartSinglePlayerGame_Tourist; + CMENU.gm_mgEasy.mg_pActivatedFunction = &StartSinglePlayerGame_Easy; + CMENU.gm_mgMedium.mg_pActivatedFunction = &StartSinglePlayerGame_Normal; + CMENU.gm_mgHard.mg_pActivatedFunction = &StartSinglePlayerGame_Hard; + CMENU.gm_mgSerious.mg_pActivatedFunction = &StartSinglePlayerGame_Serious; + CMENU.gm_mgMental.mg_pActivatedFunction = &StartSinglePlayerGame_Mental; } -// ------------------------ CDisabledMenu implementation +#undef CMENU + +// ------------------------ CPlayerProfileMenu implementation +#define CMENU gmPlayerProfile void ChangeCrosshair(INDEX iNew) { - INDEX iPlayer = *gmPlayerProfile.gm_piCurrentPlayer; + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; pps->ps_iCrossHairType = iNew-1; } + void ChangeWeaponSelect(INDEX iNew) { - INDEX iPlayer = *gmPlayerProfile.gm_piCurrentPlayer; + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; pps->ps_iWeaponAutoSelect = iNew; } + void ChangeWeaponHide(INDEX iNew) { - INDEX iPlayer = *gmPlayerProfile.gm_piCurrentPlayer; + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; if (iNew) { pps->ps_ulFlags |= PSF_HIDEWEAPON; @@ -3037,9 +2678,10 @@ void ChangeWeaponHide(INDEX iNew) pps->ps_ulFlags &= ~PSF_HIDEWEAPON; } } + void Change3rdPerson(INDEX iNew) { - INDEX iPlayer = *gmPlayerProfile.gm_piCurrentPlayer; + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; if (iNew) { pps->ps_ulFlags |= PSF_PREFER3RDPERSON; @@ -3047,9 +2689,10 @@ void Change3rdPerson(INDEX iNew) pps->ps_ulFlags &= ~PSF_PREFER3RDPERSON; } } + void ChangeQuotes(INDEX iNew) { - INDEX iPlayer = *gmPlayerProfile.gm_piCurrentPlayer; + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; if (iNew) { pps->ps_ulFlags &= ~PSF_NOQUOTES; @@ -3057,9 +2700,10 @@ void ChangeQuotes(INDEX iNew) pps->ps_ulFlags |= PSF_NOQUOTES; } } + void ChangeAutoSave(INDEX iNew) { - INDEX iPlayer = *gmPlayerProfile.gm_piCurrentPlayer; + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; if (iNew) { pps->ps_ulFlags |= PSF_AUTOSAVE; @@ -3067,9 +2711,10 @@ void ChangeAutoSave(INDEX iNew) pps->ps_ulFlags &= ~PSF_AUTOSAVE; } } + void ChangeCompDoubleClick(INDEX iNew) { - INDEX iPlayer = *gmPlayerProfile.gm_piCurrentPlayer; + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; if (iNew) { pps->ps_ulFlags &= ~PSF_COMPSINGLECLICK; @@ -3080,7 +2725,7 @@ void ChangeCompDoubleClick(INDEX iNew) void ChangeViewBobbing(INDEX iNew) { - INDEX iPlayer = *gmPlayerProfile.gm_piCurrentPlayer; + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; if (iNew) { pps->ps_ulFlags &= ~PSF_NOBOBBING; @@ -3091,7 +2736,7 @@ void ChangeViewBobbing(INDEX iNew) void ChangeSharpTurning(INDEX iNew) { - INDEX iPlayer = *gmPlayerProfile.gm_piCurrentPlayer; + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; if (iNew) { pps->ps_ulFlags |= PSF_SHARPTURNING; @@ -3100,7 +2745,6 @@ void ChangeSharpTurning(INDEX iNew) } } -// ------------------------ CPlayerProfileMenu implementation extern void PPOnPlayerSelect(void) { ASSERT(_pmgLastActivatedGadget != NULL); @@ -3111,54 +2755,71 @@ extern void PPOnPlayerSelect(void) void InitActionsForPlayerProfileMenu() { - gmPlayerProfile.gm_mgCrosshair.mg_pOnTriggerChange = ChangeCrosshair; - gmPlayerProfile.gm_mgWeaponSelect.mg_pOnTriggerChange = ChangeWeaponSelect; - gmPlayerProfile.gm_mgWeaponHide.mg_pOnTriggerChange = ChangeWeaponHide; - gmPlayerProfile.gm_mg3rdPerson.mg_pOnTriggerChange = Change3rdPerson; - gmPlayerProfile.gm_mgQuotes.mg_pOnTriggerChange = ChangeQuotes; - gmPlayerProfile.gm_mgAutoSave.mg_pOnTriggerChange = ChangeAutoSave; - gmPlayerProfile.gm_mgCompDoubleClick.mg_pOnTriggerChange = ChangeCompDoubleClick; - gmPlayerProfile.gm_mgSharpTurning.mg_pOnTriggerChange = ChangeSharpTurning; - gmPlayerProfile.gm_mgViewBobbing.mg_pOnTriggerChange = ChangeViewBobbing; - gmPlayerProfile.gm_mgCustomizeControls.mg_pActivatedFunction = &StartControlsMenuFromPlayer; - gmPlayerProfile.gm_mgModel.mg_pActivatedFunction = &StartPlayerModelLoadMenu; + CMENU.gm_mgCrosshair.mg_pOnTriggerChange = ChangeCrosshair; + CMENU.gm_mgWeaponSelect.mg_pOnTriggerChange = ChangeWeaponSelect; + CMENU.gm_mgWeaponHide.mg_pOnTriggerChange = ChangeWeaponHide; + CMENU.gm_mg3rdPerson.mg_pOnTriggerChange = Change3rdPerson; + CMENU.gm_mgQuotes.mg_pOnTriggerChange = ChangeQuotes; + CMENU.gm_mgAutoSave.mg_pOnTriggerChange = ChangeAutoSave; + CMENU.gm_mgCompDoubleClick.mg_pOnTriggerChange = ChangeCompDoubleClick; + CMENU.gm_mgSharpTurning.mg_pOnTriggerChange = ChangeSharpTurning; + CMENU.gm_mgViewBobbing.mg_pOnTriggerChange = ChangeViewBobbing; + CMENU.gm_mgCustomizeControls.mg_pActivatedFunction = &StartControlsMenuFromPlayer; + CMENU.gm_mgModel.mg_pActivatedFunction = &StartPlayerModelLoadMenu; } +#undef CMENU + // ------------------------ CControlsMenu implementation +#define CMENU gmControls + void InitActionsForControlsMenu() { - gmControls.gm_mgButtons.mg_pActivatedFunction = &StartCustomizeKeyboardMenu; - gmControls.gm_mgAdvanced.mg_pActivatedFunction = &StartCustomizeAxisMenu; - gmControls.gm_mgPredefined.mg_pActivatedFunction = &StartControlsLoadMenu; + CMENU.gm_mgButtons.mg_pActivatedFunction = &StartCustomizeKeyboardMenu; + CMENU.gm_mgAdvanced.mg_pActivatedFunction = &StartCustomizeAxisMenu; + CMENU.gm_mgPredefined.mg_pActivatedFunction = &StartControlsLoadMenu; } +#undef CMENU + // ------------------------ CCustomizeAxisMenu implementation +#define CMENU gmCustomizeAxisMenu + void PreChangeAxis(INDEX iDummy) { - gmCustomizeAxisMenu.ApplyActionSettings(); + CMENU.ApplyActionSettings(); } + void PostChangeAxis(INDEX iDummy) { - gmCustomizeAxisMenu.ObtainActionSettings(); + CMENU.ObtainActionSettings(); } void InitActionsForCustomizeAxisMenu() { - gmCustomizeAxisMenu.gm_mgActionTrigger.mg_pPreTriggerChange = PreChangeAxis; - gmCustomizeAxisMenu.gm_mgActionTrigger.mg_pOnTriggerChange = PostChangeAxis; + CMENU.gm_mgActionTrigger.mg_pPreTriggerChange = PreChangeAxis; + CMENU.gm_mgActionTrigger.mg_pOnTriggerChange = PostChangeAxis; } +#undef CMENU + // ------------------------ COptionsMenu implementation +#define CMENU gmOptionsMenu + void InitActionsForOptionsMenu() { - 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; + CMENU.gm_mgVideoOptions.mg_pActivatedFunction = &StartVideoOptionsMenu; + CMENU.gm_mgAudioOptions.mg_pActivatedFunction = &StartAudioOptionsMenu; + CMENU.gm_mgPlayerProfileOptions.mg_pActivatedFunction = &StartChangePlayerMenuFromOptions; + CMENU.gm_mgNetworkOptions.mg_pActivatedFunction = &StartNetworkSettingsMenu; + CMENU.gm_mgCustomOptions.mg_pActivatedFunction = &StartCustomLoadMenu; + CMENU.gm_mgAddonOptions.mg_pActivatedFunction = &StartAddonsLoadMenu; } +#undef CMENU + // ------------------------ CVideoOptionsMenu implementation +#define CMENU gmVideoOptionsMenu + static void FillResolutionsList(void) { // free resolutions @@ -3171,7 +2832,7 @@ static void FillResolutionsList(void) _ctResolutions = 0; // if window - if (gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_iSelected == 0) { + if (CMENU.gm_mgFullScreenTrigger.mg_iSelected == 0) { // always has fixed resolutions, but not greater than desktop static PIX apixWidths[][2] = { 320, 240, @@ -3210,7 +2871,7 @@ static void FillResolutionsList(void) } else { // get resolutions list from engine CDisplayMode *pdm = _pGfx->EnumDisplayModes(_ctResolutions, - SwitchToAPI(gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_iSelected), gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_iSelected); + SwitchToAPI(CMENU.gm_mgDisplayAPITrigger.mg_iSelected), CMENU.gm_mgDisplayAdaptersTrigger.mg_iSelected); // allocate that much _astrResolutionTexts = new CTString [_ctResolutions]; _admResolutionModes = new CDisplayMode[_ctResolutions]; @@ -3220,8 +2881,8 @@ static void FillResolutionsList(void) SetResolutionInList( iRes, pdm[iRes].dm_pixSizeI, pdm[iRes].dm_pixSizeJ); } } - gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_astrTexts = _astrResolutionTexts; - gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_ctTexts = _ctResolutions; + CMENU.gm_mgResolutionsTrigger.mg_astrTexts = _astrResolutionTexts; + CMENU.gm_mgResolutionsTrigger.mg_ctTexts = _ctResolutions; } @@ -3232,14 +2893,14 @@ static void FillAdaptersList(void) } _ctAdapters = 0; - INDEX iApi = SwitchToAPI(gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_iSelected); + INDEX iApi = SwitchToAPI(CMENU.gm_mgDisplayAPITrigger.mg_iSelected); _ctAdapters = _pGfx->gl_gaAPI[iApi].ga_ctAdapters; _astrAdapterTexts = new CTString[_ctAdapters]; for(INDEX iAdapter = 0; iAdapter<_ctAdapters; iAdapter++) { _astrAdapterTexts[iAdapter] = _pGfx->gl_gaAPI[iApi].ga_adaAdapter[iAdapter].da_strRenderer; } - gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_astrTexts = _astrAdapterTexts; - gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_ctTexts = _ctAdapters; + CMENU.gm_mgDisplayAdaptersTrigger.mg_astrTexts = _astrAdapterTexts; + CMENU.gm_mgDisplayAdaptersTrigger.mg_ctTexts = _ctAdapters; } @@ -3254,93 +2915,97 @@ extern void UpdateVideoOptionsButtons(INDEX iSelected) #else // ASSERT( bOGLEnabled ); #endif // SE1_D3D - CDisplayAdapter &da = _pGfx->gl_gaAPI[SwitchToAPI(gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_iSelected)] - .ga_adaAdapter[gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_iSelected]; + CDisplayAdapter &da = _pGfx->gl_gaAPI[SwitchToAPI(CMENU.gm_mgDisplayAPITrigger.mg_iSelected)] + .ga_adaAdapter[CMENU.gm_mgDisplayAdaptersTrigger.mg_iSelected]; // number of available preferences is higher if video setup is custom - gmVideoOptionsMenu.gm_mgDisplayPrefsTrigger.mg_ctTexts = 3; - if (sam_iVideoSetup == 3) gmVideoOptionsMenu.gm_mgDisplayPrefsTrigger.mg_ctTexts++; + CMENU.gm_mgDisplayPrefsTrigger.mg_ctTexts = 3; + if (sam_iVideoSetup == 3) CMENU.gm_mgDisplayPrefsTrigger.mg_ctTexts++; // enumerate adapters FillAdaptersList(); // show or hide buttons - gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_bEnabled = bOGLEnabled + CMENU.gm_mgDisplayAPITrigger.mg_bEnabled = bOGLEnabled #ifdef SE1_D3D && bD3DEnabled #endif // SE1_D3D ; - gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_bEnabled = _ctAdapters>1; - gmVideoOptionsMenu.gm_mgApply.mg_bEnabled = _bVideoOptionsChanged; + CMENU.gm_mgDisplayAdaptersTrigger.mg_bEnabled = _ctAdapters>1; + CMENU.gm_mgApply.mg_bEnabled = _bVideoOptionsChanged; // determine which should be visible - gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_bEnabled = TRUE; + CMENU.gm_mgFullScreenTrigger.mg_bEnabled = TRUE; if( da.da_ulFlags&DAF_FULLSCREENONLY) { - gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_bEnabled = FALSE; - gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_iSelected = 1; - gmVideoOptionsMenu.gm_mgFullScreenTrigger.ApplyCurrentSelection(); + CMENU.gm_mgFullScreenTrigger.mg_bEnabled = FALSE; + CMENU.gm_mgFullScreenTrigger.mg_iSelected = 1; + CMENU.gm_mgFullScreenTrigger.ApplyCurrentSelection(); } - gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_bEnabled = TRUE; - if (gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_iSelected == 0) { - gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; - gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_DEFAULT); - gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); + CMENU.gm_mgBitsPerPixelTrigger.mg_bEnabled = TRUE; + if (CMENU.gm_mgFullScreenTrigger.mg_iSelected == 0) { + CMENU.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; + CMENU.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_DEFAULT); + CMENU.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); } else if( da.da_ulFlags&DAF_16BITONLY) { - gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; - gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_16BIT); - gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); + CMENU.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; + CMENU.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_16BIT); + CMENU.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); } // remember current selected resolution PIX pixSizeI, pixSizeJ; - ResolutionToSize(gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_iSelected, pixSizeI, pixSizeJ); + ResolutionToSize(CMENU.gm_mgResolutionsTrigger.mg_iSelected, pixSizeI, pixSizeJ); // select same resolution again if possible FillResolutionsList(); - SizeToResolution(pixSizeI, pixSizeJ, gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_iSelected); + SizeToResolution(pixSizeI, pixSizeJ, CMENU.gm_mgResolutionsTrigger.mg_iSelected); // apply adapter and resolutions - gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); - gmVideoOptionsMenu.gm_mgResolutionsTrigger.ApplyCurrentSelection(); + CMENU.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); + CMENU.gm_mgResolutionsTrigger.ApplyCurrentSelection(); } extern void InitVideoOptionsButtons(void) { if( sam_bFullScreenActive) { - gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_iSelected = 1; + CMENU.gm_mgFullScreenTrigger.mg_iSelected = 1; } else { - gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_iSelected = 0; + CMENU.gm_mgFullScreenTrigger.mg_iSelected = 0; } - gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_iSelected = APIToSwitch((GfxAPIType)(INDEX)sam_iGfxAPI); - gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_iSelected = sam_iDisplayAdapter; - gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch((enum DisplayDepth)(INDEX)sam_iDisplayDepth); + CMENU.gm_mgDisplayAPITrigger.mg_iSelected = APIToSwitch((GfxAPIType)(INDEX)sam_iGfxAPI); + CMENU.gm_mgDisplayAdaptersTrigger.mg_iSelected = sam_iDisplayAdapter; + CMENU.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch((enum DisplayDepth)(INDEX)sam_iDisplayDepth); FillResolutionsList(); - SizeToResolution(sam_iScreenSizeI, sam_iScreenSizeJ, gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_iSelected); - gmVideoOptionsMenu.gm_mgDisplayPrefsTrigger.mg_iSelected = Clamp(int(sam_iVideoSetup), 0, 3); + SizeToResolution(sam_iScreenSizeI, sam_iScreenSizeJ, CMENU.gm_mgResolutionsTrigger.mg_iSelected); + CMENU.gm_mgDisplayPrefsTrigger.mg_iSelected = Clamp(int(sam_iVideoSetup), 0, 3); - gmVideoOptionsMenu.gm_mgFullScreenTrigger.ApplyCurrentSelection(); - gmVideoOptionsMenu.gm_mgDisplayPrefsTrigger.ApplyCurrentSelection(); - gmVideoOptionsMenu.gm_mgDisplayAPITrigger.ApplyCurrentSelection(); - gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); - gmVideoOptionsMenu.gm_mgResolutionsTrigger.ApplyCurrentSelection(); - gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); + CMENU.gm_mgFullScreenTrigger.ApplyCurrentSelection(); + CMENU.gm_mgDisplayPrefsTrigger.ApplyCurrentSelection(); + CMENU.gm_mgDisplayAPITrigger.ApplyCurrentSelection(); + CMENU.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); + CMENU.gm_mgResolutionsTrigger.ApplyCurrentSelection(); + CMENU.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); } void InitActionsForVideoOptionsMenu() { - gmVideoOptionsMenu.gm_mgDisplayPrefsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - gmVideoOptionsMenu.gm_mgVideoRendering.mg_pActivatedFunction = &StartRenderingOptionsMenu; - gmVideoOptionsMenu.gm_mgApply.mg_pActivatedFunction = &ApplyVideoOptions; + CMENU.gm_mgDisplayPrefsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + CMENU.gm_mgDisplayAPITrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + CMENU.gm_mgDisplayAdaptersTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + CMENU.gm_mgFullScreenTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + CMENU.gm_mgResolutionsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + CMENU.gm_mgBitsPerPixelTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + CMENU.gm_mgVideoRendering.mg_pActivatedFunction = &StartRenderingOptionsMenu; + CMENU.gm_mgApply.mg_pActivatedFunction = &ApplyVideoOptions; } +#undef CMENU + // ------------------------ CAudioOptionsMenu implementation +#define CMENU gmAudioOptionsMenu + static void OnWaveVolumeChange(INDEX iCurPos) { _pShell->SetFLOAT("snd_fSoundVolume", iCurPos/FLOAT(VOLUME_STEPS)); @@ -3349,28 +3014,28 @@ static void OnWaveVolumeChange(INDEX iCurPos) void WaveSliderChange(void) { if (_bMouseRight) { - gmAudioOptionsMenu.gm_mgWaveVolume.mg_iCurPos += 5; + CMENU.gm_mgWaveVolume.mg_iCurPos += 5; } else { - gmAudioOptionsMenu.gm_mgWaveVolume.mg_iCurPos -= 5; + CMENU.gm_mgWaveVolume.mg_iCurPos -= 5; } - gmAudioOptionsMenu.gm_mgWaveVolume.ApplyCurrentPosition(); + CMENU.gm_mgWaveVolume.ApplyCurrentPosition(); } void FrequencyTriggerChange(INDEX iDummy) { sam_bAutoAdjustAudio = 0; - gmAudioOptionsMenu.gm_mgAudioAutoTrigger.mg_iSelected = 0; - gmAudioOptionsMenu.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); + CMENU.gm_mgAudioAutoTrigger.mg_iSelected = 0; + CMENU.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); } void MPEGSliderChange(void) { if (_bMouseRight) { - gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iCurPos += 5; + CMENU.gm_mgMPEGVolume.mg_iCurPos += 5; } else { - gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iCurPos -= 5; + CMENU.gm_mgMPEGVolume.mg_iCurPos -= 5; } - gmAudioOptionsMenu.gm_mgMPEGVolume.ApplyCurrentPosition(); + CMENU.gm_mgMPEGVolume.ApplyCurrentPosition(); } static void OnMPEGVolumeChange(INDEX iCurPos) @@ -3380,26 +3045,31 @@ static void OnMPEGVolumeChange(INDEX iCurPos) void InitActionsForAudioOptionsMenu() { - gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_pOnTriggerChange = FrequencyTriggerChange; - gmAudioOptionsMenu.gm_mgWaveVolume.mg_pOnSliderChange = &OnWaveVolumeChange; - gmAudioOptionsMenu.gm_mgWaveVolume.mg_pActivatedFunction = WaveSliderChange; - gmAudioOptionsMenu.gm_mgMPEGVolume.mg_pOnSliderChange = &OnMPEGVolumeChange; - gmAudioOptionsMenu.gm_mgMPEGVolume.mg_pActivatedFunction = MPEGSliderChange; - gmAudioOptionsMenu.gm_mgApply.mg_pActivatedFunction = &ApplyAudioOptions; + CMENU.gm_mgFrequencyTrigger.mg_pOnTriggerChange = FrequencyTriggerChange; + CMENU.gm_mgWaveVolume.mg_pOnSliderChange = &OnWaveVolumeChange; + CMENU.gm_mgWaveVolume.mg_pActivatedFunction = WaveSliderChange; + CMENU.gm_mgMPEGVolume.mg_pOnSliderChange = &OnMPEGVolumeChange; + CMENU.gm_mgMPEGVolume.mg_pActivatedFunction = MPEGSliderChange; + CMENU.gm_mgApply.mg_pActivatedFunction = &ApplyAudioOptions; } +#undef CMENU + // ------------------------ CVarMenu implementation +#define CMENU gmVarMenu + void VarApply(void) { FlushVarSettings(TRUE); - gmVarMenu.EndMenu(); - gmVarMenu.StartMenu(); + CMENU.EndMenu(); + CMENU.StartMenu(); } void InitActionsForVarMenu() { - gmVarMenu.gm_mgApply.mg_pActivatedFunction = &VarApply; + CMENU.gm_mgApply.mg_pActivatedFunction = &VarApply; } +#undef CMENU // ------------------------ CServersMenu implementation extern void RefreshServerList(void) { @@ -3445,21 +3115,25 @@ void InitActionsForServersMenu() { } // ------------------------ CNetworkMenu implementation +#define CMENU gmNetworkMenu void InitActionsForNetworkMenu() { - gmNetworkMenu.gm_mgJoin.mg_pActivatedFunction = &StartNetworkJoinMenu; - gmNetworkMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkStartMenu; - gmNetworkMenu.gm_mgQuickLoad.mg_pActivatedFunction = &StartNetworkQuickLoadMenu; - gmNetworkMenu.gm_mgLoad.mg_pActivatedFunction = &StartNetworkLoadMenu; + CMENU.gm_mgJoin.mg_pActivatedFunction = &StartNetworkJoinMenu; + CMENU.gm_mgStart.mg_pActivatedFunction = &StartNetworkStartMenu; + CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartNetworkQuickLoadMenu; + CMENU.gm_mgLoad.mg_pActivatedFunction = &StartNetworkLoadMenu; } +#undef CMENU // ------------------------ CNetworkJoinMenu implementation +#define CMENU gmNetworkJoinMenu void InitActionsForNetworkJoinMenu() { - gmNetworkJoinMenu.gm_mgLAN.mg_pActivatedFunction = &StartSelectServerLAN; - gmNetworkJoinMenu.gm_mgNET.mg_pActivatedFunction = &StartSelectServerNET; - gmNetworkJoinMenu.gm_mgOpen.mg_pActivatedFunction = &StartNetworkOpenMenu; + CMENU.gm_mgLAN.mg_pActivatedFunction = &StartSelectServerLAN; + CMENU.gm_mgNET.mg_pActivatedFunction = &StartSelectServerNET; + CMENU.gm_mgOpen.mg_pActivatedFunction = &StartNetworkOpenMenu; } +#undef CMENU // ------------------------ CNetworkStartMenu implementation extern void UpdateNetworkLevel(INDEX iDummy) @@ -3493,6 +3167,8 @@ void InitActionsForNetworkStartMenu() gd.mg_iLocalPlayer = iplayer; // ------------------------ CSelectPlayersMenu implementation +#define CMENU gmSelectPlayersMenu + INDEX FindUnusedPlayer(void) { INDEX *ai = _pGame->gm_aiMenuLocalPlayers; @@ -3517,40 +3193,40 @@ extern void SelectPlayersFillMenu(void) { INDEX *ai = _pGame->gm_aiMenuLocalPlayers; - gmSelectPlayersMenu.gm_mgPlayer0Change.mg_iLocalPlayer = 0; - gmSelectPlayersMenu.gm_mgPlayer1Change.mg_iLocalPlayer = 1; - gmSelectPlayersMenu.gm_mgPlayer2Change.mg_iLocalPlayer = 2; - gmSelectPlayersMenu.gm_mgPlayer3Change.mg_iLocalPlayer = 3; + CMENU.gm_mgPlayer0Change.mg_iLocalPlayer = 0; + CMENU.gm_mgPlayer1Change.mg_iLocalPlayer = 1; + CMENU.gm_mgPlayer2Change.mg_iLocalPlayer = 2; + CMENU.gm_mgPlayer3Change.mg_iLocalPlayer = 3; - if (gmSelectPlayersMenu.gm_bAllowDedicated && _pGame->gm_MenuSplitScreenCfg==CGame::SSC_DEDICATED) { - gmSelectPlayersMenu.gm_mgDedicated.mg_iSelected = 1; + if (CMENU.gm_bAllowDedicated && _pGame->gm_MenuSplitScreenCfg == CGame::SSC_DEDICATED) { + CMENU.gm_mgDedicated.mg_iSelected = 1; } else { - gmSelectPlayersMenu.gm_mgDedicated.mg_iSelected = 0; + CMENU.gm_mgDedicated.mg_iSelected = 0; } gmSelectPlayersMenu.gm_mgDedicated.ApplyCurrentSelection(); - if (gmSelectPlayersMenu.gm_bAllowObserving && _pGame->gm_MenuSplitScreenCfg==CGame::SSC_OBSERVER) { - gmSelectPlayersMenu.gm_mgObserver.mg_iSelected = 1; + if (CMENU.gm_bAllowObserving && _pGame->gm_MenuSplitScreenCfg == CGame::SSC_OBSERVER) { + CMENU.gm_mgObserver.mg_iSelected = 1; } else { - gmSelectPlayersMenu.gm_mgObserver.mg_iSelected = 0; + CMENU.gm_mgObserver.mg_iSelected = 0; } - gmSelectPlayersMenu.gm_mgObserver.ApplyCurrentSelection(); + CMENU.gm_mgObserver.ApplyCurrentSelection(); if (_pGame->gm_MenuSplitScreenCfg>=CGame::SSC_PLAY1) { - gmSelectPlayersMenu.gm_mgSplitScreenCfg.mg_iSelected = _pGame->gm_MenuSplitScreenCfg; - gmSelectPlayersMenu.gm_mgSplitScreenCfg.ApplyCurrentSelection(); + CMENU.gm_mgSplitScreenCfg.mg_iSelected = _pGame->gm_MenuSplitScreenCfg; + CMENU.gm_mgSplitScreenCfg.ApplyCurrentSelection(); } - BOOL bHasDedicated = gmSelectPlayersMenu.gm_bAllowDedicated; - BOOL bHasObserver = gmSelectPlayersMenu.gm_bAllowObserving; + BOOL bHasDedicated = CMENU.gm_bAllowDedicated; + BOOL bHasObserver = CMENU.gm_bAllowObserving; BOOL bHasPlayers = TRUE; - if (bHasDedicated && gmSelectPlayersMenu.gm_mgDedicated.mg_iSelected) { + if (bHasDedicated && CMENU.gm_mgDedicated.mg_iSelected) { bHasObserver = FALSE; bHasPlayers = FALSE; } - if (bHasObserver && gmSelectPlayersMenu.gm_mgObserver.mg_iSelected) { + if (bHasObserver && CMENU.gm_mgObserver.mg_iSelected) { bHasPlayers = FALSE; } @@ -3559,16 +3235,16 @@ extern void SelectPlayersFillMenu(void) INDEX i=0; if (bHasDedicated) { - gmSelectPlayersMenu.gm_mgDedicated.Appear(); - apmg[i++] = &gmSelectPlayersMenu.gm_mgDedicated; + CMENU.gm_mgDedicated.Appear(); + apmg[i++] = &CMENU.gm_mgDedicated; } else { - gmSelectPlayersMenu.gm_mgDedicated.Disappear(); + CMENU.gm_mgDedicated.Disappear(); } if (bHasObserver) { - gmSelectPlayersMenu.gm_mgObserver.Appear(); - apmg[i++] = &gmSelectPlayersMenu.gm_mgObserver; + CMENU.gm_mgObserver.Appear(); + apmg[i++] = &CMENU.gm_mgObserver; } else { - gmSelectPlayersMenu.gm_mgObserver.Disappear(); + CMENU.gm_mgObserver.Disappear(); } for (INDEX iLocal=0; iLocal<4; iLocal++) { @@ -3582,32 +3258,32 @@ extern void SelectPlayersFillMenu(void) } } - gmSelectPlayersMenu.gm_mgPlayer0Change.Disappear(); - gmSelectPlayersMenu.gm_mgPlayer1Change.Disappear(); - gmSelectPlayersMenu.gm_mgPlayer2Change.Disappear(); - gmSelectPlayersMenu.gm_mgPlayer3Change.Disappear(); + CMENU.gm_mgPlayer0Change.Disappear(); + CMENU.gm_mgPlayer1Change.Disappear(); + CMENU.gm_mgPlayer2Change.Disappear(); + CMENU.gm_mgPlayer3Change.Disappear(); if (bHasPlayers) { - gmSelectPlayersMenu.gm_mgSplitScreenCfg.Appear(); - apmg[i++] = &gmSelectPlayersMenu.gm_mgSplitScreenCfg; - gmSelectPlayersMenu.gm_mgPlayer0Change.Appear(); - apmg[i++] = &gmSelectPlayersMenu.gm_mgPlayer0Change; - if (gmSelectPlayersMenu.gm_mgSplitScreenCfg.mg_iSelected >= 1) { - gmSelectPlayersMenu.gm_mgPlayer1Change.Appear(); - apmg[i++] = &gmSelectPlayersMenu.gm_mgPlayer1Change; + CMENU.gm_mgSplitScreenCfg.Appear(); + apmg[i++] = &CMENU.gm_mgSplitScreenCfg; + CMENU.gm_mgPlayer0Change.Appear(); + apmg[i++] = &CMENU.gm_mgPlayer0Change; + if (CMENU.gm_mgSplitScreenCfg.mg_iSelected >= 1) { + CMENU.gm_mgPlayer1Change.Appear(); + apmg[i++] = &CMENU.gm_mgPlayer1Change; } - if (gmSelectPlayersMenu.gm_mgSplitScreenCfg.mg_iSelected >= 2) { - gmSelectPlayersMenu.gm_mgPlayer2Change.Appear(); - apmg[i++] = &gmSelectPlayersMenu.gm_mgPlayer2Change; + if (CMENU.gm_mgSplitScreenCfg.mg_iSelected >= 2) { + CMENU.gm_mgPlayer2Change.Appear(); + apmg[i++] = &CMENU.gm_mgPlayer2Change; } - if (gmSelectPlayersMenu.gm_mgSplitScreenCfg.mg_iSelected >= 3) { - gmSelectPlayersMenu.gm_mgPlayer3Change.Appear(); - apmg[i++] = &gmSelectPlayersMenu.gm_mgPlayer3Change; + if (CMENU.gm_mgSplitScreenCfg.mg_iSelected >= 3) { + CMENU.gm_mgPlayer3Change.Appear(); + apmg[i++] = &CMENU.gm_mgPlayer3Change; } } else { - gmSelectPlayersMenu.gm_mgSplitScreenCfg.Disappear(); + CMENU.gm_mgSplitScreenCfg.Disappear(); } - apmg[i++] = &gmSelectPlayersMenu.gm_mgStart; + apmg[i++] = &CMENU.gm_mgStart; // relink for (INDEX img=0; img<8; img++) { @@ -3630,31 +3306,31 @@ extern void SelectPlayersFillMenu(void) apmg[img]->mg_pmgDown = apmg[imgSucc]; } - gmSelectPlayersMenu.gm_mgPlayer0Change.SetPlayerText(); - gmSelectPlayersMenu.gm_mgPlayer1Change.SetPlayerText(); - gmSelectPlayersMenu.gm_mgPlayer2Change.SetPlayerText(); - gmSelectPlayersMenu.gm_mgPlayer3Change.SetPlayerText(); + CMENU.gm_mgPlayer0Change.SetPlayerText(); + CMENU.gm_mgPlayer1Change.SetPlayerText(); + CMENU.gm_mgPlayer2Change.SetPlayerText(); + CMENU.gm_mgPlayer3Change.SetPlayerText(); - if (bHasPlayers && gmSelectPlayersMenu.gm_mgSplitScreenCfg.mg_iSelected>=1) { - gmSelectPlayersMenu.gm_mgNotes.mg_strText = TRANS("Make sure you set different controls for each player!"); + if (bHasPlayers && CMENU.gm_mgSplitScreenCfg.mg_iSelected >= 1) { + CMENU.gm_mgNotes.mg_strText = TRANS("Make sure you set different controls for each player!"); } else { - gmSelectPlayersMenu.gm_mgNotes.mg_strText = ""; + CMENU.gm_mgNotes.mg_strText = ""; } } extern void SelectPlayersApplyMenu(void) { - if (gmSelectPlayersMenu.gm_bAllowDedicated && gmSelectPlayersMenu.gm_mgDedicated.mg_iSelected) { + if (CMENU.gm_bAllowDedicated && CMENU.gm_mgDedicated.mg_iSelected) { _pGame->gm_MenuSplitScreenCfg = CGame::SSC_DEDICATED; return; } - if (gmSelectPlayersMenu.gm_bAllowObserving && gmSelectPlayersMenu.gm_mgObserver.mg_iSelected) { + if (CMENU.gm_bAllowObserving && CMENU.gm_mgObserver.mg_iSelected) { _pGame->gm_MenuSplitScreenCfg = CGame::SSC_OBSERVER; return; } - _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) gmSelectPlayersMenu.gm_mgSplitScreenCfg.mg_iSelected; + _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) CMENU.gm_mgSplitScreenCfg.mg_iSelected; } void UpdateSelectPlayers(INDEX i) @@ -3665,11 +3341,13 @@ void UpdateSelectPlayers(INDEX i) void InitActionsForSelectPlayersMenu() { - gmSelectPlayersMenu.gm_mgDedicated.mg_pOnTriggerChange = UpdateSelectPlayers; - gmSelectPlayersMenu.gm_mgObserver.mg_pOnTriggerChange = UpdateSelectPlayers; - gmSelectPlayersMenu.gm_mgSplitScreenCfg.mg_pOnTriggerChange = UpdateSelectPlayers; + CMENU.gm_mgDedicated.mg_pOnTriggerChange = UpdateSelectPlayers; + CMENU.gm_mgObserver.mg_pOnTriggerChange = UpdateSelectPlayers; + CMENU.gm_mgSplitScreenCfg.mg_pOnTriggerChange = UpdateSelectPlayers; } +#undef CMENU + // ------------------------ CNetworkOpenMenu implementation void InitActionsForNetworkOpenMenu() { @@ -3677,19 +3355,25 @@ void InitActionsForNetworkOpenMenu() } // ------------------------ CSplitScreenMenu implementation +#define CMENU gmSplitScreenMenu + void InitActionsForSplitScreenMenu() { - gmSplitScreenMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitStartMenu; - gmSplitScreenMenu.gm_mgQuickLoad.mg_pActivatedFunction = &StartSplitScreenQuickLoadMenu; - gmSplitScreenMenu.gm_mgLoad.mg_pActivatedFunction = &StartSplitScreenLoadMenu; + CMENU.gm_mgStart.mg_pActivatedFunction = &StartSplitStartMenu; + CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartSplitScreenQuickLoadMenu; + CMENU.gm_mgLoad.mg_pActivatedFunction = &StartSplitScreenLoadMenu; } +#undef CMENU + // ------------------------ CSplitStartMenu implementation +#define CMENU gmSplitStartMenu + void InitActionsForSplitStartMenu() { - gmSplitStartMenu.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromSplit; - gmSplitStartMenu.gm_mgOptions.mg_pActivatedFunction = &StartGameOptionsFromSplitScreen; - gmSplitStartMenu.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromSplit; + CMENU.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromSplit; + CMENU.gm_mgOptions.mg_pActivatedFunction = &StartGameOptionsFromSplitScreen; + CMENU.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromSplit; } extern void UpdateSplitLevel(INDEX iDummy) @@ -3697,4 +3381,6 @@ extern void UpdateSplitLevel(INDEX iDummy) ValidateLevelForFlags(_pGame->gam_strCustomLevel, GetSpawnFlagsForGameType(gmSplitStartMenu.gm_mgGameType.mg_iSelected)); gmSplitStartMenu.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; -} \ No newline at end of file +} + +#undef CMENU \ No newline at end of file diff --git a/Sources/SeriousSam/MenuStuff.cpp b/Sources/SeriousSam/MenuStuff.cpp index b73949b..ee2bb8f 100644 --- a/Sources/SeriousSam/MenuStuff.cpp +++ b/Sources/SeriousSam/MenuStuff.cpp @@ -142,6 +142,34 @@ BOOL IsMenuEnabled(const CTString &strMenuName) return pFunc(strMenuName); } +// initialize game type strings table +void InitGameTypes(void) +{ + // get function that will provide us the info about gametype + CShellSymbol *pss = _pShell->GetSymbol("GetGameTypeNameSS", /*bDeclaredOnly=*/ TRUE); + // if none + if (pss == NULL) { + // error + astrGameTypeRadioTexts[0] = ""; + ctGameTypeRadioTexts = 1; + return; + } + + // for each mode + for (ctGameTypeRadioTexts = 0; ctGameTypeRadioTextsss_pvValue; + CTString strMode = pFunc(ctGameTypeRadioTexts); + // if no mode modes + if (strMode == "") { + // stop + break; + } + // add that mode + astrGameTypeRadioTexts[ctGameTypeRadioTexts] = strMode; + } +} + int qsort_CompareFileInfos_NameUp(const void *elem1, const void *elem2) { const CFileInfo &fi1 = **(CFileInfo **)elem1; diff --git a/Sources/SeriousSam/MenuStuff.h b/Sources/SeriousSam/MenuStuff.h index 859a261..3c73717 100644 --- a/Sources/SeriousSam/MenuStuff.h +++ b/Sources/SeriousSam/MenuStuff.h @@ -38,6 +38,7 @@ extern CTString astrSoundAPIRadioTexts[3]; ULONG GetSpawnFlagsForGameType(INDEX iGameType); BOOL IsMenuEnabled(const CTString &strMenuName); +void InitGameTypes(void); int qsort_CompareFileInfos_NameUp(const void *elem1, const void *elem2); int qsort_CompareFileInfos_NameDn(const void *elem1, const void *elem2); diff --git a/Sources/SeriousSam/SeriousSam.vcxproj b/Sources/SeriousSam/SeriousSam.vcxproj index b93067a..71b362f 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj +++ b/Sources/SeriousSam/SeriousSam.vcxproj @@ -58,7 +58,7 @@ Debug\ Debug\ false - $(SolutionDir);$(SolutionDir)..\Tools.Win32\Libraries\DX8SDK\Include;$(IncludePath) + $(SolutionDir);$(SolutionDir)..\Tools.Win32\Libraries\DX8SDK\Include;$(ProjectDir);$(IncludePath) $(SolutionDir)..\Bin\Debug;$(SolutionDir)..\Tools.Win32\Libraries\DX8SDK\Lib;$(LibraryPath) true true @@ -67,7 +67,7 @@ Release\ Release\ false - $(SolutionDir);$(SolutionDir)..\Tools.Win32\Libraries\DX8SDK\Include;$(IncludePath) + $(SolutionDir);$(SolutionDir)..\Tools.Win32\Libraries\DX8SDK\Include;$(ProjectDir);$(IncludePath) $(SolutionDir)..\Bin;$(SolutionDir)..\Tools.Win32\Libraries\DX8SDK\Lib;$(LibraryPath) true true @@ -178,7 +178,23 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + + + + + + + + + + + + + + + + @@ -194,26 +210,26 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul Use StdH.h - + + + + + + + + + + + + + + + CppCode - - - - - - - - - - - - - - @@ -269,20 +285,6 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul - - - - - - - - - - - - - - diff --git a/Sources/SeriousSam/SeriousSam.vcxproj.filters b/Sources/SeriousSam/SeriousSam.vcxproj.filters index 44b3a41..c15f77e 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj.filters +++ b/Sources/SeriousSam/SeriousSam.vcxproj.filters @@ -66,51 +66,6 @@ Source Files - - Source Files\Gadgets - - - Source Files\Gadgets - - - Source Files\Gadgets - - - Source Files\Gadgets - - - Source Files\Gadgets - - - Source Files\Gadgets - - - Source Files\Gadgets - - - Source Files\Gadgets - - - Source Files\Gadgets - - - Source Files\Gadgets - - - Source Files\Gadgets - - - Source Files\Gadgets - - - Source Files\Gadgets - - - Source Files\Gadgets - - - Source Files\Gadgets - Source Files @@ -192,6 +147,54 @@ Source Files\Menus + + Source Files\Menus + + + Source Files\Gadgets + + + Source Files\Gadgets + + + Source Files\Gadgets + + + Source Files\Gadgets + + + Source Files\Gadgets + + + Source Files\Gadgets + + + Source Files\Gadgets + + + Source Files\Gadgets + + + Source Files\Gadgets + + + Source Files\Gadgets + + + Source Files\Gadgets + + + Source Files\Gadgets + + + Source Files\Gadgets + + + Source Files\Gadgets + + + Source Files\Gadgets + @@ -239,48 +242,6 @@ Header Files - - Header Files\Gadgets headers - - - Header Files\Gadgets headers - - - Header Files\Gadgets headers - - - Header Files\Gadgets headers - - - Header Files\Gadgets headers - - - Header Files\Gadgets headers - - - Header Files\Gadgets headers - - - Header Files\Gadgets headers - - - Header Files\Gadgets headers - - - Header Files\Gadgets headers - - - Header Files\Gadgets headers - - - Header Files\Gadgets headers - - - Header Files\Gadgets headers - - - Header Files\Gadgets headers - Header Files\Menus headers @@ -374,6 +335,51 @@ Header Files + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + + + Header Files\Gadgets headers + From d29d0c64abc763c41b3261fbcd8a6e080af4d8df Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Wed, 16 Mar 2016 21:56:44 +0300 Subject: [PATCH 20/34] GameExecutable: Some improvements part II --- Sources/SeriousSam/GUI/Components/MGArrow.cpp | 1 - .../SeriousSam/GUI/Components/MGButton.cpp | 1 - .../GUI/Components/MGChangePlayer.cpp | 1 - Sources/SeriousSam/GUI/Components/MGEdit.cpp | 1 - .../GUI/Components/MGFileButton.cpp | 1 - .../SeriousSam/GUI/Components/MGHighScore.cpp | 1 - .../GUI/Components/MGKeyDefinition.cpp | 1 - .../GUI/Components/MGLevelButton.cpp | 1 - Sources/SeriousSam/GUI/Components/MGModel.cpp | 1 - .../GUI/Components/MGServerList.cpp | 1 - .../SeriousSam/GUI/Components/MGSlider.cpp | 1 - Sources/SeriousSam/GUI/Components/MGTitle.cpp | 1 - .../SeriousSam/GUI/Components/MGTrigger.cpp | 1 - .../SeriousSam/GUI/Components/MGVarButton.cpp | 1 - .../SeriousSam/GUI/Components/MenuGadget.cpp | 1 - .../SeriousSam/GUI/Components/MenuGadget.h | 2 + .../SeriousSam/{ => GUI/Menus}/GameMenu.cpp | 0 Sources/SeriousSam/{ => GUI/Menus}/GameMenu.h | 0 .../{ => GUI/Menus}/MAudioOptions.cpp | 0 .../{ => GUI/Menus}/MAudioOptions.h | 0 .../SeriousSam/{ => GUI/Menus}/MConfirm.cpp | 0 Sources/SeriousSam/{ => GUI/Menus}/MConfirm.h | 0 .../SeriousSam/{ => GUI/Menus}/MControls.cpp | 0 .../SeriousSam/{ => GUI/Menus}/MControls.h | 0 Sources/SeriousSam/{ => GUI/Menus}/MCredits.h | 0 .../{ => GUI/Menus}/MCustomizeAxis.cpp | 0 .../{ => GUI/Menus}/MCustomizeAxis.h | 0 .../{ => GUI/Menus}/MCustomizeKeyboard.cpp | 0 .../{ => GUI/Menus}/MCustomizeKeyboard.h | 0 .../SeriousSam/{ => GUI/Menus}/MDisabled.cpp | 0 .../SeriousSam/{ => GUI/Menus}/MDisabled.h | 0 .../SeriousSam/{ => GUI/Menus}/MHighScore.cpp | 0 .../SeriousSam/{ => GUI/Menus}/MHighScore.h | 0 .../SeriousSam/{ => GUI/Menus}/MInGame.cpp | 0 Sources/SeriousSam/{ => GUI/Menus}/MInGame.h | 0 .../SeriousSam/{ => GUI/Menus}/MLevels.cpp | 0 Sources/SeriousSam/{ => GUI/Menus}/MLevels.h | 0 .../SeriousSam/{ => GUI/Menus}/MLoadSave.cpp | 0 .../SeriousSam/{ => GUI/Menus}/MLoadSave.h | 0 Sources/SeriousSam/{ => GUI/Menus}/MMain.cpp | 0 Sources/SeriousSam/{ => GUI/Menus}/MMain.h | 0 .../SeriousSam/{ => GUI/Menus}/MNetwork.cpp | 0 Sources/SeriousSam/{ => GUI/Menus}/MNetwork.h | 0 .../{ => GUI/Menus}/MNetworkJoin.cpp | 0 .../SeriousSam/{ => GUI/Menus}/MNetworkJoin.h | 0 .../{ => GUI/Menus}/MNetworkOpen.cpp | 0 .../SeriousSam/{ => GUI/Menus}/MNetworkOpen.h | 0 .../{ => GUI/Menus}/MNetworkStart.cpp | 0 .../{ => GUI/Menus}/MNetworkStart.h | 0 .../SeriousSam/{ => GUI/Menus}/MOptions.cpp | 0 Sources/SeriousSam/{ => GUI/Menus}/MOptions.h | 0 .../{ => GUI/Menus}/MPlayerProfile.cpp | 0 .../{ => GUI/Menus}/MPlayerProfile.h | 0 .../{ => GUI/Menus}/MRenderingOptions.h | 0 .../{ => GUI/Menus}/MSelectPlayers.cpp | 0 .../{ => GUI/Menus}/MSelectPlayers.h | 0 .../SeriousSam/{ => GUI/Menus}/MServers.cpp | 0 Sources/SeriousSam/{ => GUI/Menus}/MServers.h | 0 .../{ => GUI/Menus}/MSinglePlayer.cpp | 0 .../{ => GUI/Menus}/MSinglePlayer.h | 0 .../{ => GUI/Menus}/MSinglePlayerNew.cpp | 0 .../{ => GUI/Menus}/MSinglePlayerNew.h | 0 .../{ => GUI/Menus}/MSplitScreen.cpp | 0 .../SeriousSam/{ => GUI/Menus}/MSplitScreen.h | 0 .../{ => GUI/Menus}/MSplitStart.cpp | 0 .../SeriousSam/{ => GUI/Menus}/MSplitStart.h | 0 Sources/SeriousSam/{ => GUI/Menus}/MVar.cpp | 0 Sources/SeriousSam/{ => GUI/Menus}/MVar.h | 0 .../{ => GUI/Menus}/MVideoOptions.cpp | 0 .../{ => GUI/Menus}/MVideoOptions.h | 0 Sources/SeriousSam/{ => GUI/Menus}/Menu.cpp | 0 Sources/SeriousSam/{ => GUI/Menus}/Menu.h | 0 .../{ => GUI/Menus}/MenuPrinting.cpp | 0 .../SeriousSam/{ => GUI/Menus}/MenuPrinting.h | 0 .../SeriousSam/{ => GUI/Menus}/MenuStuff.cpp | 0 .../SeriousSam/{ => GUI/Menus}/MenuStuff.h | 0 Sources/SeriousSam/SeriousSam.vcxproj | 128 +++-- Sources/SeriousSam/SeriousSam.vcxproj.filters | 439 +++++++++--------- Sources/SeriousSam/StdH.h | 2 +- 79 files changed, 284 insertions(+), 302 deletions(-) rename Sources/SeriousSam/{ => GUI/Menus}/GameMenu.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/GameMenu.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MAudioOptions.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MAudioOptions.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MConfirm.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MConfirm.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MControls.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MControls.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MCredits.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MCustomizeAxis.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MCustomizeAxis.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MCustomizeKeyboard.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MCustomizeKeyboard.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MDisabled.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MDisabled.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MHighScore.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MHighScore.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MInGame.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MInGame.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MLevels.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MLevels.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MLoadSave.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MLoadSave.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MMain.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MMain.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MNetwork.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MNetwork.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MNetworkJoin.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MNetworkJoin.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MNetworkOpen.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MNetworkOpen.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MNetworkStart.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MNetworkStart.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MOptions.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MOptions.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MPlayerProfile.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MPlayerProfile.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MRenderingOptions.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MSelectPlayers.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MSelectPlayers.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MServers.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MServers.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MSinglePlayer.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MSinglePlayer.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MSinglePlayerNew.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MSinglePlayerNew.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MSplitScreen.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MSplitScreen.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MSplitStart.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MSplitStart.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MVar.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MVar.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MVideoOptions.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MVideoOptions.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/Menu.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/Menu.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MenuPrinting.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MenuPrinting.h (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MenuStuff.cpp (100%) rename Sources/SeriousSam/{ => GUI/Menus}/MenuStuff.h (100%) diff --git a/Sources/SeriousSam/GUI/Components/MGArrow.cpp b/Sources/SeriousSam/GUI/Components/MGArrow.cpp index 65c553e..5cc09a2 100644 --- a/Sources/SeriousSam/GUI/Components/MGArrow.cpp +++ b/Sources/SeriousSam/GUI/Components/MGArrow.cpp @@ -3,7 +3,6 @@ #include "StdH.h" #include #include -#include "MenuPrinting.h" #include #include "MGArrow.h" diff --git a/Sources/SeriousSam/GUI/Components/MGButton.cpp b/Sources/SeriousSam/GUI/Components/MGButton.cpp index 9fedc4a..49fc985 100644 --- a/Sources/SeriousSam/GUI/Components/MGButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGButton.cpp @@ -3,7 +3,6 @@ #include "StdH.h" #include #include -#include "MenuPrinting.h" #include #include "LevelInfo.h" #include "VarList.h" diff --git a/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp b/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp index e7b2a4c..8a466a5 100644 --- a/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp +++ b/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp @@ -3,7 +3,6 @@ #include "StdH.h" #include #include -#include "MenuPrinting.h" #include #include "MGChangePlayer.h" diff --git a/Sources/SeriousSam/GUI/Components/MGEdit.cpp b/Sources/SeriousSam/GUI/Components/MGEdit.cpp index 0ae93f3..1b0d642 100644 --- a/Sources/SeriousSam/GUI/Components/MGEdit.cpp +++ b/Sources/SeriousSam/GUI/Components/MGEdit.cpp @@ -3,7 +3,6 @@ #include "StdH.h" #include #include -#include "MenuPrinting.h" #include #include "MGEdit.h" diff --git a/Sources/SeriousSam/GUI/Components/MGFileButton.cpp b/Sources/SeriousSam/GUI/Components/MGFileButton.cpp index 56e6ffe..13c9a91 100644 --- a/Sources/SeriousSam/GUI/Components/MGFileButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGFileButton.cpp @@ -3,7 +3,6 @@ #include "StdH.h" #include #include -#include "MenuPrinting.h" #include #include "MGFileButton.h" diff --git a/Sources/SeriousSam/GUI/Components/MGHighScore.cpp b/Sources/SeriousSam/GUI/Components/MGHighScore.cpp index 61b4109..3b7bfaa 100644 --- a/Sources/SeriousSam/GUI/Components/MGHighScore.cpp +++ b/Sources/SeriousSam/GUI/Components/MGHighScore.cpp @@ -3,7 +3,6 @@ #include "StdH.h" #include #include -#include "MenuPrinting.h" #include #include "MGHighScore.h" diff --git a/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp index 8ef80d5..b06ffc2 100644 --- a/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp +++ b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp @@ -3,7 +3,6 @@ #include "StdH.h" #include #include -#include "MenuPrinting.h" #include #include "MGKeyDefinition.h" diff --git a/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp b/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp index 33fede9..4237435 100644 --- a/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp @@ -3,7 +3,6 @@ #include "StdH.h" #include #include -#include "MenuPrinting.h" #include #include "MGLevelButton.h" diff --git a/Sources/SeriousSam/GUI/Components/MGModel.cpp b/Sources/SeriousSam/GUI/Components/MGModel.cpp index 243a9bd..a776b32 100644 --- a/Sources/SeriousSam/GUI/Components/MGModel.cpp +++ b/Sources/SeriousSam/GUI/Components/MGModel.cpp @@ -3,7 +3,6 @@ #include "StdH.h" #include #include -#include "MenuPrinting.h" #include #include "MGModel.h" diff --git a/Sources/SeriousSam/GUI/Components/MGServerList.cpp b/Sources/SeriousSam/GUI/Components/MGServerList.cpp index 331c197..279b2ec 100644 --- a/Sources/SeriousSam/GUI/Components/MGServerList.cpp +++ b/Sources/SeriousSam/GUI/Components/MGServerList.cpp @@ -3,7 +3,6 @@ #include "StdH.h" #include #include -#include "MenuPrinting.h" #include #include "MGServerList.h" #include "MGEdit.h" diff --git a/Sources/SeriousSam/GUI/Components/MGSlider.cpp b/Sources/SeriousSam/GUI/Components/MGSlider.cpp index 9dbe014..a1e131a 100644 --- a/Sources/SeriousSam/GUI/Components/MGSlider.cpp +++ b/Sources/SeriousSam/GUI/Components/MGSlider.cpp @@ -3,7 +3,6 @@ #include "StdH.h" #include #include -#include "MenuPrinting.h" #include #include "MGSlider.h" diff --git a/Sources/SeriousSam/GUI/Components/MGTitle.cpp b/Sources/SeriousSam/GUI/Components/MGTitle.cpp index 215fa11..1151fa3 100644 --- a/Sources/SeriousSam/GUI/Components/MGTitle.cpp +++ b/Sources/SeriousSam/GUI/Components/MGTitle.cpp @@ -3,7 +3,6 @@ #include "StdH.h" #include #include -#include "MenuPrinting.h" #include #include "MGTitle.h" diff --git a/Sources/SeriousSam/GUI/Components/MGTrigger.cpp b/Sources/SeriousSam/GUI/Components/MGTrigger.cpp index 7a4363d..494e576 100644 --- a/Sources/SeriousSam/GUI/Components/MGTrigger.cpp +++ b/Sources/SeriousSam/GUI/Components/MGTrigger.cpp @@ -3,7 +3,6 @@ #include "StdH.h" #include #include -#include "MenuPrinting.h" #include #include "MGTrigger.h" diff --git a/Sources/SeriousSam/GUI/Components/MGVarButton.cpp b/Sources/SeriousSam/GUI/Components/MGVarButton.cpp index 93e1032..0a2f899 100644 --- a/Sources/SeriousSam/GUI/Components/MGVarButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGVarButton.cpp @@ -3,7 +3,6 @@ #include "StdH.h" #include #include -#include "MenuPrinting.h" #include #include "VarList.h" #include "MGVarButton.h" diff --git a/Sources/SeriousSam/GUI/Components/MenuGadget.cpp b/Sources/SeriousSam/GUI/Components/MenuGadget.cpp index fab91ba..449ac78 100644 --- a/Sources/SeriousSam/GUI/Components/MenuGadget.cpp +++ b/Sources/SeriousSam/GUI/Components/MenuGadget.cpp @@ -3,7 +3,6 @@ #include "StdH.h" #include #include -#include "MenuPrinting.h" #include #include "LevelInfo.h" #include "VarList.h" diff --git a/Sources/SeriousSam/GUI/Components/MenuGadget.h b/Sources/SeriousSam/GUI/Components/MenuGadget.h index 66974dd..d788e59 100644 --- a/Sources/SeriousSam/GUI/Components/MenuGadget.h +++ b/Sources/SeriousSam/GUI/Components/MenuGadget.h @@ -6,6 +6,7 @@ #pragma once #endif +#include "MenuPrinting.h" #define DOING_NOTHING 0 #define PRESS_KEY_WAITING 1 @@ -13,6 +14,7 @@ #define EMPTYSLOTSTRING TRANS("") + class CMenuGadget { public: CListNode mg_lnNode; diff --git a/Sources/SeriousSam/GameMenu.cpp b/Sources/SeriousSam/GUI/Menus/GameMenu.cpp similarity index 100% rename from Sources/SeriousSam/GameMenu.cpp rename to Sources/SeriousSam/GUI/Menus/GameMenu.cpp diff --git a/Sources/SeriousSam/GameMenu.h b/Sources/SeriousSam/GUI/Menus/GameMenu.h similarity index 100% rename from Sources/SeriousSam/GameMenu.h rename to Sources/SeriousSam/GUI/Menus/GameMenu.h diff --git a/Sources/SeriousSam/MAudioOptions.cpp b/Sources/SeriousSam/GUI/Menus/MAudioOptions.cpp similarity index 100% rename from Sources/SeriousSam/MAudioOptions.cpp rename to Sources/SeriousSam/GUI/Menus/MAudioOptions.cpp diff --git a/Sources/SeriousSam/MAudioOptions.h b/Sources/SeriousSam/GUI/Menus/MAudioOptions.h similarity index 100% rename from Sources/SeriousSam/MAudioOptions.h rename to Sources/SeriousSam/GUI/Menus/MAudioOptions.h diff --git a/Sources/SeriousSam/MConfirm.cpp b/Sources/SeriousSam/GUI/Menus/MConfirm.cpp similarity index 100% rename from Sources/SeriousSam/MConfirm.cpp rename to Sources/SeriousSam/GUI/Menus/MConfirm.cpp diff --git a/Sources/SeriousSam/MConfirm.h b/Sources/SeriousSam/GUI/Menus/MConfirm.h similarity index 100% rename from Sources/SeriousSam/MConfirm.h rename to Sources/SeriousSam/GUI/Menus/MConfirm.h diff --git a/Sources/SeriousSam/MControls.cpp b/Sources/SeriousSam/GUI/Menus/MControls.cpp similarity index 100% rename from Sources/SeriousSam/MControls.cpp rename to Sources/SeriousSam/GUI/Menus/MControls.cpp diff --git a/Sources/SeriousSam/MControls.h b/Sources/SeriousSam/GUI/Menus/MControls.h similarity index 100% rename from Sources/SeriousSam/MControls.h rename to Sources/SeriousSam/GUI/Menus/MControls.h diff --git a/Sources/SeriousSam/MCredits.h b/Sources/SeriousSam/GUI/Menus/MCredits.h similarity index 100% rename from Sources/SeriousSam/MCredits.h rename to Sources/SeriousSam/GUI/Menus/MCredits.h diff --git a/Sources/SeriousSam/MCustomizeAxis.cpp b/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.cpp similarity index 100% rename from Sources/SeriousSam/MCustomizeAxis.cpp rename to Sources/SeriousSam/GUI/Menus/MCustomizeAxis.cpp diff --git a/Sources/SeriousSam/MCustomizeAxis.h b/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.h similarity index 100% rename from Sources/SeriousSam/MCustomizeAxis.h rename to Sources/SeriousSam/GUI/Menus/MCustomizeAxis.h diff --git a/Sources/SeriousSam/MCustomizeKeyboard.cpp b/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp similarity index 100% rename from Sources/SeriousSam/MCustomizeKeyboard.cpp rename to Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp diff --git a/Sources/SeriousSam/MCustomizeKeyboard.h b/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.h similarity index 100% rename from Sources/SeriousSam/MCustomizeKeyboard.h rename to Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.h diff --git a/Sources/SeriousSam/MDisabled.cpp b/Sources/SeriousSam/GUI/Menus/MDisabled.cpp similarity index 100% rename from Sources/SeriousSam/MDisabled.cpp rename to Sources/SeriousSam/GUI/Menus/MDisabled.cpp diff --git a/Sources/SeriousSam/MDisabled.h b/Sources/SeriousSam/GUI/Menus/MDisabled.h similarity index 100% rename from Sources/SeriousSam/MDisabled.h rename to Sources/SeriousSam/GUI/Menus/MDisabled.h diff --git a/Sources/SeriousSam/MHighScore.cpp b/Sources/SeriousSam/GUI/Menus/MHighScore.cpp similarity index 100% rename from Sources/SeriousSam/MHighScore.cpp rename to Sources/SeriousSam/GUI/Menus/MHighScore.cpp diff --git a/Sources/SeriousSam/MHighScore.h b/Sources/SeriousSam/GUI/Menus/MHighScore.h similarity index 100% rename from Sources/SeriousSam/MHighScore.h rename to Sources/SeriousSam/GUI/Menus/MHighScore.h diff --git a/Sources/SeriousSam/MInGame.cpp b/Sources/SeriousSam/GUI/Menus/MInGame.cpp similarity index 100% rename from Sources/SeriousSam/MInGame.cpp rename to Sources/SeriousSam/GUI/Menus/MInGame.cpp diff --git a/Sources/SeriousSam/MInGame.h b/Sources/SeriousSam/GUI/Menus/MInGame.h similarity index 100% rename from Sources/SeriousSam/MInGame.h rename to Sources/SeriousSam/GUI/Menus/MInGame.h diff --git a/Sources/SeriousSam/MLevels.cpp b/Sources/SeriousSam/GUI/Menus/MLevels.cpp similarity index 100% rename from Sources/SeriousSam/MLevels.cpp rename to Sources/SeriousSam/GUI/Menus/MLevels.cpp diff --git a/Sources/SeriousSam/MLevels.h b/Sources/SeriousSam/GUI/Menus/MLevels.h similarity index 100% rename from Sources/SeriousSam/MLevels.h rename to Sources/SeriousSam/GUI/Menus/MLevels.h diff --git a/Sources/SeriousSam/MLoadSave.cpp b/Sources/SeriousSam/GUI/Menus/MLoadSave.cpp similarity index 100% rename from Sources/SeriousSam/MLoadSave.cpp rename to Sources/SeriousSam/GUI/Menus/MLoadSave.cpp diff --git a/Sources/SeriousSam/MLoadSave.h b/Sources/SeriousSam/GUI/Menus/MLoadSave.h similarity index 100% rename from Sources/SeriousSam/MLoadSave.h rename to Sources/SeriousSam/GUI/Menus/MLoadSave.h diff --git a/Sources/SeriousSam/MMain.cpp b/Sources/SeriousSam/GUI/Menus/MMain.cpp similarity index 100% rename from Sources/SeriousSam/MMain.cpp rename to Sources/SeriousSam/GUI/Menus/MMain.cpp diff --git a/Sources/SeriousSam/MMain.h b/Sources/SeriousSam/GUI/Menus/MMain.h similarity index 100% rename from Sources/SeriousSam/MMain.h rename to Sources/SeriousSam/GUI/Menus/MMain.h diff --git a/Sources/SeriousSam/MNetwork.cpp b/Sources/SeriousSam/GUI/Menus/MNetwork.cpp similarity index 100% rename from Sources/SeriousSam/MNetwork.cpp rename to Sources/SeriousSam/GUI/Menus/MNetwork.cpp diff --git a/Sources/SeriousSam/MNetwork.h b/Sources/SeriousSam/GUI/Menus/MNetwork.h similarity index 100% rename from Sources/SeriousSam/MNetwork.h rename to Sources/SeriousSam/GUI/Menus/MNetwork.h diff --git a/Sources/SeriousSam/MNetworkJoin.cpp b/Sources/SeriousSam/GUI/Menus/MNetworkJoin.cpp similarity index 100% rename from Sources/SeriousSam/MNetworkJoin.cpp rename to Sources/SeriousSam/GUI/Menus/MNetworkJoin.cpp diff --git a/Sources/SeriousSam/MNetworkJoin.h b/Sources/SeriousSam/GUI/Menus/MNetworkJoin.h similarity index 100% rename from Sources/SeriousSam/MNetworkJoin.h rename to Sources/SeriousSam/GUI/Menus/MNetworkJoin.h diff --git a/Sources/SeriousSam/MNetworkOpen.cpp b/Sources/SeriousSam/GUI/Menus/MNetworkOpen.cpp similarity index 100% rename from Sources/SeriousSam/MNetworkOpen.cpp rename to Sources/SeriousSam/GUI/Menus/MNetworkOpen.cpp diff --git a/Sources/SeriousSam/MNetworkOpen.h b/Sources/SeriousSam/GUI/Menus/MNetworkOpen.h similarity index 100% rename from Sources/SeriousSam/MNetworkOpen.h rename to Sources/SeriousSam/GUI/Menus/MNetworkOpen.h diff --git a/Sources/SeriousSam/MNetworkStart.cpp b/Sources/SeriousSam/GUI/Menus/MNetworkStart.cpp similarity index 100% rename from Sources/SeriousSam/MNetworkStart.cpp rename to Sources/SeriousSam/GUI/Menus/MNetworkStart.cpp diff --git a/Sources/SeriousSam/MNetworkStart.h b/Sources/SeriousSam/GUI/Menus/MNetworkStart.h similarity index 100% rename from Sources/SeriousSam/MNetworkStart.h rename to Sources/SeriousSam/GUI/Menus/MNetworkStart.h diff --git a/Sources/SeriousSam/MOptions.cpp b/Sources/SeriousSam/GUI/Menus/MOptions.cpp similarity index 100% rename from Sources/SeriousSam/MOptions.cpp rename to Sources/SeriousSam/GUI/Menus/MOptions.cpp diff --git a/Sources/SeriousSam/MOptions.h b/Sources/SeriousSam/GUI/Menus/MOptions.h similarity index 100% rename from Sources/SeriousSam/MOptions.h rename to Sources/SeriousSam/GUI/Menus/MOptions.h diff --git a/Sources/SeriousSam/MPlayerProfile.cpp b/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp similarity index 100% rename from Sources/SeriousSam/MPlayerProfile.cpp rename to Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp diff --git a/Sources/SeriousSam/MPlayerProfile.h b/Sources/SeriousSam/GUI/Menus/MPlayerProfile.h similarity index 100% rename from Sources/SeriousSam/MPlayerProfile.h rename to Sources/SeriousSam/GUI/Menus/MPlayerProfile.h diff --git a/Sources/SeriousSam/MRenderingOptions.h b/Sources/SeriousSam/GUI/Menus/MRenderingOptions.h similarity index 100% rename from Sources/SeriousSam/MRenderingOptions.h rename to Sources/SeriousSam/GUI/Menus/MRenderingOptions.h diff --git a/Sources/SeriousSam/MSelectPlayers.cpp b/Sources/SeriousSam/GUI/Menus/MSelectPlayers.cpp similarity index 100% rename from Sources/SeriousSam/MSelectPlayers.cpp rename to Sources/SeriousSam/GUI/Menus/MSelectPlayers.cpp diff --git a/Sources/SeriousSam/MSelectPlayers.h b/Sources/SeriousSam/GUI/Menus/MSelectPlayers.h similarity index 100% rename from Sources/SeriousSam/MSelectPlayers.h rename to Sources/SeriousSam/GUI/Menus/MSelectPlayers.h diff --git a/Sources/SeriousSam/MServers.cpp b/Sources/SeriousSam/GUI/Menus/MServers.cpp similarity index 100% rename from Sources/SeriousSam/MServers.cpp rename to Sources/SeriousSam/GUI/Menus/MServers.cpp diff --git a/Sources/SeriousSam/MServers.h b/Sources/SeriousSam/GUI/Menus/MServers.h similarity index 100% rename from Sources/SeriousSam/MServers.h rename to Sources/SeriousSam/GUI/Menus/MServers.h diff --git a/Sources/SeriousSam/MSinglePlayer.cpp b/Sources/SeriousSam/GUI/Menus/MSinglePlayer.cpp similarity index 100% rename from Sources/SeriousSam/MSinglePlayer.cpp rename to Sources/SeriousSam/GUI/Menus/MSinglePlayer.cpp diff --git a/Sources/SeriousSam/MSinglePlayer.h b/Sources/SeriousSam/GUI/Menus/MSinglePlayer.h similarity index 100% rename from Sources/SeriousSam/MSinglePlayer.h rename to Sources/SeriousSam/GUI/Menus/MSinglePlayer.h diff --git a/Sources/SeriousSam/MSinglePlayerNew.cpp b/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.cpp similarity index 100% rename from Sources/SeriousSam/MSinglePlayerNew.cpp rename to Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.cpp diff --git a/Sources/SeriousSam/MSinglePlayerNew.h b/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.h similarity index 100% rename from Sources/SeriousSam/MSinglePlayerNew.h rename to Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.h diff --git a/Sources/SeriousSam/MSplitScreen.cpp b/Sources/SeriousSam/GUI/Menus/MSplitScreen.cpp similarity index 100% rename from Sources/SeriousSam/MSplitScreen.cpp rename to Sources/SeriousSam/GUI/Menus/MSplitScreen.cpp diff --git a/Sources/SeriousSam/MSplitScreen.h b/Sources/SeriousSam/GUI/Menus/MSplitScreen.h similarity index 100% rename from Sources/SeriousSam/MSplitScreen.h rename to Sources/SeriousSam/GUI/Menus/MSplitScreen.h diff --git a/Sources/SeriousSam/MSplitStart.cpp b/Sources/SeriousSam/GUI/Menus/MSplitStart.cpp similarity index 100% rename from Sources/SeriousSam/MSplitStart.cpp rename to Sources/SeriousSam/GUI/Menus/MSplitStart.cpp diff --git a/Sources/SeriousSam/MSplitStart.h b/Sources/SeriousSam/GUI/Menus/MSplitStart.h similarity index 100% rename from Sources/SeriousSam/MSplitStart.h rename to Sources/SeriousSam/GUI/Menus/MSplitStart.h diff --git a/Sources/SeriousSam/MVar.cpp b/Sources/SeriousSam/GUI/Menus/MVar.cpp similarity index 100% rename from Sources/SeriousSam/MVar.cpp rename to Sources/SeriousSam/GUI/Menus/MVar.cpp diff --git a/Sources/SeriousSam/MVar.h b/Sources/SeriousSam/GUI/Menus/MVar.h similarity index 100% rename from Sources/SeriousSam/MVar.h rename to Sources/SeriousSam/GUI/Menus/MVar.h diff --git a/Sources/SeriousSam/MVideoOptions.cpp b/Sources/SeriousSam/GUI/Menus/MVideoOptions.cpp similarity index 100% rename from Sources/SeriousSam/MVideoOptions.cpp rename to Sources/SeriousSam/GUI/Menus/MVideoOptions.cpp diff --git a/Sources/SeriousSam/MVideoOptions.h b/Sources/SeriousSam/GUI/Menus/MVideoOptions.h similarity index 100% rename from Sources/SeriousSam/MVideoOptions.h rename to Sources/SeriousSam/GUI/Menus/MVideoOptions.h diff --git a/Sources/SeriousSam/Menu.cpp b/Sources/SeriousSam/GUI/Menus/Menu.cpp similarity index 100% rename from Sources/SeriousSam/Menu.cpp rename to Sources/SeriousSam/GUI/Menus/Menu.cpp diff --git a/Sources/SeriousSam/Menu.h b/Sources/SeriousSam/GUI/Menus/Menu.h similarity index 100% rename from Sources/SeriousSam/Menu.h rename to Sources/SeriousSam/GUI/Menus/Menu.h diff --git a/Sources/SeriousSam/MenuPrinting.cpp b/Sources/SeriousSam/GUI/Menus/MenuPrinting.cpp similarity index 100% rename from Sources/SeriousSam/MenuPrinting.cpp rename to Sources/SeriousSam/GUI/Menus/MenuPrinting.cpp diff --git a/Sources/SeriousSam/MenuPrinting.h b/Sources/SeriousSam/GUI/Menus/MenuPrinting.h similarity index 100% rename from Sources/SeriousSam/MenuPrinting.h rename to Sources/SeriousSam/GUI/Menus/MenuPrinting.h diff --git a/Sources/SeriousSam/MenuStuff.cpp b/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp similarity index 100% rename from Sources/SeriousSam/MenuStuff.cpp rename to Sources/SeriousSam/GUI/Menus/MenuStuff.cpp diff --git a/Sources/SeriousSam/MenuStuff.h b/Sources/SeriousSam/GUI/Menus/MenuStuff.h similarity index 100% rename from Sources/SeriousSam/MenuStuff.h rename to Sources/SeriousSam/GUI/Menus/MenuStuff.h diff --git a/Sources/SeriousSam/SeriousSam.vcxproj b/Sources/SeriousSam/SeriousSam.vcxproj index 71b362f..4d0e9ac 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj +++ b/Sources/SeriousSam/SeriousSam.vcxproj @@ -178,7 +178,6 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul - @@ -195,22 +194,38 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - Use - StdH.h - Use - StdH.h - - @@ -226,29 +241,37 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul - - CppCode - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Use StdH.h @@ -270,41 +293,10 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Sources/SeriousSam/SeriousSam.vcxproj.filters b/Sources/SeriousSam/SeriousSam.vcxproj.filters index c15f77e..6e9db1e 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj.filters +++ b/Sources/SeriousSam/SeriousSam.vcxproj.filters @@ -19,18 +19,24 @@ {332d9393-d918-4caf-86b2-2e63c2cca9bd} - - {47ffb7e3-433b-480c-a22a-849524a5bd1e} + + {b1fe2cd0-889c-48dd-897c-cdbbdcb0a131} - + {3bc65fe2-8c15-4ecd-bf59-de962bb42275} - + {df54d6d1-39c3-4f26-93f8-116311f5a0eb} - + + {4c95322d-560a-4738-a631-e3e860b59560} + + {9a04e8a8-ecfc-42c3-bf28-fe3d8b49e626} + + {47ffb7e3-433b-480c-a22a-849524a5bd1e} + @@ -51,9 +57,6 @@ Source Files - - Source Files - Source Files @@ -66,134 +69,137 @@ Source Files - - Source Files - - - Source Files\Menus - - - Source Files\Menus - - - Source Files - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - - Source Files\Menus - - Source Files\Gadgets + Source Files\GUI\Gadgets - Source Files\Gadgets + Source Files\GUI\Gadgets - Source Files\Gadgets + Source Files\GUI\Gadgets - Source Files\Gadgets + Source Files\GUI\Gadgets - Source Files\Gadgets + Source Files\GUI\Gadgets - Source Files\Gadgets + Source Files\GUI\Gadgets - Source Files\Gadgets + Source Files\GUI\Gadgets - Source Files\Gadgets + Source Files\GUI\Gadgets - Source Files\Gadgets + Source Files\GUI\Gadgets - Source Files\Gadgets + Source Files\GUI\Gadgets - Source Files\Gadgets + Source Files\GUI\Gadgets - Source Files\Gadgets + Source Files\GUI\Gadgets - Source Files\Gadgets + Source Files\GUI\Gadgets - Source Files\Gadgets + Source Files\GUI\Gadgets - Source Files\Gadgets + Source Files\GUI\Gadgets + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus @@ -218,9 +224,6 @@ Header Files - - Header Files - Header Files @@ -236,149 +239,149 @@ Header Files - - Header Files - Header Files - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - Header Files - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files\Menus headers - - - Header Files - - Header Files\Gadgets headers + Header Files\GUI headers\Gadgets headers - Header Files\Gadgets headers + Header Files\GUI headers\Gadgets headers - Header Files\Gadgets headers + Header Files\GUI headers\Gadgets headers - Header Files\Gadgets headers + Header Files\GUI headers\Gadgets headers - Header Files\Gadgets headers + Header Files\GUI headers\Gadgets headers - Header Files\Gadgets headers + Header Files\GUI headers\Gadgets headers - Header Files\Gadgets headers + Header Files\GUI headers\Gadgets headers - Header Files\Gadgets headers + Header Files\GUI headers\Gadgets headers - Header Files\Gadgets headers + Header Files\GUI headers\Gadgets headers - Header Files\Gadgets headers + Header Files\GUI headers\Gadgets headers - Header Files\Gadgets headers + Header Files\GUI headers\Gadgets headers - Header Files\Gadgets headers + Header Files\GUI headers\Gadgets headers - Header Files\Gadgets headers + Header Files\GUI headers\Gadgets headers - Header Files\Gadgets headers + Header Files\GUI headers\Gadgets headers - Header Files\Gadgets headers + Header Files\GUI headers\Gadgets headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers diff --git a/Sources/SeriousSam/StdH.h b/Sources/SeriousSam/StdH.h index 1c65f03..e918afb 100644 --- a/Sources/SeriousSam/StdH.h +++ b/Sources/SeriousSam/StdH.h @@ -23,4 +23,4 @@ #define TECHTESTONLY 0 #include "SeriousSam.h" -#include "Menu.h" \ No newline at end of file +#include "GUI/Menus/Menu.h" \ No newline at end of file From c0a1b7bdf78460c775cf8b81da6bb989229f5c42 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Fri, 18 Mar 2016 12:56:52 +0300 Subject: [PATCH 21/34] .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index f6437c7..d4c8cca 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ *.bsc *.cnt *.exp +*.idb *.ipch *.log *.map @@ -75,4 +76,6 @@ Temp/Profile_CSG.txt *.gms Data/*.pri Data/*.bin +Demos/* +SaveGame/* Scripts/PersistentSymbols.ini \ No newline at end of file From 31d597856dcc1e0437976f45208c5e92b2e1a224 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Tue, 29 Mar 2016 23:49:32 +0300 Subject: [PATCH 22/34] Add and remove excess empty lines between functions, Make code better. --- Sources/SeriousSam/GUI/Components/MGEdit.cpp | 6 ++--- .../GUI/Components/MGFileButton.cpp | 1 + .../GUI/Components/MGKeyDefinition.cpp | 2 -- .../GUI/Components/MGLevelButton.cpp | 1 - .../GUI/Components/MGServerList.cpp | 4 ++-- .../SeriousSam/GUI/Components/MGSlider.cpp | 2 -- .../SeriousSam/GUI/Components/MGTrigger.cpp | 3 --- .../SeriousSam/GUI/Components/MGVarButton.cpp | 3 --- .../SeriousSam/GUI/Components/MenuGadget.cpp | 1 + .../GUI/Menus/MCustomizeKeyboard.cpp | 1 + Sources/SeriousSam/GUI/Menus/MInGame.cpp | 7 +++--- Sources/SeriousSam/GUI/Menus/MLevels.cpp | 2 -- Sources/SeriousSam/GUI/Menus/MLoadSave.cpp | 5 ++-- Sources/SeriousSam/GUI/Menus/MMain.cpp | 1 + .../SeriousSam/GUI/Menus/MNetworkStart.cpp | 3 --- .../SeriousSam/GUI/Menus/MPlayerProfile.cpp | 10 +++----- .../SeriousSam/GUI/Menus/MSinglePlayer.cpp | 3 +-- .../SeriousSam/GUI/Menus/MVideoOptions.cpp | 1 - Sources/SeriousSam/GUI/Menus/MenuPrinting.cpp | 23 +++++++++++++++++++ Sources/SeriousSam/GUI/Menus/MenuStuff.cpp | 3 +++ 20 files changed, 44 insertions(+), 38 deletions(-) diff --git a/Sources/SeriousSam/GUI/Components/MGEdit.cpp b/Sources/SeriousSam/GUI/Components/MGEdit.cpp index 1b0d642..512d0bd 100644 --- a/Sources/SeriousSam/GUI/Components/MGEdit.cpp +++ b/Sources/SeriousSam/GUI/Components/MGEdit.cpp @@ -18,7 +18,6 @@ CMGEdit::CMGEdit(void) Clear(); } - void CMGEdit::Clear(void) { mg_iCursorPos = 0; @@ -26,7 +25,6 @@ void CMGEdit::Clear(void) _bEditingString = FALSE; } - void CMGEdit::OnActivate(void) { if (!mg_bEnabled) { @@ -112,7 +110,6 @@ BOOL CMGEdit::OnKeyDown(int iVKey) return TRUE; } - // char typed BOOL CMGEdit::OnChar(MSG msg) { @@ -134,7 +131,6 @@ BOOL CMGEdit::OnChar(MSG msg) return TRUE; } - void CMGEdit::Render(CDrawPort *pdp) { if (mg_bEditing) { @@ -160,9 +156,11 @@ void CMGEdit::Render(CDrawPort *pdp) CMGButton::Render(pdp); } } + void CMGEdit::OnStringChanged(void) { } + void CMGEdit::OnStringCanceled(void) { } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGFileButton.cpp b/Sources/SeriousSam/GUI/Components/MGFileButton.cpp index 13c9a91..421f2c4 100644 --- a/Sources/SeriousSam/GUI/Components/MGFileButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGFileButton.cpp @@ -120,6 +120,7 @@ void CMGFileButton::OnActivate(void) mg_iState = FBS_SAVENAME; } } + BOOL CMGFileButton::OnKeyDown(int iVKey) { if (mg_iState == FBS_NORMAL) { diff --git a/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp index b06ffc2..0c3f0d0 100644 --- a/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp +++ b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp @@ -17,7 +17,6 @@ CMGKeyDefinition::CMGKeyDefinition(void) mg_iState = DOING_NOTHING; } - void CMGKeyDefinition::OnActivate(void) { PlayMenuSound(_psdPress); @@ -26,7 +25,6 @@ void CMGKeyDefinition::OnActivate(void) mg_iState = RELEASE_RETURN_WAITING; } - BOOL CMGKeyDefinition::OnKeyDown(int iVKey) { // if waiting for a key definition diff --git a/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp b/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp index 4237435..0eeb0c1 100644 --- a/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp @@ -18,7 +18,6 @@ void CMGLevelButton::OnActivate(void) _pAfterLevelChosen(); } - void CMGLevelButton::OnSetFocus(void) { SetThumbnail(mg_fnmLevel); diff --git a/Sources/SeriousSam/GUI/Components/MGServerList.cpp b/Sources/SeriousSam/GUI/Components/MGServerList.cpp index 279b2ec..a676913 100644 --- a/Sources/SeriousSam/GUI/Components/MGServerList.cpp +++ b/Sources/SeriousSam/GUI/Components/MGServerList.cpp @@ -31,7 +31,6 @@ void PrintInBox(CDrawPort *pdp, PIX pixI, PIX pixJ, PIX pixSizeI, CTString str, pdp->PutText(str, pixI, pixJ, col); } - CMGServerList::CMGServerList() { mg_iSelected = 0; @@ -285,7 +284,6 @@ static INDEX SliderPixToIndex(PIX pixOffset, INDEX iVisible, INDEX iTotal, PIXaa return (iTotal*pixOffset) / pixFull; } - static PIXaabbox2D GetSliderBox(INDEX iFirst, INDEX iVisible, INDEX iTotal, PIXaabbox2D boxFull) { @@ -306,6 +304,7 @@ PIXaabbox2D CMGServerList::GetScrollBarFullBox(void) { return PIXaabbox2D(PIX2D(mg_pixSBMinI, mg_pixSBMinJ), PIX2D(mg_pixSBMaxI, mg_pixSBMaxJ)); } + PIXaabbox2D CMGServerList::GetScrollBarHandleBox(void) { return GetSliderBox(mg_iFirstOnScreen, mg_ctOnScreen, _lhServers.Count(), GetScrollBarFullBox()); @@ -438,6 +437,7 @@ void CMGServerList::OnSetFocus(void) { mg_bFocused = TRUE; } + void CMGServerList::OnKillFocus(void) { mg_bFocused = FALSE; diff --git a/Sources/SeriousSam/GUI/Components/MGSlider.cpp b/Sources/SeriousSam/GUI/Components/MGSlider.cpp index a1e131a..0722e0f 100644 --- a/Sources/SeriousSam/GUI/Components/MGSlider.cpp +++ b/Sources/SeriousSam/GUI/Components/MGSlider.cpp @@ -72,7 +72,6 @@ BOOL CMGSlider::OnKeyDown(int iVKey) return CMenuGadget::OnKeyDown(iVKey); } - PIXaabbox2D CMGSlider::GetSliderBox(void) { extern CDrawPort *pdp; @@ -85,7 +84,6 @@ PIXaabbox2D CMGSlider::GetSliderBox(void) return PIXaabbox2D(PIX2D(pixIR + 1, pixJ + 1), PIX2D(pixIR + pixISizeR - 2, pixJ + pixJSize - 2)); } - void CMGSlider::Render(CDrawPort *pdp) { SetFontMedium(pdp); diff --git a/Sources/SeriousSam/GUI/Components/MGTrigger.cpp b/Sources/SeriousSam/GUI/Components/MGTrigger.cpp index 494e576..443619b 100644 --- a/Sources/SeriousSam/GUI/Components/MGTrigger.cpp +++ b/Sources/SeriousSam/GUI/Components/MGTrigger.cpp @@ -37,7 +37,6 @@ void CMGTrigger::ApplyCurrentSelection(void) mg_strValue = mg_astrTexts[mg_iSelected]; } - void CMGTrigger::OnSetNextInList(int iVKey) { if (mg_pPreTriggerChange != NULL) { @@ -52,7 +51,6 @@ void CMGTrigger::OnSetNextInList(int iVKey) } } - BOOL CMGTrigger::OnKeyDown(int iVKey) { if ((iVKey == VK_RETURN || iVKey == VK_LBUTTON) || @@ -68,7 +66,6 @@ BOOL CMGTrigger::OnKeyDown(int iVKey) return FALSE; } - void CMGTrigger::Render(CDrawPort *pdp) { SetFontMedium(pdp); diff --git a/Sources/SeriousSam/GUI/Components/MGVarButton.cpp b/Sources/SeriousSam/GUI/Components/MGVarButton.cpp index 0a2f899..b783847 100644 --- a/Sources/SeriousSam/GUI/Components/MGVarButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGVarButton.cpp @@ -17,7 +17,6 @@ BOOL CMGVarButton::IsSeparator(void) return mg_pvsVar->vs_bSeparator; } - BOOL CMGVarButton::IsEnabled(void) { return(_gmRunningGameMode == GM_NONE @@ -25,7 +24,6 @@ BOOL CMGVarButton::IsEnabled(void) || mg_pvsVar->vs_bCanChangeInGame); } - // return slider position on scren PIXaabbox2D CMGVarButton::GetSliderBox(void) { @@ -111,7 +109,6 @@ BOOL CMGVarButton::OnKeyDown(int iVKey) return CMenuGadget::OnKeyDown(iVKey); } - void CMGVarButton::Render(CDrawPort *pdp) { if (mg_pvsVar == NULL) { diff --git a/Sources/SeriousSam/GUI/Components/MenuGadget.cpp b/Sources/SeriousSam/GUI/Components/MenuGadget.cpp index 449ac78..18ef392 100644 --- a/Sources/SeriousSam/GUI/Components/MenuGadget.cpp +++ b/Sources/SeriousSam/GUI/Components/MenuGadget.cpp @@ -85,6 +85,7 @@ void CMenuGadget::Disappear(void) void CMenuGadget::Think(void) { } + void CMenuGadget::OnMouseOver(PIX pixI, PIX pixJ) { } diff --git a/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp b/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp index 589ba3d..b74bb6a 100644 --- a/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp +++ b/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp @@ -93,6 +93,7 @@ void CCustomizeKeyboardMenu::StartMenu(void) gm_iListWantedItem = 0; CGameMenu::StartMenu(); } + void CCustomizeKeyboardMenu::EndMenu(void) { ControlsMenuOff(); diff --git a/Sources/SeriousSam/GUI/Menus/MInGame.cpp b/Sources/SeriousSam/GUI/Menus/MInGame.cpp index 8368d19..93b4dbc 100644 --- a/Sources/SeriousSam/GUI/Menus/MInGame.cpp +++ b/Sources/SeriousSam/GUI/Menus/MInGame.cpp @@ -126,8 +126,7 @@ void CInGameMenu::StartMenu(void) gm_mgLabel1.mg_strText.PrintF(TRANS("Player: %s"), pc.GetNameForPrinting()); gm_mgLabel2.mg_strText = ""; - } - else { + } else { if (_pNetwork->IsServer()) { CTString strHost, strAddress; @@ -142,8 +141,8 @@ void CInGameMenu::StartMenu(void) gm_mgLabel1.mg_strText = TRANS("Address: ") + strHostName; gm_mgLabel2.mg_strText = ""; - } - else { + + } else { CTString strConfig; strConfig = TRANS(""); diff --git a/Sources/SeriousSam/GUI/Menus/MLevels.cpp b/Sources/SeriousSam/GUI/Menus/MLevels.cpp index 5fe5c6e..bf90414 100644 --- a/Sources/SeriousSam/GUI/Menus/MLevels.cpp +++ b/Sources/SeriousSam/GUI/Menus/MLevels.cpp @@ -77,8 +77,6 @@ void CLevelsMenu::FillListItems(void) gm_mgArrowDn.mg_bEnabled = !bHasLast && ctLabels>0; } - - void CLevelsMenu::StartMenu(void) { // set default parameters for the list diff --git a/Sources/SeriousSam/GUI/Menus/MLoadSave.cpp b/Sources/SeriousSam/GUI/Menus/MLoadSave.cpp index ccf834e..7d18238 100644 --- a/Sources/SeriousSam/GUI/Menus/MLoadSave.cpp +++ b/Sources/SeriousSam/GUI/Menus/MLoadSave.cpp @@ -130,6 +130,7 @@ void CLoadSaveMenu::StartMenu(void) CGameMenu::StartMenu(); } + void CLoadSaveMenu::EndMenu(void) { // delete all file infos @@ -196,11 +197,11 @@ BOOL CLoadSaveMenu::ParseFile(const CTFileName &fnm, CTString &strName) if (fnm.FileExt() != gm_fnmExt) { return FALSE; } + CTFileName fnSaveGameDescription = fnm.NoExt() + ".des"; try { strName.Load_t(fnSaveGameDescription); - } - catch (char *strError) { + } catch (char *strError) { (void)strError; strName = fnm.FileName(); diff --git a/Sources/SeriousSam/GUI/Menus/MMain.cpp b/Sources/SeriousSam/GUI/Menus/MMain.cpp index b7d9e08..5cb9edb 100644 --- a/Sources/SeriousSam/GUI/Menus/MMain.cpp +++ b/Sources/SeriousSam/GUI/Menus/MMain.cpp @@ -106,6 +106,7 @@ void CMainMenu::Initialize_t(void) gm_mgQuit.mg_pmgDown = &gm_mgSingle; gm_mgQuit.mg_pActivatedFunction = NULL; } + void CMainMenu::StartMenu(void) { gm_mgSingle.mg_bEnabled = IsMenuEnabled("Single Player"); diff --git a/Sources/SeriousSam/GUI/Menus/MNetworkStart.cpp b/Sources/SeriousSam/GUI/Menus/MNetworkStart.cpp index 3602efb..f84761f 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetworkStart.cpp +++ b/Sources/SeriousSam/GUI/Menus/MNetworkStart.cpp @@ -88,9 +88,6 @@ void CNetworkStartMenu::Initialize_t(void) gm_mgStart.mg_strText = TRANS("START"); gm_lhGadgets.AddTail(gm_mgStart.mg_lnNode); gm_mgStart.mg_pActivatedFunction = NULL; - - - } void CNetworkStartMenu::StartMenu(void) diff --git a/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp b/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp index 5339ec8..24f5bff 100644 --- a/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp +++ b/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp @@ -178,8 +178,7 @@ void CPlayerProfileMenu::SelectPlayer(INDEX iPlayer) if (_iLocalPlayer >= 0 && _iLocalPlayer<4) { _pGame->gm_aiMenuLocalPlayers[_iLocalPlayer] = iPlayer; - } - else { + } else { _pGame->gm_iSinglePlayer = iPlayer; } gm_mgNameField.mg_pstrToChange = &pc.pc_strName; @@ -215,8 +214,7 @@ void CPlayerProfileMenu::SelectPlayer(INDEX iPlayer) // no model gm_mgModel.mg_moModel.SetData(NULL); // if there is some - } - else { + } else { // set the model BOOL(*pFunc)(CModelObject *, CPlayerCharacter *, CTString &, BOOL) = (BOOL(*)(CModelObject *, CPlayerCharacter *, CTString &, BOOL))pss->ss_pvValue; @@ -258,8 +256,7 @@ void CPlayerProfileMenu::StartMenu(void) for (INDEX i = 0; i<8; i++) { gm_mgNumber[i].mg_bEnabled = TRUE; } - } - else { + } else { for (INDEX i = 0; i<8; i++) { gm_mgNumber[i].mg_bEnabled = FALSE; } @@ -281,7 +278,6 @@ void CPlayerProfileMenu::StartMenu(void) CGameMenu::StartMenu(); } - void CPlayerProfileMenu::EndMenu(void) { _pGame->SavePlayersAndControls(); diff --git a/Sources/SeriousSam/GUI/Menus/MSinglePlayer.cpp b/Sources/SeriousSam/GUI/Menus/MSinglePlayer.cpp index 3edfba9..130b66d 100644 --- a/Sources/SeriousSam/GUI/Menus/MSinglePlayer.cpp +++ b/Sources/SeriousSam/GUI/Menus/MSinglePlayer.cpp @@ -119,8 +119,7 @@ void CSinglePlayerMenu::StartMenu(void) gm_mgPlayersAndControls.mg_boxOnScreen = BoxBigRow(6.0f); gm_mgOptions.mg_boxOnScreen = BoxBigRow(7.0f); - } - else { + } else { if (gm_mgTraining.mg_lnNode.IsLinked()) { gm_mgTraining.mg_lnNode.Remove(); } diff --git a/Sources/SeriousSam/GUI/Menus/MVideoOptions.cpp b/Sources/SeriousSam/GUI/Menus/MVideoOptions.cpp index b83a6bd..f7ddaaa 100644 --- a/Sources/SeriousSam/GUI/Menus/MVideoOptions.cpp +++ b/Sources/SeriousSam/GUI/Menus/MVideoOptions.cpp @@ -62,7 +62,6 @@ void CVideoOptionsMenu::Initialize_t(void) gm_mgApply.mg_pActivatedFunction = NULL; } - void CVideoOptionsMenu::StartMenu(void) { InitVideoOptionsButtons(); diff --git a/Sources/SeriousSam/GUI/Menus/MenuPrinting.cpp b/Sources/SeriousSam/GUI/Menus/MenuPrinting.cpp index f19fa39..b3cea39 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuPrinting.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuPrinting.cpp @@ -22,18 +22,21 @@ FLOATaabbox2D BoxTitle(void) FLOAT2D(0, _fBigSizeJ), FLOAT2D(1, _fBigSizeJ)); } + FLOATaabbox2D BoxNoUp(FLOAT fRow) { return FLOATaabbox2D( FLOAT2D(_fNoStartI+fRow*(_fNoSizeI+_fNoSpaceI), _fNoUpStartJ), FLOAT2D(_fNoStartI+fRow*(_fNoSizeI+_fNoSpaceI)+_fNoSizeI, _fNoUpStartJ+_fNoSizeJ)); } + FLOATaabbox2D BoxNoDown(FLOAT fRow) { return FLOATaabbox2D( FLOAT2D(_fNoStartI+fRow*(_fNoSizeI+_fNoSpaceI), _fNoDownStartJ), FLOAT2D(_fNoStartI+fRow*(_fNoSizeI+_fNoSpaceI)+_fNoSizeI, _fNoDownStartJ+_fNoSizeJ)); } + FLOATaabbox2D BoxBigRow(FLOAT fRow) { return FLOATaabbox2D( @@ -46,6 +49,7 @@ FLOATaabbox2D BoxBigLeft(FLOAT fRow) FLOAT2D(0.1f, _fBigStartJ+fRow*_fBigSizeJ), FLOAT2D(0.45f, _fBigStartJ+(fRow+1)*_fBigSizeJ)); } + FLOATaabbox2D BoxBigRight(FLOAT fRow) { return FLOATaabbox2D( @@ -66,48 +70,56 @@ FLOATaabbox2D BoxVersion(void) FLOAT2D(0.05f, _fBigStartJ+-5.5f*_fMediumSizeJ), FLOAT2D(0.97f, _fBigStartJ+(-5.5f+1)*_fMediumSizeJ)); } + FLOATaabbox2D BoxMediumRow(FLOAT fRow) { return FLOATaabbox2D( FLOAT2D(0.05f, _fBigStartJ+fRow*_fMediumSizeJ), FLOAT2D(0.95f, _fBigStartJ+(fRow+1)*_fMediumSizeJ)); } + FLOATaabbox2D BoxKeyRow(FLOAT fRow) { return FLOATaabbox2D( FLOAT2D(0.15f, _fBigStartJ+fRow*_fMediumSizeJ), FLOAT2D(0.85f, _fBigStartJ+(fRow+1)*_fMediumSizeJ)); } + FLOATaabbox2D BoxMediumLeft(FLOAT fRow) { return FLOATaabbox2D( FLOAT2D(0.05f, _fBigStartJ+fRow*_fMediumSizeJ), FLOAT2D(0.45f, _fBigStartJ+(fRow+1)*_fMediumSizeJ)); } + FLOATaabbox2D BoxPlayerSwitch(FLOAT fRow) { return FLOATaabbox2D( FLOAT2D(0.05f, _fBigStartJ+fRow*_fMediumSizeJ), FLOAT2D(0.65f, _fBigStartJ+(fRow+1)*_fMediumSizeJ)); } + FLOATaabbox2D BoxMediumMiddle(FLOAT fRow) { return FLOATaabbox2D( FLOAT2D(_fNoStartI, _fBigStartJ+fRow*_fMediumSizeJ), FLOAT2D(0.95f, _fBigStartJ+(fRow+1)*_fMediumSizeJ)); } + FLOATaabbox2D BoxPlayerEdit(FLOAT fRow) { return FLOATaabbox2D( FLOAT2D(_fNoStartI, _fBigStartJ+fRow*_fMediumSizeJ), FLOAT2D(0.65f, _fBigStartJ+(fRow+1)*_fMediumSizeJ)); } + FLOATaabbox2D BoxMediumRight(FLOAT fRow) { return FLOATaabbox2D( FLOAT2D(0.55f, _fBigStartJ+fRow*_fMediumSizeJ), FLOAT2D(0.95f, _fBigStartJ+(fRow+1)*_fMediumSizeJ)); } + FLOATaabbox2D BoxPopup(void) { return FLOATaabbox2D(FLOAT2D(0.2f, 0.4f), FLOAT2D(0.8f, 0.6f)); @@ -119,30 +131,35 @@ FLOATaabbox2D BoxPopupLabel(void) FLOAT2D(0.22f, 0.43f), FLOAT2D(0.78f, 0.49f)); } + FLOATaabbox2D BoxPopupYesLarge(void) { return FLOATaabbox2D( FLOAT2D(0.30f, 0.51f), FLOAT2D(0.48f, 0.57f)); } + FLOATaabbox2D BoxPopupNoLarge(void) { return FLOATaabbox2D( FLOAT2D(0.52f, 0.51f), FLOAT2D(0.70f, 0.57f)); } + FLOATaabbox2D BoxPopupYesSmall(void) { return FLOATaabbox2D( FLOAT2D(0.30f, 0.54f), FLOAT2D(0.48f, 0.59f)); } + FLOATaabbox2D BoxPopupNoSmall(void) { return FLOATaabbox2D( FLOAT2D(0.52f, 0.54f), FLOAT2D(0.70f, 0.59f)); } + FLOATaabbox2D BoxChangePlayer(INDEX iTable, INDEX iButton) { return FLOATaabbox2D( @@ -205,6 +222,7 @@ FLOATaabbox2D BoxLeftColumn(FLOAT fRow) FLOAT2D(0.02f, _fBigStartJ+fRow*_fMediumSizeJ), FLOAT2D(0.15f, _fBigStartJ+(fRow+1)*_fMediumSizeJ)); } + FLOATaabbox2D BoxPlayerModel(void) { extern INDEX sam_bWideScreen; @@ -214,10 +232,12 @@ FLOATaabbox2D BoxPlayerModel(void) return FLOATaabbox2D(FLOAT2D(0.68f, 0.235f), FLOAT2D(0.68f+(0.965f-0.68f)*9.0f/12.0f, 0.78f)); } } + FLOATaabbox2D BoxPlayerModelName(void) { return FLOATaabbox2D(FLOAT2D(0.68f, 0.78f), FLOAT2D(0.965f, 0.82f)); } + PIXaabbox2D FloatBoxToPixBox(const CDrawPort *pdp, const FLOATaabbox2D &boxF) { PIX pixW = pdp->GetWidth(); @@ -243,6 +263,7 @@ void SetFontTitle(CDrawPort *pdp) pdp->SetTextScaling( 1.25f * pdp->GetWidth() /640 *pdp->dp_fWideAdjustment); pdp->SetTextAspect(1.0f); } + extern CFontData _fdBig; void SetFontBig(CDrawPort *pdp) { @@ -250,6 +271,7 @@ void SetFontBig(CDrawPort *pdp) pdp->SetTextScaling( 1.0f * pdp->GetWidth() /640 *pdp->dp_fWideAdjustment); pdp->SetTextAspect(1.0f); } + extern CFontData _fdMedium; void SetFontMedium(CDrawPort *pdp) { @@ -257,6 +279,7 @@ void SetFontMedium(CDrawPort *pdp) pdp->SetTextScaling( 1.0f * pdp->GetWidth() /640 *pdp->dp_fWideAdjustment); pdp->SetTextAspect(0.75f); } + void SetFontSmall(CDrawPort *pdp) { pdp->SetFont( _pfdConsoleFont); diff --git a/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp b/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp index ee2bb8f..b80758e 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp @@ -176,18 +176,21 @@ int qsort_CompareFileInfos_NameUp(const void *elem1, const void *elem2) const CFileInfo &fi2 = **(CFileInfo **)elem2; return strcmp(fi1.fi_strName, fi2.fi_strName); } + int qsort_CompareFileInfos_NameDn(const void *elem1, const void *elem2) { const CFileInfo &fi1 = **(CFileInfo **)elem1; const CFileInfo &fi2 = **(CFileInfo **)elem2; return -strcmp(fi1.fi_strName, fi2.fi_strName); } + int qsort_CompareFileInfos_FileUp(const void *elem1, const void *elem2) { const CFileInfo &fi1 = **(CFileInfo **)elem1; const CFileInfo &fi2 = **(CFileInfo **)elem2; return strcmp(fi1.fi_fnFile, fi2.fi_fnFile); } + int qsort_CompareFileInfos_FileDn(const void *elem1, const void *elem2) { const CFileInfo &fi1 = **(CFileInfo **)elem1; From 36c6eb19c0b56070cb4a06a497180ecbccda3d1f Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Wed, 30 Mar 2016 19:23:12 +0300 Subject: [PATCH 23/34] Continue splitting Menu.cpp into multiple files. --- Sources/SeriousSam/GUI/Menus/Menu.cpp | 2286 +---------------- Sources/SeriousSam/GUI/Menus/MenuStuff.cpp | 65 + Sources/SeriousSam/GUI/Menus/MenuStuff.h | 7 + Sources/SeriousSam/GUI/Menus/Menu_actions.cpp | 1354 ++++++++++ .../SeriousSam/GUI/Menus/Menu_starters.cpp | 1024 ++++++++ Sources/SeriousSam/GUI/Menus/Menu_starters.h | 67 + Sources/SeriousSam/SeriousSam.vcxproj | 3 + Sources/SeriousSam/SeriousSam.vcxproj.filters | 9 + 8 files changed, 2531 insertions(+), 2284 deletions(-) create mode 100644 Sources/SeriousSam/GUI/Menus/Menu_actions.cpp create mode 100644 Sources/SeriousSam/GUI/Menus/Menu_starters.cpp create mode 100644 Sources/SeriousSam/GUI/Menus/Menu_starters.h diff --git a/Sources/SeriousSam/GUI/Menus/Menu.cpp b/Sources/SeriousSam/GUI/Menus/Menu.cpp index f1c862d..ad908ee 100644 --- a/Sources/SeriousSam/GUI/Menus/Menu.cpp +++ b/Sources/SeriousSam/GUI/Menus/Menu.cpp @@ -55,11 +55,11 @@ #include "MVideoOptions.h" #include "MenuStuff.h" +#include "Menu_starters.h" // macros for translating radio button text arrays #define TRANSLATERADIOARRAY(array) TranslateRadioTexts(array, ARRAYCOUNT(array)) -extern CMenuGadget *_pmgLastActivatedGadget; extern BOOL bMenuActive; extern BOOL bMenuRendering; extern CTextureObject *_ptoLogoCT; @@ -73,15 +73,6 @@ GameMode _gmMenuGameMode = GM_NONE; GameMode _gmRunningGameMode = GM_NONE; CListHead _lhServers; -static INDEX sam_old_bFullScreenActive; -static INDEX sam_old_iScreenSizeI; -static INDEX sam_old_iScreenSizeJ; -static INDEX sam_old_iDisplayDepth; -static INDEX sam_old_iDisplayAdapter; -static INDEX sam_old_iGfxAPI; -static INDEX sam_old_iVideoSetup; // 0==speed, 1==normal, 2==quality, 3==custom - -ENGINE_API extern INDEX snd_iFormat; extern BOOL IsCDInDrive(void); @@ -122,29 +113,8 @@ void InitActionsForSplitStartMenu(); void InitActionsForVideoOptionsMenu(); void InitActionsForVarMenu(); -// functions to activate when user chose 'yes/no' on confirmation -void (*_pConfimedYes)(void) = NULL; -void (*_pConfimedNo)(void) = NULL; - void FixupBackButton(CGameMenu *pgm); -void ConfirmYes(void) -{ - if (_pConfimedYes!=NULL) { - _pConfimedYes(); - } - void MenuGoToParent(void); - MenuGoToParent(); -} -void ConfirmNo(void) -{ - if (_pConfimedNo!=NULL) { - _pConfimedNo(); - } - void MenuGoToParent(void); - MenuGoToParent(); -} - extern void ControlsMenuOn() { _pGame->SavePlayersAndControls(); @@ -179,7 +149,6 @@ extern BOOL _bMouseUsedLast = FALSE; extern CMenuGadget *_pmgUnderCursor = NULL; extern BOOL _bDefiningKey; extern BOOL _bEditingString; -extern BOOL _bMouseRight = FALSE; // thumbnail for showing in menu CTextureObject _toThumbnail; @@ -246,13 +215,6 @@ CSelectPlayersMenu gmSelectPlayersMenu; // -------- console variable adjustment menu extern BOOL _bVarChanged = FALSE; -INDEX _ctResolutions = 0; -CTString * _astrResolutionTexts = NULL; -CDisplayMode *_admResolutionModes = NULL; -INDEX _ctAdapters = 0; -CTString * _astrAdapterTexts = NULL; - - extern void PlayMenuSound(CSoundData *psd) { if (_psoMenuSound!=NULL && !_psoMenuSound->IsPlaying()) { @@ -260,22 +222,6 @@ extern void PlayMenuSound(CSoundData *psd) } } -CModelObject *AddAttachment_t(CModelObject *pmoParent, INDEX iPosition, - const CTFileName &fnmModel, INDEX iAnim, - const CTFileName &fnmTexture, - const CTFileName &fnmReflection, - const CTFileName &fnmSpecular) -{ - CAttachmentModelObject *pamo = pmoParent->AddAttachmentModel(iPosition); - ASSERT(pamo!=NULL); - pamo->amo_moModelObject.SetData_t(fnmModel); - pamo->amo_moModelObject.PlayAnim(iAnim, AOF_LOOPING); - pamo->amo_moModelObject.mo_toTexture.SetData_t(fnmTexture); - pamo->amo_moModelObject.mo_toReflection.SetData_t(fnmReflection); - pamo->amo_moModelObject.mo_toSpecular.SetData_t(fnmSpecular); - return &pamo->amo_moModelObject; -} - // translate all texts in array for one radio button void TranslateRadioTexts(CTString astr[], INDEX ct) { @@ -284,35 +230,6 @@ void TranslateRadioTexts(CTString astr[], INDEX ct) } } -// make description for a given resolution -CTString GetResolutionDescription(CDisplayMode &dm) -{ - CTString str; - // if dual head - if (dm.IsDualHead()) { - str.PrintF(TRANS("%dx%d double"), dm.dm_pixSizeI/2, dm.dm_pixSizeJ); - // if widescreen - } else if (dm.IsWideScreen()) { - str.PrintF(TRANS("%dx%d wide"), dm.dm_pixSizeI, dm.dm_pixSizeJ); - // otherwise it is normal - } else { - str.PrintF("%dx%d", dm.dm_pixSizeI, dm.dm_pixSizeJ); - } - return str; -} - -// make description for a given resolution -void SetResolutionInList(INDEX iRes, PIX pixSizeI, PIX pixSizeJ) -{ - ASSERT(iRes>=0 && iRes<_ctResolutions); - - CTString &str = _astrResolutionTexts[iRes]; - CDisplayMode &dm = _admResolutionModes[iRes]; - dm.dm_pixSizeI = pixSizeI; - dm.dm_pixSizeJ = pixSizeJ; - str = GetResolutionDescription(dm); -} - // set new thumbnail void SetThumbnail(CTFileName fn) { @@ -338,55 +255,6 @@ void ClearThumbnail(void) _pShell->Execute( "FreeUnusedStock();"); } -// start load/save menus depending on type of game running -void QuickSaveFromMenu() -{ - _pShell->SetINDEX("gam_bQuickSave", 2); // force save with reporting - StopMenus(TRUE); -} - -void StartCurrentLoadMenu() -{ - if (_gmRunningGameMode==GM_NETWORK) { - void StartNetworkLoadMenu(void); - StartNetworkLoadMenu(); - } else if (_gmRunningGameMode==GM_SPLIT_SCREEN) { - void StartSplitScreenLoadMenu(void); - StartSplitScreenLoadMenu(); - } else { - void StartSinglePlayerLoadMenu(void); - StartSinglePlayerLoadMenu(); - } -} - -void StartCurrentSaveMenu() -{ - if (_gmRunningGameMode==GM_NETWORK) { - void StartNetworkSaveMenu(void); - StartNetworkSaveMenu(); - } else if (_gmRunningGameMode==GM_SPLIT_SCREEN) { - void StartSplitScreenSaveMenu(void); - StartSplitScreenSaveMenu(); - } else { - void StartSinglePlayerSaveMenu(void); - StartSinglePlayerSaveMenu(); - } -} - -void StartCurrentQuickLoadMenu() -{ - if (_gmRunningGameMode==GM_NETWORK) { - void StartNetworkQuickLoadMenu(void); - StartNetworkQuickLoadMenu(); - } else if (_gmRunningGameMode==GM_SPLIT_SCREEN) { - void StartSplitScreenQuickLoadMenu(void); - StartSplitScreenQuickLoadMenu(); - } else { - void StartSinglePlayerQuickLoadMenu(void); - StartSinglePlayerQuickLoadMenu(); - } -} - void StartMenus(char *str) { _tmMenuLastTickDone=_pTimer->GetRealTimeTick(); @@ -467,137 +335,8 @@ BOOL IsMenusInRoot(void) } // ---------------------- When activated functions -void StartSinglePlayerMenu(void) -{ - ChangeToMenu( &gmSinglePlayerMenu); -} -void ExitGame(void) -{ - _bRunning = FALSE; - _bQuitScreen = TRUE; -} -CTFileName _fnmModSelected; -CTString _strModURLSelected; -CTString _strModServerSelected; - -void ExitAndSpawnExplorer(void) -{ - _bRunning = FALSE; - _bQuitScreen = FALSE; - extern CTString _strURLToVisit; - _strURLToVisit = _strModURLSelected; -} - -void ExitConfirm(void) -{ - _pConfimedYes = &ExitGame; - _pConfimedNo = NULL; - gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); - gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - gmConfirmMenu.BeLarge(); - ChangeToMenu( &gmConfirmMenu); -} - -void StopConfirm(void) -{ - extern void StopCurrentGame(void); - _pConfimedYes = &StopCurrentGame; - _pConfimedNo = NULL; - gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); - gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - gmConfirmMenu.BeLarge(); - ChangeToMenu( &gmConfirmMenu); -} - -void ModConnect(void) -{ - extern CTFileName _fnmModToLoad; - extern CTString _strModServerJoin; - _fnmModToLoad = _fnmModSelected; - _strModServerJoin = _strModServerSelected; -} - -void ModConnectConfirm(void) -{ - if (_fnmModSelected==" ") { - _fnmModSelected = CTString("SeriousSam"); - } - CTFileName fnmModPath = "Mods\\"+_fnmModSelected+"\\"; - if (!FileExists(fnmModPath+"BaseWriteInclude.lst") - &&!FileExists(fnmModPath+"BaseWriteExclude.lst") - &&!FileExists(fnmModPath+"BaseBrowseInclude.lst") - &&!FileExists(fnmModPath+"BaseBrowseExclude.lst")) { - extern void ModNotInstalled(void); - ModNotInstalled(); - return; - } - - CPrintF(TRANS("Server is running a different MOD (%s).\nYou need to reload to connect.\n"), _fnmModSelected); - _pConfimedYes = &ModConnect; - _pConfimedNo = NULL; - gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("CHANGE THE MOD?"); - gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - gmConfirmMenu.BeLarge(); - ChangeToMenu( &gmConfirmMenu); -} - -void SaveConfirm(void) -{ - extern void OnFileSaveOK(void); - _pConfimedYes = &OnFileSaveOK; - _pConfimedNo = NULL; - gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("OVERWRITE?"); - gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - gmConfirmMenu.BeLarge(); - ChangeToMenu( &gmConfirmMenu); -} - -void ModLoadYes(void) -{ - extern CTFileName _fnmModToLoad; - _fnmModToLoad = _fnmModSelected; -} - -void ModConfirm(void) -{ - _pConfimedYes = &ModLoadYes; - _pConfimedNo = NULL; - gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("LOAD THIS MOD?"); - gmConfirmMenu.gm_pgmParentMenu = &gmLoadSaveMenu; - gmConfirmMenu.BeLarge(); - ChangeToMenu( &gmConfirmMenu); -} - -void VideoConfirm(void) -{ - // FIXUP: keyboard focus lost when going from full screen to window mode - // due to WM_MOUSEMOVE being sent - _bMouseUsedLast = FALSE; - _pmgUnderCursor = gmConfirmMenu.gm_pmgSelectedByDefault; - - _pConfimedYes = NULL; - void RevertVideoSettings(void); - _pConfimedNo = RevertVideoSettings; - - gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("KEEP THIS SETTING?"); - gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - gmConfirmMenu.BeLarge(); - ChangeToMenu( &gmConfirmMenu); -} - -void CDConfirm(void (*pOk)(void)) -{ - _pConfimedYes = pOk; - _pConfimedNo = NULL; - gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("PLEASE INSERT GAME CD?"); - if (pgmCurrentMenu!=&gmConfirmMenu) { - gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - gmConfirmMenu.BeLarge(); - ChangeToMenu( &gmConfirmMenu); - } -} void StopCurrentGame(void) { @@ -607,135 +346,6 @@ void StopCurrentGame(void) StartMenus(""); } -void StartSinglePlayerNewMenuCustom(void) -{ - gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmLevelsMenu; - ChangeToMenu( &gmSinglePlayerNewMenu); -} - -void StartSinglePlayerNewMenu(void) -{ - gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; - extern CTString sam_strFirstLevel; - _pGame->gam_strCustomLevel = sam_strFirstLevel; - ChangeToMenu( &gmSinglePlayerNewMenu); -} - -void StartSinglePlayerGame(void) -{ -/* if (!IsCDInDrive()) { - CDConfirm(StartSinglePlayerGame); - return; - } - */ - - _pGame->gm_StartSplitScreenCfg = CGame::SSC_PLAY1; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_iSinglePlayer; - _pGame->gm_aiStartLocalPlayers[1] = -1; - _pGame->gm_aiStartLocalPlayers[2] = -1; - _pGame->gm_aiStartLocalPlayers[3] = -1; - - _pGame->gm_strNetworkProvider = "Local"; - CUniversalSessionProperties sp; - _pGame->SetSinglePlayerSession(sp); - - if (_pGame->NewGame( _pGame->gam_strCustomLevel, _pGame->gam_strCustomLevel, sp)) - { - StopMenus(); - _gmRunningGameMode = GM_SINGLE_PLAYER; - } else { - _gmRunningGameMode = GM_NONE; - } -} - -void StartSinglePlayerGame_Tourist(void) -{ - _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_TOURIST); - _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); - StartSinglePlayerGame(); -} - -void StartSinglePlayerGame_Easy(void) -{ - _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EASY); - _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); - StartSinglePlayerGame(); -} - -void StartSinglePlayerGame_Normal(void) -{ - _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_NORMAL); - _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); - StartSinglePlayerGame(); -} - -void StartSinglePlayerGame_Hard(void) -{ - _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_HARD); - _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); - StartSinglePlayerGame(); -} - -void StartSinglePlayerGame_Serious(void) -{ - _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EXTREME); - _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); - StartSinglePlayerGame(); -} - -void StartSinglePlayerGame_Mental(void) -{ - _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EXTREME+1); - _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); - StartSinglePlayerGame(); -} - -void StartTraining(void) -{ - gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; - extern CTString sam_strTrainingLevel; - _pGame->gam_strCustomLevel = sam_strTrainingLevel; - ChangeToMenu( &gmSinglePlayerNewMenu); -} - -void StartTechTest(void) -{ - gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; - extern CTString sam_strTechTestLevel; - _pGame->gam_strCustomLevel = sam_strTechTestLevel; - StartSinglePlayerGame_Normal(); -} - -void StartChangePlayerMenuFromOptions(void) -{ - _bPlayerMenuFromSinglePlayer = FALSE; - gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; - gmPlayerProfile.gm_pgmParentMenu = &gmOptionsMenu; - ChangeToMenu( &gmPlayerProfile); -} - -void StartChangePlayerMenuFromSinglePlayer(void) -{ - _iLocalPlayer = -1; - _bPlayerMenuFromSinglePlayer = TRUE; - gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; - gmPlayerProfile.gm_pgmParentMenu = &gmSinglePlayerMenu; - ChangeToMenu( &gmPlayerProfile); -} - -void StartControlsMenuFromPlayer(void) -{ - gmControls.gm_pgmParentMenu = &gmPlayerProfile; - ChangeToMenu( &gmControls); -} - -void StartControlsMenuFromOptions(void) -{ - gmControls.gm_pgmParentMenu = &gmOptionsMenu; - ChangeToMenu( &gmControls); -} - void DisabledFunction(void) { gmDisabledFunction.gm_pgmParentMenu = pgmCurrentMenu; @@ -744,1061 +354,10 @@ void DisabledFunction(void) ChangeToMenu( &gmDisabledFunction); } -void ModNotInstalled(void) -{ - _pConfimedYes = &ExitAndSpawnExplorer; - _pConfimedNo = NULL; - gmConfirmMenu.gm_mgConfirmLabel.mg_strText.PrintF( - TRANS("You don't have MOD '%s' installed.\nDo you want to visit its web site?"), (const char*)_fnmModSelected); - gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - gmConfirmMenu.BeSmall(); - ChangeToMenu( &gmConfirmMenu); - -/* - gmDisabledFunction.gm_pgmParentMenu = pgmCurrentMenu; - mgDisabledMenuButton.mg_strText.PrintF( - TRANS("You don't have MOD '%s' installed.\nPlease visit Croteam website for updates."), _fnmModSelected); - mgDisabledTitle.mg_strText = TRANS("MOD REQUIRED"); - _strModURLSelected - ChangeToMenu( &gmDisabledFunction); - */ -} - -CTFileName _fnDemoToPlay; -void StartDemoPlay(void) -{ - _pGame->gm_StartSplitScreenCfg = CGame::SSC_OBSERVER; - // play the demo - _pGame->gm_strNetworkProvider = "Local"; - if( _pGame->StartDemoPlay( _fnDemoToPlay)) - { - // exit menu and pull up the console - StopMenus(); - if( _pGame->gm_csConsoleState!=CS_OFF) _pGame->gm_csConsoleState = CS_TURNINGOFF; - _gmRunningGameMode = GM_DEMO; - } else { - _gmRunningGameMode = GM_NONE; - } -} - -void StartSelectLevelFromSingle(void) -{ - FilterLevels(GetSpawnFlagsForGameType(-1)); - _pAfterLevelChosen = StartSinglePlayerNewMenuCustom; - ChangeToMenu( &gmLevelsMenu); - gmLevelsMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; -} - -void StartNetworkGame(void) -{ -// _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - - CTFileName fnWorld = _pGame->gam_strCustomLevel; - - _pGame->gm_strNetworkProvider = "TCP/IP Server"; - CUniversalSessionProperties sp; - _pGame->SetMultiPlayerSession(sp); - if (_pGame->NewGame( _pGame->gam_strSessionName, fnWorld, sp)) - { - StopMenus(); - _gmRunningGameMode = GM_NETWORK; - // if starting a dedicated server - if (_pGame->gm_MenuSplitScreenCfg==CGame::SSC_DEDICATED) { - // pull down the console - extern INDEX sam_bToggleConsole; - sam_bToggleConsole = TRUE; - } - } else { - _gmRunningGameMode = GM_NONE; - } -} - -void JoinNetworkGame(void) -{ -// _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - - _pGame->gm_strNetworkProvider = "TCP/IP Client"; - if (_pGame->JoinGame( CNetworkSession( _pGame->gam_strJoinAddress))) - { - StopMenus(); - _gmRunningGameMode = GM_NETWORK; - } else { - if (_pNetwork->ga_strRequiredMod != "") { - extern CTFileName _fnmModToLoad; - extern CTString _strModServerJoin; - char strModName[256] = {0}; - char strModURL[256] = {0}; - _pNetwork->ga_strRequiredMod.ScanF("%250[^\\]\\%s", &strModName, &strModURL); - _fnmModSelected = CTString(strModName); - _strModURLSelected = strModURL; - if (_strModURLSelected="") { - _strModURLSelected = "http://www.croteam.com/mods/Old"; - } - _strModServerSelected.PrintF("%s:%s", _pGame->gam_strJoinAddress, _pShell->GetValue("net_iPort")); - ModConnectConfirm(); - } - _gmRunningGameMode = GM_NONE; - } -} - -void StartHighScoreMenu(void) -{ - gmHighScoreMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu( &gmHighScoreMenu); -} - -CTFileName _fnGameToLoad; -void StartNetworkLoadGame(void) -{ - -// _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - - _pGame->gm_strNetworkProvider = "TCP/IP Server"; - if (_pGame->LoadGame( _fnGameToLoad)) - { - StopMenus(); - _gmRunningGameMode = GM_NETWORK; - } else { - _gmRunningGameMode = GM_NONE; - } -} - -void StartSplitScreenGame(void) -{ -// _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - - CTFileName fnWorld = _pGame->gam_strCustomLevel; - - _pGame->gm_strNetworkProvider = "Local"; - CUniversalSessionProperties sp; - _pGame->SetMultiPlayerSession(sp); - if (_pGame->NewGame( fnWorld.FileName(), fnWorld, sp)) - { - StopMenus(); - _gmRunningGameMode = GM_SPLIT_SCREEN; - } else { - _gmRunningGameMode = GM_NONE; - } -} - -void StartSplitScreenGameLoad(void) -{ -// _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - - _pGame->gm_strNetworkProvider = "Local"; - if (_pGame->LoadGame( _fnGameToLoad)) - { - StopMenus(); - _gmRunningGameMode = GM_SPLIT_SCREEN; - } else { - _gmRunningGameMode = GM_NONE; - } -} - -void StartSelectPlayersMenuFromSplit(void) -{ - gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - gmSelectPlayersMenu.gm_bAllowObserving = FALSE; - gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; - gmSelectPlayersMenu.gm_pgmParentMenu = &gmSplitStartMenu; - ChangeToMenu( &gmSelectPlayersMenu); -} - -void StartSelectPlayersMenuFromNetwork(void) -{ - gmSelectPlayersMenu.gm_bAllowDedicated = TRUE; - gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkGame; - gmSelectPlayersMenu.gm_pgmParentMenu = &gmNetworkStartMenu; - ChangeToMenu( &gmSelectPlayersMenu); -} - -void StartSelectPlayersMenuFromOpen(void) -{ - gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; - gmSelectPlayersMenu.gm_pgmParentMenu = &gmNetworkOpenMenu; - ChangeToMenu( &gmSelectPlayersMenu); - - /*if (sam_strNetworkSettings=="")*/ { - void StartNetworkSettingsMenu(void); - StartNetworkSettingsMenu(); - gmLoadSaveMenu.gm_bNoEscape = TRUE; - gmLoadSaveMenu.gm_pgmParentMenu = &gmNetworkOpenMenu; - gmLoadSaveMenu.gm_pgmNextMenu = &gmSelectPlayersMenu; - } -} -void StartSelectPlayersMenuFromServers(void) -{ - gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; - gmSelectPlayersMenu.gm_pgmParentMenu = &gmServersMenu; - ChangeToMenu( &gmSelectPlayersMenu); - - /*if (sam_strNetworkSettings=="")*/ { - void StartNetworkSettingsMenu(void); - StartNetworkSettingsMenu(); - gmLoadSaveMenu.gm_bNoEscape = TRUE; - gmLoadSaveMenu.gm_pgmParentMenu = &gmServersMenu; - gmLoadSaveMenu.gm_pgmNextMenu = &gmSelectPlayersMenu; - } -} -void StartSelectServerLAN(void) -{ - gmServersMenu.m_bInternet = FALSE; - ChangeToMenu( &gmServersMenu); - gmServersMenu.gm_pgmParentMenu = &gmNetworkJoinMenu; -} -void StartSelectServerNET(void) -{ - gmServersMenu.m_bInternet = TRUE; - ChangeToMenu( &gmServersMenu); - gmServersMenu.gm_pgmParentMenu = &gmNetworkJoinMenu; -} - -void StartSelectLevelFromSplit(void) -{ - FilterLevels(GetSpawnFlagsForGameType(gmSplitStartMenu.gm_mgGameType.mg_iSelected)); - void StartSplitStartMenu(void); - _pAfterLevelChosen = StartSplitStartMenu; - ChangeToMenu( &gmLevelsMenu); - gmLevelsMenu.gm_pgmParentMenu = &gmSplitStartMenu; -} -void StartSelectLevelFromNetwork(void) -{ - FilterLevels(GetSpawnFlagsForGameType(gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); - void StartNetworkStartMenu(void); - _pAfterLevelChosen = StartNetworkStartMenu; - ChangeToMenu( &gmLevelsMenu); - gmLevelsMenu.gm_pgmParentMenu = &gmNetworkStartMenu; -} - -void StartSelectPlayersMenuFromSplitScreen(void) -{ - gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - gmSelectPlayersMenu.gm_bAllowObserving = FALSE; -// gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; - gmSelectPlayersMenu.gm_pgmParentMenu = &gmSplitScreenMenu; - ChangeToMenu( &gmSelectPlayersMenu); -} -void StartSelectPlayersMenuFromNetworkLoad(void) -{ - gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkLoadGame; - gmSelectPlayersMenu.gm_pgmParentMenu = &gmLoadSaveMenu; - ChangeToMenu( &gmSelectPlayersMenu); -} - -void StartSelectPlayersMenuFromSplitScreenLoad(void) -{ - gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - gmSelectPlayersMenu.gm_bAllowObserving = FALSE; - gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGameLoad; - gmSelectPlayersMenu.gm_pgmParentMenu = &gmLoadSaveMenu; - ChangeToMenu( &gmSelectPlayersMenu); -} - -BOOL LSLoadSinglePlayer(const CTFileName &fnm) -{ - _pGame->gm_StartSplitScreenCfg = CGame::SSC_PLAY1; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_iSinglePlayer; - _pGame->gm_aiStartLocalPlayers[1] = -1; - _pGame->gm_aiStartLocalPlayers[2] = -1; - _pGame->gm_aiStartLocalPlayers[3] = -1; - _pGame->gm_strNetworkProvider = "Local"; - if (_pGame->LoadGame(fnm)) { - StopMenus(); - _gmRunningGameMode = GM_SINGLE_PLAYER; - } else { - _gmRunningGameMode = GM_NONE; - } - return TRUE; -} - -BOOL LSLoadNetwork(const CTFileName &fnm) -{ - // call local players menu - _fnGameToLoad = fnm; - StartSelectPlayersMenuFromNetworkLoad(); - return TRUE; -} - -BOOL LSLoadSplitScreen(const CTFileName &fnm) -{ - // call local players menu - _fnGameToLoad = fnm; - StartSelectPlayersMenuFromSplitScreenLoad(); - return TRUE; -} - -extern BOOL LSLoadDemo(const CTFileName &fnm) -{ - // call local players menu - _fnDemoToPlay = fnm; - StartDemoPlay(); - return TRUE; -} - -BOOL LSLoadPlayerModel(const CTFileName &fnm) -{ - // get base filename - CTString strBaseName = fnm.FileName(); - // set it for current player - CPlayerCharacter &pc = _pGame->gm_apcPlayers[*gmPlayerProfile.gm_piCurrentPlayer]; - CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; - memset(pps->ps_achModelFile, 0, sizeof(pps->ps_achModelFile)); - strncpy(pps->ps_achModelFile, strBaseName, sizeof(pps->ps_achModelFile)); - - void MenuGoToParent(void); - MenuGoToParent(); - return TRUE; -} - -BOOL LSLoadControls(const CTFileName &fnm) -{ - try { - ControlsMenuOn(); - _pGame->gm_ctrlControlsExtra.Load_t(fnm); - ControlsMenuOff(); - } catch (char *strError) { - CPrintF("%s", strError); - } - - void MenuGoToParent(void); - MenuGoToParent(); - return TRUE; -} - -BOOL LSLoadAddon(const CTFileName &fnm) -{ - extern INDEX _iAddonExecState; - extern CTFileName _fnmAddonToExec; - _iAddonExecState = 1; - _fnmAddonToExec = fnm; - return TRUE; -} - -BOOL LSLoadMod(const CTFileName &fnm) -{ - _fnmModSelected = fnm; - ModConfirm(); - return TRUE; -} - -BOOL LSLoadCustom(const CTFileName &fnm) -{ - gmVarMenu.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); -// LoadStringVar(fnm.NoExt()+".des", mgVarTitle.mg_strText); -// mgVarTitle.mg_strText.OnlyFirstLine(); - gmVarMenu.gm_fnmMenuCFG = fnm; - gmVarMenu.gm_pgmParentMenu = &gmLoadSaveMenu; - ChangeToMenu( &gmVarMenu); - return TRUE; -} - -BOOL LSLoadNetSettings(const CTFileName &fnm) -{ - sam_strNetworkSettings = fnm; - CTString strCmd; - strCmd.PrintF("include \"%s\"", (const char*)sam_strNetworkSettings); - _pShell->Execute(strCmd); - - void MenuGoToParent(void); - MenuGoToParent(); - return TRUE; -} - -// same function for saving in singleplay, network and splitscreen -BOOL LSSaveAnyGame(const CTFileName &fnm) -{ - if( _pGame->SaveGame( fnm)) { - StopMenus(); - return TRUE; - } else { - return FALSE; - } -} - -BOOL LSSaveDemo(const CTFileName &fnm) -{ - // save the demo - if(_pGame->StartDemoRec(fnm)) { - StopMenus(); - return TRUE; - } else { - return FALSE; - } -} - -// save/load menu calling functions -void StartPlayerModelLoadMenu(void) -{ - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CHOOSE MODEL"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = FALSE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Models\\Player\\"); - gmLoadSaveMenu.gm_fnmSelected = _strLastPlayerAppearance; - gmLoadSaveMenu.gm_fnmExt = CTString(".amc"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadPlayerModel; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - gmLoadSaveMenu.gm_pgmParentMenu = &gmPlayerProfile; - ChangeToMenu( &gmLoadSaveMenu); -} - -void StartControlsLoadMenu(void) -{ - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD CONTROLS"); - gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = FALSE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Controls\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".ctl"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadControls; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - gmLoadSaveMenu.gm_pgmParentMenu = &gmControls; - ChangeToMenu( &gmLoadSaveMenu); -} - -void StartCustomLoadMenu(void) -{ - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); - gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; - gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = FALSE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Scripts\\CustomOptions\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".cfg"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadCustom; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - gmLoadSaveMenu.gm_pgmParentMenu = &gmOptionsMenu; - ChangeToMenu( &gmLoadSaveMenu); -} - -void StartAddonsLoadMenu(void) -{ - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("EXECUTE ADDON"); - gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; - gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = FALSE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Scripts\\Addons\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".ini"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadAddon; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - gmLoadSaveMenu.gm_pgmParentMenu = &gmOptionsMenu; - ChangeToMenu( &gmLoadSaveMenu); -} - -void StartModsLoadMenu(void) -{ - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CHOOSE MOD"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = FALSE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Mods\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".des"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadMod; - - gmLoadSaveMenu.gm_pgmParentMenu = &gmMainMenu; - ChangeToMenu( &gmLoadSaveMenu); -} - -void StartNetworkSettingsMenu(void) -{ - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CONNECTION SETTINGS"); - gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = FALSE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Scripts\\NetSettings\\"); - gmLoadSaveMenu.gm_fnmSelected = sam_strNetworkSettings; - gmLoadSaveMenu.gm_fnmExt = CTString(".ini"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetSettings; - if (sam_strNetworkSettings=="") { - gmLoadSaveMenu.gm_mgNotes.mg_strText = TRANS( - "Before joining a network game,\n" - "you have to adjust your connection parameters.\n" - "Choose one option from the list.\n" - "If you have problems with connection, you can adjust\n" - "these parameters again from the Options menu.\n" - ); - } else { - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - } - - gmLoadSaveMenu.gm_pgmParentMenu = &gmOptionsMenu; - ChangeToMenu( &gmLoadSaveMenu); -} - -void SetQuickLoadNotes(void) -{ - if (_pShell->GetINDEX("gam_iQuickSaveSlots")<=8) { - gmLoadSaveMenu.gm_mgNotes.mg_strText = TRANS( - "In-game QuickSave shortcuts:\n" - "F6 - save a new QuickSave\n" - "F9 - load the last QuickSave\n"); - } else { - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - } -} - -void StartSinglePlayerQuickLoadMenu(void) -{ - _gmMenuGameMode = GM_SINGLE_PLAYER; - - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\Quick\\", _pGame->gm_iSinglePlayer); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSinglePlayer; - SetQuickLoadNotes(); - - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu( &gmLoadSaveMenu); -} - -void StartSinglePlayerLoadMenu(void) -{ - _gmMenuGameMode = GM_SINGLE_PLAYER; - - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSinglePlayer; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu( &gmLoadSaveMenu); -} -void StartSinglePlayerSaveMenu(void) -{ - if( _gmRunningGameMode != GM_SINGLE_PLAYER) return; - // if no live players - if (_pGame->GetPlayersCount()>0 && _pGame->GetLivePlayersCount()<=0) { - // do nothing - return; - } - _gmMenuGameMode = GM_SINGLE_PLAYER; - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = TRUE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); - - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu( &gmLoadSaveMenu); -} - -void StartDemoLoadMenu(void) -{ - _gmMenuGameMode = GM_DEMO; - - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("PLAY DEMO"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Demos\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".dem"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadDemo; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu( &gmLoadSaveMenu); -} - -void StartDemoSaveMenu(void) -{ - if( _gmRunningGameMode == GM_NONE) return; - _gmMenuGameMode = GM_DEMO; - - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("RECORD DEMO"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; - gmLoadSaveMenu.gm_bSave = TRUE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Demos\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmBaseName = CTString("Demo"); - gmLoadSaveMenu.gm_fnmExt = CTString(".dem"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveDemo; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(FALSE); - - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu( &gmLoadSaveMenu); -} - -void StartNetworkQuickLoadMenu(void) -{ - _gmMenuGameMode = GM_NETWORK; - - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\Network\\Quick\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetwork; - SetQuickLoadNotes(); - - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu( &gmLoadSaveMenu); -} - -void StartNetworkLoadMenu(void) -{ - _gmMenuGameMode = GM_NETWORK; - - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\Network\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetwork; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu( &gmLoadSaveMenu); -} - -void StartNetworkSaveMenu(void) -{ - if( _gmRunningGameMode != GM_NETWORK) return; - _gmMenuGameMode = GM_NETWORK; - - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = TRUE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\Network\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); - - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu( &gmLoadSaveMenu); -} - -void StartSplitScreenQuickLoadMenu(void) -{ - _gmMenuGameMode = GM_SPLIT_SCREEN; - - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\Quick\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSplitScreen; - SetQuickLoadNotes(); - - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu( &gmLoadSaveMenu); -} - -void StartSplitScreenLoadMenu(void) -{ - _gmMenuGameMode = GM_SPLIT_SCREEN; - - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSplitScreen; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu( &gmLoadSaveMenu); -} - -void StartSplitScreenSaveMenu(void) -{ - if( _gmRunningGameMode != GM_SPLIT_SCREEN) return; - _gmMenuGameMode = GM_SPLIT_SCREEN; - - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = TRUE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); - - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu( &gmLoadSaveMenu); -} - -// game options var settings -void StartVarGameOptions(void) -{ - gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); - gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\GameOptions.cfg"); - ChangeToMenu( &gmVarMenu); -} - -void StartSinglePlayerGameOptions(void) -{ - gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); - gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\SPOptions.cfg"); - ChangeToMenu( &gmVarMenu); - gmVarMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; -} - -void StartGameOptionsFromNetwork(void) -{ - StartVarGameOptions(); - gmVarMenu.gm_pgmParentMenu = &gmNetworkStartMenu; -} - -void StartGameOptionsFromSplitScreen(void) -{ - StartVarGameOptions(); - gmVarMenu.gm_pgmParentMenu = &gmSplitStartMenu; -} - -// rendering options var settings -void StartRenderingOptionsMenu(void) -{ - gmVarMenu.gm_mgTitle.mg_strText = TRANS("RENDERING OPTIONS"); - gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\RenderingOptions.cfg"); - gmVarMenu.gm_pgmParentMenu = &gmVideoOptionsMenu; - ChangeToMenu( &gmVarMenu); -} - -void StartCustomizeKeyboardMenu(void) -{ - ChangeToMenu( &gmCustomizeKeyboardMenu); -} - -void StartCustomizeAxisMenu(void) -{ - ChangeToMenu( &gmCustomizeAxisMenu); -} - -void StopRecordingDemo(void) -{ - _pNetwork->StopDemoRec(); - void SetDemoStartStopRecText(void); - SetDemoStartStopRecText(); -} - -void StartOptionsMenu(void) -{ - gmOptionsMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu( &gmOptionsMenu); -} - -static void ResolutionToSize(INDEX iRes, PIX &pixSizeI, PIX &pixSizeJ) -{ - ASSERT(iRes>=0 && iRes<_ctResolutions); - CDisplayMode &dm = _admResolutionModes[iRes]; - pixSizeI = dm.dm_pixSizeI; - pixSizeJ = dm.dm_pixSizeJ; -} - -static void SizeToResolution(PIX pixSizeI, PIX pixSizeJ, INDEX &iRes) -{ - for(iRes=0; iRes<_ctResolutions; iRes++) { - CDisplayMode &dm = _admResolutionModes[iRes]; - if (dm.dm_pixSizeI==pixSizeI && dm.dm_pixSizeJ==pixSizeJ) { - return; - } - } - // if none was found, search for default - for(iRes=0; iRes<_ctResolutions; iRes++) { - CDisplayMode &dm = _admResolutionModes[iRes]; - if (dm.dm_pixSizeI==640 && dm.dm_pixSizeJ==480) { - return; - } - } - // if still none found - ASSERT(FALSE); // this should never happen - // return first one - iRes = 0; -} - - -static INDEX APIToSwitch(enum GfxAPIType gat) -{ - switch(gat) { - case GAT_OGL: return 0; -#ifdef SE1_D3D - case GAT_D3D: return 1; -#endif // SE1_D3D - default: ASSERT(FALSE); return 0; - } -} - -static enum GfxAPIType SwitchToAPI(INDEX i) -{ - switch(i) { - case 0: return GAT_OGL; -#ifdef SE1_D3D - case 1: return GAT_D3D; -#endif // SE1_D3D - default: ASSERT(FALSE); return GAT_OGL; - } -} - -static INDEX DepthToSwitch(enum DisplayDepth dd) -{ - switch(dd) { - case DD_DEFAULT: return 0; - case DD_16BIT : return 1; - case DD_32BIT : return 2; - default: ASSERT(FALSE); return 0; - } -} - -static enum DisplayDepth SwitchToDepth(INDEX i) -{ - switch(i) { - case 0: return DD_DEFAULT; - case 1: return DD_16BIT; - case 2: return DD_32BIT; - default: ASSERT(FALSE); return DD_DEFAULT; - } -} - extern void InitVideoOptionsButtons(void); extern void UpdateVideoOptionsButtons(INDEX i); -void RevertVideoSettings(void) -{ - // restore previous variables - sam_bFullScreenActive = sam_old_bFullScreenActive; - sam_iScreenSizeI = sam_old_iScreenSizeI; - sam_iScreenSizeJ = sam_old_iScreenSizeJ; - sam_iDisplayDepth = sam_old_iDisplayDepth; - sam_iDisplayAdapter = sam_old_iDisplayAdapter; - sam_iGfxAPI = sam_old_iGfxAPI; - sam_iVideoSetup = sam_old_iVideoSetup; - // update the video mode - extern void ApplyVideoMode(void); - ApplyVideoMode(); - - // refresh buttons - InitVideoOptionsButtons(); - UpdateVideoOptionsButtons(-1); -} - -void ApplyVideoOptions(void) -{ - sam_old_bFullScreenActive = sam_bFullScreenActive; - sam_old_iScreenSizeI = sam_iScreenSizeI; - sam_old_iScreenSizeJ = sam_iScreenSizeJ; - sam_old_iDisplayDepth = sam_iDisplayDepth; - sam_old_iDisplayAdapter = sam_iDisplayAdapter; - sam_old_iGfxAPI = sam_iGfxAPI; - sam_old_iVideoSetup = sam_iVideoSetup; - - BOOL bFullScreenMode = gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_iSelected == 1; - PIX pixWindowSizeI, pixWindowSizeJ; - ResolutionToSize(gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_iSelected, pixWindowSizeI, pixWindowSizeJ); - enum GfxAPIType gat = SwitchToAPI(gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_iSelected); - enum DisplayDepth dd = SwitchToDepth(gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_iSelected); - const INDEX iAdapter = gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_iSelected; - - // setup preferences - extern INDEX _iLastPreferences; - if( sam_iVideoSetup==3) _iLastPreferences = 3; - sam_iVideoSetup = gmVideoOptionsMenu.gm_mgDisplayPrefsTrigger.mg_iSelected; - - // force fullscreen mode if needed - CDisplayAdapter &da = _pGfx->gl_gaAPI[gat].ga_adaAdapter[iAdapter]; - if( da.da_ulFlags & DAF_FULLSCREENONLY) bFullScreenMode = TRUE; - if( da.da_ulFlags & DAF_16BITONLY) dd = DD_16BIT; - // force window to always be in default colors - if( !bFullScreenMode) dd = DD_DEFAULT; - - // (try to) set mode - StartNewMode( gat, iAdapter, pixWindowSizeI, pixWindowSizeJ, dd, bFullScreenMode); - - // refresh buttons - InitVideoOptionsButtons(); - UpdateVideoOptionsButtons(-1); - - // ask user to keep or restore - if( bFullScreenMode) VideoConfirm(); -} - -#define VOLUME_STEPS 50 - -extern void RefreshSoundFormat( void) -{ - switch( _pSound->GetFormat()) - { - case CSoundLibrary::SF_NONE: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 0; break; } - case CSoundLibrary::SF_11025_16: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 1; break; } - case CSoundLibrary::SF_22050_16: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 2; break; } - case CSoundLibrary::SF_44100_16: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 3; break; } - default: gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 0; - } - - gmAudioOptionsMenu.gm_mgAudioAutoTrigger.mg_iSelected = Clamp(sam_bAutoAdjustAudio, 0, 1); - gmAudioOptionsMenu.gm_mgAudioAPITrigger.mg_iSelected = Clamp(_pShell->GetINDEX("snd_iInterface"), 0L, 2L); - - gmAudioOptionsMenu.gm_mgWaveVolume.mg_iMinPos = 0; - gmAudioOptionsMenu.gm_mgWaveVolume.mg_iMaxPos = VOLUME_STEPS; - gmAudioOptionsMenu.gm_mgWaveVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fSoundVolume")*VOLUME_STEPS + 0.5f); - gmAudioOptionsMenu.gm_mgWaveVolume.ApplyCurrentPosition(); - - gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iMinPos = 0; - gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iMaxPos = VOLUME_STEPS; - gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fMusicVolume")*VOLUME_STEPS + 0.5f); - gmAudioOptionsMenu.gm_mgMPEGVolume.ApplyCurrentPosition(); - - gmAudioOptionsMenu.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); - gmAudioOptionsMenu.gm_mgAudioAPITrigger.ApplyCurrentSelection(); - gmAudioOptionsMenu.gm_mgFrequencyTrigger.ApplyCurrentSelection(); -} - -void ApplyAudioOptions(void) -{ - sam_bAutoAdjustAudio = gmAudioOptionsMenu.gm_mgAudioAutoTrigger.mg_iSelected; - if (sam_bAutoAdjustAudio) { - _pShell->Execute("include \"Scripts\\Addons\\SFX-AutoAdjust.ini\""); - } else { - _pShell->SetINDEX("snd_iInterface", gmAudioOptionsMenu.gm_mgAudioAPITrigger.mg_iSelected); - - switch (gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected) - { - case 0: {_pSound->SetFormat(CSoundLibrary::SF_NONE) ;break;} - case 1: {_pSound->SetFormat(CSoundLibrary::SF_11025_16);break;} - case 2: {_pSound->SetFormat(CSoundLibrary::SF_22050_16);break;} - case 3: {_pSound->SetFormat(CSoundLibrary::SF_44100_16);break;} - default: _pSound->SetFormat(CSoundLibrary::SF_NONE); - } - } - - RefreshSoundFormat(); - snd_iFormat = _pSound->GetFormat(); -} - -void StartVideoOptionsMenu(void) -{ - ChangeToMenu( &gmVideoOptionsMenu); -} - -void StartAudioOptionsMenu(void) -{ - ChangeToMenu( &gmAudioOptionsMenu); -} - -void StartNetworkMenu(void) -{ - ChangeToMenu( &gmNetworkMenu); -} - -void StartNetworkJoinMenu(void) -{ - ChangeToMenu( &gmNetworkJoinMenu); -} - -void StartNetworkStartMenu(void) -{ - ChangeToMenu( &gmNetworkStartMenu); -} - -void StartNetworkOpenMenu(void) -{ - ChangeToMenu( &gmNetworkOpenMenu); -} - -void StartSplitScreenMenu(void) -{ - ChangeToMenu( &gmSplitScreenMenu); -} - -void StartSplitStartMenu(void) -{ - ChangeToMenu( &gmSplitStartMenu); -} // ------------------------ Global menu function implementation void InitializeMenus(void) @@ -2542,845 +1101,4 @@ void ChangeToMenu( CGameMenu *pgmNewMenu) } FixupBackButton(pgmNewMenu); pgmCurrentMenu = pgmNewMenu; -} - -// ------------------------ CConfirmMenu implementation -void InitActionsForConfirmMenu() { - gmConfirmMenu.gm_mgConfirmYes.mg_pActivatedFunction = &ConfirmYes; - gmConfirmMenu.gm_mgConfirmNo.mg_pActivatedFunction = &ConfirmNo; -} - -// return TRUE if handled -BOOL CConfirmMenu::OnKeyDown(int iVKey) -{ - if (iVKey==VK_ESCAPE || iVKey==VK_RBUTTON) { - ConfirmNo(); - return TRUE; - } - return CGameMenu::OnKeyDown(iVKey); -} - -// ------------------------ CMainMenu implementation -#define CMENU gmMainMenu - -void InitActionsForMainMenu() { - CMENU.gm_mgSingle.mg_pActivatedFunction = &StartSinglePlayerMenu; - CMENU.gm_mgNetwork.mg_pActivatedFunction = StartNetworkMenu; - CMENU.gm_mgSplitScreen.mg_pActivatedFunction = &StartSplitScreenMenu; - CMENU.gm_mgDemo.mg_pActivatedFunction = &StartDemoLoadMenu; -#if TECHTESTONLY - CMENU.gm_mgMods.mg_pActivatedFunction = &DisabledFunction; -#else - CMENU.gm_mgMods.mg_pActivatedFunction = &StartModsLoadMenu; -#endif - CMENU.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; - CMENU.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; - CMENU.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; -} - -#undef CMENU - -// ------------------------ CInGameMenu implementation -#define CMENU gmInGameMenu - -void InitActionsForInGameMenu() { - - CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartCurrentQuickLoadMenu; - CMENU.gm_mgQuickSave.mg_pActivatedFunction = &QuickSaveFromMenu; - CMENU.gm_mgLoad.mg_pActivatedFunction = &StartCurrentLoadMenu; - CMENU.gm_mgSave.mg_pActivatedFunction = &StartCurrentSaveMenu; - CMENU.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; - CMENU.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; -#if TECHTESTONLY - CMENU.gm_mgStop.mg_pActivatedFunction = &ExitConfirm; -#else - CMENU.gm_mgStop.mg_pActivatedFunction = &StopConfirm; -#endif - CMENU.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; -} - -extern void SetDemoStartStopRecText(void) -{ - if( _pNetwork->IsRecordingDemo()) - { - CMENU.gm_mgDemoRec.SetText(TRANS("STOP RECORDING")); - CMENU.gm_mgDemoRec.mg_strTip = TRANS("stop current recording"); - CMENU.gm_mgDemoRec.mg_pActivatedFunction = &StopRecordingDemo; - } - else - { - CMENU.gm_mgDemoRec.SetText(TRANS("RECORD DEMO")); - CMENU.gm_mgDemoRec.mg_strTip = TRANS("start recording current game"); - CMENU.gm_mgDemoRec.mg_pActivatedFunction = &StartDemoSaveMenu; - } -} - -#undef CMENU - -// ------------------------ CSinglePlayerMenu implementation -#define CMENU gmSinglePlayerMenu - -void InitActionsForSinglePlayerMenu() { - CMENU.gm_mgNewGame.mg_pActivatedFunction = &StartSinglePlayerNewMenu; -#if _SE_DEMO || TECHTESTONLY - CMENU.gm_mgCustom.mg_pActivatedFunction = &DisabledFunction; -#else - CMENU.gm_mgCustom.mg_pActivatedFunction = &StartSelectLevelFromSingle; -#endif - CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartSinglePlayerQuickLoadMenu; - CMENU.gm_mgLoad.mg_pActivatedFunction = &StartSinglePlayerLoadMenu; - CMENU.gm_mgTraining.mg_pActivatedFunction = &StartTraining; - CMENU.gm_mgTechTest.mg_pActivatedFunction = &StartTechTest; - CMENU.gm_mgPlayersAndControls.mg_pActivatedFunction = &StartChangePlayerMenuFromSinglePlayer; - CMENU.gm_mgOptions.mg_pActivatedFunction = &StartSinglePlayerGameOptions; -} - -#undef CMENU - -// ------------------------ CSinglePlayerNewMenu implementation -#define CMENU gmSinglePlayerNewMenu - -void InitActionsForSinglePlayerNewMenu() { - CMENU.gm_mgTourist.mg_pActivatedFunction = &StartSinglePlayerGame_Tourist; - CMENU.gm_mgEasy.mg_pActivatedFunction = &StartSinglePlayerGame_Easy; - CMENU.gm_mgMedium.mg_pActivatedFunction = &StartSinglePlayerGame_Normal; - CMENU.gm_mgHard.mg_pActivatedFunction = &StartSinglePlayerGame_Hard; - CMENU.gm_mgSerious.mg_pActivatedFunction = &StartSinglePlayerGame_Serious; - CMENU.gm_mgMental.mg_pActivatedFunction = &StartSinglePlayerGame_Mental; -} - -#undef CMENU - -// ------------------------ CPlayerProfileMenu implementation -#define CMENU gmPlayerProfile - -void ChangeCrosshair(INDEX iNew) -{ - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - pps->ps_iCrossHairType = iNew-1; -} - -void ChangeWeaponSelect(INDEX iNew) -{ - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - pps->ps_iWeaponAutoSelect = iNew; -} - -void ChangeWeaponHide(INDEX iNew) -{ - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - if (iNew) { - pps->ps_ulFlags |= PSF_HIDEWEAPON; - } else { - pps->ps_ulFlags &= ~PSF_HIDEWEAPON; - } -} - -void Change3rdPerson(INDEX iNew) -{ - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - if (iNew) { - pps->ps_ulFlags |= PSF_PREFER3RDPERSON; - } else { - pps->ps_ulFlags &= ~PSF_PREFER3RDPERSON; - } -} - -void ChangeQuotes(INDEX iNew) -{ - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - if (iNew) { - pps->ps_ulFlags &= ~PSF_NOQUOTES; - } else { - pps->ps_ulFlags |= PSF_NOQUOTES; - } -} - -void ChangeAutoSave(INDEX iNew) -{ - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - if (iNew) { - pps->ps_ulFlags |= PSF_AUTOSAVE; - } else { - pps->ps_ulFlags &= ~PSF_AUTOSAVE; - } -} - -void ChangeCompDoubleClick(INDEX iNew) -{ - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - if (iNew) { - pps->ps_ulFlags &= ~PSF_COMPSINGLECLICK; - } else { - pps->ps_ulFlags |= PSF_COMPSINGLECLICK; - } -} - -void ChangeViewBobbing(INDEX iNew) -{ - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - if (iNew) { - pps->ps_ulFlags &= ~PSF_NOBOBBING; - } else { - pps->ps_ulFlags |= PSF_NOBOBBING; - } -} - -void ChangeSharpTurning(INDEX iNew) -{ - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - if (iNew) { - pps->ps_ulFlags |= PSF_SHARPTURNING; - } else { - pps->ps_ulFlags &= ~PSF_SHARPTURNING; - } -} - -extern void PPOnPlayerSelect(void) -{ - ASSERT(_pmgLastActivatedGadget != NULL); - if (_pmgLastActivatedGadget->mg_bEnabled) { - gmPlayerProfile.SelectPlayer(((CMGButton *)_pmgLastActivatedGadget)->mg_iIndex); - } -} - -void InitActionsForPlayerProfileMenu() -{ - CMENU.gm_mgCrosshair.mg_pOnTriggerChange = ChangeCrosshair; - CMENU.gm_mgWeaponSelect.mg_pOnTriggerChange = ChangeWeaponSelect; - CMENU.gm_mgWeaponHide.mg_pOnTriggerChange = ChangeWeaponHide; - CMENU.gm_mg3rdPerson.mg_pOnTriggerChange = Change3rdPerson; - CMENU.gm_mgQuotes.mg_pOnTriggerChange = ChangeQuotes; - CMENU.gm_mgAutoSave.mg_pOnTriggerChange = ChangeAutoSave; - CMENU.gm_mgCompDoubleClick.mg_pOnTriggerChange = ChangeCompDoubleClick; - CMENU.gm_mgSharpTurning.mg_pOnTriggerChange = ChangeSharpTurning; - CMENU.gm_mgViewBobbing.mg_pOnTriggerChange = ChangeViewBobbing; - CMENU.gm_mgCustomizeControls.mg_pActivatedFunction = &StartControlsMenuFromPlayer; - CMENU.gm_mgModel.mg_pActivatedFunction = &StartPlayerModelLoadMenu; -} - -#undef CMENU - -// ------------------------ CControlsMenu implementation -#define CMENU gmControls - -void InitActionsForControlsMenu() -{ - CMENU.gm_mgButtons.mg_pActivatedFunction = &StartCustomizeKeyboardMenu; - CMENU.gm_mgAdvanced.mg_pActivatedFunction = &StartCustomizeAxisMenu; - CMENU.gm_mgPredefined.mg_pActivatedFunction = &StartControlsLoadMenu; -} - -#undef CMENU - -// ------------------------ CCustomizeAxisMenu implementation -#define CMENU gmCustomizeAxisMenu - -void PreChangeAxis(INDEX iDummy) -{ - CMENU.ApplyActionSettings(); -} - -void PostChangeAxis(INDEX iDummy) -{ - CMENU.ObtainActionSettings(); -} - -void InitActionsForCustomizeAxisMenu() { - CMENU.gm_mgActionTrigger.mg_pPreTriggerChange = PreChangeAxis; - CMENU.gm_mgActionTrigger.mg_pOnTriggerChange = PostChangeAxis; -} - -#undef CMENU - -// ------------------------ COptionsMenu implementation -#define CMENU gmOptionsMenu - -void InitActionsForOptionsMenu() -{ - CMENU.gm_mgVideoOptions.mg_pActivatedFunction = &StartVideoOptionsMenu; - CMENU.gm_mgAudioOptions.mg_pActivatedFunction = &StartAudioOptionsMenu; - CMENU.gm_mgPlayerProfileOptions.mg_pActivatedFunction = &StartChangePlayerMenuFromOptions; - CMENU.gm_mgNetworkOptions.mg_pActivatedFunction = &StartNetworkSettingsMenu; - CMENU.gm_mgCustomOptions.mg_pActivatedFunction = &StartCustomLoadMenu; - CMENU.gm_mgAddonOptions.mg_pActivatedFunction = &StartAddonsLoadMenu; -} - -#undef CMENU - -// ------------------------ CVideoOptionsMenu implementation -#define CMENU gmVideoOptionsMenu - -static void FillResolutionsList(void) -{ - // free resolutions - if (_astrResolutionTexts!=NULL) { - delete [] _astrResolutionTexts; - } - if (_admResolutionModes!=NULL) { - delete [] _admResolutionModes; - } - _ctResolutions = 0; - - // if window - if (CMENU.gm_mgFullScreenTrigger.mg_iSelected == 0) { - // always has fixed resolutions, but not greater than desktop - static PIX apixWidths[][2] = { - 320, 240, - 400, 300, - 512, 384, - 640, 240, - 640, 480, - 720, 540, - 800, 300, - 800, 600, - 960, 720, - 1024, 384, - 1024, 768, - 1152, 864, - 1280, 480, - 1280, 960, - 1600, 600, - 1600,1200, - 1920, 720, - 1920,1440, - 2048, 786, - 2048,1536, - }; - _ctResolutions = ARRAYCOUNT(apixWidths); - _astrResolutionTexts = new CTString [_ctResolutions]; - _admResolutionModes = new CDisplayMode[_ctResolutions]; - extern PIX _pixDesktopWidth; - INDEX iRes=0; - for( ; iRes<_ctResolutions; iRes++) { - if( apixWidths[iRes][0]>_pixDesktopWidth) break; - SetResolutionInList( iRes, apixWidths[iRes][0], apixWidths[iRes][1]); - } - _ctResolutions = iRes; - - // if fullscreen - } else { - // get resolutions list from engine - CDisplayMode *pdm = _pGfx->EnumDisplayModes(_ctResolutions, - SwitchToAPI(CMENU.gm_mgDisplayAPITrigger.mg_iSelected), CMENU.gm_mgDisplayAdaptersTrigger.mg_iSelected); - // allocate that much - _astrResolutionTexts = new CTString [_ctResolutions]; - _admResolutionModes = new CDisplayMode[_ctResolutions]; - // for each resolution - for( INDEX iRes=0; iRes<_ctResolutions; iRes++) { - // add it to list - SetResolutionInList( iRes, pdm[iRes].dm_pixSizeI, pdm[iRes].dm_pixSizeJ); - } - } - CMENU.gm_mgResolutionsTrigger.mg_astrTexts = _astrResolutionTexts; - CMENU.gm_mgResolutionsTrigger.mg_ctTexts = _ctResolutions; -} - - -static void FillAdaptersList(void) -{ - if (_astrAdapterTexts!=NULL) { - delete [] _astrAdapterTexts; - } - _ctAdapters = 0; - - INDEX iApi = SwitchToAPI(CMENU.gm_mgDisplayAPITrigger.mg_iSelected); - _ctAdapters = _pGfx->gl_gaAPI[iApi].ga_ctAdapters; - _astrAdapterTexts = new CTString[_ctAdapters]; - for(INDEX iAdapter = 0; iAdapter<_ctAdapters; iAdapter++) { - _astrAdapterTexts[iAdapter] = _pGfx->gl_gaAPI[iApi].ga_adaAdapter[iAdapter].da_strRenderer; - } - CMENU.gm_mgDisplayAdaptersTrigger.mg_astrTexts = _astrAdapterTexts; - CMENU.gm_mgDisplayAdaptersTrigger.mg_ctTexts = _ctAdapters; -} - - -extern void UpdateVideoOptionsButtons(INDEX iSelected) -{ - const BOOL _bVideoOptionsChanged = (iSelected != -1); - - const BOOL bOGLEnabled = _pGfx->HasAPI(GAT_OGL); -#ifdef SE1_D3D - const BOOL bD3DEnabled = _pGfx->HasAPI(GAT_D3D); - ASSERT( bOGLEnabled || bD3DEnabled); -#else // - ASSERT( bOGLEnabled ); -#endif // SE1_D3D - CDisplayAdapter &da = _pGfx->gl_gaAPI[SwitchToAPI(CMENU.gm_mgDisplayAPITrigger.mg_iSelected)] - .ga_adaAdapter[CMENU.gm_mgDisplayAdaptersTrigger.mg_iSelected]; - - // number of available preferences is higher if video setup is custom - CMENU.gm_mgDisplayPrefsTrigger.mg_ctTexts = 3; - if (sam_iVideoSetup == 3) CMENU.gm_mgDisplayPrefsTrigger.mg_ctTexts++; - - // enumerate adapters - FillAdaptersList(); - - // show or hide buttons - CMENU.gm_mgDisplayAPITrigger.mg_bEnabled = bOGLEnabled -#ifdef SE1_D3D - && bD3DEnabled -#endif // SE1_D3D - ; - CMENU.gm_mgDisplayAdaptersTrigger.mg_bEnabled = _ctAdapters>1; - CMENU.gm_mgApply.mg_bEnabled = _bVideoOptionsChanged; - // determine which should be visible - CMENU.gm_mgFullScreenTrigger.mg_bEnabled = TRUE; - if( da.da_ulFlags&DAF_FULLSCREENONLY) { - CMENU.gm_mgFullScreenTrigger.mg_bEnabled = FALSE; - CMENU.gm_mgFullScreenTrigger.mg_iSelected = 1; - CMENU.gm_mgFullScreenTrigger.ApplyCurrentSelection(); - } - CMENU.gm_mgBitsPerPixelTrigger.mg_bEnabled = TRUE; - if (CMENU.gm_mgFullScreenTrigger.mg_iSelected == 0) { - CMENU.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; - CMENU.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_DEFAULT); - CMENU.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); - } else if( da.da_ulFlags&DAF_16BITONLY) { - CMENU.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; - CMENU.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_16BIT); - CMENU.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); - } - - // remember current selected resolution - PIX pixSizeI, pixSizeJ; - ResolutionToSize(CMENU.gm_mgResolutionsTrigger.mg_iSelected, pixSizeI, pixSizeJ); - - // select same resolution again if possible - FillResolutionsList(); - SizeToResolution(pixSizeI, pixSizeJ, CMENU.gm_mgResolutionsTrigger.mg_iSelected); - - // apply adapter and resolutions - CMENU.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); - CMENU.gm_mgResolutionsTrigger.ApplyCurrentSelection(); -} - - -extern void InitVideoOptionsButtons(void) -{ - if( sam_bFullScreenActive) { - CMENU.gm_mgFullScreenTrigger.mg_iSelected = 1; - } else { - CMENU.gm_mgFullScreenTrigger.mg_iSelected = 0; - } - - CMENU.gm_mgDisplayAPITrigger.mg_iSelected = APIToSwitch((GfxAPIType)(INDEX)sam_iGfxAPI); - CMENU.gm_mgDisplayAdaptersTrigger.mg_iSelected = sam_iDisplayAdapter; - CMENU.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch((enum DisplayDepth)(INDEX)sam_iDisplayDepth); - - FillResolutionsList(); - SizeToResolution(sam_iScreenSizeI, sam_iScreenSizeJ, CMENU.gm_mgResolutionsTrigger.mg_iSelected); - CMENU.gm_mgDisplayPrefsTrigger.mg_iSelected = Clamp(int(sam_iVideoSetup), 0, 3); - - CMENU.gm_mgFullScreenTrigger.ApplyCurrentSelection(); - CMENU.gm_mgDisplayPrefsTrigger.ApplyCurrentSelection(); - CMENU.gm_mgDisplayAPITrigger.ApplyCurrentSelection(); - CMENU.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); - CMENU.gm_mgResolutionsTrigger.ApplyCurrentSelection(); - CMENU.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); -} - -void InitActionsForVideoOptionsMenu() -{ - CMENU.gm_mgDisplayPrefsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - CMENU.gm_mgDisplayAPITrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - CMENU.gm_mgDisplayAdaptersTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - CMENU.gm_mgFullScreenTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - CMENU.gm_mgResolutionsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - CMENU.gm_mgBitsPerPixelTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - CMENU.gm_mgVideoRendering.mg_pActivatedFunction = &StartRenderingOptionsMenu; - CMENU.gm_mgApply.mg_pActivatedFunction = &ApplyVideoOptions; -} - -#undef CMENU - -// ------------------------ CAudioOptionsMenu implementation -#define CMENU gmAudioOptionsMenu - -static void OnWaveVolumeChange(INDEX iCurPos) -{ - _pShell->SetFLOAT("snd_fSoundVolume", iCurPos/FLOAT(VOLUME_STEPS)); -} - -void WaveSliderChange(void) -{ - if (_bMouseRight) { - CMENU.gm_mgWaveVolume.mg_iCurPos += 5; - } else { - CMENU.gm_mgWaveVolume.mg_iCurPos -= 5; - } - CMENU.gm_mgWaveVolume.ApplyCurrentPosition(); -} - -void FrequencyTriggerChange(INDEX iDummy) -{ - sam_bAutoAdjustAudio = 0; - CMENU.gm_mgAudioAutoTrigger.mg_iSelected = 0; - CMENU.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); -} - -void MPEGSliderChange(void) -{ - if (_bMouseRight) { - CMENU.gm_mgMPEGVolume.mg_iCurPos += 5; - } else { - CMENU.gm_mgMPEGVolume.mg_iCurPos -= 5; - } - CMENU.gm_mgMPEGVolume.ApplyCurrentPosition(); -} - -static void OnMPEGVolumeChange(INDEX iCurPos) -{ - _pShell->SetFLOAT("snd_fMusicVolume", iCurPos / FLOAT(VOLUME_STEPS)); -} - -void InitActionsForAudioOptionsMenu() -{ - CMENU.gm_mgFrequencyTrigger.mg_pOnTriggerChange = FrequencyTriggerChange; - CMENU.gm_mgWaveVolume.mg_pOnSliderChange = &OnWaveVolumeChange; - CMENU.gm_mgWaveVolume.mg_pActivatedFunction = WaveSliderChange; - CMENU.gm_mgMPEGVolume.mg_pOnSliderChange = &OnMPEGVolumeChange; - CMENU.gm_mgMPEGVolume.mg_pActivatedFunction = MPEGSliderChange; - CMENU.gm_mgApply.mg_pActivatedFunction = &ApplyAudioOptions; -} - -#undef CMENU - -// ------------------------ CVarMenu implementation -#define CMENU gmVarMenu - -void VarApply(void) -{ - FlushVarSettings(TRUE); - CMENU.EndMenu(); - CMENU.StartMenu(); -} - -void InitActionsForVarMenu() { - CMENU.gm_mgApply.mg_pActivatedFunction = &VarApply; -} - -#undef CMENU -// ------------------------ CServersMenu implementation -extern void RefreshServerList(void) -{ - _pNetwork->EnumSessions(gmServersMenu.m_bInternet); -} - -void RefreshServerListManually(void) -{ - ChangeToMenu(&gmServersMenu); // this refreshes the list and sets focuses -} - -void SortByColumn(int i) -{ - if (gmServersMenu.gm_mgList.mg_iSort==i) { - gmServersMenu.gm_mgList.mg_bSortDown = !gmServersMenu.gm_mgList.mg_bSortDown; - } else { - gmServersMenu.gm_mgList.mg_bSortDown = FALSE; - } - gmServersMenu.gm_mgList.mg_iSort = i; -} - -void SortByServer(void) { SortByColumn(0); } -void SortByMap(void) { SortByColumn(1); } -void SortByPing(void) { SortByColumn(2); } -void SortByPlayers(void){ SortByColumn(3); } -void SortByGame(void) { SortByColumn(4); } -void SortByMod(void) { SortByColumn(5); } -void SortByVer(void) { SortByColumn(6); } - -extern CMGButton mgServerColumn[7]; -extern CMGEdit mgServerFilter[7]; - -void InitActionsForServersMenu() { - gmServersMenu.gm_mgRefresh.mg_pActivatedFunction = &RefreshServerList; - - mgServerColumn[0].mg_pActivatedFunction = SortByServer; - mgServerColumn[1].mg_pActivatedFunction = SortByMap; - mgServerColumn[2].mg_pActivatedFunction = SortByPing; - mgServerColumn[3].mg_pActivatedFunction = SortByPlayers; - mgServerColumn[4].mg_pActivatedFunction = SortByGame; - mgServerColumn[5].mg_pActivatedFunction = SortByMod; - mgServerColumn[6].mg_pActivatedFunction = SortByVer; -} - -// ------------------------ CNetworkMenu implementation -#define CMENU gmNetworkMenu -void InitActionsForNetworkMenu() -{ - CMENU.gm_mgJoin.mg_pActivatedFunction = &StartNetworkJoinMenu; - CMENU.gm_mgStart.mg_pActivatedFunction = &StartNetworkStartMenu; - CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartNetworkQuickLoadMenu; - CMENU.gm_mgLoad.mg_pActivatedFunction = &StartNetworkLoadMenu; -} -#undef CMENU - -// ------------------------ CNetworkJoinMenu implementation -#define CMENU gmNetworkJoinMenu -void InitActionsForNetworkJoinMenu() -{ - CMENU.gm_mgLAN.mg_pActivatedFunction = &StartSelectServerLAN; - CMENU.gm_mgNET.mg_pActivatedFunction = &StartSelectServerNET; - CMENU.gm_mgOpen.mg_pActivatedFunction = &StartNetworkOpenMenu; -} -#undef CMENU - -// ------------------------ CNetworkStartMenu implementation -extern void UpdateNetworkLevel(INDEX iDummy) -{ - ValidateLevelForFlags(_pGame->gam_strCustomLevel, - GetSpawnFlagsForGameType(gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); - gmNetworkStartMenu.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; -} - -void InitActionsForNetworkStartMenu() -{ - gmNetworkStartMenu.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromNetwork; - gmNetworkStartMenu.gm_mgGameOptions.mg_pActivatedFunction = &StartGameOptionsFromNetwork; - gmNetworkStartMenu.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromNetwork; -} - -// -#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 SET_CHGPLR( gd, iplayer, bnone, bauto, pmgit) \ - gd.mg_pmgInfoTable = pmgit;\ - gd.mg_bResetToNone = bnone;\ - gd.mg_bAutomatic = bauto;\ - gd.mg_iLocalPlayer = iplayer; - -// ------------------------ CSelectPlayersMenu implementation -#define CMENU gmSelectPlayersMenu - -INDEX FindUnusedPlayer(void) -{ - INDEX *ai = _pGame->gm_aiMenuLocalPlayers; - INDEX iPlayer=0; - for(; iPlayer<8; iPlayer++) { - BOOL bUsed = FALSE; - for (INDEX iLocal=0; iLocal<4; iLocal++) { - if (ai[iLocal] == iPlayer) { - bUsed = TRUE; - break; - } - } - if (!bUsed) { - return iPlayer; - } - } - ASSERT(FALSE); - return iPlayer; -} - -extern void SelectPlayersFillMenu(void) -{ - INDEX *ai = _pGame->gm_aiMenuLocalPlayers; - - CMENU.gm_mgPlayer0Change.mg_iLocalPlayer = 0; - CMENU.gm_mgPlayer1Change.mg_iLocalPlayer = 1; - CMENU.gm_mgPlayer2Change.mg_iLocalPlayer = 2; - CMENU.gm_mgPlayer3Change.mg_iLocalPlayer = 3; - - if (CMENU.gm_bAllowDedicated && _pGame->gm_MenuSplitScreenCfg == CGame::SSC_DEDICATED) { - CMENU.gm_mgDedicated.mg_iSelected = 1; - } else { - CMENU.gm_mgDedicated.mg_iSelected = 0; - } - gmSelectPlayersMenu.gm_mgDedicated.ApplyCurrentSelection(); - - if (CMENU.gm_bAllowObserving && _pGame->gm_MenuSplitScreenCfg == CGame::SSC_OBSERVER) { - CMENU.gm_mgObserver.mg_iSelected = 1; - } else { - CMENU.gm_mgObserver.mg_iSelected = 0; - } - CMENU.gm_mgObserver.ApplyCurrentSelection(); - - if (_pGame->gm_MenuSplitScreenCfg>=CGame::SSC_PLAY1) { - CMENU.gm_mgSplitScreenCfg.mg_iSelected = _pGame->gm_MenuSplitScreenCfg; - CMENU.gm_mgSplitScreenCfg.ApplyCurrentSelection(); - } - - BOOL bHasDedicated = CMENU.gm_bAllowDedicated; - BOOL bHasObserver = CMENU.gm_bAllowObserving; - BOOL bHasPlayers = TRUE; - - if (bHasDedicated && CMENU.gm_mgDedicated.mg_iSelected) { - bHasObserver = FALSE; - bHasPlayers = FALSE; - } - - if (bHasObserver && CMENU.gm_mgObserver.mg_iSelected) { - bHasPlayers = FALSE; - } - - CMenuGadget *apmg[8]; - memset(apmg, 0, sizeof(apmg)); - INDEX i=0; - - if (bHasDedicated) { - CMENU.gm_mgDedicated.Appear(); - apmg[i++] = &CMENU.gm_mgDedicated; - } else { - CMENU.gm_mgDedicated.Disappear(); - } - if (bHasObserver) { - CMENU.gm_mgObserver.Appear(); - apmg[i++] = &CMENU.gm_mgObserver; - } else { - CMENU.gm_mgObserver.Disappear(); - } - - for (INDEX iLocal=0; iLocal<4; iLocal++) { - if (ai[iLocal]<0 || ai[iLocal]>7) { - ai[iLocal] = 0; - } - for (INDEX iCopy=0; iCopy= 1) { - CMENU.gm_mgPlayer1Change.Appear(); - apmg[i++] = &CMENU.gm_mgPlayer1Change; - } - if (CMENU.gm_mgSplitScreenCfg.mg_iSelected >= 2) { - CMENU.gm_mgPlayer2Change.Appear(); - apmg[i++] = &CMENU.gm_mgPlayer2Change; - } - if (CMENU.gm_mgSplitScreenCfg.mg_iSelected >= 3) { - CMENU.gm_mgPlayer3Change.Appear(); - apmg[i++] = &CMENU.gm_mgPlayer3Change; - } - } else { - CMENU.gm_mgSplitScreenCfg.Disappear(); - } - apmg[i++] = &CMENU.gm_mgStart; - - // relink - for (INDEX img=0; img<8; img++) { - if (apmg[img]==NULL) { - continue; - } - INDEX imgPred=(img+8-1)%8; - for (; imgPred!=img; imgPred = (imgPred+8-1)%8) { - if (apmg[imgPred]!=NULL) { - break; - } - } - INDEX imgSucc=(img+1)%8; - for (; imgSucc!=img; imgSucc = (imgSucc+1)%8) { - if (apmg[imgSucc]!=NULL) { - break; - } - } - apmg[img]->mg_pmgUp = apmg[imgPred]; - apmg[img]->mg_pmgDown = apmg[imgSucc]; - } - - CMENU.gm_mgPlayer0Change.SetPlayerText(); - CMENU.gm_mgPlayer1Change.SetPlayerText(); - CMENU.gm_mgPlayer2Change.SetPlayerText(); - CMENU.gm_mgPlayer3Change.SetPlayerText(); - - if (bHasPlayers && CMENU.gm_mgSplitScreenCfg.mg_iSelected >= 1) { - CMENU.gm_mgNotes.mg_strText = TRANS("Make sure you set different controls for each player!"); - } else { - CMENU.gm_mgNotes.mg_strText = ""; - } -} - -extern void SelectPlayersApplyMenu(void) -{ - if (CMENU.gm_bAllowDedicated && CMENU.gm_mgDedicated.mg_iSelected) { - _pGame->gm_MenuSplitScreenCfg = CGame::SSC_DEDICATED; - return; - } - - if (CMENU.gm_bAllowObserving && CMENU.gm_mgObserver.mg_iSelected) { - _pGame->gm_MenuSplitScreenCfg = CGame::SSC_OBSERVER; - return; - } - - _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) CMENU.gm_mgSplitScreenCfg.mg_iSelected; -} - -void UpdateSelectPlayers(INDEX i) -{ - SelectPlayersApplyMenu(); - SelectPlayersFillMenu(); -} - -void InitActionsForSelectPlayersMenu() -{ - CMENU.gm_mgDedicated.mg_pOnTriggerChange = UpdateSelectPlayers; - CMENU.gm_mgObserver.mg_pOnTriggerChange = UpdateSelectPlayers; - CMENU.gm_mgSplitScreenCfg.mg_pOnTriggerChange = UpdateSelectPlayers; -} - -#undef CMENU - -// ------------------------ CNetworkOpenMenu implementation -void InitActionsForNetworkOpenMenu() -{ - gmNetworkOpenMenu.gm_mgJoin.mg_pActivatedFunction = &StartSelectPlayersMenuFromOpen; -} - -// ------------------------ CSplitScreenMenu implementation -#define CMENU gmSplitScreenMenu - -void InitActionsForSplitScreenMenu() -{ - CMENU.gm_mgStart.mg_pActivatedFunction = &StartSplitStartMenu; - CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartSplitScreenQuickLoadMenu; - CMENU.gm_mgLoad.mg_pActivatedFunction = &StartSplitScreenLoadMenu; -} - -#undef CMENU - -// ------------------------ CSplitStartMenu implementation -#define CMENU gmSplitStartMenu - -void InitActionsForSplitStartMenu() -{ - CMENU.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromSplit; - CMENU.gm_mgOptions.mg_pActivatedFunction = &StartGameOptionsFromSplitScreen; - CMENU.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromSplit; -} - -extern void UpdateSplitLevel(INDEX iDummy) -{ - ValidateLevelForFlags(_pGame->gam_strCustomLevel, - GetSpawnFlagsForGameType(gmSplitStartMenu.gm_mgGameType.mg_iSelected)); - gmSplitStartMenu.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; -} - -#undef CMENU \ No newline at end of file +} \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp b/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp index b80758e..191c6f7 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp @@ -24,6 +24,29 @@ extern CTString astrWeapon[] = { RADIOTRANS("Only if stronger"), }; +extern PIX apixWidths[][2] = { + 320, 240, + 400, 300, + 512, 384, + 640, 240, + 640, 480, + 720, 540, + 800, 300, + 800, 600, + 960, 720, + 1024, 384, + 1024, 768, + 1152, 864, + 1280, 480, + 1280, 960, + 1600, 600, + 1600, 1200, + 1920, 720, + 1920, 1440, + 2048, 786, + 2048, 1536, +}; + extern CTString astrCrosshair[] = { "", "Textures\\Interface\\Crosshairs\\Crosshair1.tex", @@ -196,4 +219,46 @@ int qsort_CompareFileInfos_FileDn(const void *elem1, const void *elem2) const CFileInfo &fi1 = **(CFileInfo **)elem1; const CFileInfo &fi2 = **(CFileInfo **)elem2; return -strcmp(fi1.fi_fnFile, fi2.fi_fnFile); +} + +INDEX APIToSwitch(enum GfxAPIType gat) +{ + switch (gat) { + case GAT_OGL: return 0; +#ifdef SE1_D3D + case GAT_D3D: return 1; +#endif // SE1_D3D + default: ASSERT(FALSE); return 0; + } +} + +enum GfxAPIType SwitchToAPI(INDEX i) +{ + switch (i) { + case 0: return GAT_OGL; +#ifdef SE1_D3D + case 1: return GAT_D3D; +#endif // SE1_D3D + default: ASSERT(FALSE); return GAT_OGL; + } +} + +INDEX DepthToSwitch(enum DisplayDepth dd) +{ + switch (dd) { + case DD_DEFAULT: return 0; + case DD_16BIT: return 1; + case DD_32BIT: return 2; + default: ASSERT(FALSE); return 0; + } +} + +enum DisplayDepth SwitchToDepth(INDEX i) +{ + switch (i) { + case 0: return DD_DEFAULT; + case 1: return DD_16BIT; + case 2: return DD_32BIT; + default: ASSERT(FALSE); return DD_DEFAULT; + } } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MenuStuff.h b/Sources/SeriousSam/GUI/Menus/MenuStuff.h index 3c73717..6e3febe 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStuff.h +++ b/Sources/SeriousSam/GUI/Menus/MenuStuff.h @@ -36,6 +36,8 @@ extern CTString astrBitsPerPixelRadioTexts[3]; extern CTString astrFrequencyRadioTexts[4]; extern CTString astrSoundAPIRadioTexts[3]; +extern PIX apixWidths[20][2]; + ULONG GetSpawnFlagsForGameType(INDEX iGameType); BOOL IsMenuEnabled(const CTString &strMenuName); void InitGameTypes(void); @@ -45,4 +47,9 @@ int qsort_CompareFileInfos_NameDn(const void *elem1, const void *elem2); int qsort_CompareFileInfos_FileUp(const void *elem1, const void *elem2); int qsort_CompareFileInfos_FileDn(const void *elem1, const void *elem2); +INDEX APIToSwitch(enum GfxAPIType gat); +enum GfxAPIType SwitchToAPI(INDEX i); +INDEX DepthToSwitch(enum DisplayDepth dd); +enum DisplayDepth SwitchToDepth(INDEX i); + #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/Menu_actions.cpp b/Sources/SeriousSam/GUI/Menus/Menu_actions.cpp new file mode 100644 index 0000000..67dd2bc --- /dev/null +++ b/Sources/SeriousSam/GUI/Menus/Menu_actions.cpp @@ -0,0 +1,1354 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include + +#include "Menu_starters.h" +#include "MenuStuff.h" +#include "GUI/Components/MenuGadget.h" +#include "LevelInfo.h" +#include "VarList.h" + +#include "MAudioOptions.h" +#include "MConfirm.h" +#include "MControls.h" +#include "MCustomizeAxis.h" +#include "MCustomizeKeyboard.h" +#include "MCredits.h" +#include "MDisabled.h" +#include "MHighScore.h" +#include "MInGame.h" +#include "MLevels.h" +#include "MMain.h" +#include "MNetwork.h" +#include "MNetworkJoin.h" +#include "MNetworkOpen.h" +#include "MNetworkStart.h" +#include "MOptions.h" +#include "MRenderingOptions.h" +#include "MServers.h" +#include "MSinglePlayer.h" +#include "MSinglePlayerNew.h" +#include "MSplitScreen.h" +#include "MSplitStart.h" +#include "MVar.h" +#include "MVideoOptions.h" + +#define VOLUME_STEPS 50 + +extern CMenuGadget *_pmgLastActivatedGadget; +extern CMenuGadget *_pmgUnderCursor; + +extern CConfirmMenu gmConfirmMenu; +extern CMainMenu gmMainMenu; +extern CInGameMenu gmInGameMenu; +extern CSinglePlayerMenu gmSinglePlayerMenu; +extern CSinglePlayerNewMenu gmSinglePlayerNewMenu; +extern CDisabledMenu gmDisabledFunction; +extern CLevelsMenu gmLevelsMenu; +extern CVarMenu gmVarMenu; +extern CPlayerProfileMenu gmPlayerProfile; +extern CControlsMenu gmControls; +extern CLoadSaveMenu gmLoadSaveMenu; +extern CHighScoreMenu gmHighScoreMenu; +extern CCustomizeKeyboardMenu gmCustomizeKeyboardMenu; +extern CServersMenu gmServersMenu; +extern CCustomizeAxisMenu gmCustomizeAxisMenu; +extern COptionsMenu gmOptionsMenu; +extern CVideoOptionsMenu gmVideoOptionsMenu; +extern CAudioOptionsMenu gmAudioOptionsMenu; +extern CNetworkMenu gmNetworkMenu; +extern CNetworkJoinMenu gmNetworkJoinMenu; +extern CNetworkStartMenu gmNetworkStartMenu; +extern CNetworkOpenMenu gmNetworkOpenMenu; +extern CSplitScreenMenu gmSplitScreenMenu; +extern CSplitStartMenu gmSplitStartMenu; +extern CSelectPlayersMenu gmSelectPlayersMenu; + +// functions to activate when user chose 'yes/no' on confirmation +void(*_pConfimedYes)(void) = NULL; +void(*_pConfimedNo)(void) = NULL; + +INDEX _ctAdapters = 0; +CTString * _astrAdapterTexts = NULL; +INDEX _ctResolutions = 0; +CTString * _astrResolutionTexts = NULL; +CDisplayMode *_admResolutionModes = NULL; + +extern BOOL _bMouseRight = FALSE; +extern BOOL _bMouseUsedLast; +ENGINE_API extern INDEX snd_iFormat; + +// make description for a given resolution +CTString GetResolutionDescription(CDisplayMode &dm) +{ + CTString str; + // if dual head + if (dm.IsDualHead()) { + str.PrintF(TRANS("%dx%d double"), dm.dm_pixSizeI / 2, dm.dm_pixSizeJ); + // if widescreen + } else if (dm.IsWideScreen()) { + str.PrintF(TRANS("%dx%d wide"), dm.dm_pixSizeI, dm.dm_pixSizeJ); + // otherwise it is normal + } else { + str.PrintF("%dx%d", dm.dm_pixSizeI, dm.dm_pixSizeJ); + } + return str; +} + +// make description for a given resolution +void SetResolutionInList(INDEX iRes, PIX pixSizeI, PIX pixSizeJ) +{ + ASSERT(iRes >= 0 && iRes<_ctResolutions); + + CTString &str = _astrResolutionTexts[iRes]; + CDisplayMode &dm = _admResolutionModes[iRes]; + dm.dm_pixSizeI = pixSizeI; + dm.dm_pixSizeJ = pixSizeJ; + str = GetResolutionDescription(dm); +} + +static void ResolutionToSize(INDEX iRes, PIX &pixSizeI, PIX &pixSizeJ) +{ + ASSERT(iRes >= 0 && iRes<_ctResolutions); + CDisplayMode &dm = _admResolutionModes[iRes]; + pixSizeI = dm.dm_pixSizeI; + pixSizeJ = dm.dm_pixSizeJ; +} + +static void SizeToResolution(PIX pixSizeI, PIX pixSizeJ, INDEX &iRes) +{ + for (iRes = 0; iRes<_ctResolutions; iRes++) { + CDisplayMode &dm = _admResolutionModes[iRes]; + if (dm.dm_pixSizeI == pixSizeI && dm.dm_pixSizeJ == pixSizeJ) { + return; + } + } + // if none was found, search for default + for (iRes = 0; iRes<_ctResolutions; iRes++) { + CDisplayMode &dm = _admResolutionModes[iRes]; + if (dm.dm_pixSizeI == 640 && dm.dm_pixSizeJ == 480) { + return; + } + } + // if still none found + ASSERT(FALSE); // this should never happen + // return first one + iRes = 0; +} + +// ------------------------ CConfirmMenu implementation +CTFileName _fnmModSelected; +CTString _strModURLSelected; +CTString _strModServerSelected; + +void ExitGame(void) +{ + _bRunning = FALSE; + _bQuitScreen = TRUE; +} + +void ExitConfirm(void) +{ + _pConfimedYes = &ExitGame; + _pConfimedNo = NULL; + gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); + gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; + gmConfirmMenu.BeLarge(); + ChangeToMenu(&gmConfirmMenu); +} + +void StopConfirm(void) +{ + extern void StopCurrentGame(void); + _pConfimedYes = &StopCurrentGame; + _pConfimedNo = NULL; + gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); + gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; + gmConfirmMenu.BeLarge(); + ChangeToMenu(&gmConfirmMenu); +} + +void ModLoadYes(void) +{ + extern CTFileName _fnmModToLoad; + _fnmModToLoad = _fnmModSelected; +} + +void ModConnect(void) +{ + extern CTFileName _fnmModToLoad; + extern CTString _strModServerJoin; + _fnmModToLoad = _fnmModSelected; + _strModServerJoin = _strModServerSelected; +} + +extern void ModConnectConfirm(void) +{ + if (_fnmModSelected == " ") { + _fnmModSelected = CTString("SeriousSam"); + } + CTFileName fnmModPath = "Mods\\" + _fnmModSelected + "\\"; + if (!FileExists(fnmModPath + "BaseWriteInclude.lst") + && !FileExists(fnmModPath + "BaseWriteExclude.lst") + && !FileExists(fnmModPath + "BaseBrowseInclude.lst") + && !FileExists(fnmModPath + "BaseBrowseExclude.lst")) { + extern void ModNotInstalled(void); + ModNotInstalled(); + return; + } + + CPrintF(TRANS("Server is running a different MOD (%s).\nYou need to reload to connect.\n"), _fnmModSelected); + _pConfimedYes = &ModConnect; + _pConfimedNo = NULL; + gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("CHANGE THE MOD?"); + gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; + gmConfirmMenu.BeLarge(); + ChangeToMenu(&gmConfirmMenu); +} + +void SaveConfirm(void) +{ + extern void OnFileSaveOK(void); + _pConfimedYes = &OnFileSaveOK; + _pConfimedNo = NULL; + gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("OVERWRITE?"); + gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; + gmConfirmMenu.BeLarge(); + ChangeToMenu(&gmConfirmMenu); +} + +void ExitAndSpawnExplorer(void) +{ + _bRunning = FALSE; + _bQuitScreen = FALSE; + extern CTString _strURLToVisit; + _strURLToVisit = _strModURLSelected; +} + +void ModNotInstalled(void) +{ + _pConfimedYes = &ExitAndSpawnExplorer; + _pConfimedNo = NULL; + gmConfirmMenu.gm_mgConfirmLabel.mg_strText.PrintF( + TRANS("You don't have MOD '%s' installed.\nDo you want to visit its web site?"), (const char*)_fnmModSelected); + gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; + gmConfirmMenu.BeSmall(); + ChangeToMenu(&gmConfirmMenu); + + /* + gmDisabledFunction.gm_pgmParentMenu = pgmCurrentMenu; + mgDisabledMenuButton.mg_strText.PrintF( + TRANS("You don't have MOD '%s' installed.\nPlease visit Croteam website for updates."), _fnmModSelected); + mgDisabledTitle.mg_strText = TRANS("MOD REQUIRED"); + _strModURLSelected + ChangeToMenu( &gmDisabledFunction); + */ +} + + +extern void ModConfirm(void) +{ + _pConfimedYes = &ModLoadYes; + _pConfimedNo = NULL; + gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("LOAD THIS MOD?"); + gmConfirmMenu.gm_pgmParentMenu = &gmLoadSaveMenu; + gmConfirmMenu.BeLarge(); + ChangeToMenu(&gmConfirmMenu); +} + +void VideoConfirm(void) +{ + // FIXUP: keyboard focus lost when going from full screen to window mode + // due to WM_MOUSEMOVE being sent + _bMouseUsedLast = FALSE; + _pmgUnderCursor = gmConfirmMenu.gm_pmgSelectedByDefault; + + _pConfimedYes = NULL; + void RevertVideoSettings(void); + _pConfimedNo = RevertVideoSettings; + + gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("KEEP THIS SETTING?"); + gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; + gmConfirmMenu.BeLarge(); + ChangeToMenu(&gmConfirmMenu); +} + +void CDConfirm(void(*pOk)(void)) +{ + _pConfimedYes = pOk; + _pConfimedNo = NULL; + gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("PLEASE INSERT GAME CD?"); + if (pgmCurrentMenu != &gmConfirmMenu) { + gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; + gmConfirmMenu.BeLarge(); + ChangeToMenu(&gmConfirmMenu); + } +} + +void ConfirmYes(void) +{ + if (_pConfimedYes != NULL) { + _pConfimedYes(); + } + void MenuGoToParent(void); + MenuGoToParent(); +} + +void ConfirmNo(void) +{ + if (_pConfimedNo != NULL) { + _pConfimedNo(); + } + void MenuGoToParent(void); + MenuGoToParent(); +} + +void InitActionsForConfirmMenu() { + gmConfirmMenu.gm_mgConfirmYes.mg_pActivatedFunction = &ConfirmYes; + gmConfirmMenu.gm_mgConfirmNo.mg_pActivatedFunction = &ConfirmNo; +} + +// return TRUE if handled +BOOL CConfirmMenu::OnKeyDown(int iVKey) +{ + if (iVKey == VK_ESCAPE || iVKey == VK_RBUTTON) { + ConfirmNo(); + return TRUE; + } + return CGameMenu::OnKeyDown(iVKey); +} + +// ------------------------ CMainMenu implementation +#define CMENU gmMainMenu + +void InitActionsForMainMenu() { + CMENU.gm_mgSingle.mg_pActivatedFunction = &StartSinglePlayerMenu; + CMENU.gm_mgNetwork.mg_pActivatedFunction = StartNetworkMenu; + CMENU.gm_mgSplitScreen.mg_pActivatedFunction = &StartSplitScreenMenu; + CMENU.gm_mgDemo.mg_pActivatedFunction = &StartDemoLoadMenu; +#if TECHTESTONLY + CMENU.gm_mgMods.mg_pActivatedFunction = &DisabledFunction; +#else + CMENU.gm_mgMods.mg_pActivatedFunction = &StartModsLoadMenu; +#endif + CMENU.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; + CMENU.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; + CMENU.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; +} + +#undef CMENU + +// ------------------------ CInGameMenu implementation +// start load/save menus depending on type of game running +void QuickSaveFromMenu() +{ + _pShell->SetINDEX("gam_bQuickSave", 2); // force save with reporting + StopMenus(TRUE); +} + +void StopRecordingDemo(void) +{ + _pNetwork->StopDemoRec(); + void SetDemoStartStopRecText(void); + SetDemoStartStopRecText(); +} + +#define CMENU gmInGameMenu + +void InitActionsForInGameMenu() { + + CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartCurrentQuickLoadMenu; + CMENU.gm_mgQuickSave.mg_pActivatedFunction = &QuickSaveFromMenu; + CMENU.gm_mgLoad.mg_pActivatedFunction = &StartCurrentLoadMenu; + CMENU.gm_mgSave.mg_pActivatedFunction = &StartCurrentSaveMenu; + CMENU.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; + CMENU.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; +#if TECHTESTONLY + CMENU.gm_mgStop.mg_pActivatedFunction = &ExitConfirm; +#else + CMENU.gm_mgStop.mg_pActivatedFunction = &StopConfirm; +#endif + CMENU.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; +} + +extern void SetDemoStartStopRecText(void) +{ + if (_pNetwork->IsRecordingDemo()) + { + CMENU.gm_mgDemoRec.SetText(TRANS("STOP RECORDING")); + CMENU.gm_mgDemoRec.mg_strTip = TRANS("stop current recording"); + CMENU.gm_mgDemoRec.mg_pActivatedFunction = &StopRecordingDemo; + } + else + { + CMENU.gm_mgDemoRec.SetText(TRANS("RECORD DEMO")); + CMENU.gm_mgDemoRec.mg_strTip = TRANS("start recording current game"); + CMENU.gm_mgDemoRec.mg_pActivatedFunction = &StartDemoSaveMenu; + } +} + +#undef CMENU + +// ------------------------ CSinglePlayerMenu implementation +void StartSinglePlayerGame_Normal(void); +void StartTechTest(void) +{ + gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; + extern CTString sam_strTechTestLevel; + _pGame->gam_strCustomLevel = sam_strTechTestLevel; + StartSinglePlayerGame_Normal(); +} + +void StartTraining(void) +{ + gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; + extern CTString sam_strTrainingLevel; + _pGame->gam_strCustomLevel = sam_strTrainingLevel; + ChangeToMenu(&gmSinglePlayerNewMenu); +} + +#define CMENU gmSinglePlayerMenu + +void InitActionsForSinglePlayerMenu() { + CMENU.gm_mgNewGame.mg_pActivatedFunction = &StartSinglePlayerNewMenu; +#if _SE_DEMO || TECHTESTONLY + CMENU.gm_mgCustom.mg_pActivatedFunction = &DisabledFunction; +#else + CMENU.gm_mgCustom.mg_pActivatedFunction = &StartSelectLevelFromSingle; +#endif + CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartSinglePlayerQuickLoadMenu; + CMENU.gm_mgLoad.mg_pActivatedFunction = &StartSinglePlayerLoadMenu; + CMENU.gm_mgTraining.mg_pActivatedFunction = &StartTraining; + CMENU.gm_mgTechTest.mg_pActivatedFunction = &StartTechTest; + CMENU.gm_mgPlayersAndControls.mg_pActivatedFunction = &StartChangePlayerMenuFromSinglePlayer; + CMENU.gm_mgOptions.mg_pActivatedFunction = &StartSinglePlayerGameOptions; +} + +#undef CMENU + +// ------------------------ CSinglePlayerNewMenu implementation +void StartSinglePlayerGame(void) +{ + /* if (!IsCDInDrive()) { + CDConfirm(StartSinglePlayerGame); + return; + } + */ + + _pGame->gm_StartSplitScreenCfg = CGame::SSC_PLAY1; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_iSinglePlayer; + _pGame->gm_aiStartLocalPlayers[1] = -1; + _pGame->gm_aiStartLocalPlayers[2] = -1; + _pGame->gm_aiStartLocalPlayers[3] = -1; + + _pGame->gm_strNetworkProvider = "Local"; + CUniversalSessionProperties sp; + _pGame->SetSinglePlayerSession(sp); + + if (_pGame->NewGame(_pGame->gam_strCustomLevel, _pGame->gam_strCustomLevel, sp)) + { + StopMenus(); + _gmRunningGameMode = GM_SINGLE_PLAYER; + } + else { + _gmRunningGameMode = GM_NONE; + } +} + +void StartSinglePlayerGame_Tourist(void) +{ + _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_TOURIST); + _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); + StartSinglePlayerGame(); +} + +void StartSinglePlayerGame_Easy(void) +{ + _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EASY); + _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); + StartSinglePlayerGame(); +} + +void StartSinglePlayerGame_Normal(void) +{ + _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_NORMAL); + _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); + StartSinglePlayerGame(); +} + +void StartSinglePlayerGame_Hard(void) +{ + _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_HARD); + _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); + StartSinglePlayerGame(); +} + +void StartSinglePlayerGame_Serious(void) +{ + _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EXTREME); + _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); + StartSinglePlayerGame(); +} + +void StartSinglePlayerGame_Mental(void) +{ + _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EXTREME + 1); + _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); + StartSinglePlayerGame(); +} + + +#define CMENU gmSinglePlayerNewMenu + +void InitActionsForSinglePlayerNewMenu() { + CMENU.gm_mgTourist.mg_pActivatedFunction = &StartSinglePlayerGame_Tourist; + CMENU.gm_mgEasy.mg_pActivatedFunction = &StartSinglePlayerGame_Easy; + CMENU.gm_mgMedium.mg_pActivatedFunction = &StartSinglePlayerGame_Normal; + CMENU.gm_mgHard.mg_pActivatedFunction = &StartSinglePlayerGame_Hard; + CMENU.gm_mgSerious.mg_pActivatedFunction = &StartSinglePlayerGame_Serious; + CMENU.gm_mgMental.mg_pActivatedFunction = &StartSinglePlayerGame_Mental; +} + +#undef CMENU + +// ------------------------ CPlayerProfileMenu implementation +#define CMENU gmPlayerProfile + +void ChangeCrosshair(INDEX iNew) +{ + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + pps->ps_iCrossHairType = iNew - 1; +} + +void ChangeWeaponSelect(INDEX iNew) +{ + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + pps->ps_iWeaponAutoSelect = iNew; +} + +void ChangeWeaponHide(INDEX iNew) +{ + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + if (iNew) { + pps->ps_ulFlags |= PSF_HIDEWEAPON; + } else { + pps->ps_ulFlags &= ~PSF_HIDEWEAPON; + } +} + +void Change3rdPerson(INDEX iNew) +{ + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + if (iNew) { + pps->ps_ulFlags |= PSF_PREFER3RDPERSON; + } else { + pps->ps_ulFlags &= ~PSF_PREFER3RDPERSON; + } +} + +void ChangeQuotes(INDEX iNew) +{ + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + if (iNew) { + pps->ps_ulFlags &= ~PSF_NOQUOTES; + } else { + pps->ps_ulFlags |= PSF_NOQUOTES; + } +} + +void ChangeAutoSave(INDEX iNew) +{ + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + if (iNew) { + pps->ps_ulFlags |= PSF_AUTOSAVE; + } else { + pps->ps_ulFlags &= ~PSF_AUTOSAVE; + } +} + +void ChangeCompDoubleClick(INDEX iNew) +{ + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + if (iNew) { + pps->ps_ulFlags &= ~PSF_COMPSINGLECLICK; + } else { + pps->ps_ulFlags |= PSF_COMPSINGLECLICK; + } +} + +void ChangeViewBobbing(INDEX iNew) +{ + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + if (iNew) { + pps->ps_ulFlags &= ~PSF_NOBOBBING; + } else { + pps->ps_ulFlags |= PSF_NOBOBBING; + } +} + +void ChangeSharpTurning(INDEX iNew) +{ + INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + if (iNew) { + pps->ps_ulFlags |= PSF_SHARPTURNING; + } else { + pps->ps_ulFlags &= ~PSF_SHARPTURNING; + } +} + +extern void PPOnPlayerSelect(void) +{ + ASSERT(_pmgLastActivatedGadget != NULL); + if (_pmgLastActivatedGadget->mg_bEnabled) { + gmPlayerProfile.SelectPlayer(((CMGButton *)_pmgLastActivatedGadget)->mg_iIndex); + } +} + +void InitActionsForPlayerProfileMenu() +{ + CMENU.gm_mgCrosshair.mg_pOnTriggerChange = ChangeCrosshair; + CMENU.gm_mgWeaponSelect.mg_pOnTriggerChange = ChangeWeaponSelect; + CMENU.gm_mgWeaponHide.mg_pOnTriggerChange = ChangeWeaponHide; + CMENU.gm_mg3rdPerson.mg_pOnTriggerChange = Change3rdPerson; + CMENU.gm_mgQuotes.mg_pOnTriggerChange = ChangeQuotes; + CMENU.gm_mgAutoSave.mg_pOnTriggerChange = ChangeAutoSave; + CMENU.gm_mgCompDoubleClick.mg_pOnTriggerChange = ChangeCompDoubleClick; + CMENU.gm_mgSharpTurning.mg_pOnTriggerChange = ChangeSharpTurning; + CMENU.gm_mgViewBobbing.mg_pOnTriggerChange = ChangeViewBobbing; + CMENU.gm_mgCustomizeControls.mg_pActivatedFunction = &StartControlsMenuFromPlayer; + CMENU.gm_mgModel.mg_pActivatedFunction = &StartPlayerModelLoadMenu; +} + +#undef CMENU + +// ------------------------ CControlsMenu implementation +#define CMENU gmControls + +void InitActionsForControlsMenu() +{ + CMENU.gm_mgButtons.mg_pActivatedFunction = &StartCustomizeKeyboardMenu; + CMENU.gm_mgAdvanced.mg_pActivatedFunction = &StartCustomizeAxisMenu; + CMENU.gm_mgPredefined.mg_pActivatedFunction = &StartControlsLoadMenu; +} + +#undef CMENU + +// ------------------------ CCustomizeAxisMenu implementation +#define CMENU gmCustomizeAxisMenu + +void PreChangeAxis(INDEX iDummy) +{ + CMENU.ApplyActionSettings(); +} + +void PostChangeAxis(INDEX iDummy) +{ + CMENU.ObtainActionSettings(); +} + +void InitActionsForCustomizeAxisMenu() { + CMENU.gm_mgActionTrigger.mg_pPreTriggerChange = PreChangeAxis; + CMENU.gm_mgActionTrigger.mg_pOnTriggerChange = PostChangeAxis; +} + +#undef CMENU + +// ------------------------ COptionsMenu implementation +#define CMENU gmOptionsMenu + +void InitActionsForOptionsMenu() +{ + CMENU.gm_mgVideoOptions.mg_pActivatedFunction = &StartVideoOptionsMenu; + CMENU.gm_mgAudioOptions.mg_pActivatedFunction = &StartAudioOptionsMenu; + CMENU.gm_mgPlayerProfileOptions.mg_pActivatedFunction = &StartChangePlayerMenuFromOptions; + CMENU.gm_mgNetworkOptions.mg_pActivatedFunction = &StartNetworkSettingsMenu; + CMENU.gm_mgCustomOptions.mg_pActivatedFunction = &StartCustomLoadMenu; + CMENU.gm_mgAddonOptions.mg_pActivatedFunction = &StartAddonsLoadMenu; +} + +#undef CMENU + +// ------------------------ CVideoOptionsMenu implementation +static INDEX sam_old_bFullScreenActive; +static INDEX sam_old_iScreenSizeI; +static INDEX sam_old_iScreenSizeJ; +static INDEX sam_old_iDisplayDepth; +static INDEX sam_old_iDisplayAdapter; +static INDEX sam_old_iGfxAPI; +static INDEX sam_old_iVideoSetup; // 0==speed, 1==normal, 2==quality, 3==custom + + +#define CMENU gmVideoOptionsMenu + +static void FillResolutionsList(void) +{ + // free resolutions + if (_astrResolutionTexts != NULL) { + delete[] _astrResolutionTexts; + } + if (_admResolutionModes != NULL) { + delete[] _admResolutionModes; + } + _ctResolutions = 0; + + // if window + if (CMENU.gm_mgFullScreenTrigger.mg_iSelected == 0) { + // always has fixed resolutions, but not greater than desktop + + _ctResolutions = ARRAYCOUNT(apixWidths); + _astrResolutionTexts = new CTString[_ctResolutions]; + _admResolutionModes = new CDisplayMode[_ctResolutions]; + extern PIX _pixDesktopWidth; + INDEX iRes = 0; + for (; iRes<_ctResolutions; iRes++) { + if (apixWidths[iRes][0]>_pixDesktopWidth) break; + SetResolutionInList(iRes, apixWidths[iRes][0], apixWidths[iRes][1]); + } + _ctResolutions = iRes; + + // if fullscreen + } else { + // get resolutions list from engine + CDisplayMode *pdm = _pGfx->EnumDisplayModes(_ctResolutions, + SwitchToAPI(CMENU.gm_mgDisplayAPITrigger.mg_iSelected), CMENU.gm_mgDisplayAdaptersTrigger.mg_iSelected); + // allocate that much + _astrResolutionTexts = new CTString[_ctResolutions]; + _admResolutionModes = new CDisplayMode[_ctResolutions]; + // for each resolution + for (INDEX iRes = 0; iRes<_ctResolutions; iRes++) { + // add it to list + SetResolutionInList(iRes, pdm[iRes].dm_pixSizeI, pdm[iRes].dm_pixSizeJ); + } + } + CMENU.gm_mgResolutionsTrigger.mg_astrTexts = _astrResolutionTexts; + CMENU.gm_mgResolutionsTrigger.mg_ctTexts = _ctResolutions; +} + +static void FillAdaptersList(void) +{ + if (_astrAdapterTexts != NULL) { + delete[] _astrAdapterTexts; + } + _ctAdapters = 0; + + INDEX iApi = SwitchToAPI(CMENU.gm_mgDisplayAPITrigger.mg_iSelected); + _ctAdapters = _pGfx->gl_gaAPI[iApi].ga_ctAdapters; + _astrAdapterTexts = new CTString[_ctAdapters]; + for (INDEX iAdapter = 0; iAdapter<_ctAdapters; iAdapter++) { + _astrAdapterTexts[iAdapter] = _pGfx->gl_gaAPI[iApi].ga_adaAdapter[iAdapter].da_strRenderer; + } + CMENU.gm_mgDisplayAdaptersTrigger.mg_astrTexts = _astrAdapterTexts; + CMENU.gm_mgDisplayAdaptersTrigger.mg_ctTexts = _ctAdapters; +} + +extern void UpdateVideoOptionsButtons(INDEX iSelected) +{ + const BOOL _bVideoOptionsChanged = (iSelected != -1); + + const BOOL bOGLEnabled = _pGfx->HasAPI(GAT_OGL); +#ifdef SE1_D3D + const BOOL bD3DEnabled = _pGfx->HasAPI(GAT_D3D); + ASSERT(bOGLEnabled || bD3DEnabled); +#else // + ASSERT(bOGLEnabled); +#endif // SE1_D3D + CDisplayAdapter &da = _pGfx->gl_gaAPI[SwitchToAPI(CMENU.gm_mgDisplayAPITrigger.mg_iSelected)] + .ga_adaAdapter[CMENU.gm_mgDisplayAdaptersTrigger.mg_iSelected]; + + // number of available preferences is higher if video setup is custom + CMENU.gm_mgDisplayPrefsTrigger.mg_ctTexts = 3; + if (sam_iVideoSetup == 3) CMENU.gm_mgDisplayPrefsTrigger.mg_ctTexts++; + + // enumerate adapters + FillAdaptersList(); + + // show or hide buttons + CMENU.gm_mgDisplayAPITrigger.mg_bEnabled = bOGLEnabled +#ifdef SE1_D3D + && bD3DEnabled +#endif // SE1_D3D + ; + CMENU.gm_mgDisplayAdaptersTrigger.mg_bEnabled = _ctAdapters>1; + CMENU.gm_mgApply.mg_bEnabled = _bVideoOptionsChanged; + // determine which should be visible + CMENU.gm_mgFullScreenTrigger.mg_bEnabled = TRUE; + if (da.da_ulFlags&DAF_FULLSCREENONLY) { + CMENU.gm_mgFullScreenTrigger.mg_bEnabled = FALSE; + CMENU.gm_mgFullScreenTrigger.mg_iSelected = 1; + CMENU.gm_mgFullScreenTrigger.ApplyCurrentSelection(); + } + CMENU.gm_mgBitsPerPixelTrigger.mg_bEnabled = TRUE; + if (CMENU.gm_mgFullScreenTrigger.mg_iSelected == 0) { + CMENU.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; + CMENU.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_DEFAULT); + CMENU.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); + } else if (da.da_ulFlags&DAF_16BITONLY) { + CMENU.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; + CMENU.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_16BIT); + CMENU.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); + } + + // remember current selected resolution + PIX pixSizeI, pixSizeJ; + ResolutionToSize(CMENU.gm_mgResolutionsTrigger.mg_iSelected, pixSizeI, pixSizeJ); + + // select same resolution again if possible + FillResolutionsList(); + SizeToResolution(pixSizeI, pixSizeJ, CMENU.gm_mgResolutionsTrigger.mg_iSelected); + + // apply adapter and resolutions + CMENU.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); + CMENU.gm_mgResolutionsTrigger.ApplyCurrentSelection(); +} + + +extern void InitVideoOptionsButtons(void) +{ + if (sam_bFullScreenActive) { + CMENU.gm_mgFullScreenTrigger.mg_iSelected = 1; + } else { + CMENU.gm_mgFullScreenTrigger.mg_iSelected = 0; + } + + CMENU.gm_mgDisplayAPITrigger.mg_iSelected = APIToSwitch((GfxAPIType)(INDEX)sam_iGfxAPI); + CMENU.gm_mgDisplayAdaptersTrigger.mg_iSelected = sam_iDisplayAdapter; + CMENU.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch((enum DisplayDepth)(INDEX)sam_iDisplayDepth); + + FillResolutionsList(); + SizeToResolution(sam_iScreenSizeI, sam_iScreenSizeJ, CMENU.gm_mgResolutionsTrigger.mg_iSelected); + CMENU.gm_mgDisplayPrefsTrigger.mg_iSelected = Clamp(int(sam_iVideoSetup), 0, 3); + + CMENU.gm_mgFullScreenTrigger.ApplyCurrentSelection(); + CMENU.gm_mgDisplayPrefsTrigger.ApplyCurrentSelection(); + CMENU.gm_mgDisplayAPITrigger.ApplyCurrentSelection(); + CMENU.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); + CMENU.gm_mgResolutionsTrigger.ApplyCurrentSelection(); + CMENU.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); +} + +void ApplyVideoOptions(void) +{ + sam_old_bFullScreenActive = sam_bFullScreenActive; + sam_old_iScreenSizeI = sam_iScreenSizeI; + sam_old_iScreenSizeJ = sam_iScreenSizeJ; + sam_old_iDisplayDepth = sam_iDisplayDepth; + sam_old_iDisplayAdapter = sam_iDisplayAdapter; + sam_old_iGfxAPI = sam_iGfxAPI; + sam_old_iVideoSetup = sam_iVideoSetup; + + BOOL bFullScreenMode = gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_iSelected == 1; + PIX pixWindowSizeI, pixWindowSizeJ; + ResolutionToSize(gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_iSelected, pixWindowSizeI, pixWindowSizeJ); + enum GfxAPIType gat = SwitchToAPI(gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_iSelected); + enum DisplayDepth dd = SwitchToDepth(gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_iSelected); + const INDEX iAdapter = gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_iSelected; + + // setup preferences + extern INDEX _iLastPreferences; + if (sam_iVideoSetup == 3) _iLastPreferences = 3; + sam_iVideoSetup = gmVideoOptionsMenu.gm_mgDisplayPrefsTrigger.mg_iSelected; + + // force fullscreen mode if needed + CDisplayAdapter &da = _pGfx->gl_gaAPI[gat].ga_adaAdapter[iAdapter]; + if (da.da_ulFlags & DAF_FULLSCREENONLY) bFullScreenMode = TRUE; + if (da.da_ulFlags & DAF_16BITONLY) dd = DD_16BIT; + // force window to always be in default colors + if (!bFullScreenMode) dd = DD_DEFAULT; + + // (try to) set mode + StartNewMode(gat, iAdapter, pixWindowSizeI, pixWindowSizeJ, dd, bFullScreenMode); + + // refresh buttons + InitVideoOptionsButtons(); + UpdateVideoOptionsButtons(-1); + + // ask user to keep or restore + if (bFullScreenMode) VideoConfirm(); +} + +void RevertVideoSettings(void) +{ + // restore previous variables + sam_bFullScreenActive = sam_old_bFullScreenActive; + sam_iScreenSizeI = sam_old_iScreenSizeI; + sam_iScreenSizeJ = sam_old_iScreenSizeJ; + sam_iDisplayDepth = sam_old_iDisplayDepth; + sam_iDisplayAdapter = sam_old_iDisplayAdapter; + sam_iGfxAPI = sam_old_iGfxAPI; + sam_iVideoSetup = sam_old_iVideoSetup; + + // update the video mode + extern void ApplyVideoMode(void); + ApplyVideoMode(); + + // refresh buttons + InitVideoOptionsButtons(); + UpdateVideoOptionsButtons(-1); +} + +void InitActionsForVideoOptionsMenu() +{ + CMENU.gm_mgDisplayPrefsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + CMENU.gm_mgDisplayAPITrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + CMENU.gm_mgDisplayAdaptersTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + CMENU.gm_mgFullScreenTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + CMENU.gm_mgResolutionsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + CMENU.gm_mgBitsPerPixelTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + CMENU.gm_mgVideoRendering.mg_pActivatedFunction = &StartRenderingOptionsMenu; + CMENU.gm_mgApply.mg_pActivatedFunction = &ApplyVideoOptions; +} + +#undef CMENU + +// ------------------------ CAudioOptionsMenu implementation +extern void RefreshSoundFormat(void) +{ + switch (_pSound->GetFormat()) + { + case CSoundLibrary::SF_NONE: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 0; break; } + case CSoundLibrary::SF_11025_16: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 1; break; } + case CSoundLibrary::SF_22050_16: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 2; break; } + case CSoundLibrary::SF_44100_16: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 3; break; } + default: gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 0; + } + + gmAudioOptionsMenu.gm_mgAudioAutoTrigger.mg_iSelected = Clamp(sam_bAutoAdjustAudio, 0, 1); + gmAudioOptionsMenu.gm_mgAudioAPITrigger.mg_iSelected = Clamp(_pShell->GetINDEX("snd_iInterface"), 0L, 2L); + + gmAudioOptionsMenu.gm_mgWaveVolume.mg_iMinPos = 0; + gmAudioOptionsMenu.gm_mgWaveVolume.mg_iMaxPos = VOLUME_STEPS; + gmAudioOptionsMenu.gm_mgWaveVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fSoundVolume")*VOLUME_STEPS + 0.5f); + gmAudioOptionsMenu.gm_mgWaveVolume.ApplyCurrentPosition(); + + gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iMinPos = 0; + gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iMaxPos = VOLUME_STEPS; + gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fMusicVolume")*VOLUME_STEPS + 0.5f); + gmAudioOptionsMenu.gm_mgMPEGVolume.ApplyCurrentPosition(); + + gmAudioOptionsMenu.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); + gmAudioOptionsMenu.gm_mgAudioAPITrigger.ApplyCurrentSelection(); + gmAudioOptionsMenu.gm_mgFrequencyTrigger.ApplyCurrentSelection(); +} + +void ApplyAudioOptions(void) +{ + sam_bAutoAdjustAudio = gmAudioOptionsMenu.gm_mgAudioAutoTrigger.mg_iSelected; + if (sam_bAutoAdjustAudio) { + _pShell->Execute("include \"Scripts\\Addons\\SFX-AutoAdjust.ini\""); + } else { + _pShell->SetINDEX("snd_iInterface", gmAudioOptionsMenu.gm_mgAudioAPITrigger.mg_iSelected); + + switch (gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected) + { + case 0: {_pSound->SetFormat(CSoundLibrary::SF_NONE); break; } + case 1: {_pSound->SetFormat(CSoundLibrary::SF_11025_16); break; } + case 2: {_pSound->SetFormat(CSoundLibrary::SF_22050_16); break; } + case 3: {_pSound->SetFormat(CSoundLibrary::SF_44100_16); break; } + default: _pSound->SetFormat(CSoundLibrary::SF_NONE); + } + } + + RefreshSoundFormat(); + snd_iFormat = _pSound->GetFormat(); +} + +#define CMENU gmAudioOptionsMenu + +static void OnWaveVolumeChange(INDEX iCurPos) +{ + _pShell->SetFLOAT("snd_fSoundVolume", iCurPos / FLOAT(VOLUME_STEPS)); +} + +void WaveSliderChange(void) +{ + if (_bMouseRight) { + CMENU.gm_mgWaveVolume.mg_iCurPos += 5; + } else { + CMENU.gm_mgWaveVolume.mg_iCurPos -= 5; + } + CMENU.gm_mgWaveVolume.ApplyCurrentPosition(); +} + +void FrequencyTriggerChange(INDEX iDummy) +{ + sam_bAutoAdjustAudio = 0; + CMENU.gm_mgAudioAutoTrigger.mg_iSelected = 0; + CMENU.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); +} + +void MPEGSliderChange(void) +{ + if (_bMouseRight) { + CMENU.gm_mgMPEGVolume.mg_iCurPos += 5; + } else { + CMENU.gm_mgMPEGVolume.mg_iCurPos -= 5; + } + CMENU.gm_mgMPEGVolume.ApplyCurrentPosition(); +} + +static void OnMPEGVolumeChange(INDEX iCurPos) +{ + _pShell->SetFLOAT("snd_fMusicVolume", iCurPos / FLOAT(VOLUME_STEPS)); +} + +void InitActionsForAudioOptionsMenu() +{ + CMENU.gm_mgFrequencyTrigger.mg_pOnTriggerChange = FrequencyTriggerChange; + CMENU.gm_mgWaveVolume.mg_pOnSliderChange = &OnWaveVolumeChange; + CMENU.gm_mgWaveVolume.mg_pActivatedFunction = WaveSliderChange; + CMENU.gm_mgMPEGVolume.mg_pOnSliderChange = &OnMPEGVolumeChange; + CMENU.gm_mgMPEGVolume.mg_pActivatedFunction = MPEGSliderChange; + CMENU.gm_mgApply.mg_pActivatedFunction = &ApplyAudioOptions; +} + +#undef CMENU + +// ------------------------ CVarMenu implementation +#define CMENU gmVarMenu + +void VarApply(void) +{ + FlushVarSettings(TRUE); + CMENU.EndMenu(); + CMENU.StartMenu(); +} + +void InitActionsForVarMenu() { + CMENU.gm_mgApply.mg_pActivatedFunction = &VarApply; +} + +#undef CMENU +// ------------------------ CServersMenu implementation +extern void RefreshServerList(void) +{ + _pNetwork->EnumSessions(gmServersMenu.m_bInternet); +} + +void RefreshServerListManually(void) +{ + ChangeToMenu(&gmServersMenu); // this refreshes the list and sets focuses +} + +void SortByColumn(int i) +{ + if (gmServersMenu.gm_mgList.mg_iSort == i) { + gmServersMenu.gm_mgList.mg_bSortDown = !gmServersMenu.gm_mgList.mg_bSortDown; + } + else { + gmServersMenu.gm_mgList.mg_bSortDown = FALSE; + } + gmServersMenu.gm_mgList.mg_iSort = i; +} + +void SortByServer(void) { SortByColumn(0); } +void SortByMap(void) { SortByColumn(1); } +void SortByPing(void) { SortByColumn(2); } +void SortByPlayers(void){ SortByColumn(3); } +void SortByGame(void) { SortByColumn(4); } +void SortByMod(void) { SortByColumn(5); } +void SortByVer(void) { SortByColumn(6); } + +extern CMGButton mgServerColumn[7]; +extern CMGEdit mgServerFilter[7]; + +void InitActionsForServersMenu() { + gmServersMenu.gm_mgRefresh.mg_pActivatedFunction = &RefreshServerList; + + mgServerColumn[0].mg_pActivatedFunction = SortByServer; + mgServerColumn[1].mg_pActivatedFunction = SortByMap; + mgServerColumn[2].mg_pActivatedFunction = SortByPing; + mgServerColumn[3].mg_pActivatedFunction = SortByPlayers; + mgServerColumn[4].mg_pActivatedFunction = SortByGame; + mgServerColumn[5].mg_pActivatedFunction = SortByMod; + mgServerColumn[6].mg_pActivatedFunction = SortByVer; +} + +// ------------------------ CNetworkMenu implementation +#define CMENU gmNetworkMenu + +void InitActionsForNetworkMenu() +{ + CMENU.gm_mgJoin.mg_pActivatedFunction = &StartNetworkJoinMenu; + CMENU.gm_mgStart.mg_pActivatedFunction = &StartNetworkStartMenu; + CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartNetworkQuickLoadMenu; + CMENU.gm_mgLoad.mg_pActivatedFunction = &StartNetworkLoadMenu; +} + +#undef CMENU + +// ------------------------ CNetworkJoinMenu implementation +#define CMENU gmNetworkJoinMenu + +void InitActionsForNetworkJoinMenu() +{ + CMENU.gm_mgLAN.mg_pActivatedFunction = &StartSelectServerLAN; + CMENU.gm_mgNET.mg_pActivatedFunction = &StartSelectServerNET; + CMENU.gm_mgOpen.mg_pActivatedFunction = &StartNetworkOpenMenu; +} + +#undef CMENU + +// ------------------------ CNetworkStartMenu implementation +extern void UpdateNetworkLevel(INDEX iDummy) +{ + ValidateLevelForFlags(_pGame->gam_strCustomLevel, + GetSpawnFlagsForGameType(gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); + gmNetworkStartMenu.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; +} + +void InitActionsForNetworkStartMenu() +{ + gmNetworkStartMenu.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromNetwork; + gmNetworkStartMenu.gm_mgGameOptions.mg_pActivatedFunction = &StartGameOptionsFromNetwork; + gmNetworkStartMenu.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromNetwork; +} + +// +#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 SET_CHGPLR( gd, iplayer, bnone, bauto, pmgit) \ + gd.mg_pmgInfoTable = pmgit; \ + gd.mg_bResetToNone = bnone; \ + gd.mg_bAutomatic = bauto; \ + gd.mg_iLocalPlayer = iplayer; + +// ------------------------ CSelectPlayersMenu implementation +#define CMENU gmSelectPlayersMenu + +INDEX FindUnusedPlayer(void) +{ + INDEX *ai = _pGame->gm_aiMenuLocalPlayers; + INDEX iPlayer = 0; + for (; iPlayer<8; iPlayer++) { + BOOL bUsed = FALSE; + for (INDEX iLocal = 0; iLocal<4; iLocal++) { + if (ai[iLocal] == iPlayer) { + bUsed = TRUE; + break; + } + } + if (!bUsed) { + return iPlayer; + } + } + ASSERT(FALSE); + return iPlayer; +} + +extern void SelectPlayersFillMenu(void) +{ + INDEX *ai = _pGame->gm_aiMenuLocalPlayers; + + CMENU.gm_mgPlayer0Change.mg_iLocalPlayer = 0; + CMENU.gm_mgPlayer1Change.mg_iLocalPlayer = 1; + CMENU.gm_mgPlayer2Change.mg_iLocalPlayer = 2; + CMENU.gm_mgPlayer3Change.mg_iLocalPlayer = 3; + + if (CMENU.gm_bAllowDedicated && _pGame->gm_MenuSplitScreenCfg == CGame::SSC_DEDICATED) { + CMENU.gm_mgDedicated.mg_iSelected = 1; + } else { + CMENU.gm_mgDedicated.mg_iSelected = 0; + } + + gmSelectPlayersMenu.gm_mgDedicated.ApplyCurrentSelection(); + + if (CMENU.gm_bAllowObserving && _pGame->gm_MenuSplitScreenCfg == CGame::SSC_OBSERVER) { + CMENU.gm_mgObserver.mg_iSelected = 1; + } else { + CMENU.gm_mgObserver.mg_iSelected = 0; + } + + CMENU.gm_mgObserver.ApplyCurrentSelection(); + + if (_pGame->gm_MenuSplitScreenCfg >= CGame::SSC_PLAY1) { + CMENU.gm_mgSplitScreenCfg.mg_iSelected = _pGame->gm_MenuSplitScreenCfg; + CMENU.gm_mgSplitScreenCfg.ApplyCurrentSelection(); + } + + BOOL bHasDedicated = CMENU.gm_bAllowDedicated; + BOOL bHasObserver = CMENU.gm_bAllowObserving; + BOOL bHasPlayers = TRUE; + + if (bHasDedicated && CMENU.gm_mgDedicated.mg_iSelected) { + bHasObserver = FALSE; + bHasPlayers = FALSE; + } + + if (bHasObserver && CMENU.gm_mgObserver.mg_iSelected) { + bHasPlayers = FALSE; + } + + CMenuGadget *apmg[8]; + memset(apmg, 0, sizeof(apmg)); + INDEX i = 0; + + if (bHasDedicated) { + CMENU.gm_mgDedicated.Appear(); + apmg[i++] = &CMENU.gm_mgDedicated; + } else { + CMENU.gm_mgDedicated.Disappear(); + } + + if (bHasObserver) { + CMENU.gm_mgObserver.Appear(); + apmg[i++] = &CMENU.gm_mgObserver; + } else { + CMENU.gm_mgObserver.Disappear(); + } + + for (INDEX iLocal = 0; iLocal<4; iLocal++) { + if (ai[iLocal]<0 || ai[iLocal]>7) { + ai[iLocal] = 0; + } + for (INDEX iCopy = 0; iCopy= 1) { + CMENU.gm_mgPlayer1Change.Appear(); + apmg[i++] = &CMENU.gm_mgPlayer1Change; + } + if (CMENU.gm_mgSplitScreenCfg.mg_iSelected >= 2) { + CMENU.gm_mgPlayer2Change.Appear(); + apmg[i++] = &CMENU.gm_mgPlayer2Change; + } + if (CMENU.gm_mgSplitScreenCfg.mg_iSelected >= 3) { + CMENU.gm_mgPlayer3Change.Appear(); + apmg[i++] = &CMENU.gm_mgPlayer3Change; + } + } else { + CMENU.gm_mgSplitScreenCfg.Disappear(); + } + apmg[i++] = &CMENU.gm_mgStart; + + // relink + for (INDEX img = 0; img<8; img++) { + if (apmg[img] == NULL) { + continue; + } + INDEX imgPred = (img + 8 - 1) % 8; + for (; imgPred != img; imgPred = (imgPred + 8 - 1) % 8) { + if (apmg[imgPred] != NULL) { + break; + } + } + INDEX imgSucc = (img + 1) % 8; + for (; imgSucc != img; imgSucc = (imgSucc + 1) % 8) { + if (apmg[imgSucc] != NULL) { + break; + } + } + apmg[img]->mg_pmgUp = apmg[imgPred]; + apmg[img]->mg_pmgDown = apmg[imgSucc]; + } + + CMENU.gm_mgPlayer0Change.SetPlayerText(); + CMENU.gm_mgPlayer1Change.SetPlayerText(); + CMENU.gm_mgPlayer2Change.SetPlayerText(); + CMENU.gm_mgPlayer3Change.SetPlayerText(); + + if (bHasPlayers && CMENU.gm_mgSplitScreenCfg.mg_iSelected >= 1) { + CMENU.gm_mgNotes.mg_strText = TRANS("Make sure you set different controls for each player!"); + } + else { + CMENU.gm_mgNotes.mg_strText = ""; + } +} + +extern void SelectPlayersApplyMenu(void) +{ + if (CMENU.gm_bAllowDedicated && CMENU.gm_mgDedicated.mg_iSelected) { + _pGame->gm_MenuSplitScreenCfg = CGame::SSC_DEDICATED; + return; + } + + if (CMENU.gm_bAllowObserving && CMENU.gm_mgObserver.mg_iSelected) { + _pGame->gm_MenuSplitScreenCfg = CGame::SSC_OBSERVER; + return; + } + + _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) CMENU.gm_mgSplitScreenCfg.mg_iSelected; +} + +void UpdateSelectPlayers(INDEX i) +{ + SelectPlayersApplyMenu(); + SelectPlayersFillMenu(); +} + +void InitActionsForSelectPlayersMenu() +{ + CMENU.gm_mgDedicated.mg_pOnTriggerChange = UpdateSelectPlayers; + CMENU.gm_mgObserver.mg_pOnTriggerChange = UpdateSelectPlayers; + CMENU.gm_mgSplitScreenCfg.mg_pOnTriggerChange = UpdateSelectPlayers; +} + +#undef CMENU + +// ------------------------ CNetworkOpenMenu implementation +void InitActionsForNetworkOpenMenu() +{ + gmNetworkOpenMenu.gm_mgJoin.mg_pActivatedFunction = &StartSelectPlayersMenuFromOpen; +} + +// ------------------------ CSplitScreenMenu implementation +#define CMENU gmSplitScreenMenu + +void InitActionsForSplitScreenMenu() +{ + CMENU.gm_mgStart.mg_pActivatedFunction = &StartSplitStartMenu; + CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartSplitScreenQuickLoadMenu; + CMENU.gm_mgLoad.mg_pActivatedFunction = &StartSplitScreenLoadMenu; +} + +#undef CMENU + +// ------------------------ CSplitStartMenu implementation +#define CMENU gmSplitStartMenu + +void InitActionsForSplitStartMenu() +{ + CMENU.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromSplit; + CMENU.gm_mgOptions.mg_pActivatedFunction = &StartGameOptionsFromSplitScreen; + CMENU.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromSplit; +} + +extern void UpdateSplitLevel(INDEX iDummy) +{ + ValidateLevelForFlags(_pGame->gam_strCustomLevel, + GetSpawnFlagsForGameType(gmSplitStartMenu.gm_mgGameType.mg_iSelected)); + gmSplitStartMenu.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; +} + +#undef CMENU \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/Menu_starters.cpp b/Sources/SeriousSam/GUI/Menus/Menu_starters.cpp new file mode 100644 index 0000000..f34e4fe --- /dev/null +++ b/Sources/SeriousSam/GUI/Menus/Menu_starters.cpp @@ -0,0 +1,1024 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include + +#include "Menu_starters.h" +#include "MenuStuff.h" +#include "LevelInfo.h" + +#include "MAudioOptions.h" +#include "MConfirm.h" +#include "MControls.h" +#include "MCustomizeAxis.h" +#include "MCustomizeKeyboard.h" +#include "MCredits.h" +#include "MDisabled.h" +#include "MHighScore.h" +#include "MInGame.h" +#include "MLevels.h" +#include "MMain.h" +#include "MNetwork.h" +#include "MNetworkJoin.h" +#include "MNetworkOpen.h" +#include "MNetworkStart.h" +#include "MOptions.h" +#include "MRenderingOptions.h" +#include "MServers.h" +#include "MSinglePlayer.h" +#include "MSinglePlayerNew.h" +#include "MSplitScreen.h" +#include "MSplitStart.h" +#include "MVar.h" +#include "MVideoOptions.h" + +extern void(*_pAfterLevelChosen)(void); +extern BOOL _bPlayerMenuFromSinglePlayer; + +extern CTString _strLastPlayerAppearance; +extern CTString sam_strNetworkSettings; + +extern CTFileName _fnmModSelected; +extern CTString _strModURLSelected; +extern CTString _strModServerSelected; + +CTFileName _fnDemoToPlay; +CTFileName _fnGameToLoad; + +extern CConfirmMenu gmConfirmMenu; +extern CMainMenu gmMainMenu; +extern CInGameMenu gmInGameMenu; +extern CSinglePlayerMenu gmSinglePlayerMenu; +extern CSinglePlayerNewMenu gmSinglePlayerNewMenu; +extern CDisabledMenu gmDisabledFunction; +extern CLevelsMenu gmLevelsMenu; +extern CVarMenu gmVarMenu; +extern CPlayerProfileMenu gmPlayerProfile; +extern CControlsMenu gmControls; +extern CLoadSaveMenu gmLoadSaveMenu; +extern CHighScoreMenu gmHighScoreMenu; +extern CCustomizeKeyboardMenu gmCustomizeKeyboardMenu; +extern CServersMenu gmServersMenu; +extern CCustomizeAxisMenu gmCustomizeAxisMenu; +extern COptionsMenu gmOptionsMenu; +extern CVideoOptionsMenu gmVideoOptionsMenu; +extern CAudioOptionsMenu gmAudioOptionsMenu; +extern CNetworkMenu gmNetworkMenu; +extern CNetworkJoinMenu gmNetworkJoinMenu; +extern CNetworkStartMenu gmNetworkStartMenu; +extern CNetworkOpenMenu gmNetworkOpenMenu; +extern CSplitScreenMenu gmSplitScreenMenu; +extern CSplitStartMenu gmSplitStartMenu; +extern CSelectPlayersMenu gmSelectPlayersMenu; + + +void StartVideoOptionsMenu(void) +{ + ChangeToMenu(&gmVideoOptionsMenu); +} + +void StartAudioOptionsMenu(void) +{ + ChangeToMenu(&gmAudioOptionsMenu); +} + +void StartNetworkMenu(void) +{ + ChangeToMenu(&gmNetworkMenu); +} + +void StartNetworkJoinMenu(void) +{ + ChangeToMenu(&gmNetworkJoinMenu); +} + +void StartNetworkStartMenu(void) +{ + ChangeToMenu(&gmNetworkStartMenu); +} + +void StartNetworkOpenMenu(void) +{ + ChangeToMenu(&gmNetworkOpenMenu); +} + +void StartSplitScreenMenu(void) +{ + ChangeToMenu(&gmSplitScreenMenu); +} + +void StartSplitStartMenu(void) +{ + ChangeToMenu(&gmSplitStartMenu); +} + +void StartSinglePlayerNewMenuCustom(void) +{ + gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmLevelsMenu; + ChangeToMenu(&gmSinglePlayerNewMenu); +} + +static void SetQuickLoadNotes(void) +{ + if (_pShell->GetINDEX("gam_iQuickSaveSlots") <= 8) { + gmLoadSaveMenu.gm_mgNotes.mg_strText = TRANS( + "In-game QuickSave shortcuts:\n" + "F6 - save a new QuickSave\n" + "F9 - load the last QuickSave\n"); + } else { + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + } +} + +void StartSinglePlayerNewMenu(void) +{ + gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; + extern CTString sam_strFirstLevel; + _pGame->gam_strCustomLevel = sam_strFirstLevel; + ChangeToMenu(&gmSinglePlayerNewMenu); +} + +BOOL LSLoadSinglePlayer(const CTFileName &fnm) +{ + _pGame->gm_StartSplitScreenCfg = CGame::SSC_PLAY1; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_iSinglePlayer; + _pGame->gm_aiStartLocalPlayers[1] = -1; + _pGame->gm_aiStartLocalPlayers[2] = -1; + _pGame->gm_aiStartLocalPlayers[3] = -1; + _pGame->gm_strNetworkProvider = "Local"; + if (_pGame->LoadGame(fnm)) { + StopMenus(); + _gmRunningGameMode = GM_SINGLE_PLAYER; + } + else { + _gmRunningGameMode = GM_NONE; + } + return TRUE; +} + +BOOL LSLoadNetwork(const CTFileName &fnm) +{ + // call local players menu + _fnGameToLoad = fnm; + StartSelectPlayersMenuFromNetworkLoad(); + return TRUE; +} + +BOOL LSLoadSplitScreen(const CTFileName &fnm) +{ + // call local players menu + _fnGameToLoad = fnm; + StartSelectPlayersMenuFromSplitScreenLoad(); + return TRUE; +} + +void StartDemoPlay(void) +{ + _pGame->gm_StartSplitScreenCfg = CGame::SSC_OBSERVER; + // play the demo + _pGame->gm_strNetworkProvider = "Local"; + if (_pGame->StartDemoPlay(_fnDemoToPlay)) + { + // exit menu and pull up the console + StopMenus(); + if (_pGame->gm_csConsoleState != CS_OFF) _pGame->gm_csConsoleState = CS_TURNINGOFF; + _gmRunningGameMode = GM_DEMO; + } + else { + _gmRunningGameMode = GM_NONE; + } +} + +extern BOOL LSLoadDemo(const CTFileName &fnm) +{ + // call local players menu + _fnDemoToPlay = fnm; + StartDemoPlay(); + return TRUE; +} + +BOOL LSLoadPlayerModel(const CTFileName &fnm) +{ + // get base filename + CTString strBaseName = fnm.FileName(); + // set it for current player + CPlayerCharacter &pc = _pGame->gm_apcPlayers[*gmPlayerProfile.gm_piCurrentPlayer]; + CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; + memset(pps->ps_achModelFile, 0, sizeof(pps->ps_achModelFile)); + strncpy(pps->ps_achModelFile, strBaseName, sizeof(pps->ps_achModelFile)); + + void MenuGoToParent(void); + MenuGoToParent(); + return TRUE; +} + +extern void ControlsMenuOn(); +extern void ControlsMenuOff(); + +BOOL LSLoadControls(const CTFileName &fnm) +{ + try { + ControlsMenuOn(); + _pGame->gm_ctrlControlsExtra.Load_t(fnm); + ControlsMenuOff(); + } catch (char *strError) { + CPrintF("%s", strError); + } + + void MenuGoToParent(void); + MenuGoToParent(); + return TRUE; +} + +BOOL LSLoadAddon(const CTFileName &fnm) +{ + extern INDEX _iAddonExecState; + extern CTFileName _fnmAddonToExec; + _iAddonExecState = 1; + _fnmAddonToExec = fnm; + return TRUE; +} + +BOOL LSLoadMod(const CTFileName &fnm) +{ + _fnmModSelected = fnm; + extern void ModConfirm(void); + ModConfirm(); + return TRUE; +} + +BOOL LSLoadCustom(const CTFileName &fnm) +{ + gmVarMenu.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); + // LoadStringVar(fnm.NoExt()+".des", mgVarTitle.mg_strText); + // mgVarTitle.mg_strText.OnlyFirstLine(); + gmVarMenu.gm_fnmMenuCFG = fnm; + gmVarMenu.gm_pgmParentMenu = &gmLoadSaveMenu; + ChangeToMenu(&gmVarMenu); + return TRUE; +} + +BOOL LSLoadNetSettings(const CTFileName &fnm) +{ + sam_strNetworkSettings = fnm; + CTString strCmd; + strCmd.PrintF("include \"%s\"", (const char*)sam_strNetworkSettings); + _pShell->Execute(strCmd); + + void MenuGoToParent(void); + MenuGoToParent(); + return TRUE; +} + +// same function for saving in singleplay, network and splitscreen +BOOL LSSaveAnyGame(const CTFileName &fnm) +{ + if (_pGame->SaveGame(fnm)) { + StopMenus(); + return TRUE; + } else { + return FALSE; + } +} + +BOOL LSSaveDemo(const CTFileName &fnm) +{ + // save the demo + if (_pGame->StartDemoRec(fnm)) { + StopMenus(); + return TRUE; + } else { + return FALSE; + } +} + +void StartSinglePlayerQuickLoadMenu(void) +{ + _gmMenuGameMode = GM_SINGLE_PLAYER; + + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); + gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + gmLoadSaveMenu.gm_bSave = FALSE; + gmLoadSaveMenu.gm_bManage = TRUE; + gmLoadSaveMenu.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\Quick\\", _pGame->gm_iSinglePlayer); + gmLoadSaveMenu.gm_fnmSelected = CTString(""); + gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSinglePlayer; + SetQuickLoadNotes(); + + gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartSinglePlayerLoadMenu(void) +{ + _gmMenuGameMode = GM_SINGLE_PLAYER; + + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); + gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + gmLoadSaveMenu.gm_bSave = FALSE; + gmLoadSaveMenu.gm_bManage = TRUE; + gmLoadSaveMenu.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); + gmLoadSaveMenu.gm_fnmSelected = CTString(""); + gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSinglePlayer; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + + gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartSinglePlayerSaveMenu(void) +{ + if (_gmRunningGameMode != GM_SINGLE_PLAYER) return; + // if no live players + if (_pGame->GetPlayersCount()>0 && _pGame->GetLivePlayersCount() <= 0) { + // do nothing + return; + } + _gmMenuGameMode = GM_SINGLE_PLAYER; + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); + gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + gmLoadSaveMenu.gm_bSave = TRUE; + gmLoadSaveMenu.gm_bManage = TRUE; + gmLoadSaveMenu.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); + gmLoadSaveMenu.gm_fnmSelected = CTString(""); + gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); + gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); + + gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartDemoLoadMenu(void) +{ + _gmMenuGameMode = GM_DEMO; + + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("PLAY DEMO"); + gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + gmLoadSaveMenu.gm_bSave = FALSE; + gmLoadSaveMenu.gm_bManage = TRUE; + gmLoadSaveMenu.gm_fnmDirectory = CTString("Demos\\"); + gmLoadSaveMenu.gm_fnmSelected = CTString(""); + gmLoadSaveMenu.gm_fnmExt = CTString(".dem"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadDemo; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + + gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartDemoSaveMenu(void) +{ + if (_gmRunningGameMode == GM_NONE) return; + _gmMenuGameMode = GM_DEMO; + + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("RECORD DEMO"); + gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; + gmLoadSaveMenu.gm_bSave = TRUE; + gmLoadSaveMenu.gm_bManage = TRUE; + gmLoadSaveMenu.gm_fnmDirectory = CTString("Demos\\"); + gmLoadSaveMenu.gm_fnmSelected = CTString(""); + gmLoadSaveMenu.gm_fnmBaseName = CTString("Demo"); + gmLoadSaveMenu.gm_fnmExt = CTString(".dem"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveDemo; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(FALSE); + + gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartNetworkQuickLoadMenu(void) +{ + _gmMenuGameMode = GM_NETWORK; + + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); + gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + gmLoadSaveMenu.gm_bSave = FALSE; + gmLoadSaveMenu.gm_bManage = TRUE; + gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\Network\\Quick\\"); + gmLoadSaveMenu.gm_fnmSelected = CTString(""); + gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetwork; + SetQuickLoadNotes(); + + gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartNetworkLoadMenu(void) +{ + _gmMenuGameMode = GM_NETWORK; + + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); + gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + gmLoadSaveMenu.gm_bSave = FALSE; + gmLoadSaveMenu.gm_bManage = TRUE; + gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\Network\\"); + gmLoadSaveMenu.gm_fnmSelected = CTString(""); + gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetwork; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + + gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartNetworkSaveMenu(void) +{ + if (_gmRunningGameMode != GM_NETWORK) return; + _gmMenuGameMode = GM_NETWORK; + + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); + gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + gmLoadSaveMenu.gm_bSave = TRUE; + gmLoadSaveMenu.gm_bManage = TRUE; + gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\Network\\"); + gmLoadSaveMenu.gm_fnmSelected = CTString(""); + gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); + gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); + + gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartSplitScreenQuickLoadMenu(void) +{ + _gmMenuGameMode = GM_SPLIT_SCREEN; + + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); + gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + gmLoadSaveMenu.gm_bSave = FALSE; + gmLoadSaveMenu.gm_bManage = TRUE; + gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\Quick\\"); + gmLoadSaveMenu.gm_fnmSelected = CTString(""); + gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSplitScreen; + SetQuickLoadNotes(); + + gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartSplitScreenLoadMenu(void) +{ + _gmMenuGameMode = GM_SPLIT_SCREEN; + + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); + gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + gmLoadSaveMenu.gm_bSave = FALSE; + gmLoadSaveMenu.gm_bManage = TRUE; + gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); + gmLoadSaveMenu.gm_fnmSelected = CTString(""); + gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSplitScreen; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + + gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartSplitScreenSaveMenu(void) +{ + if (_gmRunningGameMode != GM_SPLIT_SCREEN) return; + _gmMenuGameMode = GM_SPLIT_SCREEN; + + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); + gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + gmLoadSaveMenu.gm_bSave = TRUE; + gmLoadSaveMenu.gm_bManage = TRUE; + gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); + gmLoadSaveMenu.gm_fnmSelected = CTString(""); + gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); + gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); + + gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmLoadSaveMenu); +} + +// game options var settings +void StartVarGameOptions(void) +{ + gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); + gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\GameOptions.cfg"); + ChangeToMenu(&gmVarMenu); +} + +void StartSinglePlayerGameOptions(void) +{ + gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); + gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\SPOptions.cfg"); + ChangeToMenu(&gmVarMenu); + gmVarMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; +} + +void StartGameOptionsFromNetwork(void) +{ + StartVarGameOptions(); + gmVarMenu.gm_pgmParentMenu = &gmNetworkStartMenu; +} + +void StartGameOptionsFromSplitScreen(void) +{ + StartVarGameOptions(); + gmVarMenu.gm_pgmParentMenu = &gmSplitStartMenu; +} + +// rendering options var settings +void StartRenderingOptionsMenu(void) +{ + gmVarMenu.gm_mgTitle.mg_strText = TRANS("RENDERING OPTIONS"); + gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\RenderingOptions.cfg"); + gmVarMenu.gm_pgmParentMenu = &gmVideoOptionsMenu; + ChangeToMenu(&gmVarMenu); +} + +void StartCustomizeKeyboardMenu(void) +{ + ChangeToMenu(&gmCustomizeKeyboardMenu); +} + +void StartCustomizeAxisMenu(void) +{ + ChangeToMenu(&gmCustomizeAxisMenu); +} + +void StartOptionsMenu(void) +{ + gmOptionsMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmOptionsMenu); +} + +void StartCurrentLoadMenu() +{ + if (_gmRunningGameMode == GM_NETWORK) { + void StartNetworkLoadMenu(void); + StartNetworkLoadMenu(); + } + else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { + void StartSplitScreenLoadMenu(void); + StartSplitScreenLoadMenu(); + } + else { + void StartSinglePlayerLoadMenu(void); + StartSinglePlayerLoadMenu(); + } +} + +void StartCurrentSaveMenu() +{ + if (_gmRunningGameMode == GM_NETWORK) { + void StartNetworkSaveMenu(void); + StartNetworkSaveMenu(); + } + else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { + void StartSplitScreenSaveMenu(void); + StartSplitScreenSaveMenu(); + } + else { + void StartSinglePlayerSaveMenu(void); + StartSinglePlayerSaveMenu(); + } +} + +void StartCurrentQuickLoadMenu() +{ + if (_gmRunningGameMode == GM_NETWORK) { + void StartNetworkQuickLoadMenu(void); + StartNetworkQuickLoadMenu(); + } + else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { + void StartSplitScreenQuickLoadMenu(void); + StartSplitScreenQuickLoadMenu(); + } + else { + void StartSinglePlayerQuickLoadMenu(void); + StartSinglePlayerQuickLoadMenu(); + } +} + +void StartChangePlayerMenuFromOptions(void) +{ + _bPlayerMenuFromSinglePlayer = FALSE; + gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; + gmPlayerProfile.gm_pgmParentMenu = &gmOptionsMenu; + ChangeToMenu(&gmPlayerProfile); +} + +void StartChangePlayerMenuFromSinglePlayer(void) +{ + _iLocalPlayer = -1; + _bPlayerMenuFromSinglePlayer = TRUE; + gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; + gmPlayerProfile.gm_pgmParentMenu = &gmSinglePlayerMenu; + ChangeToMenu(&gmPlayerProfile); +} + +void StartControlsMenuFromPlayer(void) +{ + gmControls.gm_pgmParentMenu = &gmPlayerProfile; + ChangeToMenu(&gmControls); +} + +void StartControlsMenuFromOptions(void) +{ + gmControls.gm_pgmParentMenu = &gmOptionsMenu; + ChangeToMenu(&gmControls); +} + +void StartSelectLevelFromSingle(void) +{ + FilterLevels(GetSpawnFlagsForGameType(-1)); + _pAfterLevelChosen = StartSinglePlayerNewMenuCustom; + ChangeToMenu(&gmLevelsMenu); + gmLevelsMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; +} + +void StartHighScoreMenu(void) +{ + gmHighScoreMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmHighScoreMenu); +} + +void StartSplitScreenGame(void) +{ + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + + CTFileName fnWorld = _pGame->gam_strCustomLevel; + + _pGame->gm_strNetworkProvider = "Local"; + CUniversalSessionProperties sp; + _pGame->SetMultiPlayerSession(sp); + if (_pGame->NewGame(fnWorld.FileName(), fnWorld, sp)) + { + StopMenus(); + _gmRunningGameMode = GM_SPLIT_SCREEN; + } + else { + _gmRunningGameMode = GM_NONE; + } +} + +void StartSelectPlayersMenuFromSplit(void) +{ + gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + gmSelectPlayersMenu.gm_bAllowObserving = FALSE; + gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; + gmSelectPlayersMenu.gm_pgmParentMenu = &gmSplitStartMenu; + ChangeToMenu(&gmSelectPlayersMenu); +} + +void StartNetworkGame(void) +{ + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + + CTFileName fnWorld = _pGame->gam_strCustomLevel; + + _pGame->gm_strNetworkProvider = "TCP/IP Server"; + CUniversalSessionProperties sp; + _pGame->SetMultiPlayerSession(sp); + if (_pGame->NewGame(_pGame->gam_strSessionName, fnWorld, sp)) + { + StopMenus(); + _gmRunningGameMode = GM_NETWORK; + // if starting a dedicated server + if (_pGame->gm_MenuSplitScreenCfg == CGame::SSC_DEDICATED) { + // pull down the console + extern INDEX sam_bToggleConsole; + sam_bToggleConsole = TRUE; + } + } + else { + _gmRunningGameMode = GM_NONE; + } +} + +void StartSelectPlayersMenuFromNetwork(void) +{ + gmSelectPlayersMenu.gm_bAllowDedicated = TRUE; + gmSelectPlayersMenu.gm_bAllowObserving = TRUE; + gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkGame; + gmSelectPlayersMenu.gm_pgmParentMenu = &gmNetworkStartMenu; + ChangeToMenu(&gmSelectPlayersMenu); +} + +void JoinNetworkGame(void) +{ + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + + _pGame->gm_strNetworkProvider = "TCP/IP Client"; + if (_pGame->JoinGame(CNetworkSession(_pGame->gam_strJoinAddress))) + { + StopMenus(); + _gmRunningGameMode = GM_NETWORK; + } + else { + if (_pNetwork->ga_strRequiredMod != "") { + extern CTFileName _fnmModToLoad; + extern CTString _strModServerJoin; + char strModName[256] = { 0 }; + char strModURL[256] = { 0 }; + _pNetwork->ga_strRequiredMod.ScanF("%250[^\\]\\%s", &strModName, &strModURL); + _fnmModSelected = CTString(strModName); + _strModURLSelected = strModURL; + if (_strModURLSelected = "") { + _strModURLSelected = "http://www.croteam.com/mods/Old"; + } + _strModServerSelected.PrintF("%s:%s", _pGame->gam_strJoinAddress, _pShell->GetValue("net_iPort")); + extern void ModConnectConfirm(void); + ModConnectConfirm(); + } + _gmRunningGameMode = GM_NONE; + } +} + +void StartSelectPlayersMenuFromOpen(void) +{ + gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + gmSelectPlayersMenu.gm_bAllowObserving = TRUE; + gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; + gmSelectPlayersMenu.gm_pgmParentMenu = &gmNetworkOpenMenu; + ChangeToMenu(&gmSelectPlayersMenu); + + /*if (sam_strNetworkSettings=="")*/ { + void StartNetworkSettingsMenu(void); + StartNetworkSettingsMenu(); + gmLoadSaveMenu.gm_bNoEscape = TRUE; + gmLoadSaveMenu.gm_pgmParentMenu = &gmNetworkOpenMenu; + gmLoadSaveMenu.gm_pgmNextMenu = &gmSelectPlayersMenu; + } +} +void StartSelectPlayersMenuFromServers(void) +{ + gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + gmSelectPlayersMenu.gm_bAllowObserving = TRUE; + gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; + gmSelectPlayersMenu.gm_pgmParentMenu = &gmServersMenu; + ChangeToMenu(&gmSelectPlayersMenu); + + /*if (sam_strNetworkSettings=="")*/ { + void StartNetworkSettingsMenu(void); + StartNetworkSettingsMenu(); + gmLoadSaveMenu.gm_bNoEscape = TRUE; + gmLoadSaveMenu.gm_pgmParentMenu = &gmServersMenu; + gmLoadSaveMenu.gm_pgmNextMenu = &gmSelectPlayersMenu; + } +} + +void StartSelectServerLAN(void) +{ + gmServersMenu.m_bInternet = FALSE; + ChangeToMenu(&gmServersMenu); + gmServersMenu.gm_pgmParentMenu = &gmNetworkJoinMenu; +} + +void StartSelectServerNET(void) +{ + gmServersMenu.m_bInternet = TRUE; + ChangeToMenu(&gmServersMenu); + gmServersMenu.gm_pgmParentMenu = &gmNetworkJoinMenu; +} + +void StartSelectLevelFromSplit(void) +{ + FilterLevels(GetSpawnFlagsForGameType(gmSplitStartMenu.gm_mgGameType.mg_iSelected)); + void StartSplitStartMenu(void); + _pAfterLevelChosen = StartSplitStartMenu; + ChangeToMenu(&gmLevelsMenu); + gmLevelsMenu.gm_pgmParentMenu = &gmSplitStartMenu; +} + +void StartSelectLevelFromNetwork(void) +{ + FilterLevels(GetSpawnFlagsForGameType(gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); + void StartNetworkStartMenu(void); + _pAfterLevelChosen = StartNetworkStartMenu; + ChangeToMenu(&gmLevelsMenu); + gmLevelsMenu.gm_pgmParentMenu = &gmNetworkStartMenu; +} + +void StartSelectPlayersMenuFromSplitScreen(void) +{ + gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + gmSelectPlayersMenu.gm_bAllowObserving = FALSE; + // gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; + gmSelectPlayersMenu.gm_pgmParentMenu = &gmSplitScreenMenu; + ChangeToMenu(&gmSelectPlayersMenu); +} + +void StartNetworkLoadGame(void) +{ + + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + + _pGame->gm_strNetworkProvider = "TCP/IP Server"; + if (_pGame->LoadGame(_fnGameToLoad)) + { + StopMenus(); + _gmRunningGameMode = GM_NETWORK; + } + else { + _gmRunningGameMode = GM_NONE; + } +} + +void StartSelectPlayersMenuFromNetworkLoad(void) +{ + gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + gmSelectPlayersMenu.gm_bAllowObserving = TRUE; + gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkLoadGame; + gmSelectPlayersMenu.gm_pgmParentMenu = &gmLoadSaveMenu; + ChangeToMenu(&gmSelectPlayersMenu); +} + +void StartSplitScreenGameLoad(void) +{ + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + + _pGame->gm_strNetworkProvider = "Local"; + if (_pGame->LoadGame(_fnGameToLoad)) { + StopMenus(); + _gmRunningGameMode = GM_SPLIT_SCREEN; + } else { + _gmRunningGameMode = GM_NONE; + } +} + +void StartSelectPlayersMenuFromSplitScreenLoad(void) +{ + gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + gmSelectPlayersMenu.gm_bAllowObserving = FALSE; + gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGameLoad; + gmSelectPlayersMenu.gm_pgmParentMenu = &gmLoadSaveMenu; + ChangeToMenu(&gmSelectPlayersMenu); +} + +// save/load menu calling functions +void StartPlayerModelLoadMenu(void) +{ + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CHOOSE MODEL"); + gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; + gmLoadSaveMenu.gm_bSave = FALSE; + gmLoadSaveMenu.gm_bManage = FALSE; + gmLoadSaveMenu.gm_fnmDirectory = CTString("Models\\Player\\"); + gmLoadSaveMenu.gm_fnmSelected = _strLastPlayerAppearance; + gmLoadSaveMenu.gm_fnmExt = CTString(".amc"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadPlayerModel; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + + gmLoadSaveMenu.gm_pgmParentMenu = &gmPlayerProfile; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartControlsLoadMenu(void) +{ + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD CONTROLS"); + gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; + gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; + gmLoadSaveMenu.gm_bSave = FALSE; + gmLoadSaveMenu.gm_bManage = FALSE; + gmLoadSaveMenu.gm_fnmDirectory = CTString("Controls\\"); + gmLoadSaveMenu.gm_fnmSelected = CTString(""); + gmLoadSaveMenu.gm_fnmExt = CTString(".ctl"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadControls; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + + gmLoadSaveMenu.gm_pgmParentMenu = &gmControls; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartCustomLoadMenu(void) +{ + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); + gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; + gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; + gmLoadSaveMenu.gm_bSave = FALSE; + gmLoadSaveMenu.gm_bManage = FALSE; + gmLoadSaveMenu.gm_fnmDirectory = CTString("Scripts\\CustomOptions\\"); + gmLoadSaveMenu.gm_fnmSelected = CTString(""); + gmLoadSaveMenu.gm_fnmExt = CTString(".cfg"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadCustom; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + + gmLoadSaveMenu.gm_pgmParentMenu = &gmOptionsMenu; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartAddonsLoadMenu(void) +{ + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("EXECUTE ADDON"); + gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; + gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; + gmLoadSaveMenu.gm_bSave = FALSE; + gmLoadSaveMenu.gm_bManage = FALSE; + gmLoadSaveMenu.gm_fnmDirectory = CTString("Scripts\\Addons\\"); + gmLoadSaveMenu.gm_fnmSelected = CTString(""); + gmLoadSaveMenu.gm_fnmExt = CTString(".ini"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadAddon; + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + + gmLoadSaveMenu.gm_pgmParentMenu = &gmOptionsMenu; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartModsLoadMenu(void) +{ + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CHOOSE MOD"); + gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; + gmLoadSaveMenu.gm_bSave = FALSE; + gmLoadSaveMenu.gm_bManage = FALSE; + gmLoadSaveMenu.gm_fnmDirectory = CTString("Mods\\"); + gmLoadSaveMenu.gm_fnmSelected = CTString(""); + gmLoadSaveMenu.gm_fnmExt = CTString(".des"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadMod; + + gmLoadSaveMenu.gm_pgmParentMenu = &gmMainMenu; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartNetworkSettingsMenu(void) +{ + gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CONNECTION SETTINGS"); + gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; + gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; + gmLoadSaveMenu.gm_bSave = FALSE; + gmLoadSaveMenu.gm_bManage = FALSE; + gmLoadSaveMenu.gm_fnmDirectory = CTString("Scripts\\NetSettings\\"); + gmLoadSaveMenu.gm_fnmSelected = sam_strNetworkSettings; + gmLoadSaveMenu.gm_fnmExt = CTString(".ini"); + gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetSettings; + if (sam_strNetworkSettings == "") { + gmLoadSaveMenu.gm_mgNotes.mg_strText = TRANS( + "Before joining a network game,\n" + "you have to adjust your connection parameters.\n" + "Choose one option from the list.\n" + "If you have problems with connection, you can adjust\n" + "these parameters again from the Options menu.\n" + ); + } + else { + gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + } + + gmLoadSaveMenu.gm_pgmParentMenu = &gmOptionsMenu; + ChangeToMenu(&gmLoadSaveMenu); +} + +void StartSinglePlayerMenu(void) +{ + ChangeToMenu(&gmSinglePlayerMenu); +} \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/Menu_starters.h b/Sources/SeriousSam/GUI/Menus/Menu_starters.h new file mode 100644 index 0000000..8c622ae --- /dev/null +++ b/Sources/SeriousSam/GUI/Menus/Menu_starters.h @@ -0,0 +1,67 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_STARTERS_H +#define SE_INCL_MENU_STARTERS_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + + +void StartVideoOptionsMenu(void); +void StartAudioOptionsMenu(void); +void StartNetworkMenu(void); +void StartNetworkJoinMenu(void); +void StartNetworkStartMenu(void); +void StartNetworkOpenMenu(void); +void StartSplitScreenMenu(void); +void StartSplitStartMenu(void); +void StartSinglePlayerNewMenuCustom(void); +void StartSinglePlayerNewMenu(void); +void StartSinglePlayerQuickLoadMenu(void); +void StartSinglePlayerLoadMenu(void); +void StartSinglePlayerSaveMenu(void); +void StartDemoLoadMenu(void); +void StartDemoSaveMenu(void); +void StartNetworkQuickLoadMenu(void); +void StartNetworkLoadMenu(void); +void StartNetworkSaveMenu(void); +void StartSplitScreenQuickLoadMenu(void); +void StartSplitScreenLoadMenu(void); +void StartSplitScreenSaveMenu(void); +void StartVarGameOptions(void); +void StartSinglePlayerGameOptions(void); +void StartGameOptionsFromNetwork(void); +void StartGameOptionsFromSplitScreen(void); +void StartRenderingOptionsMenu(void); +void StartCustomizeKeyboardMenu(void); +void StartCustomizeAxisMenu(void); +void StartOptionsMenu(void); +void StartCurrentLoadMenu(); +void StartCurrentSaveMenu(); +void StartCurrentQuickLoadMenu(); +void StartChangePlayerMenuFromOptions(void); +void StartChangePlayerMenuFromSinglePlayer(void); +void StartControlsMenuFromPlayer(void); +void StartControlsMenuFromOptions(void); +void StartSelectLevelFromSingle(void); +void StartHighScoreMenu(void); +void StartSelectPlayersMenuFromSplit(void); +void StartSelectPlayersMenuFromNetwork(void); +void StartSelectPlayersMenuFromOpen(void); +void StartSelectPlayersMenuFromServers(void); +void StartSelectServerLAN(void); +void StartSelectServerNET(void); +void StartSelectLevelFromSplit(void); +void StartSelectLevelFromNetwork(void); +void StartSelectPlayersMenuFromSplitScreen(void); +void StartSelectPlayersMenuFromNetworkLoad(void); +void StartSelectPlayersMenuFromSplitScreenLoad(void); +void StartPlayerModelLoadMenu(void); +void StartControlsLoadMenu(void); +void StartCustomLoadMenu(void); +void StartAddonsLoadMenu(void); +void StartModsLoadMenu(void); +void StartNetworkSettingsMenu(void); +void StartSinglePlayerMenu(void); + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/SeriousSam.vcxproj b/Sources/SeriousSam/SeriousSam.vcxproj index 4d0e9ac..393bb7a 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj +++ b/Sources/SeriousSam/SeriousSam.vcxproj @@ -204,6 +204,7 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + @@ -252,6 +253,7 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + @@ -272,6 +274,7 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + Use StdH.h diff --git a/Sources/SeriousSam/SeriousSam.vcxproj.filters b/Sources/SeriousSam/SeriousSam.vcxproj.filters index 6e9db1e..e2fb6dc 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj.filters +++ b/Sources/SeriousSam/SeriousSam.vcxproj.filters @@ -201,6 +201,12 @@ Source Files\GUI\Menus + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + @@ -383,6 +389,9 @@ Header Files\GUI headers\Menus headers + + Header Files\GUI headers\Menus headers + From ef788b52990fb5086a4f566f1dde37f4783efdcc Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Wed, 30 Mar 2016 21:21:32 +0300 Subject: [PATCH 24/34] GameExecutable: Put menus' extern variables into container. --- .../SeriousSam/GUI/Components/MGButton.cpp | 8 +- .../GUI/Components/MGChangePlayer.cpp | 7 +- .../GUI/Components/MGFileButton.cpp | 32 +- .../SeriousSam/GUI/Components/MGTrigger.cpp | 1 + .../SeriousSam/GUI/Menus/MPlayerProfile.cpp | 11 +- Sources/SeriousSam/GUI/Menus/Menu.cpp | 310 ++++---- Sources/SeriousSam/GUI/Menus/Menu.h | 5 - Sources/SeriousSam/GUI/Menus/MenuManager.cpp | 8 + Sources/SeriousSam/GUI/Menus/MenuManager.h | 67 ++ Sources/SeriousSam/GUI/Menus/Menu_actions.cpp | 262 +++---- .../SeriousSam/GUI/Menus/Menu_starters.cpp | 717 ++++++++---------- Sources/SeriousSam/SeriousSam.cpp | 2 +- Sources/SeriousSam/SeriousSam.vcxproj | 2 + Sources/SeriousSam/SeriousSam.vcxproj.filters | 6 + 14 files changed, 679 insertions(+), 759 deletions(-) create mode 100644 Sources/SeriousSam/GUI/Menus/MenuManager.cpp create mode 100644 Sources/SeriousSam/GUI/Menus/MenuManager.h diff --git a/Sources/SeriousSam/GUI/Components/MGButton.cpp b/Sources/SeriousSam/GUI/Components/MGButton.cpp index 49fc985..13b98b2 100644 --- a/Sources/SeriousSam/GUI/Components/MGButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGButton.cpp @@ -23,6 +23,8 @@ CMGButton::CMGButton(void) mg_iCursorPos = -1; mg_bRectangle = FALSE; mg_bMental = FALSE; + mg_bEditing = FALSE; + mg_bHighlighted = FALSE; } @@ -120,8 +122,7 @@ void CMGButton::Render(CDrawPort *pdp) pdp->PutTextR(mg_strLabel, pixIL, pixJ, col); pdp->PutText(mg_strText, pixIR, pixJ, col); - } - else { + } else { CTString str = mg_strText; if (pdp->dp_FontData->fd_bFixedWidth) { str = str.Undecorated(); @@ -131,8 +132,7 @@ void CMGButton::Render(CDrawPort *pdp) str.TrimRight(iCursor); str.TrimLeft(iMaxLen); iCursor = iMaxLen; - } - else { + } else { str.TrimRight(iMaxLen); } } diff --git a/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp b/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp index 8a466a5..f2bc89b 100644 --- a/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp +++ b/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp @@ -5,6 +5,7 @@ #include #include #include "MGChangePlayer.h" +#include "GUI/Menus/MenuManager.h" extern CSoundData *_psdPress; @@ -16,11 +17,11 @@ void CMGChangePlayer::OnActivate(void) _iLocalPlayer = mg_iLocalPlayer; if (_pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer] < 0) _pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer] = 0; - gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer]; - gmPlayerProfile.gm_pgmParentMenu = &gmSelectPlayersMenu; + _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer]; + _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmSelectPlayersMenu; extern BOOL _bPlayerMenuFromSinglePlayer; _bPlayerMenuFromSinglePlayer = FALSE; - ChangeToMenu(&gmPlayerProfile); + ChangeToMenu(&_pGUIM->gmPlayerProfile); } void CMGChangePlayer::SetPlayerText(void) diff --git a/Sources/SeriousSam/GUI/Components/MGFileButton.cpp b/Sources/SeriousSam/GUI/Components/MGFileButton.cpp index 421f2c4..3fe7cbb 100644 --- a/Sources/SeriousSam/GUI/Components/MGFileButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGFileButton.cpp @@ -5,6 +5,7 @@ #include #include #include "MGFileButton.h" +#include "GUI/Menus/MenuManager.h" extern CSoundData *_psdPress; @@ -57,9 +58,9 @@ void CMGFileButton::DoSave(void) void CMGFileButton::SaveYes(void) { - ASSERT(gmLoadSaveMenu.gm_bSave); + ASSERT(_pGUIM->gmLoadSaveMenu.gm_bSave); // call saving function - BOOL bSucceeded = gmLoadSaveMenu.gm_pAfterFileChosen(mg_fnm); + BOOL bSucceeded = _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen(mg_fnm); // if saved if (bSucceeded) { // save the description too @@ -69,17 +70,17 @@ void CMGFileButton::SaveYes(void) void CMGFileButton::DoLoad(void) { - ASSERT(!gmLoadSaveMenu.gm_bSave); + ASSERT(!_pGUIM->gmLoadSaveMenu.gm_bSave); // if no file if (!FileExists(mg_fnm)) { // do nothing return; } - if (gmLoadSaveMenu.gm_pgmNextMenu != NULL) { - gmLoadSaveMenu.gm_pgmParentMenu = gmLoadSaveMenu.gm_pgmNextMenu; + if (_pGUIM->gmLoadSaveMenu.gm_pgmNextMenu != NULL) { + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu; } // call loading function - BOOL bSucceeded = gmLoadSaveMenu.gm_pAfterFileChosen(mg_fnm); + BOOL bSucceeded = _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen(mg_fnm); ASSERT(bSucceeded); } @@ -101,7 +102,7 @@ void CMGFileButton::OnActivate(void) IFeel_PlayEffect("Menu_press"); // if loading - if (!gmLoadSaveMenu.gm_bSave) { + if (!_pGUIM->gmLoadSaveMenu.gm_bSave) { // load now DoLoad(); // if saving @@ -109,7 +110,7 @@ void CMGFileButton::OnActivate(void) else { // switch to editing mode BOOL bWasEmpty = mg_strText == EMPTYSLOTSTRING; - mg_strDes = gmLoadSaveMenu.gm_strSaveDes; + mg_strDes = _pGUIM->gmLoadSaveMenu.gm_strSaveDes; RefreshText(); _strOrgDescription = _strTmpDescription = mg_strText; if (bWasEmpty) { @@ -124,7 +125,7 @@ void CMGFileButton::OnActivate(void) BOOL CMGFileButton::OnKeyDown(int iVKey) { if (mg_iState == FBS_NORMAL) { - if (gmLoadSaveMenu.gm_bSave || gmLoadSaveMenu.gm_bManage) { + if (_pGUIM->gmLoadSaveMenu.gm_bSave || _pGUIM->gmLoadSaveMenu.gm_bManage) { if (iVKey == VK_F2) { if (FileExistsForWriting(mg_fnm)) { // switch to renaming mode @@ -143,8 +144,8 @@ BOOL CMGFileButton::OnKeyDown(int iVKey) RemoveFile(mg_fnm.NoExt() + ".des"); RemoveFile(mg_fnm.NoExt() + "Tbn.tex"); // refresh menu - gmLoadSaveMenu.EndMenu(); - gmLoadSaveMenu.StartMenu(); + _pGUIM->gmLoadSaveMenu.EndMenu(); + _pGUIM->gmLoadSaveMenu.StartMenu(); OnSetFocus(); } return TRUE; @@ -167,10 +168,9 @@ void CMGFileButton::OnSetFocus(void) { mg_iState = FBS_NORMAL; - if (gmLoadSaveMenu.gm_bAllowThumbnails && mg_bEnabled) { + if (_pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails && mg_bEnabled) { SetThumbnail(mg_fnm); - } - else { + } else { ClearThumbnail(); } pgmCurrentMenu->KillAllFocuses(); @@ -201,8 +201,8 @@ void CMGFileButton::OnStringChanged(void) mg_strDes = _strTmpDescription + "\n" + mg_strInfo; SaveDescription(); // refresh menu - gmLoadSaveMenu.EndMenu(); - gmLoadSaveMenu.StartMenu(); + _pGUIM->gmLoadSaveMenu.EndMenu(); + _pGUIM->gmLoadSaveMenu.StartMenu(); OnSetFocus(); } } diff --git a/Sources/SeriousSam/GUI/Components/MGTrigger.cpp b/Sources/SeriousSam/GUI/Components/MGTrigger.cpp index 443619b..a580463 100644 --- a/Sources/SeriousSam/GUI/Components/MGTrigger.cpp +++ b/Sources/SeriousSam/GUI/Components/MGTrigger.cpp @@ -26,6 +26,7 @@ INDEX GetNewLoopValue(int iVKey, INDEX iCurrent, INDEX ctMembers) CMGTrigger::CMGTrigger(void) { + mg_pPreTriggerChange = NULL; mg_pOnTriggerChange = NULL; mg_iCenterI = 0; mg_bVisual = FALSE; diff --git a/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp b/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp index 24f5bff..6e981cb 100644 --- a/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp +++ b/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp @@ -5,6 +5,7 @@ #include "MenuPrinting.h" #include "MenuStuff.h" #include "MPlayerProfile.h" +#include "GUI/Menus/MenuManager.h" #define ADD_SELECT_PLAYER_MG( index, mg, mgprev, mgnext, me)\ mg.mg_iIndex = index; \ @@ -190,20 +191,28 @@ void CPlayerProfileMenu::SelectPlayer(INDEX iPlayer) gm_mgCrosshair.mg_iSelected = pps->ps_iCrossHairType + 1; gm_mgCrosshair.ApplyCurrentSelection(); + gm_mgWeaponSelect.mg_iSelected = pps->ps_iWeaponAutoSelect; gm_mgWeaponSelect.ApplyCurrentSelection(); + gm_mgWeaponHide.mg_iSelected = (pps->ps_ulFlags&PSF_HIDEWEAPON) ? 1 : 0; gm_mgWeaponHide.ApplyCurrentSelection(); + gm_mg3rdPerson.mg_iSelected = (pps->ps_ulFlags&PSF_PREFER3RDPERSON) ? 1 : 0; gm_mg3rdPerson.ApplyCurrentSelection(); + gm_mgQuotes.mg_iSelected = (pps->ps_ulFlags&PSF_NOQUOTES) ? 0 : 1; gm_mgQuotes.ApplyCurrentSelection(); + gm_mgAutoSave.mg_iSelected = (pps->ps_ulFlags&PSF_AUTOSAVE) ? 1 : 0; gm_mgAutoSave.ApplyCurrentSelection(); + gm_mgCompDoubleClick.mg_iSelected = (pps->ps_ulFlags&PSF_COMPSINGLECLICK) ? 0 : 1; gm_mgCompDoubleClick.ApplyCurrentSelection(); + gm_mgViewBobbing.mg_iSelected = (pps->ps_ulFlags&PSF_NOBOBBING) ? 0 : 1; gm_mgViewBobbing.ApplyCurrentSelection(); + gm_mgSharpTurning.mg_iSelected = (pps->ps_ulFlags&PSF_SHARPTURNING) ? 1 : 0; gm_mgSharpTurning.ApplyCurrentSelection(); @@ -250,7 +259,7 @@ void CPlayerProfileMenu::SelectPlayer(INDEX iPlayer) void CPlayerProfileMenu::StartMenu(void) { - gmPlayerProfile.gm_pmgSelectedByDefault = &gm_mgNameField; + _pGUIM->gmPlayerProfile.gm_pmgSelectedByDefault = &gm_mgNameField; if (_gmRunningGameMode == GM_NONE || _gmRunningGameMode == GM_DEMO) { for (INDEX i = 0; i<8; i++) { diff --git a/Sources/SeriousSam/GUI/Menus/Menu.cpp b/Sources/SeriousSam/GUI/Menus/Menu.cpp index ad908ee..4cb5c9b 100644 --- a/Sources/SeriousSam/GUI/Menus/Menu.cpp +++ b/Sources/SeriousSam/GUI/Menus/Menu.cpp @@ -13,6 +13,7 @@ #include "LevelInfo.h" #include "VarList.h" #include "FileInfo.h" +#include "MenuManager.h" #include "GUI/Components/MGArrow.h" #include "GUI/Components/MGButton.h" @@ -29,31 +30,6 @@ #include "GUI/Components/MGTrigger.h" #include "GUI/Components/MGVarButton.h" -#include "MAudioOptions.h" -#include "MConfirm.h" -#include "MControls.h" -#include "MCustomizeAxis.h" -#include "MCustomizeKeyboard.h" -#include "MCredits.h" -#include "MDisabled.h" -#include "MHighScore.h" -#include "MInGame.h" -#include "MLevels.h" -#include "MMain.h" -#include "MNetwork.h" -#include "MNetworkJoin.h" -#include "MNetworkOpen.h" -#include "MNetworkStart.h" -#include "MOptions.h" -#include "MRenderingOptions.h" -#include "MServers.h" -#include "MSinglePlayer.h" -#include "MSinglePlayerNew.h" -#include "MSplitScreen.h" -#include "MSplitStart.h" -#include "MVar.h" -#include "MVideoOptions.h" - #include "MenuStuff.h" #include "Menu_starters.h" @@ -185,33 +161,6 @@ CGameMenu *pgmCurrentMenu = NULL; // global back button CMGButton mgBack; -// Menus -CConfirmMenu gmConfirmMenu; -CMainMenu gmMainMenu; -CInGameMenu gmInGameMenu; -CSinglePlayerMenu gmSinglePlayerMenu; -CSinglePlayerNewMenu gmSinglePlayerNewMenu; -CDisabledMenu gmDisabledFunction; -CLevelsMenu gmLevelsMenu; -CVarMenu gmVarMenu; -CPlayerProfileMenu gmPlayerProfile; -CControlsMenu gmControls; -CLoadSaveMenu gmLoadSaveMenu; -CHighScoreMenu gmHighScoreMenu; -CCustomizeKeyboardMenu gmCustomizeKeyboardMenu; -CServersMenu gmServersMenu; -CCustomizeAxisMenu gmCustomizeAxisMenu; -COptionsMenu gmOptionsMenu; -CVideoOptionsMenu gmVideoOptionsMenu; -CAudioOptionsMenu gmAudioOptionsMenu; -CNetworkMenu gmNetworkMenu; -CNetworkJoinMenu gmNetworkJoinMenu; -CNetworkStartMenu gmNetworkStartMenu; -CNetworkOpenMenu gmNetworkOpenMenu; -CSplitScreenMenu gmSplitScreenMenu; -CSplitStartMenu gmSplitStartMenu; -CSelectPlayersMenu gmSelectPlayersMenu; - // -------- console variable adjustment menu extern BOOL _bVarChanged = FALSE; @@ -263,11 +212,11 @@ void StartMenus(char *str) // stop all IFeel effects IFeel_StopEffect(NULL); - if (pgmCurrentMenu==&gmMainMenu || pgmCurrentMenu==&gmInGameMenu) { + if (pgmCurrentMenu == &_pGUIM->gmMainMenu || pgmCurrentMenu == &_pGUIM->gmInGameMenu) { if (_gmRunningGameMode==GM_NONE) { - pgmCurrentMenu = &gmMainMenu; + pgmCurrentMenu = &_pGUIM->gmMainMenu; } else { - pgmCurrentMenu = &gmInGameMenu; + pgmCurrentMenu = &_pGUIM->gmInGameMenu; } } @@ -276,36 +225,36 @@ void StartMenus(char *str) ChangeToMenu(pgmCurrentMenu); } else { if (_gmRunningGameMode==GM_NONE) { - ChangeToMenu(&gmMainMenu); + ChangeToMenu(&_pGUIM->gmMainMenu); } else { - ChangeToMenu(&gmInGameMenu); + ChangeToMenu(&_pGUIM->gmInGameMenu); } } if (CTString(str)=="load") { StartCurrentLoadMenu(); - gmLoadSaveMenu.gm_pgmParentMenu = NULL; + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = NULL; } if (CTString(str)=="save") { StartCurrentSaveMenu(); - gmLoadSaveMenu.gm_pgmParentMenu = NULL; - FixupBackButton(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = NULL; + FixupBackButton(&_pGUIM->gmLoadSaveMenu); } if (CTString(str)=="controls") { void StartControlsMenuFromOptions(void); StartControlsMenuFromOptions(); - gmControls.gm_pgmParentMenu = NULL; - FixupBackButton(&gmControls); + _pGUIM->gmControls.gm_pgmParentMenu = NULL; + FixupBackButton(&_pGUIM->gmControls); } if (CTString(str)=="join") { void StartSelectPlayersMenuFromOpen(void); StartSelectPlayersMenuFromOpen(); - gmSelectPlayersMenu.gm_pgmParentMenu = &gmMainMenu; - FixupBackButton(&gmSelectPlayersMenu); + _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; + FixupBackButton(&_pGUIM->gmSelectPlayersMenu); } if (CTString(str)=="hiscore") { - ChangeToMenu( &gmHighScoreMenu); - gmHighScoreMenu.gm_pgmParentMenu = &gmMainMenu; - FixupBackButton(&gmHighScoreMenu); + ChangeToMenu(&_pGUIM->gmHighScoreMenu); + _pGUIM->gmHighScoreMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; + FixupBackButton(&_pGUIM->gmHighScoreMenu); } bMenuActive = TRUE; bMenuRendering = TRUE; @@ -321,9 +270,9 @@ void StopMenus( BOOL bGoToRoot /*=TRUE*/) bMenuActive = FALSE; if (bGoToRoot) { if (_gmRunningGameMode==GM_NONE) { - pgmCurrentMenu = &gmMainMenu; + pgmCurrentMenu = &_pGUIM->gmMainMenu; } else { - pgmCurrentMenu = &gmInGameMenu; + pgmCurrentMenu = &_pGUIM->gmInGameMenu; } } } @@ -331,13 +280,10 @@ void StopMenus( BOOL bGoToRoot /*=TRUE*/) BOOL IsMenusInRoot(void) { - return pgmCurrentMenu==NULL || pgmCurrentMenu==&gmMainMenu || pgmCurrentMenu==&gmInGameMenu; + return pgmCurrentMenu == NULL || pgmCurrentMenu == &_pGUIM->gmMainMenu || pgmCurrentMenu == &_pGUIM->gmInGameMenu; } -// ---------------------- When activated functions - - - +// ---------------------- When activated functions void StopCurrentGame(void) { _pGame->StopGame(); @@ -348,20 +294,20 @@ void StopCurrentGame(void) void DisabledFunction(void) { - gmDisabledFunction.gm_pgmParentMenu = pgmCurrentMenu; - gmDisabledFunction.gm_mgButton.mg_strText = TRANS("The feature is not available in this version!"); - gmDisabledFunction.gm_mgTitle.mg_strText = TRANS("DISABLED"); - ChangeToMenu( &gmDisabledFunction); + _pGUIM->gmDisabledFunction.gm_pgmParentMenu = pgmCurrentMenu; + _pGUIM->gmDisabledFunction.gm_mgButton.mg_strText = TRANS("The feature is not available in this version!"); + _pGUIM->gmDisabledFunction.gm_mgTitle.mg_strText = TRANS("DISABLED"); + ChangeToMenu(&_pGUIM->gmDisabledFunction); } extern void InitVideoOptionsButtons(void); extern void UpdateVideoOptionsButtons(INDEX i); - - // ------------------------ Global menu function implementation void InitializeMenus(void) { + _pGUIM = new CMenuManager(); + try { // initialize and load corresponding fonts _fdSmall.Load_t( CTFILENAME( "Fonts\\Display3-narrow.fnt")); @@ -422,148 +368,148 @@ void InitializeMenus(void) InitGameTypes(); // ------------------- Initialize menus - gmConfirmMenu.Initialize_t(); - gmConfirmMenu.gm_strName="Confirm"; - gmConfirmMenu.gm_pmgSelectedByDefault = &gmConfirmMenu.gm_mgConfirmYes; - gmConfirmMenu.gm_pgmParentMenu = NULL; + _pGUIM->gmConfirmMenu.Initialize_t(); + _pGUIM->gmConfirmMenu.gm_strName = "Confirm"; + _pGUIM->gmConfirmMenu.gm_pmgSelectedByDefault = &_pGUIM->gmConfirmMenu.gm_mgConfirmYes; + _pGUIM->gmConfirmMenu.gm_pgmParentMenu = NULL; InitActionsForConfirmMenu(); - gmMainMenu.Initialize_t(); - gmMainMenu.gm_strName="Main"; - gmMainMenu.gm_pmgSelectedByDefault = &gmMainMenu.gm_mgSingle; - gmMainMenu.gm_pgmParentMenu = NULL; + _pGUIM->gmMainMenu.Initialize_t(); + _pGUIM->gmMainMenu.gm_strName = "Main"; + _pGUIM->gmMainMenu.gm_pmgSelectedByDefault = &_pGUIM->gmMainMenu.gm_mgSingle; + _pGUIM->gmMainMenu.gm_pgmParentMenu = NULL; InitActionsForMainMenu(); - gmInGameMenu.Initialize_t(); - gmInGameMenu.gm_strName="InGame"; - gmInGameMenu.gm_pmgSelectedByDefault = &gmInGameMenu.gm_mgQuickLoad; - gmInGameMenu.gm_pgmParentMenu = NULL; + _pGUIM->gmInGameMenu.Initialize_t(); + _pGUIM->gmInGameMenu.gm_strName = "InGame"; + _pGUIM->gmInGameMenu.gm_pmgSelectedByDefault = &_pGUIM->gmInGameMenu.gm_mgQuickLoad; + _pGUIM->gmInGameMenu.gm_pgmParentMenu = NULL; InitActionsForInGameMenu(); - gmSinglePlayerMenu.Initialize_t(); - gmSinglePlayerMenu.gm_strName="SinglePlayer"; - gmSinglePlayerMenu.gm_pmgSelectedByDefault = &gmSinglePlayerMenu.gm_mgNewGame; - gmSinglePlayerMenu.gm_pgmParentMenu = &gmMainMenu; + _pGUIM->gmSinglePlayerMenu.Initialize_t(); + _pGUIM->gmSinglePlayerMenu.gm_strName = "SinglePlayer"; + _pGUIM->gmSinglePlayerMenu.gm_pmgSelectedByDefault = &_pGUIM->gmSinglePlayerMenu.gm_mgNewGame; + _pGUIM->gmSinglePlayerMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; InitActionsForSinglePlayerMenu(); - gmSinglePlayerNewMenu.Initialize_t(); - gmSinglePlayerNewMenu.gm_strName="SinglePlayerNew"; - gmSinglePlayerNewMenu.gm_pmgSelectedByDefault = &gmSinglePlayerNewMenu.gm_mgMedium; - gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; + _pGUIM->gmSinglePlayerNewMenu.Initialize_t(); + _pGUIM->gmSinglePlayerNewMenu.gm_strName = "SinglePlayerNew"; + _pGUIM->gmSinglePlayerNewMenu.gm_pmgSelectedByDefault = &_pGUIM->gmSinglePlayerNewMenu.gm_mgMedium; + _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; InitActionsForSinglePlayerNewMenu(); - gmDisabledFunction.Initialize_t(); - gmDisabledFunction.gm_strName="DisabledFunction"; - gmDisabledFunction.gm_pmgSelectedByDefault = &gmDisabledFunction.gm_mgButton; - gmDisabledFunction.gm_pgmParentMenu = NULL; + _pGUIM->gmDisabledFunction.Initialize_t(); + _pGUIM->gmDisabledFunction.gm_strName = "DisabledFunction"; + _pGUIM->gmDisabledFunction.gm_pmgSelectedByDefault = &_pGUIM->gmDisabledFunction.gm_mgButton; + _pGUIM->gmDisabledFunction.gm_pgmParentMenu = NULL; - gmPlayerProfile.Initialize_t(); - gmPlayerProfile.gm_strName="PlayerProfile"; - gmPlayerProfile.gm_pmgSelectedByDefault = &gmPlayerProfile.gm_mgNameField; + _pGUIM->gmPlayerProfile.Initialize_t(); + _pGUIM->gmPlayerProfile.gm_strName = "PlayerProfile"; + _pGUIM->gmPlayerProfile.gm_pmgSelectedByDefault = &_pGUIM->gmPlayerProfile.gm_mgNameField; InitActionsForPlayerProfileMenu(); - gmControls.Initialize_t(); - gmControls.gm_strName="Controls"; - gmControls.gm_pmgSelectedByDefault = &gmControls.gm_mgButtons; + _pGUIM->gmControls.Initialize_t(); + _pGUIM->gmControls.gm_strName = "Controls"; + _pGUIM->gmControls.gm_pmgSelectedByDefault = &_pGUIM->gmControls.gm_mgButtons; InitActionsForControlsMenu(); // warning! parent menu has to be set inside button activate function from where // Load/Save menu is called - gmLoadSaveMenu.Initialize_t(); - gmLoadSaveMenu.gm_strName="LoadSave"; - gmLoadSaveMenu.gm_pmgSelectedByDefault = &gmLoadSaveMenu.gm_amgButton[0]; + _pGUIM->gmLoadSaveMenu.Initialize_t(); + _pGUIM->gmLoadSaveMenu.gm_strName = "LoadSave"; + _pGUIM->gmLoadSaveMenu.gm_pmgSelectedByDefault = &_pGUIM->gmLoadSaveMenu.gm_amgButton[0]; - gmHighScoreMenu.Initialize_t(); - gmHighScoreMenu.gm_strName="HighScore"; - gmHighScoreMenu.gm_pmgSelectedByDefault = &mgBack; + _pGUIM->gmHighScoreMenu.Initialize_t(); + _pGUIM->gmHighScoreMenu.gm_strName = "HighScore"; + _pGUIM->gmHighScoreMenu.gm_pmgSelectedByDefault = &mgBack; - gmCustomizeKeyboardMenu.Initialize_t(); - gmCustomizeKeyboardMenu.gm_strName="CustomizeKeyboard"; - gmCustomizeKeyboardMenu.gm_pmgSelectedByDefault = &gmCustomizeKeyboardMenu.gm_mgKey[0]; - gmCustomizeKeyboardMenu.gm_pgmParentMenu = &gmControls; + _pGUIM->gmCustomizeKeyboardMenu.Initialize_t(); + _pGUIM->gmCustomizeKeyboardMenu.gm_strName = "CustomizeKeyboard"; + _pGUIM->gmCustomizeKeyboardMenu.gm_pmgSelectedByDefault = &_pGUIM->gmCustomizeKeyboardMenu.gm_mgKey[0]; + _pGUIM->gmCustomizeKeyboardMenu.gm_pgmParentMenu = &_pGUIM->gmControls; - gmCustomizeAxisMenu.Initialize_t(); - gmCustomizeAxisMenu.gm_strName="CustomizeAxis"; - gmCustomizeAxisMenu.gm_pmgSelectedByDefault = &gmCustomizeAxisMenu.gm_mgActionTrigger; - gmCustomizeAxisMenu.gm_pgmParentMenu = &gmControls; + _pGUIM->gmCustomizeAxisMenu.Initialize_t(); + _pGUIM->gmCustomizeAxisMenu.gm_strName = "CustomizeAxis"; + _pGUIM->gmCustomizeAxisMenu.gm_pmgSelectedByDefault = &_pGUIM->gmCustomizeAxisMenu.gm_mgActionTrigger; + _pGUIM->gmCustomizeAxisMenu.gm_pgmParentMenu = &_pGUIM->gmControls; InitActionsForCustomizeAxisMenu(); - gmOptionsMenu.Initialize_t(); - gmOptionsMenu.gm_strName="Options"; - gmOptionsMenu.gm_pmgSelectedByDefault = &gmOptionsMenu.gm_mgVideoOptions; - gmOptionsMenu.gm_pgmParentMenu = &gmMainMenu; + _pGUIM->gmOptionsMenu.Initialize_t(); + _pGUIM->gmOptionsMenu.gm_strName = "Options"; + _pGUIM->gmOptionsMenu.gm_pmgSelectedByDefault = &_pGUIM->gmOptionsMenu.gm_mgVideoOptions; + _pGUIM->gmOptionsMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; InitActionsForOptionsMenu(); - gmVideoOptionsMenu.Initialize_t(); - gmVideoOptionsMenu.gm_strName="VideoOptions"; - gmVideoOptionsMenu.gm_pmgSelectedByDefault = &gmVideoOptionsMenu.gm_mgDisplayAPITrigger; - gmVideoOptionsMenu.gm_pgmParentMenu = &gmOptionsMenu; + _pGUIM->gmVideoOptionsMenu.Initialize_t(); + _pGUIM->gmVideoOptionsMenu.gm_strName = "VideoOptions"; + _pGUIM->gmVideoOptionsMenu.gm_pmgSelectedByDefault = &_pGUIM->gmVideoOptionsMenu.gm_mgDisplayAPITrigger; + _pGUIM->gmVideoOptionsMenu.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; InitActionsForVideoOptionsMenu(); - gmAudioOptionsMenu.Initialize_t(); - gmAudioOptionsMenu.gm_strName="AudioOptions"; - gmAudioOptionsMenu.gm_pmgSelectedByDefault = &gmAudioOptionsMenu.gm_mgFrequencyTrigger; - gmAudioOptionsMenu.gm_pgmParentMenu = &gmOptionsMenu; + _pGUIM->gmAudioOptionsMenu.Initialize_t(); + _pGUIM->gmAudioOptionsMenu.gm_strName = "AudioOptions"; + _pGUIM->gmAudioOptionsMenu.gm_pmgSelectedByDefault = &_pGUIM->gmAudioOptionsMenu.gm_mgFrequencyTrigger; + _pGUIM->gmAudioOptionsMenu.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; InitActionsForAudioOptionsMenu(); - gmLevelsMenu.Initialize_t(); - gmLevelsMenu.gm_strName="Levels"; - gmLevelsMenu.gm_pmgSelectedByDefault = &gmLevelsMenu.gm_mgManualLevel[0]; - gmLevelsMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; + _pGUIM->gmLevelsMenu.Initialize_t(); + _pGUIM->gmLevelsMenu.gm_strName = "Levels"; + _pGUIM->gmLevelsMenu.gm_pmgSelectedByDefault = &_pGUIM->gmLevelsMenu.gm_mgManualLevel[0]; + _pGUIM->gmLevelsMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; - gmVarMenu.Initialize_t(); - gmVarMenu.gm_strName="Var"; - gmVarMenu.gm_pmgSelectedByDefault = &gmVarMenu.gm_mgVar[0]; - gmVarMenu.gm_pgmParentMenu = &gmNetworkStartMenu; + _pGUIM->gmVarMenu.Initialize_t(); + _pGUIM->gmVarMenu.gm_strName = "Var"; + _pGUIM->gmVarMenu.gm_pmgSelectedByDefault = &_pGUIM->gmVarMenu.gm_mgVar[0]; + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; InitActionsForVarMenu(); - gmServersMenu.Initialize_t(); - gmServersMenu.gm_strName="Servers"; - gmServersMenu.gm_pmgSelectedByDefault = &gmServersMenu.gm_mgList; - gmServersMenu.gm_pgmParentMenu = &gmNetworkOpenMenu; + _pGUIM->gmServersMenu.Initialize_t(); + _pGUIM->gmServersMenu.gm_strName = "Servers"; + _pGUIM->gmServersMenu.gm_pmgSelectedByDefault = &_pGUIM->gmServersMenu.gm_mgList; + _pGUIM->gmServersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; InitActionsForServersMenu(); - gmNetworkMenu.Initialize_t(); - gmNetworkMenu.gm_strName="Network"; - gmNetworkMenu.gm_pmgSelectedByDefault = &gmNetworkMenu.gm_mgJoin; - gmNetworkMenu.gm_pgmParentMenu = &gmMainMenu; + _pGUIM->gmNetworkMenu.Initialize_t(); + _pGUIM->gmNetworkMenu.gm_strName = "Network"; + _pGUIM->gmNetworkMenu.gm_pmgSelectedByDefault = &_pGUIM->gmNetworkMenu.gm_mgJoin; + _pGUIM->gmNetworkMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; InitActionsForNetworkMenu(); - gmNetworkStartMenu.Initialize_t(); - gmNetworkStartMenu.gm_strName="NetworkStart"; - gmNetworkStartMenu.gm_pmgSelectedByDefault = &gmNetworkStartMenu.gm_mgStart; - gmNetworkStartMenu.gm_pgmParentMenu = &gmNetworkMenu; + _pGUIM->gmNetworkStartMenu.Initialize_t(); + _pGUIM->gmNetworkStartMenu.gm_strName = "NetworkStart"; + _pGUIM->gmNetworkStartMenu.gm_pmgSelectedByDefault = &_pGUIM->gmNetworkStartMenu.gm_mgStart; + _pGUIM->gmNetworkStartMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkMenu; InitActionsForNetworkStartMenu(); - gmNetworkJoinMenu.Initialize_t(); - gmNetworkJoinMenu.gm_strName="NetworkJoin"; - gmNetworkJoinMenu.gm_pmgSelectedByDefault = &gmNetworkJoinMenu.gm_mgLAN; - gmNetworkJoinMenu.gm_pgmParentMenu = &gmNetworkMenu; + _pGUIM->gmNetworkJoinMenu.Initialize_t(); + _pGUIM->gmNetworkJoinMenu.gm_strName = "NetworkJoin"; + _pGUIM->gmNetworkJoinMenu.gm_pmgSelectedByDefault = &_pGUIM->gmNetworkJoinMenu.gm_mgLAN; + _pGUIM->gmNetworkJoinMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkMenu; InitActionsForNetworkJoinMenu(); - gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - gmSelectPlayersMenu.gm_bAllowObserving = FALSE; - gmSelectPlayersMenu.Initialize_t(); - gmSelectPlayersMenu.gm_strName="SelectPlayers"; - gmSelectPlayersMenu.gm_pmgSelectedByDefault = &gmSelectPlayersMenu.gm_mgStart; + _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = FALSE; + _pGUIM->gmSelectPlayersMenu.Initialize_t(); + _pGUIM->gmSelectPlayersMenu.gm_strName = "SelectPlayers"; + _pGUIM->gmSelectPlayersMenu.gm_pmgSelectedByDefault = &_pGUIM->gmSelectPlayersMenu.gm_mgStart; InitActionsForSelectPlayersMenu(); - gmNetworkOpenMenu.Initialize_t(); - gmNetworkOpenMenu.gm_strName="NetworkOpen"; - gmNetworkOpenMenu.gm_pmgSelectedByDefault = &gmNetworkOpenMenu.gm_mgJoin; - gmNetworkOpenMenu.gm_pgmParentMenu = &gmNetworkJoinMenu; + _pGUIM->gmNetworkOpenMenu.Initialize_t(); + _pGUIM->gmNetworkOpenMenu.gm_strName = "NetworkOpen"; + _pGUIM->gmNetworkOpenMenu.gm_pmgSelectedByDefault = &_pGUIM->gmNetworkOpenMenu.gm_mgJoin; + _pGUIM->gmNetworkOpenMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; InitActionsForNetworkOpenMenu(); - gmSplitScreenMenu.Initialize_t(); - gmSplitScreenMenu.gm_strName="SplitScreen"; - gmSplitScreenMenu.gm_pmgSelectedByDefault = &gmSplitScreenMenu.gm_mgStart; - gmSplitScreenMenu.gm_pgmParentMenu = &gmMainMenu; + _pGUIM->gmSplitScreenMenu.Initialize_t(); + _pGUIM->gmSplitScreenMenu.gm_strName = "SplitScreen"; + _pGUIM->gmSplitScreenMenu.gm_pmgSelectedByDefault = &_pGUIM->gmSplitScreenMenu.gm_mgStart; + _pGUIM->gmSplitScreenMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; InitActionsForSplitScreenMenu(); - gmSplitStartMenu.Initialize_t(); - gmSplitStartMenu.gm_strName="SplitStart"; - gmSplitStartMenu.gm_pmgSelectedByDefault = &gmSplitStartMenu.gm_mgStart; - gmSplitStartMenu.gm_pgmParentMenu = &gmSplitScreenMenu; + _pGUIM->gmSplitStartMenu.Initialize_t(); + _pGUIM->gmSplitStartMenu.gm_strName = "SplitStart"; + _pGUIM->gmSplitStartMenu.gm_pmgSelectedByDefault = &_pGUIM->gmSplitStartMenu.gm_mgStart; + _pGUIM->gmSplitStartMenu.gm_pgmParentMenu = &_pGUIM->gmSplitScreenMenu; InitActionsForSplitStartMenu(); } catch( char *strError) @@ -575,7 +521,7 @@ void InitializeMenus(void) void DestroyMenus( void) { - gmMainMenu.Destroy(); + _pGUIM->gmMainMenu.Destroy(); pgmCurrentMenu = NULL; _pSoundStock->Release(_psdSelect); _pSoundStock->Release(_psdPress); @@ -597,7 +543,7 @@ void MenuGoToParent(void) // if no game is running } else { // go to main menu - ChangeToMenu( &gmMainMenu); + ChangeToMenu(&_pGUIM->gmMainMenu); } // if there is some parent menu } else { @@ -632,7 +578,7 @@ void MenuOnKeyDown( int iVKey) if(!bHandled) { // if escape or right mouse pressed if(iVKey==VK_ESCAPE || iVKey==VK_RBUTTON) { - if (pgmCurrentMenu==&gmLoadSaveMenu && gmLoadSaveMenu.gm_bNoEscape) { + if (pgmCurrentMenu==&_pGUIM->gmLoadSaveMenu && _pGUIM->gmLoadSaveMenu.gm_bNoEscape) { return; } // go to parent menu if possible @@ -839,7 +785,7 @@ BOOL DoMenu( CDrawPort *pdp) FLOAT fScaleH = (FLOAT)pixH / 480.0f; PIX pixI0, pixJ0, pixI1, pixJ1; // put logo(s) to main menu (if logos exist) - if( pgmCurrentMenu==&gmMainMenu) + if (pgmCurrentMenu == &_pGUIM->gmMainMenu) { if( _ptoLogoODI!=NULL) { CTextureData &td = (CTextureData&)*_ptoLogoODI->GetData(); @@ -877,7 +823,7 @@ BOOL DoMenu( CDrawPort *pdp) dpMenu.PutTexture(&_toLogoMenuB, PIXaabbox2D( PIX2D( pixCenterI, pixHeightJ),PIX2D( pixCenterI+pixSizeI, pixHeightJ+pixSizeJ))); } - } else if (pgmCurrentMenu==&gmAudioOptionsMenu) { + } else if (pgmCurrentMenu == &_pGUIM->gmAudioOptionsMenu) { if( _ptoLogoEAX!=NULL) { CTextureData &td = (CTextureData&)*_ptoLogoEAX->GetData(); const INDEX iSize = 95; diff --git a/Sources/SeriousSam/GUI/Menus/Menu.h b/Sources/SeriousSam/GUI/Menus/Menu.h index 42091d4..ab4535b 100644 --- a/Sources/SeriousSam/GUI/Menus/Menu.h +++ b/Sources/SeriousSam/GUI/Menus/Menu.h @@ -33,9 +33,6 @@ extern void PlayMenuSound(CSoundData *psd); extern CListHead _lhServers; -extern class CPlayerProfileMenu gmPlayerProfile; -extern class CSelectPlayersMenu gmSelectPlayersMenu; -extern class CCustomizeAxisMenu gmCustomizeAxisMenu; extern INDEX _iLocalPlayer; enum GameMode { @@ -57,7 +54,5 @@ extern CGameMenu *pgmCurrentMenu; #include "MPlayerProfile.h" #include "MSelectPlayers.h" -extern CLoadSaveMenu gmLoadSaveMenu; - #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MenuManager.cpp b/Sources/SeriousSam/GUI/Menus/MenuManager.cpp new file mode 100644 index 0000000..4a28b52 --- /dev/null +++ b/Sources/SeriousSam/GUI/Menus/MenuManager.cpp @@ -0,0 +1,8 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#include "StdH.h" +#include + +#include "MenuManager.h" + +extern CMenuManager* _pGUIM = NULL; \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MenuManager.h b/Sources/SeriousSam/GUI/Menus/MenuManager.h new file mode 100644 index 0000000..ca3ba28 --- /dev/null +++ b/Sources/SeriousSam/GUI/Menus/MenuManager.h @@ -0,0 +1,67 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENUMANAGER_H +#define SE_INCL_MENUMANAGER_H +#ifdef PRAGMA_ONCE +#pragma once +#endif + +#include "MAudioOptions.h" +#include "MConfirm.h" +#include "MControls.h" +#include "MCustomizeAxis.h" +#include "MCustomizeKeyboard.h" +#include "MCredits.h" +#include "MDisabled.h" +#include "MHighScore.h" +#include "MInGame.h" +#include "MLevels.h" +#include "MMain.h" +#include "MNetwork.h" +#include "MNetworkJoin.h" +#include "MNetworkOpen.h" +#include "MNetworkStart.h" +#include "MOptions.h" +#include "MRenderingOptions.h" +#include "MServers.h" +#include "MSinglePlayer.h" +#include "MSinglePlayerNew.h" +#include "MSplitScreen.h" +#include "MSplitStart.h" +#include "MVar.h" +#include "MVideoOptions.h" + + +class CMenuManager { +public: + CConfirmMenu gmConfirmMenu; + CMainMenu gmMainMenu; + CInGameMenu gmInGameMenu; + CSinglePlayerMenu gmSinglePlayerMenu; + CSinglePlayerNewMenu gmSinglePlayerNewMenu; + CDisabledMenu gmDisabledFunction; + CLevelsMenu gmLevelsMenu; + CVarMenu gmVarMenu; + CPlayerProfileMenu gmPlayerProfile; + CControlsMenu gmControls; + CLoadSaveMenu gmLoadSaveMenu; + CHighScoreMenu gmHighScoreMenu; + CCustomizeKeyboardMenu gmCustomizeKeyboardMenu; + CServersMenu gmServersMenu; + CCustomizeAxisMenu gmCustomizeAxisMenu; + COptionsMenu gmOptionsMenu; + CVideoOptionsMenu gmVideoOptionsMenu; + CAudioOptionsMenu gmAudioOptionsMenu; + CNetworkMenu gmNetworkMenu; + CNetworkJoinMenu gmNetworkJoinMenu; + CNetworkStartMenu gmNetworkStartMenu; + CNetworkOpenMenu gmNetworkOpenMenu; + CSplitScreenMenu gmSplitScreenMenu; + CSplitStartMenu gmSplitStartMenu; + CSelectPlayersMenu gmSelectPlayersMenu; +}; + +extern CMenuManager *_pGUIM; // TODO: Make singleton! + + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/Menu_actions.cpp b/Sources/SeriousSam/GUI/Menus/Menu_actions.cpp index 67dd2bc..e5a12fd 100644 --- a/Sources/SeriousSam/GUI/Menus/Menu_actions.cpp +++ b/Sources/SeriousSam/GUI/Menus/Menu_actions.cpp @@ -3,68 +3,18 @@ #include "StdH.h" #include +#include "MenuManager.h" #include "Menu_starters.h" #include "MenuStuff.h" #include "GUI/Components/MenuGadget.h" #include "LevelInfo.h" #include "VarList.h" -#include "MAudioOptions.h" -#include "MConfirm.h" -#include "MControls.h" -#include "MCustomizeAxis.h" -#include "MCustomizeKeyboard.h" -#include "MCredits.h" -#include "MDisabled.h" -#include "MHighScore.h" -#include "MInGame.h" -#include "MLevels.h" -#include "MMain.h" -#include "MNetwork.h" -#include "MNetworkJoin.h" -#include "MNetworkOpen.h" -#include "MNetworkStart.h" -#include "MOptions.h" -#include "MRenderingOptions.h" -#include "MServers.h" -#include "MSinglePlayer.h" -#include "MSinglePlayerNew.h" -#include "MSplitScreen.h" -#include "MSplitStart.h" -#include "MVar.h" -#include "MVideoOptions.h" - #define VOLUME_STEPS 50 extern CMenuGadget *_pmgLastActivatedGadget; extern CMenuGadget *_pmgUnderCursor; -extern CConfirmMenu gmConfirmMenu; -extern CMainMenu gmMainMenu; -extern CInGameMenu gmInGameMenu; -extern CSinglePlayerMenu gmSinglePlayerMenu; -extern CSinglePlayerNewMenu gmSinglePlayerNewMenu; -extern CDisabledMenu gmDisabledFunction; -extern CLevelsMenu gmLevelsMenu; -extern CVarMenu gmVarMenu; -extern CPlayerProfileMenu gmPlayerProfile; -extern CControlsMenu gmControls; -extern CLoadSaveMenu gmLoadSaveMenu; -extern CHighScoreMenu gmHighScoreMenu; -extern CCustomizeKeyboardMenu gmCustomizeKeyboardMenu; -extern CServersMenu gmServersMenu; -extern CCustomizeAxisMenu gmCustomizeAxisMenu; -extern COptionsMenu gmOptionsMenu; -extern CVideoOptionsMenu gmVideoOptionsMenu; -extern CAudioOptionsMenu gmAudioOptionsMenu; -extern CNetworkMenu gmNetworkMenu; -extern CNetworkJoinMenu gmNetworkJoinMenu; -extern CNetworkStartMenu gmNetworkStartMenu; -extern CNetworkOpenMenu gmNetworkOpenMenu; -extern CSplitScreenMenu gmSplitScreenMenu; -extern CSplitStartMenu gmSplitStartMenu; -extern CSelectPlayersMenu gmSelectPlayersMenu; - // functions to activate when user chose 'yes/no' on confirmation void(*_pConfimedYes)(void) = NULL; void(*_pConfimedNo)(void) = NULL; @@ -152,10 +102,10 @@ void ExitConfirm(void) { _pConfimedYes = &ExitGame; _pConfimedNo = NULL; - gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); - gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - gmConfirmMenu.BeLarge(); - ChangeToMenu(&gmConfirmMenu); + _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); + _pGUIM->gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; + _pGUIM->gmConfirmMenu.BeLarge(); + ChangeToMenu(&_pGUIM->gmConfirmMenu); } void StopConfirm(void) @@ -163,10 +113,10 @@ void StopConfirm(void) extern void StopCurrentGame(void); _pConfimedYes = &StopCurrentGame; _pConfimedNo = NULL; - gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); - gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - gmConfirmMenu.BeLarge(); - ChangeToMenu(&gmConfirmMenu); + _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); + _pGUIM->gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; + _pGUIM->gmConfirmMenu.BeLarge(); + ChangeToMenu(&_pGUIM->gmConfirmMenu); } void ModLoadYes(void) @@ -201,10 +151,10 @@ extern void ModConnectConfirm(void) CPrintF(TRANS("Server is running a different MOD (%s).\nYou need to reload to connect.\n"), _fnmModSelected); _pConfimedYes = &ModConnect; _pConfimedNo = NULL; - gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("CHANGE THE MOD?"); - gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - gmConfirmMenu.BeLarge(); - ChangeToMenu(&gmConfirmMenu); + _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("CHANGE THE MOD?"); + _pGUIM->gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; + _pGUIM->gmConfirmMenu.BeLarge(); + ChangeToMenu(&_pGUIM->gmConfirmMenu); } void SaveConfirm(void) @@ -212,10 +162,10 @@ void SaveConfirm(void) extern void OnFileSaveOK(void); _pConfimedYes = &OnFileSaveOK; _pConfimedNo = NULL; - gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("OVERWRITE?"); - gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - gmConfirmMenu.BeLarge(); - ChangeToMenu(&gmConfirmMenu); + _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("OVERWRITE?"); + _pGUIM->gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; + _pGUIM->gmConfirmMenu.BeLarge(); + ChangeToMenu(&_pGUIM->gmConfirmMenu); } void ExitAndSpawnExplorer(void) @@ -230,11 +180,11 @@ void ModNotInstalled(void) { _pConfimedYes = &ExitAndSpawnExplorer; _pConfimedNo = NULL; - gmConfirmMenu.gm_mgConfirmLabel.mg_strText.PrintF( + _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText.PrintF( TRANS("You don't have MOD '%s' installed.\nDo you want to visit its web site?"), (const char*)_fnmModSelected); - gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - gmConfirmMenu.BeSmall(); - ChangeToMenu(&gmConfirmMenu); + _pGUIM->gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; + _pGUIM->gmConfirmMenu.BeSmall(); + ChangeToMenu(&_pGUIM->gmConfirmMenu); /* gmDisabledFunction.gm_pgmParentMenu = pgmCurrentMenu; @@ -251,10 +201,10 @@ extern void ModConfirm(void) { _pConfimedYes = &ModLoadYes; _pConfimedNo = NULL; - gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("LOAD THIS MOD?"); - gmConfirmMenu.gm_pgmParentMenu = &gmLoadSaveMenu; - gmConfirmMenu.BeLarge(); - ChangeToMenu(&gmConfirmMenu); + _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("LOAD THIS MOD?"); + _pGUIM->gmConfirmMenu.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + _pGUIM->gmConfirmMenu.BeLarge(); + ChangeToMenu(&_pGUIM->gmConfirmMenu); } void VideoConfirm(void) @@ -262,27 +212,27 @@ void VideoConfirm(void) // FIXUP: keyboard focus lost when going from full screen to window mode // due to WM_MOUSEMOVE being sent _bMouseUsedLast = FALSE; - _pmgUnderCursor = gmConfirmMenu.gm_pmgSelectedByDefault; + _pmgUnderCursor = _pGUIM->gmConfirmMenu.gm_pmgSelectedByDefault; _pConfimedYes = NULL; void RevertVideoSettings(void); _pConfimedNo = RevertVideoSettings; - gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("KEEP THIS SETTING?"); - gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - gmConfirmMenu.BeLarge(); - ChangeToMenu(&gmConfirmMenu); + _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("KEEP THIS SETTING?"); + _pGUIM->gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; + _pGUIM->gmConfirmMenu.BeLarge(); + ChangeToMenu(&_pGUIM->gmConfirmMenu); } void CDConfirm(void(*pOk)(void)) { _pConfimedYes = pOk; _pConfimedNo = NULL; - gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("PLEASE INSERT GAME CD?"); - if (pgmCurrentMenu != &gmConfirmMenu) { - gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - gmConfirmMenu.BeLarge(); - ChangeToMenu(&gmConfirmMenu); + _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("PLEASE INSERT GAME CD?"); + if (pgmCurrentMenu != &_pGUIM->gmConfirmMenu) { + _pGUIM->gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; + _pGUIM->gmConfirmMenu.BeLarge(); + ChangeToMenu(&_pGUIM->gmConfirmMenu); } } @@ -305,8 +255,8 @@ void ConfirmNo(void) } void InitActionsForConfirmMenu() { - gmConfirmMenu.gm_mgConfirmYes.mg_pActivatedFunction = &ConfirmYes; - gmConfirmMenu.gm_mgConfirmNo.mg_pActivatedFunction = &ConfirmNo; + _pGUIM->gmConfirmMenu.gm_mgConfirmYes.mg_pActivatedFunction = &ConfirmYes; + _pGUIM->gmConfirmMenu.gm_mgConfirmNo.mg_pActivatedFunction = &ConfirmNo; } // return TRUE if handled @@ -320,7 +270,7 @@ BOOL CConfirmMenu::OnKeyDown(int iVKey) } // ------------------------ CMainMenu implementation -#define CMENU gmMainMenu +#define CMENU _pGUIM->gmMainMenu void InitActionsForMainMenu() { CMENU.gm_mgSingle.mg_pActivatedFunction = &StartSinglePlayerMenu; @@ -354,7 +304,7 @@ void StopRecordingDemo(void) SetDemoStartStopRecText(); } -#define CMENU gmInGameMenu +#define CMENU _pGUIM->gmInGameMenu void InitActionsForInGameMenu() { @@ -394,7 +344,7 @@ extern void SetDemoStartStopRecText(void) void StartSinglePlayerGame_Normal(void); void StartTechTest(void) { - gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; + _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; extern CTString sam_strTechTestLevel; _pGame->gam_strCustomLevel = sam_strTechTestLevel; StartSinglePlayerGame_Normal(); @@ -402,13 +352,13 @@ void StartTechTest(void) void StartTraining(void) { - gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; + _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; extern CTString sam_strTrainingLevel; _pGame->gam_strCustomLevel = sam_strTrainingLevel; - ChangeToMenu(&gmSinglePlayerNewMenu); + ChangeToMenu(&_pGUIM->gmSinglePlayerNewMenu); } -#define CMENU gmSinglePlayerMenu +#define CMENU _pGUIM->gmSinglePlayerMenu void InitActionsForSinglePlayerMenu() { CMENU.gm_mgNewGame.mg_pActivatedFunction = &StartSinglePlayerNewMenu; @@ -500,7 +450,7 @@ void StartSinglePlayerGame_Mental(void) } -#define CMENU gmSinglePlayerNewMenu +#define CMENU _pGUIM->gmSinglePlayerNewMenu void InitActionsForSinglePlayerNewMenu() { CMENU.gm_mgTourist.mg_pActivatedFunction = &StartSinglePlayerGame_Tourist; @@ -514,7 +464,7 @@ void InitActionsForSinglePlayerNewMenu() { #undef CMENU // ------------------------ CPlayerProfileMenu implementation -#define CMENU gmPlayerProfile +#define CMENU _pGUIM->gmPlayerProfile void ChangeCrosshair(INDEX iNew) { @@ -611,7 +561,7 @@ extern void PPOnPlayerSelect(void) { ASSERT(_pmgLastActivatedGadget != NULL); if (_pmgLastActivatedGadget->mg_bEnabled) { - gmPlayerProfile.SelectPlayer(((CMGButton *)_pmgLastActivatedGadget)->mg_iIndex); + _pGUIM->gmPlayerProfile.SelectPlayer(((CMGButton *)_pmgLastActivatedGadget)->mg_iIndex); } } @@ -633,7 +583,7 @@ void InitActionsForPlayerProfileMenu() #undef CMENU // ------------------------ CControlsMenu implementation -#define CMENU gmControls +#define CMENU _pGUIM->gmControls void InitActionsForControlsMenu() { @@ -645,7 +595,7 @@ void InitActionsForControlsMenu() #undef CMENU // ------------------------ CCustomizeAxisMenu implementation -#define CMENU gmCustomizeAxisMenu +#define CMENU _pGUIM->gmCustomizeAxisMenu void PreChangeAxis(INDEX iDummy) { @@ -665,7 +615,7 @@ void InitActionsForCustomizeAxisMenu() { #undef CMENU // ------------------------ COptionsMenu implementation -#define CMENU gmOptionsMenu +#define CMENU _pGUIM->gmOptionsMenu void InitActionsForOptionsMenu() { @@ -689,7 +639,7 @@ static INDEX sam_old_iGfxAPI; static INDEX sam_old_iVideoSetup; // 0==speed, 1==normal, 2==quality, 3==custom -#define CMENU gmVideoOptionsMenu +#define CMENU _pGUIM->gmVideoOptionsMenu static void FillResolutionsList(void) { @@ -847,17 +797,17 @@ void ApplyVideoOptions(void) sam_old_iGfxAPI = sam_iGfxAPI; sam_old_iVideoSetup = sam_iVideoSetup; - BOOL bFullScreenMode = gmVideoOptionsMenu.gm_mgFullScreenTrigger.mg_iSelected == 1; + BOOL bFullScreenMode = CMENU.gm_mgFullScreenTrigger.mg_iSelected == 1; PIX pixWindowSizeI, pixWindowSizeJ; - ResolutionToSize(gmVideoOptionsMenu.gm_mgResolutionsTrigger.mg_iSelected, pixWindowSizeI, pixWindowSizeJ); - enum GfxAPIType gat = SwitchToAPI(gmVideoOptionsMenu.gm_mgDisplayAPITrigger.mg_iSelected); - enum DisplayDepth dd = SwitchToDepth(gmVideoOptionsMenu.gm_mgBitsPerPixelTrigger.mg_iSelected); - const INDEX iAdapter = gmVideoOptionsMenu.gm_mgDisplayAdaptersTrigger.mg_iSelected; + ResolutionToSize(CMENU.gm_mgResolutionsTrigger.mg_iSelected, pixWindowSizeI, pixWindowSizeJ); + enum GfxAPIType gat = SwitchToAPI(CMENU.gm_mgDisplayAPITrigger.mg_iSelected); + enum DisplayDepth dd = SwitchToDepth(CMENU.gm_mgBitsPerPixelTrigger.mg_iSelected); + const INDEX iAdapter = CMENU.gm_mgDisplayAdaptersTrigger.mg_iSelected; // setup preferences extern INDEX _iLastPreferences; if (sam_iVideoSetup == 3) _iLastPreferences = 3; - sam_iVideoSetup = gmVideoOptionsMenu.gm_mgDisplayPrefsTrigger.mg_iSelected; + sam_iVideoSetup = CMENU.gm_mgDisplayPrefsTrigger.mg_iSelected; // force fullscreen mode if needed CDisplayAdapter &da = _pGfx->gl_gaAPI[gat].ga_adaAdapter[iAdapter]; @@ -912,50 +862,52 @@ void InitActionsForVideoOptionsMenu() #undef CMENU // ------------------------ CAudioOptionsMenu implementation +#define CMENU _pGUIM->gmAudioOptionsMenu + extern void RefreshSoundFormat(void) { switch (_pSound->GetFormat()) { - case CSoundLibrary::SF_NONE: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 0; break; } - case CSoundLibrary::SF_11025_16: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 1; break; } - case CSoundLibrary::SF_22050_16: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 2; break; } - case CSoundLibrary::SF_44100_16: {gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 3; break; } - default: gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected = 0; + case CSoundLibrary::SF_NONE: {CMENU.gm_mgFrequencyTrigger.mg_iSelected = 0; break; } + case CSoundLibrary::SF_11025_16: {CMENU.gm_mgFrequencyTrigger.mg_iSelected = 1; break; } + case CSoundLibrary::SF_22050_16: {CMENU.gm_mgFrequencyTrigger.mg_iSelected = 2; break; } + case CSoundLibrary::SF_44100_16: {CMENU.gm_mgFrequencyTrigger.mg_iSelected = 3; break; } + default: CMENU.gm_mgFrequencyTrigger.mg_iSelected = 0; } - gmAudioOptionsMenu.gm_mgAudioAutoTrigger.mg_iSelected = Clamp(sam_bAutoAdjustAudio, 0, 1); - gmAudioOptionsMenu.gm_mgAudioAPITrigger.mg_iSelected = Clamp(_pShell->GetINDEX("snd_iInterface"), 0L, 2L); + CMENU.gm_mgAudioAutoTrigger.mg_iSelected = Clamp(sam_bAutoAdjustAudio, 0, 1); + CMENU.gm_mgAudioAPITrigger.mg_iSelected = Clamp(_pShell->GetINDEX("snd_iInterface"), 0L, 2L); - gmAudioOptionsMenu.gm_mgWaveVolume.mg_iMinPos = 0; - gmAudioOptionsMenu.gm_mgWaveVolume.mg_iMaxPos = VOLUME_STEPS; - gmAudioOptionsMenu.gm_mgWaveVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fSoundVolume")*VOLUME_STEPS + 0.5f); - gmAudioOptionsMenu.gm_mgWaveVolume.ApplyCurrentPosition(); + CMENU.gm_mgWaveVolume.mg_iMinPos = 0; + CMENU.gm_mgWaveVolume.mg_iMaxPos = VOLUME_STEPS; + CMENU.gm_mgWaveVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fSoundVolume")*VOLUME_STEPS + 0.5f); + CMENU.gm_mgWaveVolume.ApplyCurrentPosition(); - gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iMinPos = 0; - gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iMaxPos = VOLUME_STEPS; - gmAudioOptionsMenu.gm_mgMPEGVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fMusicVolume")*VOLUME_STEPS + 0.5f); - gmAudioOptionsMenu.gm_mgMPEGVolume.ApplyCurrentPosition(); + CMENU.gm_mgMPEGVolume.mg_iMinPos = 0; + CMENU.gm_mgMPEGVolume.mg_iMaxPos = VOLUME_STEPS; + CMENU.gm_mgMPEGVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fMusicVolume")*VOLUME_STEPS + 0.5f); + CMENU.gm_mgMPEGVolume.ApplyCurrentPosition(); - gmAudioOptionsMenu.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); - gmAudioOptionsMenu.gm_mgAudioAPITrigger.ApplyCurrentSelection(); - gmAudioOptionsMenu.gm_mgFrequencyTrigger.ApplyCurrentSelection(); + CMENU.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); + CMENU.gm_mgAudioAPITrigger.ApplyCurrentSelection(); + CMENU.gm_mgFrequencyTrigger.ApplyCurrentSelection(); } void ApplyAudioOptions(void) { - sam_bAutoAdjustAudio = gmAudioOptionsMenu.gm_mgAudioAutoTrigger.mg_iSelected; + sam_bAutoAdjustAudio = CMENU.gm_mgAudioAutoTrigger.mg_iSelected; if (sam_bAutoAdjustAudio) { _pShell->Execute("include \"Scripts\\Addons\\SFX-AutoAdjust.ini\""); } else { - _pShell->SetINDEX("snd_iInterface", gmAudioOptionsMenu.gm_mgAudioAPITrigger.mg_iSelected); + _pShell->SetINDEX("snd_iInterface", CMENU.gm_mgAudioAPITrigger.mg_iSelected); - switch (gmAudioOptionsMenu.gm_mgFrequencyTrigger.mg_iSelected) + switch (CMENU.gm_mgFrequencyTrigger.mg_iSelected) { - case 0: {_pSound->SetFormat(CSoundLibrary::SF_NONE); break; } - case 1: {_pSound->SetFormat(CSoundLibrary::SF_11025_16); break; } - case 2: {_pSound->SetFormat(CSoundLibrary::SF_22050_16); break; } - case 3: {_pSound->SetFormat(CSoundLibrary::SF_44100_16); break; } - default: _pSound->SetFormat(CSoundLibrary::SF_NONE); + case 0: {_pSound->SetFormat(CSoundLibrary::SF_NONE); break; } + case 1: {_pSound->SetFormat(CSoundLibrary::SF_11025_16); break; } + case 2: {_pSound->SetFormat(CSoundLibrary::SF_22050_16); break; } + case 3: {_pSound->SetFormat(CSoundLibrary::SF_44100_16); break; } + default: _pSound->SetFormat(CSoundLibrary::SF_NONE); } } @@ -963,8 +915,6 @@ void ApplyAudioOptions(void) snd_iFormat = _pSound->GetFormat(); } -#define CMENU gmAudioOptionsMenu - static void OnWaveVolumeChange(INDEX iCurPos) { _pShell->SetFLOAT("snd_fSoundVolume", iCurPos / FLOAT(VOLUME_STEPS)); @@ -1015,7 +965,7 @@ void InitActionsForAudioOptionsMenu() #undef CMENU // ------------------------ CVarMenu implementation -#define CMENU gmVarMenu +#define CMENU _pGUIM->gmVarMenu void VarApply(void) { @@ -1032,23 +982,23 @@ void InitActionsForVarMenu() { // ------------------------ CServersMenu implementation extern void RefreshServerList(void) { - _pNetwork->EnumSessions(gmServersMenu.m_bInternet); + _pNetwork->EnumSessions(_pGUIM->gmServersMenu.m_bInternet); } void RefreshServerListManually(void) { - ChangeToMenu(&gmServersMenu); // this refreshes the list and sets focuses + ChangeToMenu(&_pGUIM->gmServersMenu); // this refreshes the list and sets focuses } void SortByColumn(int i) { - if (gmServersMenu.gm_mgList.mg_iSort == i) { - gmServersMenu.gm_mgList.mg_bSortDown = !gmServersMenu.gm_mgList.mg_bSortDown; + if (_pGUIM->gmServersMenu.gm_mgList.mg_iSort == i) { + _pGUIM->gmServersMenu.gm_mgList.mg_bSortDown = !_pGUIM->gmServersMenu.gm_mgList.mg_bSortDown; } else { - gmServersMenu.gm_mgList.mg_bSortDown = FALSE; + _pGUIM->gmServersMenu.gm_mgList.mg_bSortDown = FALSE; } - gmServersMenu.gm_mgList.mg_iSort = i; + _pGUIM->gmServersMenu.gm_mgList.mg_iSort = i; } void SortByServer(void) { SortByColumn(0); } @@ -1063,7 +1013,7 @@ extern CMGButton mgServerColumn[7]; extern CMGEdit mgServerFilter[7]; void InitActionsForServersMenu() { - gmServersMenu.gm_mgRefresh.mg_pActivatedFunction = &RefreshServerList; + _pGUIM->gmServersMenu.gm_mgRefresh.mg_pActivatedFunction = &RefreshServerList; mgServerColumn[0].mg_pActivatedFunction = SortByServer; mgServerColumn[1].mg_pActivatedFunction = SortByMap; @@ -1075,7 +1025,7 @@ void InitActionsForServersMenu() { } // ------------------------ CNetworkMenu implementation -#define CMENU gmNetworkMenu +#define CMENU _pGUIM->gmNetworkMenu void InitActionsForNetworkMenu() { @@ -1088,7 +1038,7 @@ void InitActionsForNetworkMenu() #undef CMENU // ------------------------ CNetworkJoinMenu implementation -#define CMENU gmNetworkJoinMenu +#define CMENU _pGUIM->gmNetworkJoinMenu void InitActionsForNetworkJoinMenu() { @@ -1103,15 +1053,15 @@ void InitActionsForNetworkJoinMenu() extern void UpdateNetworkLevel(INDEX iDummy) { ValidateLevelForFlags(_pGame->gam_strCustomLevel, - GetSpawnFlagsForGameType(gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); - gmNetworkStartMenu.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; + GetSpawnFlagsForGameType(_pGUIM->gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); + _pGUIM->gmNetworkStartMenu.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; } void InitActionsForNetworkStartMenu() { - gmNetworkStartMenu.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromNetwork; - gmNetworkStartMenu.gm_mgGameOptions.mg_pActivatedFunction = &StartGameOptionsFromNetwork; - gmNetworkStartMenu.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromNetwork; + _pGUIM->gmNetworkStartMenu.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromNetwork; + _pGUIM->gmNetworkStartMenu.gm_mgGameOptions.mg_pActivatedFunction = &StartGameOptionsFromNetwork; + _pGUIM->gmNetworkStartMenu.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromNetwork; } // @@ -1131,7 +1081,7 @@ void InitActionsForNetworkStartMenu() gd.mg_iLocalPlayer = iplayer; // ------------------------ CSelectPlayersMenu implementation -#define CMENU gmSelectPlayersMenu +#define CMENU _pGUIM->gmSelectPlayersMenu INDEX FindUnusedPlayer(void) { @@ -1168,7 +1118,7 @@ extern void SelectPlayersFillMenu(void) CMENU.gm_mgDedicated.mg_iSelected = 0; } - gmSelectPlayersMenu.gm_mgDedicated.ApplyCurrentSelection(); + CMENU.gm_mgDedicated.ApplyCurrentSelection(); if (CMENU.gm_bAllowObserving && _pGame->gm_MenuSplitScreenCfg == CGame::SSC_OBSERVER) { CMENU.gm_mgObserver.mg_iSelected = 1; @@ -1319,11 +1269,11 @@ void InitActionsForSelectPlayersMenu() // ------------------------ CNetworkOpenMenu implementation void InitActionsForNetworkOpenMenu() { - gmNetworkOpenMenu.gm_mgJoin.mg_pActivatedFunction = &StartSelectPlayersMenuFromOpen; + _pGUIM->gmNetworkOpenMenu.gm_mgJoin.mg_pActivatedFunction = &StartSelectPlayersMenuFromOpen; } // ------------------------ CSplitScreenMenu implementation -#define CMENU gmSplitScreenMenu +#define CMENU _pGUIM->gmSplitScreenMenu void InitActionsForSplitScreenMenu() { @@ -1335,7 +1285,7 @@ void InitActionsForSplitScreenMenu() #undef CMENU // ------------------------ CSplitStartMenu implementation -#define CMENU gmSplitStartMenu +#define CMENU _pGUIM->gmSplitStartMenu void InitActionsForSplitStartMenu() { @@ -1347,8 +1297,8 @@ void InitActionsForSplitStartMenu() extern void UpdateSplitLevel(INDEX iDummy) { ValidateLevelForFlags(_pGame->gam_strCustomLevel, - GetSpawnFlagsForGameType(gmSplitStartMenu.gm_mgGameType.mg_iSelected)); - gmSplitStartMenu.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; + GetSpawnFlagsForGameType(CMENU.gm_mgGameType.mg_iSelected)); + CMENU.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; } #undef CMENU \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/Menu_starters.cpp b/Sources/SeriousSam/GUI/Menus/Menu_starters.cpp index f34e4fe..a1259d1 100644 --- a/Sources/SeriousSam/GUI/Menus/Menu_starters.cpp +++ b/Sources/SeriousSam/GUI/Menus/Menu_starters.cpp @@ -3,35 +3,11 @@ #include "StdH.h" #include +#include "MenuManager.h" #include "Menu_starters.h" #include "MenuStuff.h" #include "LevelInfo.h" -#include "MAudioOptions.h" -#include "MConfirm.h" -#include "MControls.h" -#include "MCustomizeAxis.h" -#include "MCustomizeKeyboard.h" -#include "MCredits.h" -#include "MDisabled.h" -#include "MHighScore.h" -#include "MInGame.h" -#include "MLevels.h" -#include "MMain.h" -#include "MNetwork.h" -#include "MNetworkJoin.h" -#include "MNetworkOpen.h" -#include "MNetworkStart.h" -#include "MOptions.h" -#include "MRenderingOptions.h" -#include "MServers.h" -#include "MSinglePlayer.h" -#include "MSinglePlayerNew.h" -#include "MSplitScreen.h" -#include "MSplitStart.h" -#include "MVar.h" -#include "MVideoOptions.h" - extern void(*_pAfterLevelChosen)(void); extern BOOL _bPlayerMenuFromSinglePlayer; @@ -45,97 +21,70 @@ extern CTString _strModServerSelected; CTFileName _fnDemoToPlay; CTFileName _fnGameToLoad; -extern CConfirmMenu gmConfirmMenu; -extern CMainMenu gmMainMenu; -extern CInGameMenu gmInGameMenu; -extern CSinglePlayerMenu gmSinglePlayerMenu; -extern CSinglePlayerNewMenu gmSinglePlayerNewMenu; -extern CDisabledMenu gmDisabledFunction; -extern CLevelsMenu gmLevelsMenu; -extern CVarMenu gmVarMenu; -extern CPlayerProfileMenu gmPlayerProfile; -extern CControlsMenu gmControls; -extern CLoadSaveMenu gmLoadSaveMenu; -extern CHighScoreMenu gmHighScoreMenu; -extern CCustomizeKeyboardMenu gmCustomizeKeyboardMenu; -extern CServersMenu gmServersMenu; -extern CCustomizeAxisMenu gmCustomizeAxisMenu; -extern COptionsMenu gmOptionsMenu; -extern CVideoOptionsMenu gmVideoOptionsMenu; -extern CAudioOptionsMenu gmAudioOptionsMenu; -extern CNetworkMenu gmNetworkMenu; -extern CNetworkJoinMenu gmNetworkJoinMenu; -extern CNetworkStartMenu gmNetworkStartMenu; -extern CNetworkOpenMenu gmNetworkOpenMenu; -extern CSplitScreenMenu gmSplitScreenMenu; -extern CSplitStartMenu gmSplitStartMenu; -extern CSelectPlayersMenu gmSelectPlayersMenu; - - void StartVideoOptionsMenu(void) { - ChangeToMenu(&gmVideoOptionsMenu); + ChangeToMenu(&_pGUIM->gmVideoOptionsMenu); } void StartAudioOptionsMenu(void) { - ChangeToMenu(&gmAudioOptionsMenu); + ChangeToMenu(&_pGUIM->gmAudioOptionsMenu); } void StartNetworkMenu(void) { - ChangeToMenu(&gmNetworkMenu); + ChangeToMenu(&_pGUIM->gmNetworkMenu); } void StartNetworkJoinMenu(void) { - ChangeToMenu(&gmNetworkJoinMenu); + ChangeToMenu(&_pGUIM->gmNetworkJoinMenu); } void StartNetworkStartMenu(void) { - ChangeToMenu(&gmNetworkStartMenu); + ChangeToMenu(&_pGUIM->gmNetworkStartMenu); } void StartNetworkOpenMenu(void) { - ChangeToMenu(&gmNetworkOpenMenu); + ChangeToMenu(&_pGUIM->gmNetworkOpenMenu); } void StartSplitScreenMenu(void) { - ChangeToMenu(&gmSplitScreenMenu); + ChangeToMenu(&_pGUIM->gmSplitScreenMenu); } void StartSplitStartMenu(void) { - ChangeToMenu(&gmSplitStartMenu); + ChangeToMenu(&_pGUIM->gmSplitStartMenu); } void StartSinglePlayerNewMenuCustom(void) { - gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmLevelsMenu; - ChangeToMenu(&gmSinglePlayerNewMenu); + _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmLevelsMenu; + ChangeToMenu(&_pGUIM->gmSinglePlayerNewMenu); } static void SetQuickLoadNotes(void) { if (_pShell->GetINDEX("gam_iQuickSaveSlots") <= 8) { - gmLoadSaveMenu.gm_mgNotes.mg_strText = TRANS( + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = TRANS( "In-game QuickSave shortcuts:\n" "F6 - save a new QuickSave\n" "F9 - load the last QuickSave\n"); } else { - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; } } void StartSinglePlayerNewMenu(void) { - gmSinglePlayerNewMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; + _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; extern CTString sam_strFirstLevel; _pGame->gam_strCustomLevel = sam_strFirstLevel; - ChangeToMenu(&gmSinglePlayerNewMenu); + ChangeToMenu(&_pGUIM->gmSinglePlayerNewMenu); } BOOL LSLoadSinglePlayer(const CTFileName &fnm) @@ -150,8 +99,7 @@ BOOL LSLoadSinglePlayer(const CTFileName &fnm) if (_pGame->LoadGame(fnm)) { StopMenus(); _gmRunningGameMode = GM_SINGLE_PLAYER; - } - else { + } else { _gmRunningGameMode = GM_NONE; } return TRUE; @@ -184,8 +132,7 @@ void StartDemoPlay(void) StopMenus(); if (_pGame->gm_csConsoleState != CS_OFF) _pGame->gm_csConsoleState = CS_TURNINGOFF; _gmRunningGameMode = GM_DEMO; - } - else { + } else { _gmRunningGameMode = GM_NONE; } } @@ -203,7 +150,7 @@ BOOL LSLoadPlayerModel(const CTFileName &fnm) // get base filename CTString strBaseName = fnm.FileName(); // set it for current player - CPlayerCharacter &pc = _pGame->gm_apcPlayers[*gmPlayerProfile.gm_piCurrentPlayer]; + CPlayerCharacter &pc = _pGame->gm_apcPlayers[*_pGUIM->gmPlayerProfile.gm_piCurrentPlayer]; CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; memset(pps->ps_achModelFile, 0, sizeof(pps->ps_achModelFile)); strncpy(pps->ps_achModelFile, strBaseName, sizeof(pps->ps_achModelFile)); @@ -250,12 +197,12 @@ BOOL LSLoadMod(const CTFileName &fnm) BOOL LSLoadCustom(const CTFileName &fnm) { - gmVarMenu.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); + _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); // LoadStringVar(fnm.NoExt()+".des", mgVarTitle.mg_strText); // mgVarTitle.mg_strText.OnlyFirstLine(); - gmVarMenu.gm_fnmMenuCFG = fnm; - gmVarMenu.gm_pgmParentMenu = &gmLoadSaveMenu; - ChangeToMenu(&gmVarMenu); + _pGUIM->gmVarMenu.gm_fnmMenuCFG = fnm; + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + ChangeToMenu(&_pGUIM->gmVarMenu); return TRUE; } @@ -297,38 +244,38 @@ void StartSinglePlayerQuickLoadMenu(void) { _gmMenuGameMode = GM_SINGLE_PLAYER; - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\Quick\\", _pGame->gm_iSinglePlayer); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSinglePlayer; + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; + _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\Quick\\", _pGame->gm_iSinglePlayer); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSinglePlayer; SetQuickLoadNotes(); - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartSinglePlayerLoadMenu(void) { _gmMenuGameMode = GM_SINGLE_PLAYER; - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSinglePlayer; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; + _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSinglePlayer; + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartSinglePlayerSaveMenu(void) @@ -340,40 +287,40 @@ void StartSinglePlayerSaveMenu(void) return; } _gmMenuGameMode = GM_SINGLE_PLAYER; - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = TRUE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + _pGUIM->gmLoadSaveMenu.gm_bSave = TRUE; + _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); + _pGUIM->gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + _pGUIM->gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartDemoLoadMenu(void) { _gmMenuGameMode = GM_DEMO; - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("PLAY DEMO"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Demos\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".dem"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadDemo; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("PLAY DEMO"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; + _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Demos\\"); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".dem"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadDemo; + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartDemoSaveMenu(void) @@ -381,59 +328,59 @@ void StartDemoSaveMenu(void) if (_gmRunningGameMode == GM_NONE) return; _gmMenuGameMode = GM_DEMO; - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("RECORD DEMO"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; - gmLoadSaveMenu.gm_bSave = TRUE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Demos\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmBaseName = CTString("Demo"); - gmLoadSaveMenu.gm_fnmExt = CTString(".dem"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveDemo; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(FALSE); + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("RECORD DEMO"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; + _pGUIM->gmLoadSaveMenu.gm_bSave = TRUE; + _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Demos\\"); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); + _pGUIM->gmLoadSaveMenu.gm_fnmBaseName = CTString("Demo"); + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".dem"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveDemo; + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + _pGUIM->gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(FALSE); - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartNetworkQuickLoadMenu(void) { _gmMenuGameMode = GM_NETWORK; - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\Network\\Quick\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetwork; + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; + _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\Network\\Quick\\"); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetwork; SetQuickLoadNotes(); - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartNetworkLoadMenu(void) { _gmMenuGameMode = GM_NETWORK; - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\Network\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetwork; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; + _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\Network\\"); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetwork; + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartNetworkSaveMenu(void) @@ -441,59 +388,59 @@ void StartNetworkSaveMenu(void) if (_gmRunningGameMode != GM_NETWORK) return; _gmMenuGameMode = GM_NETWORK; - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = TRUE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\Network\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + _pGUIM->gmLoadSaveMenu.gm_bSave = TRUE; + _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\Network\\"); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); + _pGUIM->gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + _pGUIM->gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartSplitScreenQuickLoadMenu(void) { _gmMenuGameMode = GM_SPLIT_SCREEN; - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\Quick\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSplitScreen; + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; + _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\Quick\\"); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSplitScreen; SetQuickLoadNotes(); - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartSplitScreenLoadMenu(void) { _gmMenuGameMode = GM_SPLIT_SCREEN; - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSplitScreen; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; + _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSplitScreen; + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartSplitScreenSaveMenu(void) @@ -501,74 +448,74 @@ void StartSplitScreenSaveMenu(void) if (_gmRunningGameMode != GM_SPLIT_SCREEN) return; _gmMenuGameMode = GM_SPLIT_SCREEN; - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - gmLoadSaveMenu.gm_bSave = TRUE; - gmLoadSaveMenu.gm_bManage = TRUE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); - gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; + _pGUIM->gmLoadSaveMenu.gm_bSave = TRUE; + _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); + _pGUIM->gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + _pGUIM->gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); - gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } // game options var settings void StartVarGameOptions(void) { - gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); - gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\GameOptions.cfg"); - ChangeToMenu(&gmVarMenu); + _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); + _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\GameOptions.cfg"); + ChangeToMenu(&_pGUIM->gmVarMenu); } void StartSinglePlayerGameOptions(void) { - gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); - gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\SPOptions.cfg"); - ChangeToMenu(&gmVarMenu); - gmVarMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; + _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); + _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\SPOptions.cfg"); + ChangeToMenu(&_pGUIM->gmVarMenu); + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; } void StartGameOptionsFromNetwork(void) { StartVarGameOptions(); - gmVarMenu.gm_pgmParentMenu = &gmNetworkStartMenu; + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; } void StartGameOptionsFromSplitScreen(void) { StartVarGameOptions(); - gmVarMenu.gm_pgmParentMenu = &gmSplitStartMenu; + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; } // rendering options var settings void StartRenderingOptionsMenu(void) { - gmVarMenu.gm_mgTitle.mg_strText = TRANS("RENDERING OPTIONS"); - gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\RenderingOptions.cfg"); - gmVarMenu.gm_pgmParentMenu = &gmVideoOptionsMenu; - ChangeToMenu(&gmVarMenu); + _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("RENDERING OPTIONS"); + _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\RenderingOptions.cfg"); + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmVideoOptionsMenu; + ChangeToMenu(&_pGUIM->gmVarMenu); } void StartCustomizeKeyboardMenu(void) { - ChangeToMenu(&gmCustomizeKeyboardMenu); + ChangeToMenu(&_pGUIM->gmCustomizeKeyboardMenu); } void StartCustomizeAxisMenu(void) { - ChangeToMenu(&gmCustomizeAxisMenu); + ChangeToMenu(&_pGUIM->gmCustomizeAxisMenu); } void StartOptionsMenu(void) { - gmOptionsMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmOptionsMenu); + _pGUIM->gmOptionsMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmOptionsMenu); } void StartCurrentLoadMenu() @@ -576,12 +523,10 @@ void StartCurrentLoadMenu() if (_gmRunningGameMode == GM_NETWORK) { void StartNetworkLoadMenu(void); StartNetworkLoadMenu(); - } - else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { + } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { void StartSplitScreenLoadMenu(void); StartSplitScreenLoadMenu(); - } - else { + } else { void StartSinglePlayerLoadMenu(void); StartSinglePlayerLoadMenu(); } @@ -592,12 +537,10 @@ void StartCurrentSaveMenu() if (_gmRunningGameMode == GM_NETWORK) { void StartNetworkSaveMenu(void); StartNetworkSaveMenu(); - } - else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { + } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { void StartSplitScreenSaveMenu(void); StartSplitScreenSaveMenu(); - } - else { + } else { void StartSinglePlayerSaveMenu(void); StartSinglePlayerSaveMenu(); } @@ -608,12 +551,10 @@ void StartCurrentQuickLoadMenu() if (_gmRunningGameMode == GM_NETWORK) { void StartNetworkQuickLoadMenu(void); StartNetworkQuickLoadMenu(); - } - else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { + } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { void StartSplitScreenQuickLoadMenu(void); StartSplitScreenQuickLoadMenu(); - } - else { + } else { void StartSinglePlayerQuickLoadMenu(void); StartSinglePlayerQuickLoadMenu(); } @@ -622,44 +563,44 @@ void StartCurrentQuickLoadMenu() void StartChangePlayerMenuFromOptions(void) { _bPlayerMenuFromSinglePlayer = FALSE; - gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; - gmPlayerProfile.gm_pgmParentMenu = &gmOptionsMenu; - ChangeToMenu(&gmPlayerProfile); + _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; + _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&_pGUIM->gmPlayerProfile); } void StartChangePlayerMenuFromSinglePlayer(void) { _iLocalPlayer = -1; _bPlayerMenuFromSinglePlayer = TRUE; - gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; - gmPlayerProfile.gm_pgmParentMenu = &gmSinglePlayerMenu; - ChangeToMenu(&gmPlayerProfile); + _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; + _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + ChangeToMenu(&_pGUIM->gmPlayerProfile); } void StartControlsMenuFromPlayer(void) { - gmControls.gm_pgmParentMenu = &gmPlayerProfile; - ChangeToMenu(&gmControls); + _pGUIM->gmControls.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; + ChangeToMenu(&_pGUIM->gmControls); } void StartControlsMenuFromOptions(void) { - gmControls.gm_pgmParentMenu = &gmOptionsMenu; - ChangeToMenu(&gmControls); + _pGUIM->gmControls.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&_pGUIM->gmControls); } void StartSelectLevelFromSingle(void) { FilterLevels(GetSpawnFlagsForGameType(-1)); _pAfterLevelChosen = StartSinglePlayerNewMenuCustom; - ChangeToMenu(&gmLevelsMenu); - gmLevelsMenu.gm_pgmParentMenu = &gmSinglePlayerMenu; + ChangeToMenu(&_pGUIM->gmLevelsMenu); + _pGUIM->gmLevelsMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; } void StartHighScoreMenu(void) { - gmHighScoreMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmHighScoreMenu); + _pGUIM->gmHighScoreMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmHighScoreMenu); } void StartSplitScreenGame(void) @@ -681,19 +622,18 @@ void StartSplitScreenGame(void) { StopMenus(); _gmRunningGameMode = GM_SPLIT_SCREEN; - } - else { + } else { _gmRunningGameMode = GM_NONE; } } void StartSelectPlayersMenuFromSplit(void) { - gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - gmSelectPlayersMenu.gm_bAllowObserving = FALSE; - gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; - gmSelectPlayersMenu.gm_pgmParentMenu = &gmSplitStartMenu; - ChangeToMenu(&gmSelectPlayersMenu); + _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = FALSE; + _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; + _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; + ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); } void StartNetworkGame(void) @@ -721,19 +661,18 @@ void StartNetworkGame(void) extern INDEX sam_bToggleConsole; sam_bToggleConsole = TRUE; } - } - else { + } else { _gmRunningGameMode = GM_NONE; } } void StartSelectPlayersMenuFromNetwork(void) { - gmSelectPlayersMenu.gm_bAllowDedicated = TRUE; - gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkGame; - gmSelectPlayersMenu.gm_pgmParentMenu = &gmNetworkStartMenu; - ChangeToMenu(&gmSelectPlayersMenu); + _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = TRUE; + _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = TRUE; + _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkGame; + _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; + ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); } void JoinNetworkGame(void) @@ -751,8 +690,7 @@ void JoinNetworkGame(void) { StopMenus(); _gmRunningGameMode = GM_NETWORK; - } - else { + } else { if (_pNetwork->ga_strRequiredMod != "") { extern CTFileName _fnmModToLoad; extern CTString _strModServerJoin; @@ -774,81 +712,80 @@ void JoinNetworkGame(void) void StartSelectPlayersMenuFromOpen(void) { - gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; - gmSelectPlayersMenu.gm_pgmParentMenu = &gmNetworkOpenMenu; - ChangeToMenu(&gmSelectPlayersMenu); + _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = TRUE; + _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; + _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; + ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); /*if (sam_strNetworkSettings=="")*/ { void StartNetworkSettingsMenu(void); StartNetworkSettingsMenu(); - gmLoadSaveMenu.gm_bNoEscape = TRUE; - gmLoadSaveMenu.gm_pgmParentMenu = &gmNetworkOpenMenu; - gmLoadSaveMenu.gm_pgmNextMenu = &gmSelectPlayersMenu; + _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; + _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &_pGUIM->gmSelectPlayersMenu; } } void StartSelectPlayersMenuFromServers(void) { - gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; - gmSelectPlayersMenu.gm_pgmParentMenu = &gmServersMenu; - ChangeToMenu(&gmSelectPlayersMenu); + _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = TRUE; + _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; + _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmServersMenu; + ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); /*if (sam_strNetworkSettings=="")*/ { void StartNetworkSettingsMenu(void); StartNetworkSettingsMenu(); - gmLoadSaveMenu.gm_bNoEscape = TRUE; - gmLoadSaveMenu.gm_pgmParentMenu = &gmServersMenu; - gmLoadSaveMenu.gm_pgmNextMenu = &gmSelectPlayersMenu; + _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmServersMenu; + _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &_pGUIM->gmSelectPlayersMenu; } } void StartSelectServerLAN(void) { - gmServersMenu.m_bInternet = FALSE; - ChangeToMenu(&gmServersMenu); - gmServersMenu.gm_pgmParentMenu = &gmNetworkJoinMenu; + _pGUIM->gmServersMenu.m_bInternet = FALSE; + ChangeToMenu(&_pGUIM->gmServersMenu); + _pGUIM->gmServersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; } void StartSelectServerNET(void) { - gmServersMenu.m_bInternet = TRUE; - ChangeToMenu(&gmServersMenu); - gmServersMenu.gm_pgmParentMenu = &gmNetworkJoinMenu; + _pGUIM->gmServersMenu.m_bInternet = TRUE; + ChangeToMenu(&_pGUIM->gmServersMenu); + _pGUIM->gmServersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; } void StartSelectLevelFromSplit(void) { - FilterLevels(GetSpawnFlagsForGameType(gmSplitStartMenu.gm_mgGameType.mg_iSelected)); + FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmSplitStartMenu.gm_mgGameType.mg_iSelected)); void StartSplitStartMenu(void); _pAfterLevelChosen = StartSplitStartMenu; - ChangeToMenu(&gmLevelsMenu); - gmLevelsMenu.gm_pgmParentMenu = &gmSplitStartMenu; + ChangeToMenu(&_pGUIM->gmLevelsMenu); + _pGUIM->gmLevelsMenu.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; } void StartSelectLevelFromNetwork(void) { - FilterLevels(GetSpawnFlagsForGameType(gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); + FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); void StartNetworkStartMenu(void); _pAfterLevelChosen = StartNetworkStartMenu; - ChangeToMenu(&gmLevelsMenu); - gmLevelsMenu.gm_pgmParentMenu = &gmNetworkStartMenu; + ChangeToMenu(&_pGUIM->gmLevelsMenu); + _pGUIM->gmLevelsMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; } void StartSelectPlayersMenuFromSplitScreen(void) { - gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - gmSelectPlayersMenu.gm_bAllowObserving = FALSE; + _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = FALSE; // gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; - gmSelectPlayersMenu.gm_pgmParentMenu = &gmSplitScreenMenu; - ChangeToMenu(&gmSelectPlayersMenu); + _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmSplitScreenMenu; + ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); } void StartNetworkLoadGame(void) { - // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; @@ -862,19 +799,18 @@ void StartNetworkLoadGame(void) { StopMenus(); _gmRunningGameMode = GM_NETWORK; - } - else { + } else { _gmRunningGameMode = GM_NONE; } } void StartSelectPlayersMenuFromNetworkLoad(void) { - gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkLoadGame; - gmSelectPlayersMenu.gm_pgmParentMenu = &gmLoadSaveMenu; - ChangeToMenu(&gmSelectPlayersMenu); + _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = TRUE; + _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkLoadGame; + _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); } void StartSplitScreenGameLoad(void) @@ -898,127 +834,126 @@ void StartSplitScreenGameLoad(void) void StartSelectPlayersMenuFromSplitScreenLoad(void) { - gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - gmSelectPlayersMenu.gm_bAllowObserving = FALSE; - gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGameLoad; - gmSelectPlayersMenu.gm_pgmParentMenu = &gmLoadSaveMenu; - ChangeToMenu(&gmSelectPlayersMenu); + _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = FALSE; + _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGameLoad; + _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); } // save/load menu calling functions void StartPlayerModelLoadMenu(void) { - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CHOOSE MODEL"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = FALSE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Models\\Player\\"); - gmLoadSaveMenu.gm_fnmSelected = _strLastPlayerAppearance; - gmLoadSaveMenu.gm_fnmExt = CTString(".amc"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadPlayerModel; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CHOOSE MODEL"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; + _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; + _pGUIM->gmLoadSaveMenu.gm_bManage = FALSE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Models\\Player\\"); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = _strLastPlayerAppearance; + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".amc"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadPlayerModel; + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_pgmParentMenu = &gmPlayerProfile; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartControlsLoadMenu(void) { - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD CONTROLS"); - gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = FALSE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Controls\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".ctl"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadControls; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD CONTROLS"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; + _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; + _pGUIM->gmLoadSaveMenu.gm_bManage = FALSE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Controls\\"); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".ctl"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadControls; + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_pgmParentMenu = &gmControls; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmControls; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartCustomLoadMenu(void) { - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); - gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; - gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = FALSE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Scripts\\CustomOptions\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".cfg"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadCustom; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; + _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; + _pGUIM->gmLoadSaveMenu.gm_bManage = FALSE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Scripts\\CustomOptions\\"); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".cfg"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadCustom; + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_pgmParentMenu = &gmOptionsMenu; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartAddonsLoadMenu(void) { - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("EXECUTE ADDON"); - gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; - gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = FALSE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Scripts\\Addons\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".ini"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadAddon; - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("EXECUTE ADDON"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; + _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; + _pGUIM->gmLoadSaveMenu.gm_bManage = FALSE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Scripts\\Addons\\"); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".ini"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadAddon; + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - gmLoadSaveMenu.gm_pgmParentMenu = &gmOptionsMenu; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartModsLoadMenu(void) { - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CHOOSE MOD"); - gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = FALSE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Mods\\"); - gmLoadSaveMenu.gm_fnmSelected = CTString(""); - gmLoadSaveMenu.gm_fnmExt = CTString(".des"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadMod; + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CHOOSE MOD"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; + _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; + _pGUIM->gmLoadSaveMenu.gm_bManage = FALSE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Mods\\"); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".des"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadMod; - gmLoadSaveMenu.gm_pgmParentMenu = &gmMainMenu; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartNetworkSettingsMenu(void) { - gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CONNECTION SETTINGS"); - gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; - gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; - gmLoadSaveMenu.gm_bSave = FALSE; - gmLoadSaveMenu.gm_bManage = FALSE; - gmLoadSaveMenu.gm_fnmDirectory = CTString("Scripts\\NetSettings\\"); - gmLoadSaveMenu.gm_fnmSelected = sam_strNetworkSettings; - gmLoadSaveMenu.gm_fnmExt = CTString(".ini"); - gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetSettings; + _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CONNECTION SETTINGS"); + _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; + _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; + _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; + _pGUIM->gmLoadSaveMenu.gm_bManage = FALSE; + _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Scripts\\NetSettings\\"); + _pGUIM->gmLoadSaveMenu.gm_fnmSelected = sam_strNetworkSettings; + _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".ini"); + _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetSettings; if (sam_strNetworkSettings == "") { - gmLoadSaveMenu.gm_mgNotes.mg_strText = TRANS( + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = TRANS( "Before joining a network game,\n" "you have to adjust your connection parameters.\n" "Choose one option from the list.\n" "If you have problems with connection, you can adjust\n" "these parameters again from the Options menu.\n" ); - } - else { - gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + } else { + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; } - gmLoadSaveMenu.gm_pgmParentMenu = &gmOptionsMenu; - ChangeToMenu(&gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&_pGUIM->gmLoadSaveMenu); } void StartSinglePlayerMenu(void) { - ChangeToMenu(&gmSinglePlayerMenu); + ChangeToMenu(&_pGUIM->gmSinglePlayerMenu); } \ No newline at end of file diff --git a/Sources/SeriousSam/SeriousSam.cpp b/Sources/SeriousSam/SeriousSam.cpp index 2211f75..6e47fc2 100644 --- a/Sources/SeriousSam/SeriousSam.cpp +++ b/Sources/SeriousSam/SeriousSam.cpp @@ -102,7 +102,7 @@ extern CTString sam_strModName = TRANS("- O P E N S O U R C E -"); #if _SE_DEMO extern CTString sam_strFirstLevel = "Levels\\KarnakDemo.wld"; #else - extern CTString sam_strFirstLevel = "Levels\\LevelsMP\\1_0_InTheLastEpisode.wld.wld"; + extern CTString sam_strFirstLevel = "Levels\\LevelsMP\\1_0_InTheLastEpisode.wld"; #endif extern CTString sam_strIntroLevel = "Levels\\LevelsMP\\Intro.wld"; extern CTString sam_strGameName = "serioussamse"; diff --git a/Sources/SeriousSam/SeriousSam.vcxproj b/Sources/SeriousSam/SeriousSam.vcxproj index 393bb7a..7acbeac 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj +++ b/Sources/SeriousSam/SeriousSam.vcxproj @@ -202,6 +202,7 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + @@ -251,6 +252,7 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + diff --git a/Sources/SeriousSam/SeriousSam.vcxproj.filters b/Sources/SeriousSam/SeriousSam.vcxproj.filters index e2fb6dc..e56f422 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj.filters +++ b/Sources/SeriousSam/SeriousSam.vcxproj.filters @@ -207,6 +207,9 @@ Source Files\GUI\Menus + + Source Files\GUI\Menus + @@ -392,6 +395,9 @@ Header Files\GUI headers\Menus headers + + Header Files\GUI headers\Menus headers + From de240b4ad7e88b9f19aa8f35eeb3cd6c928873e3 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Wed, 30 Mar 2016 22:25:24 +0300 Subject: [PATCH 25/34] GameExecutable: Continue refactoring. Rename some files. --- Sources/SeriousSam/GUI/Menus/Menu.cpp | 39 +- .../{Menu_actions.cpp => MenuActions.cpp} | 2 +- Sources/SeriousSam/GUI/Menus/MenuActions.h | 31 + Sources/SeriousSam/GUI/Menus/MenuStarters.cpp | 779 ++++++++++++++ .../Menus/{Menu_starters.h => MenuStarters.h} | 0 .../SeriousSam/GUI/Menus/MenuStartersAF.cpp | 219 ++++ Sources/SeriousSam/GUI/Menus/MenuStartersAF.h | 26 + .../SeriousSam/GUI/Menus/Menu_starters.cpp | 959 ------------------ Sources/SeriousSam/SeriousSam.vcxproj | 9 +- Sources/SeriousSam/SeriousSam.vcxproj.filters | 25 +- 10 files changed, 1082 insertions(+), 1007 deletions(-) rename Sources/SeriousSam/GUI/Menus/{Menu_actions.cpp => MenuActions.cpp} (99%) create mode 100644 Sources/SeriousSam/GUI/Menus/MenuActions.h create mode 100644 Sources/SeriousSam/GUI/Menus/MenuStarters.cpp rename Sources/SeriousSam/GUI/Menus/{Menu_starters.h => MenuStarters.h} (100%) create mode 100644 Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp create mode 100644 Sources/SeriousSam/GUI/Menus/MenuStartersAF.h delete mode 100644 Sources/SeriousSam/GUI/Menus/Menu_starters.cpp diff --git a/Sources/SeriousSam/GUI/Menus/Menu.cpp b/Sources/SeriousSam/GUI/Menus/Menu.cpp index 4cb5c9b..9cbd6d1 100644 --- a/Sources/SeriousSam/GUI/Menus/Menu.cpp +++ b/Sources/SeriousSam/GUI/Menus/Menu.cpp @@ -15,23 +15,9 @@ #include "FileInfo.h" #include "MenuManager.h" -#include "GUI/Components/MGArrow.h" -#include "GUI/Components/MGButton.h" -#include "GUI/Components/MGChangePlayer.h" -#include "GUI/Components/MGEdit.h" -#include "GUI/Components/MGFileButton.h" -#include "GUI/Components/MGHighScore.h" -#include "GUI/Components/MGKeyDefinition.h" -#include "GUI/Components/MGLevelButton.h" -#include "GUI/Components/MGModel.h" -#include "GUI/Components/MGServerList.h" -#include "GUI/Components/MGSlider.h" -#include "GUI/Components/MGTitle.h" -#include "GUI/Components/MGTrigger.h" -#include "GUI/Components/MGVarButton.h" - +#include "MenuActions.h" #include "MenuStuff.h" -#include "Menu_starters.h" +#include "MenuStarters.h" // macros for translating radio button text arrays #define TRANSLATERADIOARRAY(array) TranslateRadioTexts(array, ARRAYCOUNT(array)) @@ -68,26 +54,7 @@ extern CTString sam_strNetworkSettings; void (*_pAfterLevelChosen)(void); // functions for init actions -void InitActionsForAudioOptionsMenu(); -void InitActionsForConfirmMenu(); -void InitActionsForControlsMenu(); -void InitActionsForCustomizeAxisMenu(); -void InitActionsForMainMenu(); -void InitActionsForInGameMenu(); -void InitActionsForNetworkMenu(); -void InitActionsForNetworkJoinMenu(); -void InitActionsForNetworkOpenMenu(); -void InitActionsForNetworkStartMenu(); -void InitActionsForOptionsMenu(); -void InitActionsForPlayerProfileMenu(); -void InitActionsForSelectPlayersMenu(); -void InitActionsForServersMenu(); -void InitActionsForSinglePlayerMenu(); -void InitActionsForSinglePlayerNewMenu(); -void InitActionsForSplitScreenMenu(); -void InitActionsForSplitStartMenu(); -void InitActionsForVideoOptionsMenu(); -void InitActionsForVarMenu(); + void FixupBackButton(CGameMenu *pgm); diff --git a/Sources/SeriousSam/GUI/Menus/Menu_actions.cpp b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp similarity index 99% rename from Sources/SeriousSam/GUI/Menus/Menu_actions.cpp rename to Sources/SeriousSam/GUI/Menus/MenuActions.cpp index e5a12fd..7308fad 100644 --- a/Sources/SeriousSam/GUI/Menus/Menu_actions.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp @@ -4,7 +4,7 @@ #include #include "MenuManager.h" -#include "Menu_starters.h" +#include "MenuStarters.h" #include "MenuStuff.h" #include "GUI/Components/MenuGadget.h" #include "LevelInfo.h" diff --git a/Sources/SeriousSam/GUI/Menus/MenuActions.h b/Sources/SeriousSam/GUI/Menus/MenuActions.h new file mode 100644 index 0000000..d9cd253 --- /dev/null +++ b/Sources/SeriousSam/GUI/Menus/MenuActions.h @@ -0,0 +1,31 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_ACTIONS_H +#define SE_INCL_MENU_ACTIONS_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + + +void InitActionsForAudioOptionsMenu(); +void InitActionsForConfirmMenu(); +void InitActionsForControlsMenu(); +void InitActionsForCustomizeAxisMenu(); +void InitActionsForMainMenu(); +void InitActionsForInGameMenu(); +void InitActionsForNetworkMenu(); +void InitActionsForNetworkJoinMenu(); +void InitActionsForNetworkOpenMenu(); +void InitActionsForNetworkStartMenu(); +void InitActionsForOptionsMenu(); +void InitActionsForPlayerProfileMenu(); +void InitActionsForSelectPlayersMenu(); +void InitActionsForServersMenu(); +void InitActionsForSinglePlayerMenu(); +void InitActionsForSinglePlayerNewMenu(); +void InitActionsForSplitScreenMenu(); +void InitActionsForSplitStartMenu(); +void InitActionsForVideoOptionsMenu(); +void InitActionsForVarMenu(); + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp b/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp new file mode 100644 index 0000000..8421d38 --- /dev/null +++ b/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp @@ -0,0 +1,779 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +/* This file contains starter fuctions for all menus. */ + +#include "StdH.h" +#include + +#include "MenuManager.h" +#include "MenuStarters.h" +#include "MenuStartersAF.h" +#include "MenuStuff.h" +#include "LevelInfo.h" + +extern void(*_pAfterLevelChosen)(void); +extern BOOL _bPlayerMenuFromSinglePlayer; + +extern CTString _strLastPlayerAppearance; +extern CTString sam_strNetworkSettings; + +extern CTFileName _fnmModSelected; +extern CTString _strModURLSelected; +extern CTString _strModServerSelected; + +void StartVideoOptionsMenu(void) +{ + ChangeToMenu(&_pGUIM->gmVideoOptionsMenu); +} + +void StartAudioOptionsMenu(void) +{ + ChangeToMenu(&_pGUIM->gmAudioOptionsMenu); +} + +void StartSinglePlayerMenu(void) +{ + ChangeToMenu(&_pGUIM->gmSinglePlayerMenu); +} + +void StartNetworkMenu(void) +{ + ChangeToMenu(&_pGUIM->gmNetworkMenu); +} + +void StartNetworkJoinMenu(void) +{ + ChangeToMenu(&_pGUIM->gmNetworkJoinMenu); +} + +void StartNetworkStartMenu(void) +{ + ChangeToMenu(&_pGUIM->gmNetworkStartMenu); +} + +void StartNetworkOpenMenu(void) +{ + ChangeToMenu(&_pGUIM->gmNetworkOpenMenu); +} + +void StartSplitScreenMenu(void) +{ + ChangeToMenu(&_pGUIM->gmSplitScreenMenu); +} + +void StartSplitStartMenu(void) +{ + ChangeToMenu(&_pGUIM->gmSplitStartMenu); +} + +void StartSinglePlayerNewMenuCustom(void) +{ + _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmLevelsMenu; + ChangeToMenu(&_pGUIM->gmSinglePlayerNewMenu); +} + +static void SetQuickLoadNotes(void) +{ + if (_pShell->GetINDEX("gam_iQuickSaveSlots") <= 8) { + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = TRANS( + "In-game QuickSave shortcuts:\n" + "F6 - save a new QuickSave\n" + "F9 - load the last QuickSave\n"); + } else { + _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + } +} + +void StartSinglePlayerNewMenu(void) +{ + _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + extern CTString sam_strFirstLevel; + _pGame->gam_strCustomLevel = sam_strFirstLevel; + ChangeToMenu(&_pGUIM->gmSinglePlayerNewMenu); +} + +#define CMENU _pGUIM->gmLoadSaveMenu + +void StartSinglePlayerQuickLoadMenu(void) +{ + _gmMenuGameMode = GM_SINGLE_PLAYER; + + CMENU.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); + CMENU.gm_bAllowThumbnails = TRUE; + CMENU.gm_iSortType = LSSORT_FILEDN; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = TRUE; + CMENU.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\Quick\\", _pGame->gm_iSinglePlayer); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmExt = CTString(".sav"); + CMENU.gm_pAfterFileChosen = &LSLoadSinglePlayer; + SetQuickLoadNotes(); + + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&CMENU); +} + +void StartSinglePlayerLoadMenu(void) +{ + _gmMenuGameMode = GM_SINGLE_PLAYER; + + CMENU.gm_mgTitle.mg_strText = TRANS("LOAD"); + CMENU.gm_bAllowThumbnails = TRUE; + CMENU.gm_iSortType = LSSORT_FILEDN; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = TRUE; + CMENU.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmExt = CTString(".sav"); + CMENU.gm_pAfterFileChosen = &LSLoadSinglePlayer; + CMENU.gm_mgNotes.mg_strText = ""; + + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&CMENU); +} + +void StartSinglePlayerSaveMenu(void) +{ + if (_gmRunningGameMode != GM_SINGLE_PLAYER) return; + // if no live players + if (_pGame->GetPlayersCount()>0 && _pGame->GetLivePlayersCount() <= 0) { + // do nothing + return; + } + _gmMenuGameMode = GM_SINGLE_PLAYER; + CMENU.gm_mgTitle.mg_strText = TRANS("SAVE"); + CMENU.gm_bAllowThumbnails = TRUE; + CMENU.gm_iSortType = LSSORT_FILEDN; + CMENU.gm_bSave = TRUE; + CMENU.gm_bManage = TRUE; + CMENU.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmBaseName = CTString("SaveGame"); + CMENU.gm_fnmExt = CTString(".sav"); + CMENU.gm_pAfterFileChosen = &LSSaveAnyGame; + CMENU.gm_mgNotes.mg_strText = ""; + CMENU.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); + + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&CMENU); +} + +void StartDemoLoadMenu(void) +{ + _gmMenuGameMode = GM_DEMO; + + CMENU.gm_mgTitle.mg_strText = TRANS("PLAY DEMO"); + CMENU.gm_bAllowThumbnails = TRUE; + CMENU.gm_iSortType = LSSORT_FILEDN; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = TRUE; + CMENU.gm_fnmDirectory = CTString("Demos\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmExt = CTString(".dem"); + CMENU.gm_pAfterFileChosen = &LSLoadDemo; + CMENU.gm_mgNotes.mg_strText = ""; + + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&CMENU); +} + +void StartDemoSaveMenu(void) +{ + if (_gmRunningGameMode == GM_NONE) return; + _gmMenuGameMode = GM_DEMO; + + CMENU.gm_mgTitle.mg_strText = TRANS("RECORD DEMO"); + CMENU.gm_bAllowThumbnails = TRUE; + CMENU.gm_iSortType = LSSORT_FILEUP; + CMENU.gm_bSave = TRUE; + CMENU.gm_bManage = TRUE; + CMENU.gm_fnmDirectory = CTString("Demos\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmBaseName = CTString("Demo"); + CMENU.gm_fnmExt = CTString(".dem"); + CMENU.gm_pAfterFileChosen = &LSSaveDemo; + CMENU.gm_mgNotes.mg_strText = ""; + CMENU.gm_strSaveDes = _pGame->GetDefaultGameDescription(FALSE); + + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&CMENU); +} + +void StartNetworkQuickLoadMenu(void) +{ + _gmMenuGameMode = GM_NETWORK; + + CMENU.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); + CMENU.gm_bAllowThumbnails = TRUE; + CMENU.gm_iSortType = LSSORT_FILEDN; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = TRUE; + CMENU.gm_fnmDirectory = CTString("SaveGame\\Network\\Quick\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmExt = CTString(".sav"); + CMENU.gm_pAfterFileChosen = &LSLoadNetwork; + SetQuickLoadNotes(); + + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&CMENU); +} + +void StartNetworkLoadMenu(void) +{ + _gmMenuGameMode = GM_NETWORK; + + CMENU.gm_mgTitle.mg_strText = TRANS("LOAD"); + CMENU.gm_bAllowThumbnails = TRUE; + CMENU.gm_iSortType = LSSORT_FILEDN; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = TRUE; + CMENU.gm_fnmDirectory = CTString("SaveGame\\Network\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmExt = CTString(".sav"); + CMENU.gm_pAfterFileChosen = &LSLoadNetwork; + CMENU.gm_mgNotes.mg_strText = ""; + + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&CMENU); +} + +void StartNetworkSaveMenu(void) +{ + if (_gmRunningGameMode != GM_NETWORK) return; + _gmMenuGameMode = GM_NETWORK; + + CMENU.gm_mgTitle.mg_strText = TRANS("SAVE"); + CMENU.gm_bAllowThumbnails = TRUE; + CMENU.gm_iSortType = LSSORT_FILEDN; + CMENU.gm_bSave = TRUE; + CMENU.gm_bManage = TRUE; + CMENU.gm_fnmDirectory = CTString("SaveGame\\Network\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmBaseName = CTString("SaveGame"); + CMENU.gm_fnmExt = CTString(".sav"); + CMENU.gm_pAfterFileChosen = &LSSaveAnyGame; + CMENU.gm_mgNotes.mg_strText = ""; + CMENU.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); + + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&CMENU); +} + +void StartSplitScreenQuickLoadMenu(void) +{ + _gmMenuGameMode = GM_SPLIT_SCREEN; + + CMENU.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); + CMENU.gm_bAllowThumbnails = TRUE; + CMENU.gm_iSortType = LSSORT_FILEDN; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = TRUE; + CMENU.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\Quick\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmExt = CTString(".sav"); + CMENU.gm_pAfterFileChosen = &LSLoadSplitScreen; + SetQuickLoadNotes(); + + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&CMENU); +} + +void StartSplitScreenLoadMenu(void) +{ + _gmMenuGameMode = GM_SPLIT_SCREEN; + + CMENU.gm_mgTitle.mg_strText = TRANS("LOAD"); + CMENU.gm_bAllowThumbnails = TRUE; + CMENU.gm_iSortType = LSSORT_FILEDN; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = TRUE; + CMENU.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmExt = CTString(".sav"); + CMENU.gm_pAfterFileChosen = &LSLoadSplitScreen; + CMENU.gm_mgNotes.mg_strText = ""; + + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&CMENU); +} + +void StartSplitScreenSaveMenu(void) +{ + if (_gmRunningGameMode != GM_SPLIT_SCREEN) return; + _gmMenuGameMode = GM_SPLIT_SCREEN; + + CMENU.gm_mgTitle.mg_strText = TRANS("SAVE"); + CMENU.gm_bAllowThumbnails = TRUE; + CMENU.gm_iSortType = LSSORT_FILEDN; + CMENU.gm_bSave = TRUE; + CMENU.gm_bManage = TRUE; + CMENU.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmBaseName = CTString("SaveGame"); + CMENU.gm_fnmExt = CTString(".sav"); + CMENU.gm_pAfterFileChosen = &LSSaveAnyGame; + CMENU.gm_mgNotes.mg_strText = ""; + CMENU.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); + + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&CMENU); +} + +#undef CMENU + +// game options var settings +void StartVarGameOptions(void) +{ + _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); + _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\GameOptions.cfg"); + ChangeToMenu(&_pGUIM->gmVarMenu); +} + +void StartSinglePlayerGameOptions(void) +{ + _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); + _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\SPOptions.cfg"); + ChangeToMenu(&_pGUIM->gmVarMenu); + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; +} + +void StartGameOptionsFromNetwork(void) +{ + StartVarGameOptions(); + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; +} + +void StartGameOptionsFromSplitScreen(void) +{ + StartVarGameOptions(); + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; +} + +// rendering options var settings +void StartRenderingOptionsMenu(void) +{ + _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("RENDERING OPTIONS"); + _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\RenderingOptions.cfg"); + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmVideoOptionsMenu; + ChangeToMenu(&_pGUIM->gmVarMenu); +} + +void StartCustomizeKeyboardMenu(void) +{ + ChangeToMenu(&_pGUIM->gmCustomizeKeyboardMenu); +} + +void StartCustomizeAxisMenu(void) +{ + ChangeToMenu(&_pGUIM->gmCustomizeAxisMenu); +} + +void StartOptionsMenu(void) +{ + _pGUIM->gmOptionsMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmOptionsMenu); +} + +void StartCurrentLoadMenu() +{ + if (_gmRunningGameMode == GM_NETWORK) { + void StartNetworkLoadMenu(void); + StartNetworkLoadMenu(); + } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { + void StartSplitScreenLoadMenu(void); + StartSplitScreenLoadMenu(); + } else { + void StartSinglePlayerLoadMenu(void); + StartSinglePlayerLoadMenu(); + } +} + +void StartCurrentSaveMenu() +{ + if (_gmRunningGameMode == GM_NETWORK) { + void StartNetworkSaveMenu(void); + StartNetworkSaveMenu(); + } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { + void StartSplitScreenSaveMenu(void); + StartSplitScreenSaveMenu(); + } else { + void StartSinglePlayerSaveMenu(void); + StartSinglePlayerSaveMenu(); + } +} + +void StartCurrentQuickLoadMenu() +{ + if (_gmRunningGameMode == GM_NETWORK) { + void StartNetworkQuickLoadMenu(void); + StartNetworkQuickLoadMenu(); + } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { + void StartSplitScreenQuickLoadMenu(void); + StartSplitScreenQuickLoadMenu(); + } else { + void StartSinglePlayerQuickLoadMenu(void); + StartSinglePlayerQuickLoadMenu(); + } +} + +void StartChangePlayerMenuFromOptions(void) +{ + _bPlayerMenuFromSinglePlayer = FALSE; + _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; + _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&_pGUIM->gmPlayerProfile); +} + +void StartChangePlayerMenuFromSinglePlayer(void) +{ + _iLocalPlayer = -1; + _bPlayerMenuFromSinglePlayer = TRUE; + _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; + _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + ChangeToMenu(&_pGUIM->gmPlayerProfile); +} + +void StartControlsMenuFromPlayer(void) +{ + _pGUIM->gmControls.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; + ChangeToMenu(&_pGUIM->gmControls); +} + +void StartControlsMenuFromOptions(void) +{ + _pGUIM->gmControls.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&_pGUIM->gmControls); +} + +void StartSelectLevelFromSingle(void) +{ + FilterLevels(GetSpawnFlagsForGameType(-1)); + _pAfterLevelChosen = StartSinglePlayerNewMenuCustom; + ChangeToMenu(&_pGUIM->gmLevelsMenu); + _pGUIM->gmLevelsMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; +} + +void StartHighScoreMenu(void) +{ + _pGUIM->gmHighScoreMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmHighScoreMenu); +} + +void StartSplitScreenGame(void) +{ + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + + CTFileName fnWorld = _pGame->gam_strCustomLevel; + + _pGame->gm_strNetworkProvider = "Local"; + CUniversalSessionProperties sp; + _pGame->SetMultiPlayerSession(sp); + if (_pGame->NewGame(fnWorld.FileName(), fnWorld, sp)) + { + StopMenus(); + _gmRunningGameMode = GM_SPLIT_SCREEN; + } else { + _gmRunningGameMode = GM_NONE; + } +} + +void StartSelectPlayersMenuFromSplit(void) +{ + _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = FALSE; + _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; + _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; + ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); +} + +void StartNetworkGame(void) +{ + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + + CTFileName fnWorld = _pGame->gam_strCustomLevel; + + _pGame->gm_strNetworkProvider = "TCP/IP Server"; + CUniversalSessionProperties sp; + _pGame->SetMultiPlayerSession(sp); + if (_pGame->NewGame(_pGame->gam_strSessionName, fnWorld, sp)) + { + StopMenus(); + _gmRunningGameMode = GM_NETWORK; + // if starting a dedicated server + if (_pGame->gm_MenuSplitScreenCfg == CGame::SSC_DEDICATED) { + // pull down the console + extern INDEX sam_bToggleConsole; + sam_bToggleConsole = TRUE; + } + } else { + _gmRunningGameMode = GM_NONE; + } +} + +void StartSelectPlayersMenuFromNetwork(void) +{ + _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = TRUE; + _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = TRUE; + _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkGame; + _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; + ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); +} + +void JoinNetworkGame(void) +{ + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + + _pGame->gm_strNetworkProvider = "TCP/IP Client"; + if (_pGame->JoinGame(CNetworkSession(_pGame->gam_strJoinAddress))) + { + StopMenus(); + _gmRunningGameMode = GM_NETWORK; + } else { + if (_pNetwork->ga_strRequiredMod != "") { + extern CTFileName _fnmModToLoad; + extern CTString _strModServerJoin; + char strModName[256] = { 0 }; + char strModURL[256] = { 0 }; + _pNetwork->ga_strRequiredMod.ScanF("%250[^\\]\\%s", &strModName, &strModURL); + _fnmModSelected = CTString(strModName); + _strModURLSelected = strModURL; + if (_strModURLSelected = "") { + _strModURLSelected = "http://www.croteam.com/mods/Old"; + } + _strModServerSelected.PrintF("%s:%s", _pGame->gam_strJoinAddress, _pShell->GetValue("net_iPort")); + extern void ModConnectConfirm(void); + ModConnectConfirm(); + } + _gmRunningGameMode = GM_NONE; + } +} + +void StartSelectPlayersMenuFromOpen(void) +{ + _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = TRUE; + _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; + _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; + ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); + + /*if (sam_strNetworkSettings=="")*/ { + void StartNetworkSettingsMenu(void); + StartNetworkSettingsMenu(); + _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; + _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &_pGUIM->gmSelectPlayersMenu; + } +} +void StartSelectPlayersMenuFromServers(void) +{ + _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = TRUE; + _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; + _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmServersMenu; + ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); + + /*if (sam_strNetworkSettings=="")*/ { + void StartNetworkSettingsMenu(void); + StartNetworkSettingsMenu(); + _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmServersMenu; + _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &_pGUIM->gmSelectPlayersMenu; + } +} + +void StartSelectServerLAN(void) +{ + _pGUIM->gmServersMenu.m_bInternet = FALSE; + ChangeToMenu(&_pGUIM->gmServersMenu); + _pGUIM->gmServersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; +} + +void StartSelectServerNET(void) +{ + _pGUIM->gmServersMenu.m_bInternet = TRUE; + ChangeToMenu(&_pGUIM->gmServersMenu); + _pGUIM->gmServersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; +} + +void StartSelectLevelFromSplit(void) +{ + FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmSplitStartMenu.gm_mgGameType.mg_iSelected)); + void StartSplitStartMenu(void); + _pAfterLevelChosen = StartSplitStartMenu; + ChangeToMenu(&_pGUIM->gmLevelsMenu); + _pGUIM->gmLevelsMenu.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; +} + +void StartSelectLevelFromNetwork(void) +{ + FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); + void StartNetworkStartMenu(void); + _pAfterLevelChosen = StartNetworkStartMenu; + ChangeToMenu(&_pGUIM->gmLevelsMenu); + _pGUIM->gmLevelsMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; +} + +#define CMENU _pGUIM->gmSelectPlayersMenu + +void StartSelectPlayersMenuFromSplitScreen(void) +{ + CMENU.gm_bAllowDedicated = FALSE; + CMENU.gm_bAllowObserving = FALSE; + //CMENU.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; + CMENU.gm_pgmParentMenu = &_pGUIM->gmSplitScreenMenu; + ChangeToMenu(&CMENU); +} + +void StartSelectPlayersMenuFromNetworkLoad(void) +{ + CMENU.gm_bAllowDedicated = FALSE; + CMENU.gm_bAllowObserving = TRUE; + CMENU.gm_mgStart.mg_pActivatedFunction = &StartNetworkLoadGame; + CMENU.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + ChangeToMenu(&CMENU); +} + +void StartSelectPlayersMenuFromSplitScreenLoad(void) +{ + CMENU.gm_bAllowDedicated = FALSE; + CMENU.gm_bAllowObserving = FALSE; + CMENU.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGameLoad; + CMENU.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + ChangeToMenu(&CMENU); +} + +#undef CMENU + +// save/load menu calling functions +#define CMENU _pGUIM->gmLoadSaveMenu + +void StartPlayerModelLoadMenu(void) +{ + CMENU.gm_mgTitle.mg_strText = TRANS("CHOOSE MODEL"); + CMENU.gm_bAllowThumbnails = TRUE; + CMENU.gm_iSortType = LSSORT_FILEUP; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = FALSE; + CMENU.gm_fnmDirectory = CTString("Models\\Player\\"); + CMENU.gm_fnmSelected = _strLastPlayerAppearance; + CMENU.gm_fnmExt = CTString(".amc"); + CMENU.gm_pAfterFileChosen = &LSLoadPlayerModel; + CMENU.gm_mgNotes.mg_strText = ""; + + CMENU.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; + ChangeToMenu(&CMENU); +} + +void StartControlsLoadMenu(void) +{ + CMENU.gm_mgTitle.mg_strText = TRANS("LOAD CONTROLS"); + CMENU.gm_bAllowThumbnails = FALSE; + CMENU.gm_iSortType = LSSORT_FILEUP; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = FALSE; + CMENU.gm_fnmDirectory = CTString("Controls\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmExt = CTString(".ctl"); + CMENU.gm_pAfterFileChosen = &LSLoadControls; + CMENU.gm_mgNotes.mg_strText = ""; + + CMENU.gm_pgmParentMenu = &_pGUIM->gmControls; + ChangeToMenu(&CMENU); +} + +void StartCustomLoadMenu(void) +{ + CMENU.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); + CMENU.gm_bAllowThumbnails = FALSE; + CMENU.gm_iSortType = LSSORT_NAMEUP; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = FALSE; + CMENU.gm_fnmDirectory = CTString("Scripts\\CustomOptions\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmExt = CTString(".cfg"); + CMENU.gm_pAfterFileChosen = &LSLoadCustom; + CMENU.gm_mgNotes.mg_strText = ""; + + CMENU.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&CMENU); +} + +void StartAddonsLoadMenu(void) +{ + CMENU.gm_mgTitle.mg_strText = TRANS("EXECUTE ADDON"); + CMENU.gm_bAllowThumbnails = FALSE; + CMENU.gm_iSortType = LSSORT_NAMEUP; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = FALSE; + CMENU.gm_fnmDirectory = CTString("Scripts\\Addons\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmExt = CTString(".ini"); + CMENU.gm_pAfterFileChosen = &LSLoadAddon; + CMENU.gm_mgNotes.mg_strText = ""; + + CMENU.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&CMENU); +} + +void StartModsLoadMenu(void) +{ + CMENU.gm_mgTitle.mg_strText = TRANS("CHOOSE MOD"); + CMENU.gm_bAllowThumbnails = TRUE; + CMENU.gm_iSortType = LSSORT_NAMEUP; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = FALSE; + CMENU.gm_fnmDirectory = CTString("Mods\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmExt = CTString(".des"); + CMENU.gm_pAfterFileChosen = &LSLoadMod; + + CMENU.gm_pgmParentMenu = &_pGUIM->gmMainMenu; + ChangeToMenu(&CMENU); +} + +void StartNetworkSettingsMenu(void) +{ + CMENU.gm_mgTitle.mg_strText = TRANS("CONNECTION SETTINGS"); + CMENU.gm_bAllowThumbnails = FALSE; + CMENU.gm_iSortType = LSSORT_FILEUP; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = FALSE; + CMENU.gm_fnmDirectory = CTString("Scripts\\NetSettings\\"); + CMENU.gm_fnmSelected = sam_strNetworkSettings; + CMENU.gm_fnmExt = CTString(".ini"); + CMENU.gm_pAfterFileChosen = &LSLoadNetSettings; + if (sam_strNetworkSettings == "") { + CMENU.gm_mgNotes.mg_strText = TRANS( + "Before joining a network game,\n" + "you have to adjust your connection parameters.\n" + "Choose one option from the list.\n" + "If you have problems with connection, you can adjust\n" + "these parameters again from the Options menu.\n" + ); + } else { + CMENU.gm_mgNotes.mg_strText = ""; + } + + CMENU.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&CMENU); +} + +#undef CMENU \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/Menu_starters.h b/Sources/SeriousSam/GUI/Menus/MenuStarters.h similarity index 100% rename from Sources/SeriousSam/GUI/Menus/Menu_starters.h rename to Sources/SeriousSam/GUI/Menus/MenuStarters.h diff --git a/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp b/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp new file mode 100644 index 0000000..d6f7d37 --- /dev/null +++ b/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp @@ -0,0 +1,219 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +/* This file contains additional functions called from starters. */ + +#include "StdH.h" +#include + +#include "MenuManager.h" +#include "MenuStartersAF.h" +#include "MenuStarters.h" + +CTFileName _fnDemoToPlay; +CTFileName _fnGameToLoad; + +extern CTString sam_strNetworkSettings; + +extern CTFileName _fnmModSelected; +extern CTString _strModURLSelected; +extern CTString _strModServerSelected; + + +BOOL LSLoadSinglePlayer(const CTFileName &fnm) +{ + _pGame->gm_StartSplitScreenCfg = CGame::SSC_PLAY1; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_iSinglePlayer; + _pGame->gm_aiStartLocalPlayers[1] = -1; + _pGame->gm_aiStartLocalPlayers[2] = -1; + _pGame->gm_aiStartLocalPlayers[3] = -1; + _pGame->gm_strNetworkProvider = "Local"; + if (_pGame->LoadGame(fnm)) { + StopMenus(); + _gmRunningGameMode = GM_SINGLE_PLAYER; + } + else { + _gmRunningGameMode = GM_NONE; + } + return TRUE; +} + +BOOL LSLoadNetwork(const CTFileName &fnm) +{ + // call local players menu + _fnGameToLoad = fnm; + StartSelectPlayersMenuFromNetworkLoad(); + return TRUE; +} + +BOOL LSLoadSplitScreen(const CTFileName &fnm) +{ + // call local players menu + _fnGameToLoad = fnm; + StartSelectPlayersMenuFromSplitScreenLoad(); + return TRUE; +} + +void StartDemoPlay(void) +{ + _pGame->gm_StartSplitScreenCfg = CGame::SSC_OBSERVER; + // play the demo + _pGame->gm_strNetworkProvider = "Local"; + if (_pGame->StartDemoPlay(_fnDemoToPlay)) + { + // exit menu and pull up the console + StopMenus(); + if (_pGame->gm_csConsoleState != CS_OFF) _pGame->gm_csConsoleState = CS_TURNINGOFF; + _gmRunningGameMode = GM_DEMO; + } + else { + _gmRunningGameMode = GM_NONE; + } +} + +extern BOOL LSLoadDemo(const CTFileName &fnm) +{ + // call local players menu + _fnDemoToPlay = fnm; + StartDemoPlay(); + return TRUE; +} + +BOOL LSLoadPlayerModel(const CTFileName &fnm) +{ + // get base filename + CTString strBaseName = fnm.FileName(); + // set it for current player + CPlayerCharacter &pc = _pGame->gm_apcPlayers[*_pGUIM->gmPlayerProfile.gm_piCurrentPlayer]; + CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; + memset(pps->ps_achModelFile, 0, sizeof(pps->ps_achModelFile)); + strncpy(pps->ps_achModelFile, strBaseName, sizeof(pps->ps_achModelFile)); + + void MenuGoToParent(void); + MenuGoToParent(); + return TRUE; +} + +extern void ControlsMenuOn(); +extern void ControlsMenuOff(); + +BOOL LSLoadControls(const CTFileName &fnm) +{ + try { + ControlsMenuOn(); + _pGame->gm_ctrlControlsExtra.Load_t(fnm); + ControlsMenuOff(); + } + catch (char *strError) { + CPrintF("%s", strError); + } + + void MenuGoToParent(void); + MenuGoToParent(); + return TRUE; +} + +BOOL LSLoadAddon(const CTFileName &fnm) +{ + extern INDEX _iAddonExecState; + extern CTFileName _fnmAddonToExec; + _iAddonExecState = 1; + _fnmAddonToExec = fnm; + return TRUE; +} + +BOOL LSLoadMod(const CTFileName &fnm) +{ + _fnmModSelected = fnm; + extern void ModConfirm(void); + ModConfirm(); + return TRUE; +} + +BOOL LSLoadCustom(const CTFileName &fnm) +{ + _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); + // LoadStringVar(fnm.NoExt()+".des", mgVarTitle.mg_strText); + // mgVarTitle.mg_strText.OnlyFirstLine(); + _pGUIM->gmVarMenu.gm_fnmMenuCFG = fnm; + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + ChangeToMenu(&_pGUIM->gmVarMenu); + return TRUE; +} + +BOOL LSLoadNetSettings(const CTFileName &fnm) +{ + sam_strNetworkSettings = fnm; + CTString strCmd; + strCmd.PrintF("include \"%s\"", (const char*)sam_strNetworkSettings); + _pShell->Execute(strCmd); + + void MenuGoToParent(void); + MenuGoToParent(); + return TRUE; +} + +// same function for saving in singleplay, network and splitscreen +BOOL LSSaveAnyGame(const CTFileName &fnm) +{ + if (_pGame->SaveGame(fnm)) { + StopMenus(); + return TRUE; + } + else { + return FALSE; + } +} + +BOOL LSSaveDemo(const CTFileName &fnm) +{ + // save the demo + if (_pGame->StartDemoRec(fnm)) { + StopMenus(); + return TRUE; + } + else { + return FALSE; + } +} + +void StartNetworkLoadGame(void) +{ + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + + _pGame->gm_strNetworkProvider = "TCP/IP Server"; + if (_pGame->LoadGame(_fnGameToLoad)) + { + StopMenus(); + _gmRunningGameMode = GM_NETWORK; + } + else { + _gmRunningGameMode = GM_NONE; + } +} + +void StartSplitScreenGameLoad(void) +{ + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + + _pGame->gm_strNetworkProvider = "Local"; + if (_pGame->LoadGame(_fnGameToLoad)) { + StopMenus(); + _gmRunningGameMode = GM_SPLIT_SCREEN; + } + else { + _gmRunningGameMode = GM_NONE; + } +} \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MenuStartersAF.h b/Sources/SeriousSam/GUI/Menus/MenuStartersAF.h new file mode 100644 index 0000000..b0be0c1 --- /dev/null +++ b/Sources/SeriousSam/GUI/Menus/MenuStartersAF.h @@ -0,0 +1,26 @@ +/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ + +#ifndef SE_INCL_MENU_STARTERSAF_H +#define SE_INCL_MENU_STARTERSAF_H +#ifdef PRAGMA_ONCE + #pragma once +#endif + + +BOOL LSLoadSinglePlayer(const CTFileName &fnm); +BOOL LSLoadNetwork(const CTFileName &fnm); +BOOL LSLoadSplitScreen(const CTFileName &fnm); +BOOL LSLoadDemo(const CTFileName &fnm); +BOOL LSLoadPlayerModel(const CTFileName &fnm); +BOOL LSLoadControls(const CTFileName &fnm); +BOOL LSLoadAddon(const CTFileName &fnm); +BOOL LSLoadMod(const CTFileName &fnm); +BOOL LSLoadCustom(const CTFileName &fnm); +BOOL LSLoadNetSettings(const CTFileName &fnm); +BOOL LSSaveAnyGame(const CTFileName &fnm); +BOOL LSSaveDemo(const CTFileName &fnm); +void StartDemoPlay(void); +void StartNetworkLoadGame(void); +void StartSplitScreenGameLoad(void); + +#endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/Menu_starters.cpp b/Sources/SeriousSam/GUI/Menus/Menu_starters.cpp deleted file mode 100644 index a1259d1..0000000 --- a/Sources/SeriousSam/GUI/Menus/Menu_starters.cpp +++ /dev/null @@ -1,959 +0,0 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ - -#include "StdH.h" -#include - -#include "MenuManager.h" -#include "Menu_starters.h" -#include "MenuStuff.h" -#include "LevelInfo.h" - -extern void(*_pAfterLevelChosen)(void); -extern BOOL _bPlayerMenuFromSinglePlayer; - -extern CTString _strLastPlayerAppearance; -extern CTString sam_strNetworkSettings; - -extern CTFileName _fnmModSelected; -extern CTString _strModURLSelected; -extern CTString _strModServerSelected; - -CTFileName _fnDemoToPlay; -CTFileName _fnGameToLoad; - -void StartVideoOptionsMenu(void) -{ - ChangeToMenu(&_pGUIM->gmVideoOptionsMenu); -} - -void StartAudioOptionsMenu(void) -{ - ChangeToMenu(&_pGUIM->gmAudioOptionsMenu); -} - -void StartNetworkMenu(void) -{ - ChangeToMenu(&_pGUIM->gmNetworkMenu); -} - -void StartNetworkJoinMenu(void) -{ - ChangeToMenu(&_pGUIM->gmNetworkJoinMenu); -} - -void StartNetworkStartMenu(void) -{ - ChangeToMenu(&_pGUIM->gmNetworkStartMenu); -} - -void StartNetworkOpenMenu(void) -{ - ChangeToMenu(&_pGUIM->gmNetworkOpenMenu); -} - -void StartSplitScreenMenu(void) -{ - ChangeToMenu(&_pGUIM->gmSplitScreenMenu); -} - -void StartSplitStartMenu(void) -{ - ChangeToMenu(&_pGUIM->gmSplitStartMenu); -} - -void StartSinglePlayerNewMenuCustom(void) -{ - _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmLevelsMenu; - ChangeToMenu(&_pGUIM->gmSinglePlayerNewMenu); -} - -static void SetQuickLoadNotes(void) -{ - if (_pShell->GetINDEX("gam_iQuickSaveSlots") <= 8) { - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = TRANS( - "In-game QuickSave shortcuts:\n" - "F6 - save a new QuickSave\n" - "F9 - load the last QuickSave\n"); - } else { - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - } -} - -void StartSinglePlayerNewMenu(void) -{ - _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; - extern CTString sam_strFirstLevel; - _pGame->gam_strCustomLevel = sam_strFirstLevel; - ChangeToMenu(&_pGUIM->gmSinglePlayerNewMenu); -} - -BOOL LSLoadSinglePlayer(const CTFileName &fnm) -{ - _pGame->gm_StartSplitScreenCfg = CGame::SSC_PLAY1; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_iSinglePlayer; - _pGame->gm_aiStartLocalPlayers[1] = -1; - _pGame->gm_aiStartLocalPlayers[2] = -1; - _pGame->gm_aiStartLocalPlayers[3] = -1; - _pGame->gm_strNetworkProvider = "Local"; - if (_pGame->LoadGame(fnm)) { - StopMenus(); - _gmRunningGameMode = GM_SINGLE_PLAYER; - } else { - _gmRunningGameMode = GM_NONE; - } - return TRUE; -} - -BOOL LSLoadNetwork(const CTFileName &fnm) -{ - // call local players menu - _fnGameToLoad = fnm; - StartSelectPlayersMenuFromNetworkLoad(); - return TRUE; -} - -BOOL LSLoadSplitScreen(const CTFileName &fnm) -{ - // call local players menu - _fnGameToLoad = fnm; - StartSelectPlayersMenuFromSplitScreenLoad(); - return TRUE; -} - -void StartDemoPlay(void) -{ - _pGame->gm_StartSplitScreenCfg = CGame::SSC_OBSERVER; - // play the demo - _pGame->gm_strNetworkProvider = "Local"; - if (_pGame->StartDemoPlay(_fnDemoToPlay)) - { - // exit menu and pull up the console - StopMenus(); - if (_pGame->gm_csConsoleState != CS_OFF) _pGame->gm_csConsoleState = CS_TURNINGOFF; - _gmRunningGameMode = GM_DEMO; - } else { - _gmRunningGameMode = GM_NONE; - } -} - -extern BOOL LSLoadDemo(const CTFileName &fnm) -{ - // call local players menu - _fnDemoToPlay = fnm; - StartDemoPlay(); - return TRUE; -} - -BOOL LSLoadPlayerModel(const CTFileName &fnm) -{ - // get base filename - CTString strBaseName = fnm.FileName(); - // set it for current player - CPlayerCharacter &pc = _pGame->gm_apcPlayers[*_pGUIM->gmPlayerProfile.gm_piCurrentPlayer]; - CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; - memset(pps->ps_achModelFile, 0, sizeof(pps->ps_achModelFile)); - strncpy(pps->ps_achModelFile, strBaseName, sizeof(pps->ps_achModelFile)); - - void MenuGoToParent(void); - MenuGoToParent(); - return TRUE; -} - -extern void ControlsMenuOn(); -extern void ControlsMenuOff(); - -BOOL LSLoadControls(const CTFileName &fnm) -{ - try { - ControlsMenuOn(); - _pGame->gm_ctrlControlsExtra.Load_t(fnm); - ControlsMenuOff(); - } catch (char *strError) { - CPrintF("%s", strError); - } - - void MenuGoToParent(void); - MenuGoToParent(); - return TRUE; -} - -BOOL LSLoadAddon(const CTFileName &fnm) -{ - extern INDEX _iAddonExecState; - extern CTFileName _fnmAddonToExec; - _iAddonExecState = 1; - _fnmAddonToExec = fnm; - return TRUE; -} - -BOOL LSLoadMod(const CTFileName &fnm) -{ - _fnmModSelected = fnm; - extern void ModConfirm(void); - ModConfirm(); - return TRUE; -} - -BOOL LSLoadCustom(const CTFileName &fnm) -{ - _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); - // LoadStringVar(fnm.NoExt()+".des", mgVarTitle.mg_strText); - // mgVarTitle.mg_strText.OnlyFirstLine(); - _pGUIM->gmVarMenu.gm_fnmMenuCFG = fnm; - _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; - ChangeToMenu(&_pGUIM->gmVarMenu); - return TRUE; -} - -BOOL LSLoadNetSettings(const CTFileName &fnm) -{ - sam_strNetworkSettings = fnm; - CTString strCmd; - strCmd.PrintF("include \"%s\"", (const char*)sam_strNetworkSettings); - _pShell->Execute(strCmd); - - void MenuGoToParent(void); - MenuGoToParent(); - return TRUE; -} - -// same function for saving in singleplay, network and splitscreen -BOOL LSSaveAnyGame(const CTFileName &fnm) -{ - if (_pGame->SaveGame(fnm)) { - StopMenus(); - return TRUE; - } else { - return FALSE; - } -} - -BOOL LSSaveDemo(const CTFileName &fnm) -{ - // save the demo - if (_pGame->StartDemoRec(fnm)) { - StopMenus(); - return TRUE; - } else { - return FALSE; - } -} - -void StartSinglePlayerQuickLoadMenu(void) -{ - _gmMenuGameMode = GM_SINGLE_PLAYER; - - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; - _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\Quick\\", _pGame->gm_iSinglePlayer); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSinglePlayer; - SetQuickLoadNotes(); - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartSinglePlayerLoadMenu(void) -{ - _gmMenuGameMode = GM_SINGLE_PLAYER; - - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; - _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSinglePlayer; - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartSinglePlayerSaveMenu(void) -{ - if (_gmRunningGameMode != GM_SINGLE_PLAYER) return; - // if no live players - if (_pGame->GetPlayersCount()>0 && _pGame->GetLivePlayersCount() <= 0) { - // do nothing - return; - } - _gmMenuGameMode = GM_SINGLE_PLAYER; - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - _pGUIM->gmLoadSaveMenu.gm_bSave = TRUE; - _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); - _pGUIM->gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - _pGUIM->gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartDemoLoadMenu(void) -{ - _gmMenuGameMode = GM_DEMO; - - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("PLAY DEMO"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; - _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Demos\\"); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".dem"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadDemo; - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartDemoSaveMenu(void) -{ - if (_gmRunningGameMode == GM_NONE) return; - _gmMenuGameMode = GM_DEMO; - - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("RECORD DEMO"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; - _pGUIM->gmLoadSaveMenu.gm_bSave = TRUE; - _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Demos\\"); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); - _pGUIM->gmLoadSaveMenu.gm_fnmBaseName = CTString("Demo"); - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".dem"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveDemo; - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - _pGUIM->gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(FALSE); - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartNetworkQuickLoadMenu(void) -{ - _gmMenuGameMode = GM_NETWORK; - - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; - _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\Network\\Quick\\"); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetwork; - SetQuickLoadNotes(); - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartNetworkLoadMenu(void) -{ - _gmMenuGameMode = GM_NETWORK; - - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; - _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\Network\\"); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetwork; - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartNetworkSaveMenu(void) -{ - if (_gmRunningGameMode != GM_NETWORK) return; - _gmMenuGameMode = GM_NETWORK; - - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - _pGUIM->gmLoadSaveMenu.gm_bSave = TRUE; - _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\Network\\"); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); - _pGUIM->gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - _pGUIM->gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartSplitScreenQuickLoadMenu(void) -{ - _gmMenuGameMode = GM_SPLIT_SCREEN; - - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; - _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\Quick\\"); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSplitScreen; - SetQuickLoadNotes(); - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartSplitScreenLoadMenu(void) -{ - _gmMenuGameMode = GM_SPLIT_SCREEN; - - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; - _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadSplitScreen; - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartSplitScreenSaveMenu(void) -{ - if (_gmRunningGameMode != GM_SPLIT_SCREEN) return; - _gmMenuGameMode = GM_SPLIT_SCREEN; - - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("SAVE"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEDN; - _pGUIM->gmLoadSaveMenu.gm_bSave = TRUE; - _pGUIM->gmLoadSaveMenu.gm_bManage = TRUE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); - _pGUIM->gmLoadSaveMenu.gm_fnmBaseName = CTString("SaveGame"); - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".sav"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSSaveAnyGame; - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - _pGUIM->gmLoadSaveMenu.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -// game options var settings -void StartVarGameOptions(void) -{ - _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); - _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\GameOptions.cfg"); - ChangeToMenu(&_pGUIM->gmVarMenu); -} - -void StartSinglePlayerGameOptions(void) -{ - _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); - _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\SPOptions.cfg"); - ChangeToMenu(&_pGUIM->gmVarMenu); - _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; -} - -void StartGameOptionsFromNetwork(void) -{ - StartVarGameOptions(); - _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; -} - -void StartGameOptionsFromSplitScreen(void) -{ - StartVarGameOptions(); - _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; -} - -// rendering options var settings -void StartRenderingOptionsMenu(void) -{ - _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("RENDERING OPTIONS"); - _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\RenderingOptions.cfg"); - _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmVideoOptionsMenu; - ChangeToMenu(&_pGUIM->gmVarMenu); -} - -void StartCustomizeKeyboardMenu(void) -{ - ChangeToMenu(&_pGUIM->gmCustomizeKeyboardMenu); -} - -void StartCustomizeAxisMenu(void) -{ - ChangeToMenu(&_pGUIM->gmCustomizeAxisMenu); -} - -void StartOptionsMenu(void) -{ - _pGUIM->gmOptionsMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmOptionsMenu); -} - -void StartCurrentLoadMenu() -{ - if (_gmRunningGameMode == GM_NETWORK) { - void StartNetworkLoadMenu(void); - StartNetworkLoadMenu(); - } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { - void StartSplitScreenLoadMenu(void); - StartSplitScreenLoadMenu(); - } else { - void StartSinglePlayerLoadMenu(void); - StartSinglePlayerLoadMenu(); - } -} - -void StartCurrentSaveMenu() -{ - if (_gmRunningGameMode == GM_NETWORK) { - void StartNetworkSaveMenu(void); - StartNetworkSaveMenu(); - } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { - void StartSplitScreenSaveMenu(void); - StartSplitScreenSaveMenu(); - } else { - void StartSinglePlayerSaveMenu(void); - StartSinglePlayerSaveMenu(); - } -} - -void StartCurrentQuickLoadMenu() -{ - if (_gmRunningGameMode == GM_NETWORK) { - void StartNetworkQuickLoadMenu(void); - StartNetworkQuickLoadMenu(); - } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { - void StartSplitScreenQuickLoadMenu(void); - StartSplitScreenQuickLoadMenu(); - } else { - void StartSinglePlayerQuickLoadMenu(void); - StartSinglePlayerQuickLoadMenu(); - } -} - -void StartChangePlayerMenuFromOptions(void) -{ - _bPlayerMenuFromSinglePlayer = FALSE; - _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; - _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&_pGUIM->gmPlayerProfile); -} - -void StartChangePlayerMenuFromSinglePlayer(void) -{ - _iLocalPlayer = -1; - _bPlayerMenuFromSinglePlayer = TRUE; - _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; - _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; - ChangeToMenu(&_pGUIM->gmPlayerProfile); -} - -void StartControlsMenuFromPlayer(void) -{ - _pGUIM->gmControls.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; - ChangeToMenu(&_pGUIM->gmControls); -} - -void StartControlsMenuFromOptions(void) -{ - _pGUIM->gmControls.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&_pGUIM->gmControls); -} - -void StartSelectLevelFromSingle(void) -{ - FilterLevels(GetSpawnFlagsForGameType(-1)); - _pAfterLevelChosen = StartSinglePlayerNewMenuCustom; - ChangeToMenu(&_pGUIM->gmLevelsMenu); - _pGUIM->gmLevelsMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; -} - -void StartHighScoreMenu(void) -{ - _pGUIM->gmHighScoreMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmHighScoreMenu); -} - -void StartSplitScreenGame(void) -{ - // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - - CTFileName fnWorld = _pGame->gam_strCustomLevel; - - _pGame->gm_strNetworkProvider = "Local"; - CUniversalSessionProperties sp; - _pGame->SetMultiPlayerSession(sp); - if (_pGame->NewGame(fnWorld.FileName(), fnWorld, sp)) - { - StopMenus(); - _gmRunningGameMode = GM_SPLIT_SCREEN; - } else { - _gmRunningGameMode = GM_NONE; - } -} - -void StartSelectPlayersMenuFromSplit(void) -{ - _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = FALSE; - _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; - _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; - ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); -} - -void StartNetworkGame(void) -{ - // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - - CTFileName fnWorld = _pGame->gam_strCustomLevel; - - _pGame->gm_strNetworkProvider = "TCP/IP Server"; - CUniversalSessionProperties sp; - _pGame->SetMultiPlayerSession(sp); - if (_pGame->NewGame(_pGame->gam_strSessionName, fnWorld, sp)) - { - StopMenus(); - _gmRunningGameMode = GM_NETWORK; - // if starting a dedicated server - if (_pGame->gm_MenuSplitScreenCfg == CGame::SSC_DEDICATED) { - // pull down the console - extern INDEX sam_bToggleConsole; - sam_bToggleConsole = TRUE; - } - } else { - _gmRunningGameMode = GM_NONE; - } -} - -void StartSelectPlayersMenuFromNetwork(void) -{ - _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = TRUE; - _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkGame; - _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; - ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); -} - -void JoinNetworkGame(void) -{ - // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - - _pGame->gm_strNetworkProvider = "TCP/IP Client"; - if (_pGame->JoinGame(CNetworkSession(_pGame->gam_strJoinAddress))) - { - StopMenus(); - _gmRunningGameMode = GM_NETWORK; - } else { - if (_pNetwork->ga_strRequiredMod != "") { - extern CTFileName _fnmModToLoad; - extern CTString _strModServerJoin; - char strModName[256] = { 0 }; - char strModURL[256] = { 0 }; - _pNetwork->ga_strRequiredMod.ScanF("%250[^\\]\\%s", &strModName, &strModURL); - _fnmModSelected = CTString(strModName); - _strModURLSelected = strModURL; - if (_strModURLSelected = "") { - _strModURLSelected = "http://www.croteam.com/mods/Old"; - } - _strModServerSelected.PrintF("%s:%s", _pGame->gam_strJoinAddress, _pShell->GetValue("net_iPort")); - extern void ModConnectConfirm(void); - ModConnectConfirm(); - } - _gmRunningGameMode = GM_NONE; - } -} - -void StartSelectPlayersMenuFromOpen(void) -{ - _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; - _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; - ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); - - /*if (sam_strNetworkSettings=="")*/ { - void StartNetworkSettingsMenu(void); - StartNetworkSettingsMenu(); - _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; - _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &_pGUIM->gmSelectPlayersMenu; - } -} -void StartSelectPlayersMenuFromServers(void) -{ - _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; - _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmServersMenu; - ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); - - /*if (sam_strNetworkSettings=="")*/ { - void StartNetworkSettingsMenu(void); - StartNetworkSettingsMenu(); - _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmServersMenu; - _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &_pGUIM->gmSelectPlayersMenu; - } -} - -void StartSelectServerLAN(void) -{ - _pGUIM->gmServersMenu.m_bInternet = FALSE; - ChangeToMenu(&_pGUIM->gmServersMenu); - _pGUIM->gmServersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; -} - -void StartSelectServerNET(void) -{ - _pGUIM->gmServersMenu.m_bInternet = TRUE; - ChangeToMenu(&_pGUIM->gmServersMenu); - _pGUIM->gmServersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; -} - -void StartSelectLevelFromSplit(void) -{ - FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmSplitStartMenu.gm_mgGameType.mg_iSelected)); - void StartSplitStartMenu(void); - _pAfterLevelChosen = StartSplitStartMenu; - ChangeToMenu(&_pGUIM->gmLevelsMenu); - _pGUIM->gmLevelsMenu.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; -} - -void StartSelectLevelFromNetwork(void) -{ - FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); - void StartNetworkStartMenu(void); - _pAfterLevelChosen = StartNetworkStartMenu; - ChangeToMenu(&_pGUIM->gmLevelsMenu); - _pGUIM->gmLevelsMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; -} - -void StartSelectPlayersMenuFromSplitScreen(void) -{ - _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = FALSE; - // gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; - _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmSplitScreenMenu; - ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); -} - -void StartNetworkLoadGame(void) -{ - // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - - _pGame->gm_strNetworkProvider = "TCP/IP Server"; - if (_pGame->LoadGame(_fnGameToLoad)) - { - StopMenus(); - _gmRunningGameMode = GM_NETWORK; - } else { - _gmRunningGameMode = GM_NONE; - } -} - -void StartSelectPlayersMenuFromNetworkLoad(void) -{ - _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkLoadGame; - _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; - ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); -} - -void StartSplitScreenGameLoad(void) -{ - // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - - _pGame->gm_strNetworkProvider = "Local"; - if (_pGame->LoadGame(_fnGameToLoad)) { - StopMenus(); - _gmRunningGameMode = GM_SPLIT_SCREEN; - } else { - _gmRunningGameMode = GM_NONE; - } -} - -void StartSelectPlayersMenuFromSplitScreenLoad(void) -{ - _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = FALSE; - _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGameLoad; - _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; - ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); -} - -// save/load menu calling functions -void StartPlayerModelLoadMenu(void) -{ - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CHOOSE MODEL"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; - _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; - _pGUIM->gmLoadSaveMenu.gm_bManage = FALSE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Models\\Player\\"); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = _strLastPlayerAppearance; - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".amc"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadPlayerModel; - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartControlsLoadMenu(void) -{ - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("LOAD CONTROLS"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; - _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; - _pGUIM->gmLoadSaveMenu.gm_bManage = FALSE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Controls\\"); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".ctl"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadControls; - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmControls; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartCustomLoadMenu(void) -{ - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; - _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; - _pGUIM->gmLoadSaveMenu.gm_bManage = FALSE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Scripts\\CustomOptions\\"); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".cfg"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadCustom; - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartAddonsLoadMenu(void) -{ - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("EXECUTE ADDON"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; - _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; - _pGUIM->gmLoadSaveMenu.gm_bManage = FALSE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Scripts\\Addons\\"); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".ini"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadAddon; - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartModsLoadMenu(void) -{ - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CHOOSE MOD"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = TRUE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_NAMEUP; - _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; - _pGUIM->gmLoadSaveMenu.gm_bManage = FALSE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Mods\\"); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = CTString(""); - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".des"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadMod; - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartNetworkSettingsMenu(void) -{ - _pGUIM->gmLoadSaveMenu.gm_mgTitle.mg_strText = TRANS("CONNECTION SETTINGS"); - _pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails = FALSE; - _pGUIM->gmLoadSaveMenu.gm_iSortType = LSSORT_FILEUP; - _pGUIM->gmLoadSaveMenu.gm_bSave = FALSE; - _pGUIM->gmLoadSaveMenu.gm_bManage = FALSE; - _pGUIM->gmLoadSaveMenu.gm_fnmDirectory = CTString("Scripts\\NetSettings\\"); - _pGUIM->gmLoadSaveMenu.gm_fnmSelected = sam_strNetworkSettings; - _pGUIM->gmLoadSaveMenu.gm_fnmExt = CTString(".ini"); - _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen = &LSLoadNetSettings; - if (sam_strNetworkSettings == "") { - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = TRANS( - "Before joining a network game,\n" - "you have to adjust your connection parameters.\n" - "Choose one option from the list.\n" - "If you have problems with connection, you can adjust\n" - "these parameters again from the Options menu.\n" - ); - } else { - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; - } - - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&_pGUIM->gmLoadSaveMenu); -} - -void StartSinglePlayerMenu(void) -{ - ChangeToMenu(&_pGUIM->gmSinglePlayerMenu); -} \ No newline at end of file diff --git a/Sources/SeriousSam/SeriousSam.vcxproj b/Sources/SeriousSam/SeriousSam.vcxproj index 7acbeac..93fed95 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj +++ b/Sources/SeriousSam/SeriousSam.vcxproj @@ -202,10 +202,11 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + - + @@ -252,10 +253,12 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul + + - + @@ -276,7 +279,7 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul - + Use StdH.h diff --git a/Sources/SeriousSam/SeriousSam.vcxproj.filters b/Sources/SeriousSam/SeriousSam.vcxproj.filters index e56f422..6bacaec 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj.filters +++ b/Sources/SeriousSam/SeriousSam.vcxproj.filters @@ -201,15 +201,18 @@ Source Files\GUI\Menus - - Source Files\GUI\Menus - - - Source Files\GUI\Menus - Source Files\GUI\Menus + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + + + Source Files\GUI\Menus + @@ -392,10 +395,16 @@ Header Files\GUI headers\Menus headers - + Header Files\GUI headers\Menus headers - + + Header Files\GUI headers\Menus headers + + + Header Files\GUI headers\Menus headers + + Header Files\GUI headers\Menus headers From 1f0da8a4436b81059bdb8dbcd67cfdaad5085c31 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Wed, 30 Mar 2016 23:09:51 +0300 Subject: [PATCH 26/34] GameExecutable: Some cleanup for menu code. --- Sources/SeriousSam/GUI/Menus/MControls.cpp | 2 - .../SeriousSam/GUI/Menus/MCustomizeAxis.cpp | 3 - .../GUI/Menus/MCustomizeKeyboard.cpp | 4 +- Sources/SeriousSam/GUI/Menus/Menu.cpp | 50 -------------- Sources/SeriousSam/GUI/Menus/MenuActions.cpp | 25 +++---- Sources/SeriousSam/GUI/Menus/MenuStarters.cpp | 66 ++++++++++++------- Sources/SeriousSam/GUI/Menus/MenuStarters.h | 1 + .../SeriousSam/GUI/Menus/MenuStartersAF.cpp | 4 +- Sources/SeriousSam/GUI/Menus/MenuStuff.cpp | 30 +++++++++ Sources/SeriousSam/GUI/Menus/MenuStuff.h | 3 + 10 files changed, 87 insertions(+), 101 deletions(-) diff --git a/Sources/SeriousSam/GUI/Menus/MControls.cpp b/Sources/SeriousSam/GUI/Menus/MControls.cpp index 971c309..76c81b4 100644 --- a/Sources/SeriousSam/GUI/Menus/MControls.cpp +++ b/Sources/SeriousSam/GUI/Menus/MControls.cpp @@ -6,8 +6,6 @@ #include "MenuStuff.h" #include "MControls.h" -extern void ControlsMenuOn(); -extern void ControlsMenuOff(); extern CTFileName _fnmControlsToCustomize; diff --git a/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.cpp b/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.cpp index a819fb3..b84066d 100644 --- a/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.cpp +++ b/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.cpp @@ -6,9 +6,6 @@ #include "MenuStuff.h" #include "MCustomizeAxis.h" -extern void ControlsMenuOn(); -extern void ControlsMenuOff(); - void CCustomizeAxisMenu::Initialize_t(void) { diff --git a/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp b/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp index b74bb6a..f541665 100644 --- a/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp +++ b/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp @@ -3,11 +3,9 @@ #include "StdH.h" #include #include "MenuPrinting.h" +#include "MenuStuff.h" #include "MCustomizeKeyboard.h" -extern void ControlsMenuOn(); -extern void ControlsMenuOff(); - void CCustomizeKeyboardMenu::FillListItems(void) { diff --git a/Sources/SeriousSam/GUI/Menus/Menu.cpp b/Sources/SeriousSam/GUI/Menus/Menu.cpp index 9cbd6d1..125fc91 100644 --- a/Sources/SeriousSam/GUI/Menus/Menu.cpp +++ b/Sources/SeriousSam/GUI/Menus/Menu.cpp @@ -44,8 +44,6 @@ void OnPlayerSelect(void); TIME _tmMenuLastTickDone = -1; // all possible menu entities CListHead lhMenuEntities; -// controls that are currently customized -CTFileName _fnmControlsToCustomize = CTString(""); extern CTString _strLastPlayerAppearance = ""; extern CTString sam_strNetworkSettings; @@ -55,34 +53,8 @@ void (*_pAfterLevelChosen)(void); // functions for init actions - void FixupBackButton(CGameMenu *pgm); -extern void ControlsMenuOn() -{ - _pGame->SavePlayersAndControls(); - try { - _pGame->gm_ctrlControlsExtra.Load_t(_fnmControlsToCustomize); - } catch( char *strError) { - WarningMessage(strError); - } -} - -extern void ControlsMenuOff() -{ - try { - if (_pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions.Count()>0) { - _pGame->gm_ctrlControlsExtra.Save_t(_fnmControlsToCustomize); - } - } catch( char *strError) { - FatalError(strError); - } - FORDELETELIST( CButtonAction, ba_lnNode, _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions, itAct) { - delete &itAct.Current(); - } - _pGame->LoadPlayersAndControls(); -} - // mouse cursor position extern PIX _pixCursorPosI = 0; extern PIX _pixCursorPosJ = 0; @@ -244,32 +216,11 @@ void StopMenus( BOOL bGoToRoot /*=TRUE*/) } } - BOOL IsMenusInRoot(void) { return pgmCurrentMenu == NULL || pgmCurrentMenu == &_pGUIM->gmMainMenu || pgmCurrentMenu == &_pGUIM->gmInGameMenu; } -// ---------------------- When activated functions -void StopCurrentGame(void) -{ - _pGame->StopGame(); - _gmRunningGameMode=GM_NONE; - StopMenus(TRUE); - StartMenus(""); -} - -void DisabledFunction(void) -{ - _pGUIM->gmDisabledFunction.gm_pgmParentMenu = pgmCurrentMenu; - _pGUIM->gmDisabledFunction.gm_mgButton.mg_strText = TRANS("The feature is not available in this version!"); - _pGUIM->gmDisabledFunction.gm_mgTitle.mg_strText = TRANS("DISABLED"); - ChangeToMenu(&_pGUIM->gmDisabledFunction); -} - -extern void InitVideoOptionsButtons(void); -extern void UpdateVideoOptionsButtons(INDEX i); - // ------------------------ Global menu function implementation void InitializeMenus(void) { @@ -485,7 +436,6 @@ void InitializeMenus(void) } } - void DestroyMenus( void) { _pGUIM->gmMainMenu.Destroy(); diff --git a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp index 7308fad..f11c406 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp @@ -108,9 +108,16 @@ void ExitConfirm(void) ChangeToMenu(&_pGUIM->gmConfirmMenu); } +void StopCurrentGame(void) +{ + _pGame->StopGame(); + _gmRunningGameMode = GM_NONE; + StopMenus(TRUE); + StartMenus(""); +} + void StopConfirm(void) { - extern void StopCurrentGame(void); _pConfimedYes = &StopCurrentGame; _pConfimedNo = NULL; _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); @@ -1064,22 +1071,6 @@ void InitActionsForNetworkStartMenu() _pGUIM->gmNetworkStartMenu.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromNetwork; } -// -#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 SET_CHGPLR( gd, iplayer, bnone, bauto, pmgit) \ - gd.mg_pmgInfoTable = pmgit; \ - gd.mg_bResetToNone = bnone; \ - gd.mg_bAutomatic = bauto; \ - gd.mg_iLocalPlayer = iplayer; - // ------------------------ CSelectPlayersMenu implementation #define CMENU _pGUIM->gmSelectPlayersMenu diff --git a/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp b/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp index 8421d38..a5db1cf 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp @@ -483,15 +483,19 @@ void StartSplitScreenGame(void) } } +#define CMENU _pGUIM->gmSelectPlayersMenu + void StartSelectPlayersMenuFromSplit(void) { - _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = FALSE; - _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; - _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; - ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); + CMENU.gm_bAllowDedicated = FALSE; + CMENU.gm_bAllowObserving = FALSE; + CMENU.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; + CMENU.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; + ChangeToMenu(&CMENU); } +#undef CMENU + void StartNetworkGame(void) { // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; @@ -522,15 +526,19 @@ void StartNetworkGame(void) } } +#define CMENU _pGUIM->gmSelectPlayersMenu + void StartSelectPlayersMenuFromNetwork(void) { - _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = TRUE; - _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &StartNetworkGame; - _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; - ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); + CMENU.gm_bAllowDedicated = TRUE; + CMENU.gm_bAllowObserving = TRUE; + CMENU.gm_mgStart.mg_pActivatedFunction = &StartNetworkGame; + CMENU.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; + ChangeToMenu(&CMENU); } +#undef CMENU + void JoinNetworkGame(void) { // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; @@ -566,39 +574,43 @@ void JoinNetworkGame(void) } } +#define CMENU _pGUIM->gmSelectPlayersMenu + void StartSelectPlayersMenuFromOpen(void) { - _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; - _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; - ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); + CMENU.gm_bAllowDedicated = FALSE; + CMENU.gm_bAllowObserving = TRUE; + CMENU.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; + CMENU.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; + ChangeToMenu(&CMENU); /*if (sam_strNetworkSettings=="")*/ { void StartNetworkSettingsMenu(void); StartNetworkSettingsMenu(); _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; - _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &_pGUIM->gmSelectPlayersMenu; + _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &CMENU; } } void StartSelectPlayersMenuFromServers(void) { - _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = TRUE; - _pGUIM->gmSelectPlayersMenu.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; - _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmServersMenu; - ChangeToMenu(&_pGUIM->gmSelectPlayersMenu); + CMENU.gm_bAllowDedicated = FALSE; + CMENU.gm_bAllowObserving = TRUE; + CMENU.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; + CMENU.gm_pgmParentMenu = &_pGUIM->gmServersMenu; + ChangeToMenu(&CMENU); /*if (sam_strNetworkSettings=="")*/ { void StartNetworkSettingsMenu(void); StartNetworkSettingsMenu(); _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmServersMenu; - _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &_pGUIM->gmSelectPlayersMenu; + _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &CMENU; } } +#undef CMENU + void StartSelectServerLAN(void) { _pGUIM->gmServersMenu.m_bInternet = FALSE; @@ -776,4 +788,12 @@ void StartNetworkSettingsMenu(void) ChangeToMenu(&CMENU); } -#undef CMENU \ No newline at end of file +#undef CMENU + +void DisabledFunction(void) +{ + _pGUIM->gmDisabledFunction.gm_pgmParentMenu = pgmCurrentMenu; + _pGUIM->gmDisabledFunction.gm_mgButton.mg_strText = TRANS("The feature is not available in this version!"); + _pGUIM->gmDisabledFunction.gm_mgTitle.mg_strText = TRANS("DISABLED"); + ChangeToMenu(&_pGUIM->gmDisabledFunction); +} \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MenuStarters.h b/Sources/SeriousSam/GUI/Menus/MenuStarters.h index 8c622ae..b023277 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStarters.h +++ b/Sources/SeriousSam/GUI/Menus/MenuStarters.h @@ -63,5 +63,6 @@ void StartAddonsLoadMenu(void); void StartModsLoadMenu(void); void StartNetworkSettingsMenu(void); void StartSinglePlayerMenu(void); +void DisabledFunction(void); #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp b/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp index d6f7d37..8054efb 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp @@ -8,6 +8,7 @@ #include "MenuManager.h" #include "MenuStartersAF.h" #include "MenuStarters.h" +#include "MenuStuff.h" CTFileName _fnDemoToPlay; CTFileName _fnGameToLoad; @@ -94,9 +95,6 @@ BOOL LSLoadPlayerModel(const CTFileName &fnm) return TRUE; } -extern void ControlsMenuOn(); -extern void ControlsMenuOff(); - BOOL LSLoadControls(const CTFileName &fnm) { try { diff --git a/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp b/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp index 191c6f7..0d17a62 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp @@ -261,4 +261,34 @@ enum DisplayDepth SwitchToDepth(INDEX i) case 2: return DD_32BIT; default: ASSERT(FALSE); return DD_DEFAULT; } +} + +// controls that are currently customized +CTFileName _fnmControlsToCustomize = CTString(""); + +void ControlsMenuOn() +{ + _pGame->SavePlayersAndControls(); + try { + _pGame->gm_ctrlControlsExtra.Load_t(_fnmControlsToCustomize); + } + catch (char *strError) { + WarningMessage(strError); + } +} + +void ControlsMenuOff() +{ + try { + if (_pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions.Count()>0) { + _pGame->gm_ctrlControlsExtra.Save_t(_fnmControlsToCustomize); + } + } + catch (char *strError) { + FatalError(strError); + } + FORDELETELIST(CButtonAction, ba_lnNode, _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions, itAct) { + delete &itAct.Current(); + } + _pGame->LoadPlayersAndControls(); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MenuStuff.h b/Sources/SeriousSam/GUI/Menus/MenuStuff.h index 6e3febe..efc4187 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStuff.h +++ b/Sources/SeriousSam/GUI/Menus/MenuStuff.h @@ -52,4 +52,7 @@ enum GfxAPIType SwitchToAPI(INDEX i); INDEX DepthToSwitch(enum DisplayDepth dd); enum DisplayDepth SwitchToDepth(INDEX i); +void ControlsMenuOn(); +void ControlsMenuOff(); + #endif /* include-once check. */ \ No newline at end of file From cb907fbb87e260961e87644261e9c9a804379a86 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Thu, 31 Mar 2016 03:38:57 +0300 Subject: [PATCH 27/34] GameExecutable: Add License into sources. --- Sources/SeriousSam/ArrowDir.h | 14 +++++++++++++- Sources/SeriousSam/CDCheck.h | 14 +++++++++++++- Sources/SeriousSam/CmdLine.cpp | 14 +++++++++++++- Sources/SeriousSam/CmdLine.h | 14 +++++++++++++- Sources/SeriousSam/Credits.cpp | 14 +++++++++++++- Sources/SeriousSam/Credits.h | 14 +++++++++++++- Sources/SeriousSam/FileInfo.h | 14 +++++++++++++- Sources/SeriousSam/GLSettings.cpp | 14 +++++++++++++- Sources/SeriousSam/GLSettings.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Components/MGArrow.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Components/MGArrow.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Components/MGButton.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Components/MGButton.h | 14 +++++++++++++- .../GUI/Components/MGChangePlayer.cpp | 14 +++++++++++++- .../SeriousSam/GUI/Components/MGChangePlayer.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Components/MGEdit.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Components/MGEdit.h | 14 +++++++++++++- .../SeriousSam/GUI/Components/MGFileButton.cpp | 14 +++++++++++++- .../SeriousSam/GUI/Components/MGFileButton.h | 14 +++++++++++++- .../SeriousSam/GUI/Components/MGHighScore.cpp | 14 +++++++++++++- .../SeriousSam/GUI/Components/MGHighScore.h | 14 +++++++++++++- .../GUI/Components/MGKeyDefinition.cpp | 14 +++++++++++++- .../GUI/Components/MGKeyDefinition.h | 14 +++++++++++++- .../GUI/Components/MGLevelButton.cpp | 14 +++++++++++++- .../SeriousSam/GUI/Components/MGLevelButton.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Components/MGModel.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Components/MGModel.h | 14 +++++++++++++- .../SeriousSam/GUI/Components/MGServerList.cpp | 14 +++++++++++++- .../SeriousSam/GUI/Components/MGServerList.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Components/MGSlider.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Components/MGSlider.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Components/MGTitle.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Components/MGTitle.h | 14 +++++++++++++- .../SeriousSam/GUI/Components/MGTrigger.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Components/MGTrigger.h | 14 +++++++++++++- .../SeriousSam/GUI/Components/MGVarButton.cpp | 14 +++++++++++++- .../SeriousSam/GUI/Components/MGVarButton.h | 14 +++++++++++++- .../SeriousSam/GUI/Components/MenuGadget.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Components/MenuGadget.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/GameMenu.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/GameMenu.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MAudioOptions.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MAudioOptions.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MConfirm.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MConfirm.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MControls.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MControls.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MCredits.h | 14 +++++++++++++- .../SeriousSam/GUI/Menus/MCustomizeAxis.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MCustomizeAxis.h | 16 ++++++++++++++-- .../GUI/Menus/MCustomizeKeyboard.cpp | 14 +++++++++++++- .../SeriousSam/GUI/Menus/MCustomizeKeyboard.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MDisabled.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MDisabled.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MHighScore.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MHighScore.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MInGame.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MInGame.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MLevels.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MLevels.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MLoadSave.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MLoadSave.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MMain.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MMain.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MNetwork.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MNetwork.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MNetworkJoin.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MNetworkJoin.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MNetworkOpen.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MNetworkOpen.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MNetworkStart.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MNetworkStart.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MOptions.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MOptions.h | 14 +++++++++++++- .../SeriousSam/GUI/Menus/MPlayerProfile.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MPlayerProfile.h | 14 +++++++++++++- .../SeriousSam/GUI/Menus/MRenderingOptions.h | 14 +++++++++++++- .../SeriousSam/GUI/Menus/MSelectPlayers.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MSelectPlayers.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MServers.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MServers.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MSinglePlayer.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MSinglePlayer.h | 14 +++++++++++++- .../SeriousSam/GUI/Menus/MSinglePlayerNew.cpp | 14 +++++++++++++- .../SeriousSam/GUI/Menus/MSinglePlayerNew.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MSplitScreen.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MSplitScreen.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MSplitStart.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MSplitStart.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MVar.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MVar.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MVideoOptions.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MVideoOptions.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/Menu.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/Menu.h | 18 ++++++++++++++---- Sources/SeriousSam/GUI/Menus/MenuActions.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MenuActions.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MenuManager.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MenuManager.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MenuPrinting.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MenuPrinting.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MenuStarters.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MenuStarters.h | 14 +++++++++++++- .../SeriousSam/GUI/Menus/MenuStartersAF.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MenuStartersAF.h | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MenuStuff.cpp | 14 +++++++++++++- Sources/SeriousSam/GUI/Menus/MenuStuff.h | 14 +++++++++++++- Sources/SeriousSam/LCDDrawing.cpp | 14 +++++++++++++- Sources/SeriousSam/LCDDrawing.h | 14 +++++++++++++- Sources/SeriousSam/LevelInfo.cpp | 14 +++++++++++++- Sources/SeriousSam/LevelInfo.h | 13 ++++++++++++- Sources/SeriousSam/MainWindow.cpp | 14 +++++++++++++- Sources/SeriousSam/MainWindow.h | 14 +++++++++++++- Sources/SeriousSam/SeriousSam.cpp | 14 +++++++++++++- Sources/SeriousSam/SeriousSam.h | 14 +++++++++++++- Sources/SeriousSam/SplashScreen.cpp | 14 +++++++++++++- Sources/SeriousSam/SplashScreen.h | 14 +++++++++++++- Sources/SeriousSam/StdH.cpp | 14 +++++++++++++- Sources/SeriousSam/StdH.h | 14 +++++++++++++- Sources/SeriousSam/VarList.cpp | 14 +++++++++++++- Sources/SeriousSam/VarList.h | 14 +++++++++++++- Sources/SeriousSam/resource.h | 14 +++++++++++++- 122 files changed, 1587 insertions(+), 126 deletions(-) diff --git a/Sources/SeriousSam/ArrowDir.h b/Sources/SeriousSam/ArrowDir.h index 6d7f41e..aa9740d 100644 --- a/Sources/SeriousSam/ArrowDir.h +++ b/Sources/SeriousSam/ArrowDir.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_ARROWDIR_H #define SE_INCL_ARROWDIR_H diff --git a/Sources/SeriousSam/CDCheck.h b/Sources/SeriousSam/CDCheck.h index ae09a68..283b894 100644 --- a/Sources/SeriousSam/CDCheck.h +++ b/Sources/SeriousSam/CDCheck.h @@ -1,3 +1,15 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define CD_CHECK 1 diff --git a/Sources/SeriousSam/CmdLine.cpp b/Sources/SeriousSam/CmdLine.cpp index bf46e62..4156bfe 100644 --- a/Sources/SeriousSam/CmdLine.cpp +++ b/Sources/SeriousSam/CmdLine.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" diff --git a/Sources/SeriousSam/CmdLine.h b/Sources/SeriousSam/CmdLine.h index 598b566..492b11d 100644 --- a/Sources/SeriousSam/CmdLine.h +++ b/Sources/SeriousSam/CmdLine.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_CMDLINE_H #define SE_INCL_CMDLINE_H diff --git a/Sources/SeriousSam/Credits.cpp b/Sources/SeriousSam/Credits.cpp index f99dad5..489e9d6 100644 --- a/Sources/SeriousSam/Credits.cpp +++ b/Sources/SeriousSam/Credits.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "stdh.h" #include diff --git a/Sources/SeriousSam/Credits.h b/Sources/SeriousSam/Credits.h index 17831ca..a2ecc50 100644 --- a/Sources/SeriousSam/Credits.h +++ b/Sources/SeriousSam/Credits.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_CREDITS_H #define SE_INCL_CREDITS_H diff --git a/Sources/SeriousSam/FileInfo.h b/Sources/SeriousSam/FileInfo.h index cd24acd..cad9465 100644 --- a/Sources/SeriousSam/FileInfo.h +++ b/Sources/SeriousSam/FileInfo.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_FILEINFO_H #define SE_INCL_FILEINFO_H diff --git a/Sources/SeriousSam/GLSettings.cpp b/Sources/SeriousSam/GLSettings.cpp index ccd78f4..59e2c02 100644 --- a/Sources/SeriousSam/GLSettings.cpp +++ b/Sources/SeriousSam/GLSettings.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "stdh.h" diff --git a/Sources/SeriousSam/GLSettings.h b/Sources/SeriousSam/GLSettings.h index 7207a2b..6110d0f 100644 --- a/Sources/SeriousSam/GLSettings.h +++ b/Sources/SeriousSam/GLSettings.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ extern void InitGLSettings(void); extern void ApplyGLSettings(BOOL bForce); diff --git a/Sources/SeriousSam/GUI/Components/MGArrow.cpp b/Sources/SeriousSam/GUI/Components/MGArrow.cpp index 5cc09a2..c88d1c4 100644 --- a/Sources/SeriousSam/GUI/Components/MGArrow.cpp +++ b/Sources/SeriousSam/GUI/Components/MGArrow.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Components/MGArrow.h b/Sources/SeriousSam/GUI/Components/MGArrow.h index 803a239..e0d424f 100644 --- a/Sources/SeriousSam/GUI/Components/MGArrow.h +++ b/Sources/SeriousSam/GUI/Components/MGArrow.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_GADGET_ARROW_H #define SE_INCL_MENU_GADGET_ARROW_H diff --git a/Sources/SeriousSam/GUI/Components/MGButton.cpp b/Sources/SeriousSam/GUI/Components/MGButton.cpp index 13b98b2..d45323a 100644 --- a/Sources/SeriousSam/GUI/Components/MGButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGButton.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Components/MGButton.h b/Sources/SeriousSam/GUI/Components/MGButton.h index ed3444b..676b6ef 100644 --- a/Sources/SeriousSam/GUI/Components/MGButton.h +++ b/Sources/SeriousSam/GUI/Components/MGButton.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_GADGET_BUTTON_H #define SE_INCL_MENU_GADGET_BUTTON_H diff --git a/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp b/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp index f2bc89b..2ae4818 100644 --- a/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp +++ b/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Components/MGChangePlayer.h b/Sources/SeriousSam/GUI/Components/MGChangePlayer.h index 16b3796..e7f343a 100644 --- a/Sources/SeriousSam/GUI/Components/MGChangePlayer.h +++ b/Sources/SeriousSam/GUI/Components/MGChangePlayer.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_GADGET_CHANGEPLAYER_H #define SE_INCL_MENU_GADGET_CHANGEPLAYER_H diff --git a/Sources/SeriousSam/GUI/Components/MGEdit.cpp b/Sources/SeriousSam/GUI/Components/MGEdit.cpp index 512d0bd..10a077f 100644 --- a/Sources/SeriousSam/GUI/Components/MGEdit.cpp +++ b/Sources/SeriousSam/GUI/Components/MGEdit.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Components/MGEdit.h b/Sources/SeriousSam/GUI/Components/MGEdit.h index 70a6b9b..12ff4b1 100644 --- a/Sources/SeriousSam/GUI/Components/MGEdit.h +++ b/Sources/SeriousSam/GUI/Components/MGEdit.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_GADGET_EDIT_H #define SE_INCL_MENU_GADGET_EDIT_H diff --git a/Sources/SeriousSam/GUI/Components/MGFileButton.cpp b/Sources/SeriousSam/GUI/Components/MGFileButton.cpp index 3fe7cbb..b1af656 100644 --- a/Sources/SeriousSam/GUI/Components/MGFileButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGFileButton.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Components/MGFileButton.h b/Sources/SeriousSam/GUI/Components/MGFileButton.h index 0e614a3..8dee6a4 100644 --- a/Sources/SeriousSam/GUI/Components/MGFileButton.h +++ b/Sources/SeriousSam/GUI/Components/MGFileButton.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_GADGET_FILEBUTTON_H #define SE_INCL_MENU_GADGET_FILEBUTTON_H diff --git a/Sources/SeriousSam/GUI/Components/MGHighScore.cpp b/Sources/SeriousSam/GUI/Components/MGHighScore.cpp index 3b7bfaa..31466ee 100644 --- a/Sources/SeriousSam/GUI/Components/MGHighScore.cpp +++ b/Sources/SeriousSam/GUI/Components/MGHighScore.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Components/MGHighScore.h b/Sources/SeriousSam/GUI/Components/MGHighScore.h index 9c0c2b0..614460f 100644 --- a/Sources/SeriousSam/GUI/Components/MGHighScore.h +++ b/Sources/SeriousSam/GUI/Components/MGHighScore.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_GADGET_HIGHSCORE_H #define SE_INCL_MENU_GADGET_HIGHSCORE_H diff --git a/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp index 0c3f0d0..4d82ba6 100644 --- a/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp +++ b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Components/MGKeyDefinition.h b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.h index 6686e7a..157361b 100644 --- a/Sources/SeriousSam/GUI/Components/MGKeyDefinition.h +++ b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_GADGET_KEYDEFINITION_H #define SE_INCL_MENU_GADGET_KEYDEFINITION_H diff --git a/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp b/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp index 0eeb0c1..2fe418f 100644 --- a/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Components/MGLevelButton.h b/Sources/SeriousSam/GUI/Components/MGLevelButton.h index 31f491a..24c4578 100644 --- a/Sources/SeriousSam/GUI/Components/MGLevelButton.h +++ b/Sources/SeriousSam/GUI/Components/MGLevelButton.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_GADGET_LEVELBUTTON_H #define SE_INCL_MENU_GADGET_LEVELBUTTON_H diff --git a/Sources/SeriousSam/GUI/Components/MGModel.cpp b/Sources/SeriousSam/GUI/Components/MGModel.cpp index a776b32..0d45d05 100644 --- a/Sources/SeriousSam/GUI/Components/MGModel.cpp +++ b/Sources/SeriousSam/GUI/Components/MGModel.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Components/MGModel.h b/Sources/SeriousSam/GUI/Components/MGModel.h index 69beaaf..72d4f30 100644 --- a/Sources/SeriousSam/GUI/Components/MGModel.h +++ b/Sources/SeriousSam/GUI/Components/MGModel.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_GADGET_MODEL_H #define SE_INCL_MENU_GADGET_MODEL_H diff --git a/Sources/SeriousSam/GUI/Components/MGServerList.cpp b/Sources/SeriousSam/GUI/Components/MGServerList.cpp index a676913..5872ea9 100644 --- a/Sources/SeriousSam/GUI/Components/MGServerList.cpp +++ b/Sources/SeriousSam/GUI/Components/MGServerList.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Components/MGServerList.h b/Sources/SeriousSam/GUI/Components/MGServerList.h index cbfe00d..4796013 100644 --- a/Sources/SeriousSam/GUI/Components/MGServerList.h +++ b/Sources/SeriousSam/GUI/Components/MGServerList.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_GADGET_SERVERLIST_H #define SE_INCL_MENU_GADGET_SERVERLIST_H diff --git a/Sources/SeriousSam/GUI/Components/MGSlider.cpp b/Sources/SeriousSam/GUI/Components/MGSlider.cpp index 0722e0f..18055f7 100644 --- a/Sources/SeriousSam/GUI/Components/MGSlider.cpp +++ b/Sources/SeriousSam/GUI/Components/MGSlider.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Components/MGSlider.h b/Sources/SeriousSam/GUI/Components/MGSlider.h index 8e00272..12f1f7a 100644 --- a/Sources/SeriousSam/GUI/Components/MGSlider.h +++ b/Sources/SeriousSam/GUI/Components/MGSlider.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_GADGET_SLIDER_H #define SE_INCL_MENU_GADGET_SLIDER_H diff --git a/Sources/SeriousSam/GUI/Components/MGTitle.cpp b/Sources/SeriousSam/GUI/Components/MGTitle.cpp index 1151fa3..c5d7098 100644 --- a/Sources/SeriousSam/GUI/Components/MGTitle.cpp +++ b/Sources/SeriousSam/GUI/Components/MGTitle.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Components/MGTitle.h b/Sources/SeriousSam/GUI/Components/MGTitle.h index b4d79ea..eab0473 100644 --- a/Sources/SeriousSam/GUI/Components/MGTitle.h +++ b/Sources/SeriousSam/GUI/Components/MGTitle.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_GADGET_TITLE_H #define SE_INCL_MENU_GADGET_TITLE_H diff --git a/Sources/SeriousSam/GUI/Components/MGTrigger.cpp b/Sources/SeriousSam/GUI/Components/MGTrigger.cpp index a580463..5c11360 100644 --- a/Sources/SeriousSam/GUI/Components/MGTrigger.cpp +++ b/Sources/SeriousSam/GUI/Components/MGTrigger.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Components/MGTrigger.h b/Sources/SeriousSam/GUI/Components/MGTrigger.h index 654268c..6392eff 100644 --- a/Sources/SeriousSam/GUI/Components/MGTrigger.h +++ b/Sources/SeriousSam/GUI/Components/MGTrigger.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_GADGET_TRIGGER_H #define SE_INCL_MENU_GADGET_TRIGGER_H diff --git a/Sources/SeriousSam/GUI/Components/MGVarButton.cpp b/Sources/SeriousSam/GUI/Components/MGVarButton.cpp index b783847..5537ce3 100644 --- a/Sources/SeriousSam/GUI/Components/MGVarButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGVarButton.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Components/MGVarButton.h b/Sources/SeriousSam/GUI/Components/MGVarButton.h index b414bd6..820165a 100644 --- a/Sources/SeriousSam/GUI/Components/MGVarButton.h +++ b/Sources/SeriousSam/GUI/Components/MGVarButton.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_GADGET_VARBUTTON_H #define SE_INCL_MENU_GADGET_VARBUTTON_H diff --git a/Sources/SeriousSam/GUI/Components/MenuGadget.cpp b/Sources/SeriousSam/GUI/Components/MenuGadget.cpp index 18ef392..36a1f2c 100644 --- a/Sources/SeriousSam/GUI/Components/MenuGadget.cpp +++ b/Sources/SeriousSam/GUI/Components/MenuGadget.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Components/MenuGadget.h b/Sources/SeriousSam/GUI/Components/MenuGadget.h index d788e59..3d03589 100644 --- a/Sources/SeriousSam/GUI/Components/MenuGadget.h +++ b/Sources/SeriousSam/GUI/Components/MenuGadget.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_GADGET_H #define SE_INCL_MENU_GADGET_H diff --git a/Sources/SeriousSam/GUI/Menus/GameMenu.cpp b/Sources/SeriousSam/GUI/Menus/GameMenu.cpp index 4518dfd..91dd9d8 100644 --- a/Sources/SeriousSam/GUI/Menus/GameMenu.cpp +++ b/Sources/SeriousSam/GUI/Menus/GameMenu.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/GameMenu.h b/Sources/SeriousSam/GUI/Menus/GameMenu.h index c1c852a..72b57a6 100644 --- a/Sources/SeriousSam/GUI/Menus/GameMenu.h +++ b/Sources/SeriousSam/GUI/Menus/GameMenu.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_H #define SE_INCL_GAME_MENU_H diff --git a/Sources/SeriousSam/GUI/Menus/MAudioOptions.cpp b/Sources/SeriousSam/GUI/Menus/MAudioOptions.cpp index 74f768d..e62316d 100644 --- a/Sources/SeriousSam/GUI/Menus/MAudioOptions.cpp +++ b/Sources/SeriousSam/GUI/Menus/MAudioOptions.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MAudioOptions.h b/Sources/SeriousSam/GUI/Menus/MAudioOptions.h index 7f2cdf1..e0d1b5a 100644 --- a/Sources/SeriousSam/GUI/Menus/MAudioOptions.h +++ b/Sources/SeriousSam/GUI/Menus/MAudioOptions.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_AUDIOOPTIONS_H #define SE_INCL_GAME_MENU_AUDIOOPTIONS_H diff --git a/Sources/SeriousSam/GUI/Menus/MConfirm.cpp b/Sources/SeriousSam/GUI/Menus/MConfirm.cpp index ebae619..52267fe 100644 --- a/Sources/SeriousSam/GUI/Menus/MConfirm.cpp +++ b/Sources/SeriousSam/GUI/Menus/MConfirm.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MConfirm.h b/Sources/SeriousSam/GUI/Menus/MConfirm.h index 689fc14..904f1c0 100644 --- a/Sources/SeriousSam/GUI/Menus/MConfirm.h +++ b/Sources/SeriousSam/GUI/Menus/MConfirm.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_CONFIRM_H #define SE_INCL_GAME_MENU_CONFIRM_H diff --git a/Sources/SeriousSam/GUI/Menus/MControls.cpp b/Sources/SeriousSam/GUI/Menus/MControls.cpp index 76c81b4..5ec61a4 100644 --- a/Sources/SeriousSam/GUI/Menus/MControls.cpp +++ b/Sources/SeriousSam/GUI/Menus/MControls.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MControls.h b/Sources/SeriousSam/GUI/Menus/MControls.h index 7f07ee0..f34503f 100644 --- a/Sources/SeriousSam/GUI/Menus/MControls.h +++ b/Sources/SeriousSam/GUI/Menus/MControls.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_CONTROLS_H #define SE_INCL_GAME_MENU_CONTROLS_H diff --git a/Sources/SeriousSam/GUI/Menus/MCredits.h b/Sources/SeriousSam/GUI/Menus/MCredits.h index 10f602b..06be76d 100644 --- a/Sources/SeriousSam/GUI/Menus/MCredits.h +++ b/Sources/SeriousSam/GUI/Menus/MCredits.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_CREDITS_H #define SE_INCL_GAME_MENU_CREDITS_H diff --git a/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.cpp b/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.cpp index b84066d..9b9fc23 100644 --- a/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.cpp +++ b/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.h b/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.h index f050279..6038733 100644 --- a/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.h +++ b/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.h @@ -1,9 +1,21 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_CUSTOMIZEAXIS_H #define SE_INCL_GAME_MENU_CUSTOMIZEAXIS_H #ifdef PRAGMA_ONCE -#pragma once + #pragma once #endif #include "GameMenu.h" diff --git a/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp b/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp index f541665..c9ab6bf 100644 --- a/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp +++ b/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.h b/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.h index 0f7746a..0b4c96e 100644 --- a/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.h +++ b/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_CUSTOMIZEKEYBOARD_H #define SE_INCL_GAME_MENU_CUSTOMIZEKEYBOARD_H diff --git a/Sources/SeriousSam/GUI/Menus/MDisabled.cpp b/Sources/SeriousSam/GUI/Menus/MDisabled.cpp index 828d321..8c61de8 100644 --- a/Sources/SeriousSam/GUI/Menus/MDisabled.cpp +++ b/Sources/SeriousSam/GUI/Menus/MDisabled.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MDisabled.h b/Sources/SeriousSam/GUI/Menus/MDisabled.h index 6b648c2..0a13a46 100644 --- a/Sources/SeriousSam/GUI/Menus/MDisabled.h +++ b/Sources/SeriousSam/GUI/Menus/MDisabled.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_DISABLED_H #define SE_INCL_GAME_MENU_DISABLED_H diff --git a/Sources/SeriousSam/GUI/Menus/MHighScore.cpp b/Sources/SeriousSam/GUI/Menus/MHighScore.cpp index c056c23..67077a4 100644 --- a/Sources/SeriousSam/GUI/Menus/MHighScore.cpp +++ b/Sources/SeriousSam/GUI/Menus/MHighScore.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MHighScore.h b/Sources/SeriousSam/GUI/Menus/MHighScore.h index 862edbc..d563953 100644 --- a/Sources/SeriousSam/GUI/Menus/MHighScore.h +++ b/Sources/SeriousSam/GUI/Menus/MHighScore.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_HIGHSCORE_H #define SE_INCL_GAME_MENU_HIGHSCORE_H diff --git a/Sources/SeriousSam/GUI/Menus/MInGame.cpp b/Sources/SeriousSam/GUI/Menus/MInGame.cpp index 93b4dbc..3673783 100644 --- a/Sources/SeriousSam/GUI/Menus/MInGame.cpp +++ b/Sources/SeriousSam/GUI/Menus/MInGame.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MInGame.h b/Sources/SeriousSam/GUI/Menus/MInGame.h index 548c2f6..c337fc3 100644 --- a/Sources/SeriousSam/GUI/Menus/MInGame.h +++ b/Sources/SeriousSam/GUI/Menus/MInGame.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_INGAME_H #define SE_INCL_GAME_MENU_INGAME_H diff --git a/Sources/SeriousSam/GUI/Menus/MLevels.cpp b/Sources/SeriousSam/GUI/Menus/MLevels.cpp index bf90414..141236f 100644 --- a/Sources/SeriousSam/GUI/Menus/MLevels.cpp +++ b/Sources/SeriousSam/GUI/Menus/MLevels.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MLevels.h b/Sources/SeriousSam/GUI/Menus/MLevels.h index f6272df..d39fe06 100644 --- a/Sources/SeriousSam/GUI/Menus/MLevels.h +++ b/Sources/SeriousSam/GUI/Menus/MLevels.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_LEVELS_H #define SE_INCL_GAME_MENU_LEVELS_H diff --git a/Sources/SeriousSam/GUI/Menus/MLoadSave.cpp b/Sources/SeriousSam/GUI/Menus/MLoadSave.cpp index 7d18238..75951ed 100644 --- a/Sources/SeriousSam/GUI/Menus/MLoadSave.cpp +++ b/Sources/SeriousSam/GUI/Menus/MLoadSave.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MLoadSave.h b/Sources/SeriousSam/GUI/Menus/MLoadSave.h index 228cfce..44e794e 100644 --- a/Sources/SeriousSam/GUI/Menus/MLoadSave.h +++ b/Sources/SeriousSam/GUI/Menus/MLoadSave.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_LOADSAVE_H #define SE_INCL_GAME_MENU_LOADSAVE_H diff --git a/Sources/SeriousSam/GUI/Menus/MMain.cpp b/Sources/SeriousSam/GUI/Menus/MMain.cpp index 5cb9edb..6bc4ecc 100644 --- a/Sources/SeriousSam/GUI/Menus/MMain.cpp +++ b/Sources/SeriousSam/GUI/Menus/MMain.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MMain.h b/Sources/SeriousSam/GUI/Menus/MMain.h index 5ff07ef..e1e920d 100644 --- a/Sources/SeriousSam/GUI/Menus/MMain.h +++ b/Sources/SeriousSam/GUI/Menus/MMain.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_MAIN_H #define SE_INCL_GAME_MENU_MAIN_H diff --git a/Sources/SeriousSam/GUI/Menus/MNetwork.cpp b/Sources/SeriousSam/GUI/Menus/MNetwork.cpp index e4d63d6..bd20de2 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetwork.cpp +++ b/Sources/SeriousSam/GUI/Menus/MNetwork.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MNetwork.h b/Sources/SeriousSam/GUI/Menus/MNetwork.h index 5769349..44a523f 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetwork.h +++ b/Sources/SeriousSam/GUI/Menus/MNetwork.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_NETWORK_H #define SE_INCL_GAME_MENU_NETWORK_H diff --git a/Sources/SeriousSam/GUI/Menus/MNetworkJoin.cpp b/Sources/SeriousSam/GUI/Menus/MNetworkJoin.cpp index 6afc217..61430dc 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetworkJoin.cpp +++ b/Sources/SeriousSam/GUI/Menus/MNetworkJoin.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MNetworkJoin.h b/Sources/SeriousSam/GUI/Menus/MNetworkJoin.h index 144c28a..7875785 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetworkJoin.h +++ b/Sources/SeriousSam/GUI/Menus/MNetworkJoin.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_NETWORKJOIN_H #define SE_INCL_GAME_MENU_NETWORKJOIN_H diff --git a/Sources/SeriousSam/GUI/Menus/MNetworkOpen.cpp b/Sources/SeriousSam/GUI/Menus/MNetworkOpen.cpp index 1dbdc55..895b00a 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetworkOpen.cpp +++ b/Sources/SeriousSam/GUI/Menus/MNetworkOpen.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MNetworkOpen.h b/Sources/SeriousSam/GUI/Menus/MNetworkOpen.h index 11a5759..ef1094e 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetworkOpen.h +++ b/Sources/SeriousSam/GUI/Menus/MNetworkOpen.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_NETWORKOPEN_H #define SE_INCL_GAME_MENU_NETWORKOPEN_H diff --git a/Sources/SeriousSam/GUI/Menus/MNetworkStart.cpp b/Sources/SeriousSam/GUI/Menus/MNetworkStart.cpp index f84761f..9e24308 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetworkStart.cpp +++ b/Sources/SeriousSam/GUI/Menus/MNetworkStart.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MNetworkStart.h b/Sources/SeriousSam/GUI/Menus/MNetworkStart.h index e58b27b..9645fab 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetworkStart.h +++ b/Sources/SeriousSam/GUI/Menus/MNetworkStart.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_NETWORKSTART_H #define SE_INCL_GAME_MENU_NETWORKSTART_H diff --git a/Sources/SeriousSam/GUI/Menus/MOptions.cpp b/Sources/SeriousSam/GUI/Menus/MOptions.cpp index b2dd54b..a038463 100644 --- a/Sources/SeriousSam/GUI/Menus/MOptions.cpp +++ b/Sources/SeriousSam/GUI/Menus/MOptions.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MOptions.h b/Sources/SeriousSam/GUI/Menus/MOptions.h index c0283db..905aab9 100644 --- a/Sources/SeriousSam/GUI/Menus/MOptions.h +++ b/Sources/SeriousSam/GUI/Menus/MOptions.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_OPTIONS_H #define SE_INCL_GAME_MENU_OPTIONS_H diff --git a/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp b/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp index 6e981cb..3478a8f 100644 --- a/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp +++ b/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MPlayerProfile.h b/Sources/SeriousSam/GUI/Menus/MPlayerProfile.h index 53e5139..948e51a 100644 --- a/Sources/SeriousSam/GUI/Menus/MPlayerProfile.h +++ b/Sources/SeriousSam/GUI/Menus/MPlayerProfile.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_PLAYERPROFILE_H #define SE_INCL_GAME_MENU_PLAYERPROFILE_H diff --git a/Sources/SeriousSam/GUI/Menus/MRenderingOptions.h b/Sources/SeriousSam/GUI/Menus/MRenderingOptions.h index c41a546..5ccaff1 100644 --- a/Sources/SeriousSam/GUI/Menus/MRenderingOptions.h +++ b/Sources/SeriousSam/GUI/Menus/MRenderingOptions.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_RENDERINGOPTIONS_H #define SE_INCL_GAME_MENU_RENDERINGOPTIONS_H diff --git a/Sources/SeriousSam/GUI/Menus/MSelectPlayers.cpp b/Sources/SeriousSam/GUI/Menus/MSelectPlayers.cpp index 1c90f16..4e0d306 100644 --- a/Sources/SeriousSam/GUI/Menus/MSelectPlayers.cpp +++ b/Sources/SeriousSam/GUI/Menus/MSelectPlayers.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MSelectPlayers.h b/Sources/SeriousSam/GUI/Menus/MSelectPlayers.h index e08a31d..a743ec5 100644 --- a/Sources/SeriousSam/GUI/Menus/MSelectPlayers.h +++ b/Sources/SeriousSam/GUI/Menus/MSelectPlayers.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_SELECTPLAYERS_H #define SE_INCL_GAME_MENU_SELECTPLAYERS_H diff --git a/Sources/SeriousSam/GUI/Menus/MServers.cpp b/Sources/SeriousSam/GUI/Menus/MServers.cpp index 92f67e5..943f8de 100644 --- a/Sources/SeriousSam/GUI/Menus/MServers.cpp +++ b/Sources/SeriousSam/GUI/Menus/MServers.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MServers.h b/Sources/SeriousSam/GUI/Menus/MServers.h index be7dadc..cb2d7d3 100644 --- a/Sources/SeriousSam/GUI/Menus/MServers.h +++ b/Sources/SeriousSam/GUI/Menus/MServers.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_SERVERS_H #define SE_INCL_GAME_MENU_SERVERS_H diff --git a/Sources/SeriousSam/GUI/Menus/MSinglePlayer.cpp b/Sources/SeriousSam/GUI/Menus/MSinglePlayer.cpp index 130b66d..a8c3522 100644 --- a/Sources/SeriousSam/GUI/Menus/MSinglePlayer.cpp +++ b/Sources/SeriousSam/GUI/Menus/MSinglePlayer.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MSinglePlayer.h b/Sources/SeriousSam/GUI/Menus/MSinglePlayer.h index e472d69..5dc0efb 100644 --- a/Sources/SeriousSam/GUI/Menus/MSinglePlayer.h +++ b/Sources/SeriousSam/GUI/Menus/MSinglePlayer.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_SINGLEPLAYER_H #define SE_INCL_GAME_MENU_SINGLEPLAYER_H diff --git a/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.cpp b/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.cpp index 41a0d47..d4ad48b 100644 --- a/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.cpp +++ b/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.h b/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.h index 37914e0..1d91f95 100644 --- a/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.h +++ b/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_SINGLEPLAYERNEW_H #define SE_INCL_GAME_MENU_SINGLEPLAYERNEW_H diff --git a/Sources/SeriousSam/GUI/Menus/MSplitScreen.cpp b/Sources/SeriousSam/GUI/Menus/MSplitScreen.cpp index 8920eb4..3144d80 100644 --- a/Sources/SeriousSam/GUI/Menus/MSplitScreen.cpp +++ b/Sources/SeriousSam/GUI/Menus/MSplitScreen.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MSplitScreen.h b/Sources/SeriousSam/GUI/Menus/MSplitScreen.h index dca86ec..ed73579 100644 --- a/Sources/SeriousSam/GUI/Menus/MSplitScreen.h +++ b/Sources/SeriousSam/GUI/Menus/MSplitScreen.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_SPLITSCREEN_H #define SE_INCL_GAME_MENU_SPLITSCREEN_H diff --git a/Sources/SeriousSam/GUI/Menus/MSplitStart.cpp b/Sources/SeriousSam/GUI/Menus/MSplitStart.cpp index fafaccf..058e872 100644 --- a/Sources/SeriousSam/GUI/Menus/MSplitStart.cpp +++ b/Sources/SeriousSam/GUI/Menus/MSplitStart.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MSplitStart.h b/Sources/SeriousSam/GUI/Menus/MSplitStart.h index 5ccaaa9..1c28069 100644 --- a/Sources/SeriousSam/GUI/Menus/MSplitStart.h +++ b/Sources/SeriousSam/GUI/Menus/MSplitStart.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_SPLITSTART_H #define SE_INCL_GAME_MENU_SPLITSTART_H diff --git a/Sources/SeriousSam/GUI/Menus/MVar.cpp b/Sources/SeriousSam/GUI/Menus/MVar.cpp index 373b5de..b012341 100644 --- a/Sources/SeriousSam/GUI/Menus/MVar.cpp +++ b/Sources/SeriousSam/GUI/Menus/MVar.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MVar.h b/Sources/SeriousSam/GUI/Menus/MVar.h index 02186e0..4601e30 100644 --- a/Sources/SeriousSam/GUI/Menus/MVar.h +++ b/Sources/SeriousSam/GUI/Menus/MVar.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_VAR_H #define SE_INCL_GAME_MENU_VAR_H diff --git a/Sources/SeriousSam/GUI/Menus/MVideoOptions.cpp b/Sources/SeriousSam/GUI/Menus/MVideoOptions.cpp index f7ddaaa..3690a61 100644 --- a/Sources/SeriousSam/GUI/Menus/MVideoOptions.cpp +++ b/Sources/SeriousSam/GUI/Menus/MVideoOptions.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MVideoOptions.h b/Sources/SeriousSam/GUI/Menus/MVideoOptions.h index 9904f48..2cc0c69 100644 --- a/Sources/SeriousSam/GUI/Menus/MVideoOptions.h +++ b/Sources/SeriousSam/GUI/Menus/MVideoOptions.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_GAME_MENU_VIDEOOPTIONS_H #define SE_INCL_GAME_MENU_VIDEOOPTIONS_H diff --git a/Sources/SeriousSam/GUI/Menus/Menu.cpp b/Sources/SeriousSam/GUI/Menus/Menu.cpp index 125fc91..8c99132 100644 --- a/Sources/SeriousSam/GUI/Menus/Menu.cpp +++ b/Sources/SeriousSam/GUI/Menus/Menu.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/Menu.h b/Sources/SeriousSam/GUI/Menus/Menu.h index ab4535b..920a670 100644 --- a/Sources/SeriousSam/GUI/Menus/Menu.h +++ b/Sources/SeriousSam/GUI/Menus/Menu.h @@ -1,13 +1,23 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_H #define SE_INCL_MENU_H #ifdef PRAGMA_ONCE -#pragma once + #pragma once #endif - - // set new thumbnail void SetThumbnail(CTFileName fn); // remove thumbnail diff --git a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp index f11c406..f06e376 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MenuActions.h b/Sources/SeriousSam/GUI/Menus/MenuActions.h index d9cd253..0a82848 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuActions.h +++ b/Sources/SeriousSam/GUI/Menus/MenuActions.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_ACTIONS_H #define SE_INCL_MENU_ACTIONS_H diff --git a/Sources/SeriousSam/GUI/Menus/MenuManager.cpp b/Sources/SeriousSam/GUI/Menus/MenuManager.cpp index 4a28b52..4cf434a 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuManager.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuManager.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MenuManager.h b/Sources/SeriousSam/GUI/Menus/MenuManager.h index ca3ba28..400ac49 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuManager.h +++ b/Sources/SeriousSam/GUI/Menus/MenuManager.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENUMANAGER_H #define SE_INCL_MENUMANAGER_H diff --git a/Sources/SeriousSam/GUI/Menus/MenuPrinting.cpp b/Sources/SeriousSam/GUI/Menus/MenuPrinting.cpp index b3cea39..f482cbe 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuPrinting.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuPrinting.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" diff --git a/Sources/SeriousSam/GUI/Menus/MenuPrinting.h b/Sources/SeriousSam/GUI/Menus/MenuPrinting.h index b28acc6..2dd7a4d 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuPrinting.h +++ b/Sources/SeriousSam/GUI/Menus/MenuPrinting.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENUPRINTING_H #define SE_INCL_MENUPRINTING_H diff --git a/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp b/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp index a5db1cf..07e337b 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* This file contains starter fuctions for all menus. */ diff --git a/Sources/SeriousSam/GUI/Menus/MenuStarters.h b/Sources/SeriousSam/GUI/Menus/MenuStarters.h index b023277..3ae8265 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStarters.h +++ b/Sources/SeriousSam/GUI/Menus/MenuStarters.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_STARTERS_H #define SE_INCL_MENU_STARTERS_H diff --git a/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp b/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp index 8054efb..e2cb17d 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* This file contains additional functions called from starters. */ diff --git a/Sources/SeriousSam/GUI/Menus/MenuStartersAF.h b/Sources/SeriousSam/GUI/Menus/MenuStartersAF.h index b0be0c1..82f96af 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStartersAF.h +++ b/Sources/SeriousSam/GUI/Menus/MenuStartersAF.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_STARTERSAF_H #define SE_INCL_MENU_STARTERSAF_H diff --git a/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp b/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp index 0d17a62..375294b 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/GUI/Menus/MenuStuff.h b/Sources/SeriousSam/GUI/Menus/MenuStuff.h index efc4187..08a4a25 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStuff.h +++ b/Sources/SeriousSam/GUI/Menus/MenuStuff.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_MENU_STUFF_H #define SE_INCL_MENU_STUFF_H diff --git a/Sources/SeriousSam/LCDDrawing.cpp b/Sources/SeriousSam/LCDDrawing.cpp index d933f2c..2d4cb55 100644 --- a/Sources/SeriousSam/LCDDrawing.cpp +++ b/Sources/SeriousSam/LCDDrawing.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "Stdh.h" #include "LCDDrawing.h" diff --git a/Sources/SeriousSam/LCDDrawing.h b/Sources/SeriousSam/LCDDrawing.h index 5e336df..3bb5f42 100644 --- a/Sources/SeriousSam/LCDDrawing.h +++ b/Sources/SeriousSam/LCDDrawing.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_LCDDRAWING_H #define SE_INCL_LCDDRAWING_H diff --git a/Sources/SeriousSam/LevelInfo.cpp b/Sources/SeriousSam/LevelInfo.cpp index 2b3c80d..407ae84 100644 --- a/Sources/SeriousSam/LevelInfo.cpp +++ b/Sources/SeriousSam/LevelInfo.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include "LevelInfo.h" diff --git a/Sources/SeriousSam/LevelInfo.h b/Sources/SeriousSam/LevelInfo.h index 9e9c3d0..9be08cd 100644 --- a/Sources/SeriousSam/LevelInfo.h +++ b/Sources/SeriousSam/LevelInfo.h @@ -1,5 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ extern CListHead _lhAutoDemos; extern CListHead _lhAllLevels; diff --git a/Sources/SeriousSam/MainWindow.cpp b/Sources/SeriousSam/MainWindow.cpp index 677c4fc..a4b2de2 100644 --- a/Sources/SeriousSam/MainWindow.cpp +++ b/Sources/SeriousSam/MainWindow.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include "MainWindow.h" diff --git a/Sources/SeriousSam/MainWindow.h b/Sources/SeriousSam/MainWindow.h index 5531439..fd80a38 100644 --- a/Sources/SeriousSam/MainWindow.h +++ b/Sources/SeriousSam/MainWindow.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ extern BOOL _bWindowChanging; // ignores window messages while this is set extern HWND _hwndMain; diff --git a/Sources/SeriousSam/SeriousSam.cpp b/Sources/SeriousSam/SeriousSam.cpp index 6e47fc2..5276d46 100644 --- a/Sources/SeriousSam/SeriousSam.cpp +++ b/Sources/SeriousSam/SeriousSam.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include diff --git a/Sources/SeriousSam/SeriousSam.h b/Sources/SeriousSam/SeriousSam.h index 6afc32d..d98b629 100644 --- a/Sources/SeriousSam/SeriousSam.h +++ b/Sources/SeriousSam/SeriousSam.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define APPLICATION_NAME "SeriousSam" #include "CDCheck.h" diff --git a/Sources/SeriousSam/SplashScreen.cpp b/Sources/SeriousSam/SplashScreen.cpp index afc6843..da8cebe 100644 --- a/Sources/SeriousSam/SplashScreen.cpp +++ b/Sources/SeriousSam/SplashScreen.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" #include "resource.h" diff --git a/Sources/SeriousSam/SplashScreen.h b/Sources/SeriousSam/SplashScreen.h index c5b290f..95589ae 100644 --- a/Sources/SeriousSam/SplashScreen.h +++ b/Sources/SeriousSam/SplashScreen.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ void ShowSplashScreen(HINSTANCE hInstance); void HideSplashScreen(void); \ No newline at end of file diff --git a/Sources/SeriousSam/StdH.cpp b/Sources/SeriousSam/StdH.cpp index a0fb0be..7ab2766 100644 --- a/Sources/SeriousSam/StdH.cpp +++ b/Sources/SeriousSam/StdH.cpp @@ -1,3 +1,15 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" \ No newline at end of file diff --git a/Sources/SeriousSam/StdH.h b/Sources/SeriousSam/StdH.h index e918afb..0e407da 100644 --- a/Sources/SeriousSam/StdH.h +++ b/Sources/SeriousSam/StdH.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include diff --git a/Sources/SeriousSam/VarList.cpp b/Sources/SeriousSam/VarList.cpp index 350a055..fed329a 100644 --- a/Sources/SeriousSam/VarList.cpp +++ b/Sources/SeriousSam/VarList.cpp @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "StdH.h" diff --git a/Sources/SeriousSam/VarList.h b/Sources/SeriousSam/VarList.h index da12450..e4ff6d2 100644 --- a/Sources/SeriousSam/VarList.h +++ b/Sources/SeriousSam/VarList.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SE_INCL_VARLIST_H #define SE_INCL_VARLIST_H diff --git a/Sources/SeriousSam/resource.h b/Sources/SeriousSam/resource.h index 252c84c..ac53b8a 100644 --- a/Sources/SeriousSam/resource.h +++ b/Sources/SeriousSam/resource.h @@ -1,4 +1,16 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ +/* Copyright (c) 2002-2012 Croteam Ltd. +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ //{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. From ca5873a2afdddf1df415869e81fd85e278903796 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Thu, 31 Mar 2016 19:21:46 +0300 Subject: [PATCH 28/34] GameExecutable: Some cleanup and reorder. Clean clean clean! --- Sources/SeriousSam/GUI/Menus/MConfirm.cpp | 10 + Sources/SeriousSam/GUI/Menus/Menu.cpp | 3 - Sources/SeriousSam/GUI/Menus/MenuActions.cpp | 113 +-- Sources/SeriousSam/GUI/Menus/MenuStarters.cpp | 928 +++++++++--------- 4 files changed, 513 insertions(+), 541 deletions(-) diff --git a/Sources/SeriousSam/GUI/Menus/MConfirm.cpp b/Sources/SeriousSam/GUI/Menus/MConfirm.cpp index 52267fe..6555cbb 100644 --- a/Sources/SeriousSam/GUI/Menus/MConfirm.cpp +++ b/Sources/SeriousSam/GUI/Menus/MConfirm.cpp @@ -66,4 +66,14 @@ void CConfirmMenu::BeSmall(void) gm_mgConfirmLabel.mg_iCenterI = -1; gm_mgConfirmYes.mg_boxOnScreen = BoxPopupYesSmall(); gm_mgConfirmNo.mg_boxOnScreen = BoxPopupNoSmall(); +} + +// return TRUE if handled +BOOL CConfirmMenu::OnKeyDown(int iVKey) +{ + if ((iVKey == VK_ESCAPE || iVKey == VK_RBUTTON) && gm_mgConfirmNo.mg_pActivatedFunction != NULL) { + gm_mgConfirmNo.OnActivate(); + return TRUE; + } + return CGameMenu::OnKeyDown(iVKey); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/Menu.cpp b/Sources/SeriousSam/GUI/Menus/Menu.cpp index 8c99132..c383533 100644 --- a/Sources/SeriousSam/GUI/Menus/Menu.cpp +++ b/Sources/SeriousSam/GUI/Menus/Menu.cpp @@ -47,9 +47,6 @@ GameMode _gmMenuGameMode = GM_NONE; GameMode _gmRunningGameMode = GM_NONE; CListHead _lhServers; - -extern BOOL IsCDInDrive(void); - void OnPlayerSelect(void); // last tick done diff --git a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp index f06e376..3a88f15 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp @@ -100,6 +100,8 @@ static void SizeToResolution(PIX pixSizeI, PIX pixSizeJ, INDEX &iRes) } // ------------------------ CConfirmMenu implementation +#define CMENU _pGUIM->gmConfirmMenu + CTFileName _fnmModSelected; CTString _strModURLSelected; CTString _strModServerSelected; @@ -114,10 +116,10 @@ void ExitConfirm(void) { _pConfimedYes = &ExitGame; _pConfimedNo = NULL; - _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); - _pGUIM->gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - _pGUIM->gmConfirmMenu.BeLarge(); - ChangeToMenu(&_pGUIM->gmConfirmMenu); + CMENU.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + CMENU.BeLarge(); + ChangeToMenu(&CMENU); } void StopCurrentGame(void) @@ -132,10 +134,10 @@ void StopConfirm(void) { _pConfimedYes = &StopCurrentGame; _pConfimedNo = NULL; - _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); - _pGUIM->gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - _pGUIM->gmConfirmMenu.BeLarge(); - ChangeToMenu(&_pGUIM->gmConfirmMenu); + CMENU.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + CMENU.BeLarge(); + ChangeToMenu(&CMENU); } void ModLoadYes(void) @@ -170,10 +172,10 @@ extern void ModConnectConfirm(void) CPrintF(TRANS("Server is running a different MOD (%s).\nYou need to reload to connect.\n"), _fnmModSelected); _pConfimedYes = &ModConnect; _pConfimedNo = NULL; - _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("CHANGE THE MOD?"); - _pGUIM->gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - _pGUIM->gmConfirmMenu.BeLarge(); - ChangeToMenu(&_pGUIM->gmConfirmMenu); + CMENU.gm_mgConfirmLabel.mg_strText = TRANS("CHANGE THE MOD?"); + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + CMENU.BeLarge(); + ChangeToMenu(&CMENU); } void SaveConfirm(void) @@ -181,10 +183,10 @@ void SaveConfirm(void) extern void OnFileSaveOK(void); _pConfimedYes = &OnFileSaveOK; _pConfimedNo = NULL; - _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("OVERWRITE?"); - _pGUIM->gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - _pGUIM->gmConfirmMenu.BeLarge(); - ChangeToMenu(&_pGUIM->gmConfirmMenu); + CMENU.gm_mgConfirmLabel.mg_strText = TRANS("OVERWRITE?"); + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + CMENU.BeLarge(); + ChangeToMenu(&CMENU); } void ExitAndSpawnExplorer(void) @@ -199,20 +201,11 @@ void ModNotInstalled(void) { _pConfimedYes = &ExitAndSpawnExplorer; _pConfimedNo = NULL; - _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText.PrintF( + CMENU.gm_mgConfirmLabel.mg_strText.PrintF( TRANS("You don't have MOD '%s' installed.\nDo you want to visit its web site?"), (const char*)_fnmModSelected); - _pGUIM->gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - _pGUIM->gmConfirmMenu.BeSmall(); - ChangeToMenu(&_pGUIM->gmConfirmMenu); - - /* - gmDisabledFunction.gm_pgmParentMenu = pgmCurrentMenu; - mgDisabledMenuButton.mg_strText.PrintF( - TRANS("You don't have MOD '%s' installed.\nPlease visit Croteam website for updates."), _fnmModSelected); - mgDisabledTitle.mg_strText = TRANS("MOD REQUIRED"); - _strModURLSelected - ChangeToMenu( &gmDisabledFunction); - */ + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + CMENU.BeSmall(); + ChangeToMenu(&CMENU); } @@ -220,10 +213,10 @@ extern void ModConfirm(void) { _pConfimedYes = &ModLoadYes; _pConfimedNo = NULL; - _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("LOAD THIS MOD?"); - _pGUIM->gmConfirmMenu.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; - _pGUIM->gmConfirmMenu.BeLarge(); - ChangeToMenu(&_pGUIM->gmConfirmMenu); + CMENU.gm_mgConfirmLabel.mg_strText = TRANS("LOAD THIS MOD?"); + CMENU.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + CMENU.BeLarge(); + ChangeToMenu(&CMENU); } void VideoConfirm(void) @@ -231,27 +224,27 @@ void VideoConfirm(void) // FIXUP: keyboard focus lost when going from full screen to window mode // due to WM_MOUSEMOVE being sent _bMouseUsedLast = FALSE; - _pmgUnderCursor = _pGUIM->gmConfirmMenu.gm_pmgSelectedByDefault; + _pmgUnderCursor = CMENU.gm_pmgSelectedByDefault; _pConfimedYes = NULL; void RevertVideoSettings(void); _pConfimedNo = RevertVideoSettings; - _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("KEEP THIS SETTING?"); - _pGUIM->gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - _pGUIM->gmConfirmMenu.BeLarge(); - ChangeToMenu(&_pGUIM->gmConfirmMenu); + CMENU.gm_mgConfirmLabel.mg_strText = TRANS("KEEP THIS SETTING?"); + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + CMENU.BeLarge(); + ChangeToMenu(&CMENU); } void CDConfirm(void(*pOk)(void)) { _pConfimedYes = pOk; _pConfimedNo = NULL; - _pGUIM->gmConfirmMenu.gm_mgConfirmLabel.mg_strText = TRANS("PLEASE INSERT GAME CD?"); - if (pgmCurrentMenu != &_pGUIM->gmConfirmMenu) { - _pGUIM->gmConfirmMenu.gm_pgmParentMenu = pgmCurrentMenu; - _pGUIM->gmConfirmMenu.BeLarge(); - ChangeToMenu(&_pGUIM->gmConfirmMenu); + CMENU.gm_mgConfirmLabel.mg_strText = TRANS("PLEASE INSERT GAME CD?"); + if (pgmCurrentMenu != &CMENU) { + CMENU.gm_pgmParentMenu = pgmCurrentMenu; + CMENU.BeLarge(); + ChangeToMenu(&CMENU); } } @@ -274,19 +267,11 @@ void ConfirmNo(void) } void InitActionsForConfirmMenu() { - _pGUIM->gmConfirmMenu.gm_mgConfirmYes.mg_pActivatedFunction = &ConfirmYes; - _pGUIM->gmConfirmMenu.gm_mgConfirmNo.mg_pActivatedFunction = &ConfirmNo; + CMENU.gm_mgConfirmYes.mg_pActivatedFunction = &ConfirmYes; + CMENU.gm_mgConfirmNo.mg_pActivatedFunction = &ConfirmNo; } -// return TRUE if handled -BOOL CConfirmMenu::OnKeyDown(int iVKey) -{ - if (iVKey == VK_ESCAPE || iVKey == VK_RBUTTON) { - ConfirmNo(); - return TRUE; - } - return CGameMenu::OnKeyDown(iVKey); -} +#undef CMENU // ------------------------ CMainMenu implementation #define CMENU _pGUIM->gmMainMenu @@ -348,9 +333,7 @@ extern void SetDemoStartStopRecText(void) CMENU.gm_mgDemoRec.SetText(TRANS("STOP RECORDING")); CMENU.gm_mgDemoRec.mg_strTip = TRANS("stop current recording"); CMENU.gm_mgDemoRec.mg_pActivatedFunction = &StopRecordingDemo; - } - else - { + } else { CMENU.gm_mgDemoRec.SetText(TRANS("RECORD DEMO")); CMENU.gm_mgDemoRec.mg_strTip = TRANS("start recording current game"); CMENU.gm_mgDemoRec.mg_pActivatedFunction = &StartDemoSaveMenu; @@ -399,12 +382,6 @@ void InitActionsForSinglePlayerMenu() { // ------------------------ CSinglePlayerNewMenu implementation void StartSinglePlayerGame(void) { - /* if (!IsCDInDrive()) { - CDConfirm(StartSinglePlayerGame); - return; - } - */ - _pGame->gm_StartSplitScreenCfg = CGame::SSC_PLAY1; _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_iSinglePlayer; @@ -420,8 +397,7 @@ void StartSinglePlayerGame(void) { StopMenus(); _gmRunningGameMode = GM_SINGLE_PLAYER; - } - else { + } else { _gmRunningGameMode = GM_NONE; } } @@ -998,6 +974,7 @@ void InitActionsForVarMenu() { } #undef CMENU + // ------------------------ CServersMenu implementation extern void RefreshServerList(void) { @@ -1013,8 +990,7 @@ void SortByColumn(int i) { if (_pGUIM->gmServersMenu.gm_mgList.mg_iSort == i) { _pGUIM->gmServersMenu.gm_mgList.mg_bSortDown = !_pGUIM->gmServersMenu.gm_mgList.mg_bSortDown; - } - else { + } else { _pGUIM->gmServersMenu.gm_mgList.mg_bSortDown = FALSE; } _pGUIM->gmServersMenu.gm_mgList.mg_iSort = i; @@ -1233,8 +1209,7 @@ extern void SelectPlayersFillMenu(void) if (bHasPlayers && CMENU.gm_mgSplitScreenCfg.mg_iSelected >= 1) { CMENU.gm_mgNotes.mg_strText = TRANS("Make sure you set different controls for each player!"); - } - else { + } else { CMENU.gm_mgNotes.mg_strText = ""; } } diff --git a/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp b/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp index 07e337b..d8ec6f9 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp @@ -33,6 +33,7 @@ extern CTFileName _fnmModSelected; extern CTString _strModURLSelected; extern CTString _strModServerSelected; + void StartVideoOptionsMenu(void) { ChangeToMenu(&_pGUIM->gmVideoOptionsMenu); @@ -104,8 +105,465 @@ void StartSinglePlayerNewMenu(void) ChangeToMenu(&_pGUIM->gmSinglePlayerNewMenu); } +// game options var settings +void StartVarGameOptions(void) +{ + _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); + _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\GameOptions.cfg"); + ChangeToMenu(&_pGUIM->gmVarMenu); +} + +void StartSinglePlayerGameOptions(void) +{ + _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); + _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\SPOptions.cfg"); + ChangeToMenu(&_pGUIM->gmVarMenu); + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; +} + +void StartGameOptionsFromNetwork(void) +{ + StartVarGameOptions(); + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; +} + +void StartGameOptionsFromSplitScreen(void) +{ + StartVarGameOptions(); + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; +} + +// rendering options var settings +void StartRenderingOptionsMenu(void) +{ + _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("RENDERING OPTIONS"); + _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\RenderingOptions.cfg"); + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmVideoOptionsMenu; + ChangeToMenu(&_pGUIM->gmVarMenu); +} + +void StartCustomizeKeyboardMenu(void) +{ + ChangeToMenu(&_pGUIM->gmCustomizeKeyboardMenu); +} + +void StartCustomizeAxisMenu(void) +{ + ChangeToMenu(&_pGUIM->gmCustomizeAxisMenu); +} + +void StartOptionsMenu(void) +{ + _pGUIM->gmOptionsMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmOptionsMenu); +} + +void StartCurrentLoadMenu() +{ + if (_gmRunningGameMode == GM_NETWORK) { + void StartNetworkLoadMenu(void); + StartNetworkLoadMenu(); + } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { + void StartSplitScreenLoadMenu(void); + StartSplitScreenLoadMenu(); + } else { + void StartSinglePlayerLoadMenu(void); + StartSinglePlayerLoadMenu(); + } +} + +void StartCurrentSaveMenu() +{ + if (_gmRunningGameMode == GM_NETWORK) { + void StartNetworkSaveMenu(void); + StartNetworkSaveMenu(); + } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { + void StartSplitScreenSaveMenu(void); + StartSplitScreenSaveMenu(); + } else { + void StartSinglePlayerSaveMenu(void); + StartSinglePlayerSaveMenu(); + } +} + +void StartCurrentQuickLoadMenu() +{ + if (_gmRunningGameMode == GM_NETWORK) { + void StartNetworkQuickLoadMenu(void); + StartNetworkQuickLoadMenu(); + } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { + void StartSplitScreenQuickLoadMenu(void); + StartSplitScreenQuickLoadMenu(); + } else { + void StartSinglePlayerQuickLoadMenu(void); + StartSinglePlayerQuickLoadMenu(); + } +} + +void StartChangePlayerMenuFromOptions(void) +{ + _bPlayerMenuFromSinglePlayer = FALSE; + _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; + _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&_pGUIM->gmPlayerProfile); +} + +void StartChangePlayerMenuFromSinglePlayer(void) +{ + _iLocalPlayer = -1; + _bPlayerMenuFromSinglePlayer = TRUE; + _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; + _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + ChangeToMenu(&_pGUIM->gmPlayerProfile); +} + +void StartControlsMenuFromPlayer(void) +{ + _pGUIM->gmControls.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; + ChangeToMenu(&_pGUIM->gmControls); +} + +void StartControlsMenuFromOptions(void) +{ + _pGUIM->gmControls.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&_pGUIM->gmControls); +} + +void StartHighScoreMenu(void) +{ + _pGUIM->gmHighScoreMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmHighScoreMenu); +} + +void StartSplitScreenGame(void) +{ + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + + CTFileName fnWorld = _pGame->gam_strCustomLevel; + + _pGame->gm_strNetworkProvider = "Local"; + CUniversalSessionProperties sp; + _pGame->SetMultiPlayerSession(sp); + if (_pGame->NewGame(fnWorld.FileName(), fnWorld, sp)) + { + StopMenus(); + _gmRunningGameMode = GM_SPLIT_SCREEN; + } else { + _gmRunningGameMode = GM_NONE; + } +} + +void StartNetworkGame(void) +{ + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + + CTFileName fnWorld = _pGame->gam_strCustomLevel; + + _pGame->gm_strNetworkProvider = "TCP/IP Server"; + CUniversalSessionProperties sp; + _pGame->SetMultiPlayerSession(sp); + if (_pGame->NewGame(_pGame->gam_strSessionName, fnWorld, sp)) + { + StopMenus(); + _gmRunningGameMode = GM_NETWORK; + // if starting a dedicated server + if (_pGame->gm_MenuSplitScreenCfg == CGame::SSC_DEDICATED) { + // pull down the console + extern INDEX sam_bToggleConsole; + sam_bToggleConsole = TRUE; + } + } else { + _gmRunningGameMode = GM_NONE; + } +} + +void JoinNetworkGame(void) +{ + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + + _pGame->gm_strNetworkProvider = "TCP/IP Client"; + if (_pGame->JoinGame(CNetworkSession(_pGame->gam_strJoinAddress))) + { + StopMenus(); + _gmRunningGameMode = GM_NETWORK; + } else { + if (_pNetwork->ga_strRequiredMod != "") { + extern CTFileName _fnmModToLoad; + extern CTString _strModServerJoin; + char strModName[256] = { 0 }; + char strModURL[256] = { 0 }; + _pNetwork->ga_strRequiredMod.ScanF("%250[^\\]\\%s", &strModName, &strModURL); + _fnmModSelected = CTString(strModName); + _strModURLSelected = strModURL; + if (_strModURLSelected = "") { + _strModURLSelected = "http://www.croteam.com/mods/Old"; + } + _strModServerSelected.PrintF("%s:%s", _pGame->gam_strJoinAddress, _pShell->GetValue("net_iPort")); + extern void ModConnectConfirm(void); + ModConnectConfirm(); + } + _gmRunningGameMode = GM_NONE; + } +} + +// -------- Servers Menu Functions +#define CMENU _pGUIM->gmServersMenu + +void StartSelectServerLAN(void) +{ + CMENU.m_bInternet = FALSE; + ChangeToMenu(&CMENU); + CMENU.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; +} + +void StartSelectServerNET(void) +{ + CMENU.m_bInternet = TRUE; + ChangeToMenu(&CMENU); + CMENU.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; +} + +#undef CMENU + +// -------- Levels Menu Functions +#define CMENU _pGUIM->gmLevelsMenu + +void StartSelectLevelFromSingle(void) +{ + FilterLevels(GetSpawnFlagsForGameType(-1)); + _pAfterLevelChosen = StartSinglePlayerNewMenuCustom; + ChangeToMenu(&CMENU); + CMENU.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; +} + +void StartSelectLevelFromSplit(void) +{ + FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmSplitStartMenu.gm_mgGameType.mg_iSelected)); + void StartSplitStartMenu(void); + _pAfterLevelChosen = StartSplitStartMenu; + ChangeToMenu(&CMENU); + CMENU.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; +} + +void StartSelectLevelFromNetwork(void) +{ + FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); + void StartNetworkStartMenu(void); + _pAfterLevelChosen = StartNetworkStartMenu; + ChangeToMenu(&CMENU); + CMENU.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; +} + +#undef CMENU + +// -------- Players Selection Menu Functions +#define CMENU _pGUIM->gmSelectPlayersMenu + +void StartSelectPlayersMenuFromSplit(void) +{ + CMENU.gm_bAllowDedicated = FALSE; + CMENU.gm_bAllowObserving = FALSE; + CMENU.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; + CMENU.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; + ChangeToMenu(&CMENU); +} + +void StartSelectPlayersMenuFromNetwork(void) +{ + CMENU.gm_bAllowDedicated = TRUE; + CMENU.gm_bAllowObserving = TRUE; + CMENU.gm_mgStart.mg_pActivatedFunction = &StartNetworkGame; + CMENU.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; + ChangeToMenu(&CMENU); +} + +void StartSelectPlayersMenuFromNetworkLoad(void) +{ + CMENU.gm_bAllowDedicated = FALSE; + CMENU.gm_bAllowObserving = TRUE; + CMENU.gm_mgStart.mg_pActivatedFunction = &StartNetworkLoadGame; + CMENU.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + ChangeToMenu(&CMENU); +} + +void StartSelectPlayersMenuFromSplitScreenLoad(void) +{ + CMENU.gm_bAllowDedicated = FALSE; + CMENU.gm_bAllowObserving = FALSE; + CMENU.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGameLoad; + CMENU.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + ChangeToMenu(&CMENU); +} + +void StartSelectPlayersMenuFromOpen(void) +{ + CMENU.gm_bAllowDedicated = FALSE; + CMENU.gm_bAllowObserving = TRUE; + CMENU.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; + CMENU.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; + ChangeToMenu(&CMENU); + + /*if (sam_strNetworkSettings=="")*/ { + void StartNetworkSettingsMenu(void); + StartNetworkSettingsMenu(); + _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; + _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &CMENU; + } +} + +void StartSelectPlayersMenuFromServers(void) +{ + CMENU.gm_bAllowDedicated = FALSE; + CMENU.gm_bAllowObserving = TRUE; + CMENU.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; + CMENU.gm_pgmParentMenu = &_pGUIM->gmServersMenu; + ChangeToMenu(&CMENU); + + /*if (sam_strNetworkSettings=="")*/ { + void StartNetworkSettingsMenu(void); + StartNetworkSettingsMenu(); + _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmServersMenu; + _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &CMENU; + } +} + +#undef CMENU + +// -------- Save/Load Menu Calling Functions #define CMENU _pGUIM->gmLoadSaveMenu +void StartPlayerModelLoadMenu(void) +{ + CMENU.gm_mgTitle.mg_strText = TRANS("CHOOSE MODEL"); + CMENU.gm_bAllowThumbnails = TRUE; + CMENU.gm_iSortType = LSSORT_FILEUP; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = FALSE; + CMENU.gm_fnmDirectory = CTString("Models\\Player\\"); + CMENU.gm_fnmSelected = _strLastPlayerAppearance; + CMENU.gm_fnmExt = CTString(".amc"); + CMENU.gm_pAfterFileChosen = &LSLoadPlayerModel; + CMENU.gm_mgNotes.mg_strText = ""; + + CMENU.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; + ChangeToMenu(&CMENU); +} + +void StartControlsLoadMenu(void) +{ + CMENU.gm_mgTitle.mg_strText = TRANS("LOAD CONTROLS"); + CMENU.gm_bAllowThumbnails = FALSE; + CMENU.gm_iSortType = LSSORT_FILEUP; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = FALSE; + CMENU.gm_fnmDirectory = CTString("Controls\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmExt = CTString(".ctl"); + CMENU.gm_pAfterFileChosen = &LSLoadControls; + CMENU.gm_mgNotes.mg_strText = ""; + + CMENU.gm_pgmParentMenu = &_pGUIM->gmControls; + ChangeToMenu(&CMENU); +} + +void StartCustomLoadMenu(void) +{ + CMENU.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); + CMENU.gm_bAllowThumbnails = FALSE; + CMENU.gm_iSortType = LSSORT_NAMEUP; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = FALSE; + CMENU.gm_fnmDirectory = CTString("Scripts\\CustomOptions\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmExt = CTString(".cfg"); + CMENU.gm_pAfterFileChosen = &LSLoadCustom; + CMENU.gm_mgNotes.mg_strText = ""; + + CMENU.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&CMENU); +} + +void StartAddonsLoadMenu(void) +{ + CMENU.gm_mgTitle.mg_strText = TRANS("EXECUTE ADDON"); + CMENU.gm_bAllowThumbnails = FALSE; + CMENU.gm_iSortType = LSSORT_NAMEUP; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = FALSE; + CMENU.gm_fnmDirectory = CTString("Scripts\\Addons\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmExt = CTString(".ini"); + CMENU.gm_pAfterFileChosen = &LSLoadAddon; + CMENU.gm_mgNotes.mg_strText = ""; + + CMENU.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&CMENU); +} + +void StartModsLoadMenu(void) +{ + CMENU.gm_mgTitle.mg_strText = TRANS("CHOOSE MOD"); + CMENU.gm_bAllowThumbnails = TRUE; + CMENU.gm_iSortType = LSSORT_NAMEUP; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = FALSE; + CMENU.gm_fnmDirectory = CTString("Mods\\"); + CMENU.gm_fnmSelected = CTString(""); + CMENU.gm_fnmExt = CTString(".des"); + CMENU.gm_pAfterFileChosen = &LSLoadMod; + + CMENU.gm_pgmParentMenu = &_pGUIM->gmMainMenu; + ChangeToMenu(&CMENU); +} + +void StartNetworkSettingsMenu(void) +{ + CMENU.gm_mgTitle.mg_strText = TRANS("CONNECTION SETTINGS"); + CMENU.gm_bAllowThumbnails = FALSE; + CMENU.gm_iSortType = LSSORT_FILEUP; + CMENU.gm_bSave = FALSE; + CMENU.gm_bManage = FALSE; + CMENU.gm_fnmDirectory = CTString("Scripts\\NetSettings\\"); + CMENU.gm_fnmSelected = sam_strNetworkSettings; + CMENU.gm_fnmExt = CTString(".ini"); + CMENU.gm_pAfterFileChosen = &LSLoadNetSettings; + if (sam_strNetworkSettings == "") { + CMENU.gm_mgNotes.mg_strText = TRANS( + "Before joining a network game,\n" + "you have to adjust your connection parameters.\n" + "Choose one option from the list.\n" + "If you have problems with connection, you can adjust\n" + "these parameters again from the Options menu.\n" + ); + } else { + CMENU.gm_mgNotes.mg_strText = ""; + } + + CMENU.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&CMENU); +} + + void StartSinglePlayerQuickLoadMenu(void) { _gmMenuGameMode = GM_SINGLE_PLAYER; @@ -333,475 +791,7 @@ void StartSplitScreenSaveMenu(void) #undef CMENU -// game options var settings -void StartVarGameOptions(void) -{ - _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); - _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\GameOptions.cfg"); - ChangeToMenu(&_pGUIM->gmVarMenu); -} - -void StartSinglePlayerGameOptions(void) -{ - _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); - _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\SPOptions.cfg"); - ChangeToMenu(&_pGUIM->gmVarMenu); - _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; -} - -void StartGameOptionsFromNetwork(void) -{ - StartVarGameOptions(); - _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; -} - -void StartGameOptionsFromSplitScreen(void) -{ - StartVarGameOptions(); - _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; -} - -// rendering options var settings -void StartRenderingOptionsMenu(void) -{ - _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("RENDERING OPTIONS"); - _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\RenderingOptions.cfg"); - _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmVideoOptionsMenu; - ChangeToMenu(&_pGUIM->gmVarMenu); -} - -void StartCustomizeKeyboardMenu(void) -{ - ChangeToMenu(&_pGUIM->gmCustomizeKeyboardMenu); -} - -void StartCustomizeAxisMenu(void) -{ - ChangeToMenu(&_pGUIM->gmCustomizeAxisMenu); -} - -void StartOptionsMenu(void) -{ - _pGUIM->gmOptionsMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmOptionsMenu); -} - -void StartCurrentLoadMenu() -{ - if (_gmRunningGameMode == GM_NETWORK) { - void StartNetworkLoadMenu(void); - StartNetworkLoadMenu(); - } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { - void StartSplitScreenLoadMenu(void); - StartSplitScreenLoadMenu(); - } else { - void StartSinglePlayerLoadMenu(void); - StartSinglePlayerLoadMenu(); - } -} - -void StartCurrentSaveMenu() -{ - if (_gmRunningGameMode == GM_NETWORK) { - void StartNetworkSaveMenu(void); - StartNetworkSaveMenu(); - } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { - void StartSplitScreenSaveMenu(void); - StartSplitScreenSaveMenu(); - } else { - void StartSinglePlayerSaveMenu(void); - StartSinglePlayerSaveMenu(); - } -} - -void StartCurrentQuickLoadMenu() -{ - if (_gmRunningGameMode == GM_NETWORK) { - void StartNetworkQuickLoadMenu(void); - StartNetworkQuickLoadMenu(); - } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { - void StartSplitScreenQuickLoadMenu(void); - StartSplitScreenQuickLoadMenu(); - } else { - void StartSinglePlayerQuickLoadMenu(void); - StartSinglePlayerQuickLoadMenu(); - } -} - -void StartChangePlayerMenuFromOptions(void) -{ - _bPlayerMenuFromSinglePlayer = FALSE; - _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; - _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&_pGUIM->gmPlayerProfile); -} - -void StartChangePlayerMenuFromSinglePlayer(void) -{ - _iLocalPlayer = -1; - _bPlayerMenuFromSinglePlayer = TRUE; - _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; - _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; - ChangeToMenu(&_pGUIM->gmPlayerProfile); -} - -void StartControlsMenuFromPlayer(void) -{ - _pGUIM->gmControls.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; - ChangeToMenu(&_pGUIM->gmControls); -} - -void StartControlsMenuFromOptions(void) -{ - _pGUIM->gmControls.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&_pGUIM->gmControls); -} - -void StartSelectLevelFromSingle(void) -{ - FilterLevels(GetSpawnFlagsForGameType(-1)); - _pAfterLevelChosen = StartSinglePlayerNewMenuCustom; - ChangeToMenu(&_pGUIM->gmLevelsMenu); - _pGUIM->gmLevelsMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; -} - -void StartHighScoreMenu(void) -{ - _pGUIM->gmHighScoreMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmHighScoreMenu); -} - -void StartSplitScreenGame(void) -{ - // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - - CTFileName fnWorld = _pGame->gam_strCustomLevel; - - _pGame->gm_strNetworkProvider = "Local"; - CUniversalSessionProperties sp; - _pGame->SetMultiPlayerSession(sp); - if (_pGame->NewGame(fnWorld.FileName(), fnWorld, sp)) - { - StopMenus(); - _gmRunningGameMode = GM_SPLIT_SCREEN; - } else { - _gmRunningGameMode = GM_NONE; - } -} - -#define CMENU _pGUIM->gmSelectPlayersMenu - -void StartSelectPlayersMenuFromSplit(void) -{ - CMENU.gm_bAllowDedicated = FALSE; - CMENU.gm_bAllowObserving = FALSE; - CMENU.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; - CMENU.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; - ChangeToMenu(&CMENU); -} - -#undef CMENU - -void StartNetworkGame(void) -{ - // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - - CTFileName fnWorld = _pGame->gam_strCustomLevel; - - _pGame->gm_strNetworkProvider = "TCP/IP Server"; - CUniversalSessionProperties sp; - _pGame->SetMultiPlayerSession(sp); - if (_pGame->NewGame(_pGame->gam_strSessionName, fnWorld, sp)) - { - StopMenus(); - _gmRunningGameMode = GM_NETWORK; - // if starting a dedicated server - if (_pGame->gm_MenuSplitScreenCfg == CGame::SSC_DEDICATED) { - // pull down the console - extern INDEX sam_bToggleConsole; - sam_bToggleConsole = TRUE; - } - } else { - _gmRunningGameMode = GM_NONE; - } -} - -#define CMENU _pGUIM->gmSelectPlayersMenu - -void StartSelectPlayersMenuFromNetwork(void) -{ - CMENU.gm_bAllowDedicated = TRUE; - CMENU.gm_bAllowObserving = TRUE; - CMENU.gm_mgStart.mg_pActivatedFunction = &StartNetworkGame; - CMENU.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; - ChangeToMenu(&CMENU); -} - -#undef CMENU - -void JoinNetworkGame(void) -{ - // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - - _pGame->gm_strNetworkProvider = "TCP/IP Client"; - if (_pGame->JoinGame(CNetworkSession(_pGame->gam_strJoinAddress))) - { - StopMenus(); - _gmRunningGameMode = GM_NETWORK; - } else { - if (_pNetwork->ga_strRequiredMod != "") { - extern CTFileName _fnmModToLoad; - extern CTString _strModServerJoin; - char strModName[256] = { 0 }; - char strModURL[256] = { 0 }; - _pNetwork->ga_strRequiredMod.ScanF("%250[^\\]\\%s", &strModName, &strModURL); - _fnmModSelected = CTString(strModName); - _strModURLSelected = strModURL; - if (_strModURLSelected = "") { - _strModURLSelected = "http://www.croteam.com/mods/Old"; - } - _strModServerSelected.PrintF("%s:%s", _pGame->gam_strJoinAddress, _pShell->GetValue("net_iPort")); - extern void ModConnectConfirm(void); - ModConnectConfirm(); - } - _gmRunningGameMode = GM_NONE; - } -} - -#define CMENU _pGUIM->gmSelectPlayersMenu - -void StartSelectPlayersMenuFromOpen(void) -{ - CMENU.gm_bAllowDedicated = FALSE; - CMENU.gm_bAllowObserving = TRUE; - CMENU.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; - CMENU.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; - ChangeToMenu(&CMENU); - - /*if (sam_strNetworkSettings=="")*/ { - void StartNetworkSettingsMenu(void); - StartNetworkSettingsMenu(); - _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; - _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &CMENU; - } -} -void StartSelectPlayersMenuFromServers(void) -{ - CMENU.gm_bAllowDedicated = FALSE; - CMENU.gm_bAllowObserving = TRUE; - CMENU.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; - CMENU.gm_pgmParentMenu = &_pGUIM->gmServersMenu; - ChangeToMenu(&CMENU); - - /*if (sam_strNetworkSettings=="")*/ { - void StartNetworkSettingsMenu(void); - StartNetworkSettingsMenu(); - _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmServersMenu; - _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &CMENU; - } -} - -#undef CMENU - -void StartSelectServerLAN(void) -{ - _pGUIM->gmServersMenu.m_bInternet = FALSE; - ChangeToMenu(&_pGUIM->gmServersMenu); - _pGUIM->gmServersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; -} - -void StartSelectServerNET(void) -{ - _pGUIM->gmServersMenu.m_bInternet = TRUE; - ChangeToMenu(&_pGUIM->gmServersMenu); - _pGUIM->gmServersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; -} - -void StartSelectLevelFromSplit(void) -{ - FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmSplitStartMenu.gm_mgGameType.mg_iSelected)); - void StartSplitStartMenu(void); - _pAfterLevelChosen = StartSplitStartMenu; - ChangeToMenu(&_pGUIM->gmLevelsMenu); - _pGUIM->gmLevelsMenu.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; -} - -void StartSelectLevelFromNetwork(void) -{ - FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); - void StartNetworkStartMenu(void); - _pAfterLevelChosen = StartNetworkStartMenu; - ChangeToMenu(&_pGUIM->gmLevelsMenu); - _pGUIM->gmLevelsMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; -} - -#define CMENU _pGUIM->gmSelectPlayersMenu - -void StartSelectPlayersMenuFromSplitScreen(void) -{ - CMENU.gm_bAllowDedicated = FALSE; - CMENU.gm_bAllowObserving = FALSE; - //CMENU.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; - CMENU.gm_pgmParentMenu = &_pGUIM->gmSplitScreenMenu; - ChangeToMenu(&CMENU); -} - -void StartSelectPlayersMenuFromNetworkLoad(void) -{ - CMENU.gm_bAllowDedicated = FALSE; - CMENU.gm_bAllowObserving = TRUE; - CMENU.gm_mgStart.mg_pActivatedFunction = &StartNetworkLoadGame; - CMENU.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; - ChangeToMenu(&CMENU); -} - -void StartSelectPlayersMenuFromSplitScreenLoad(void) -{ - CMENU.gm_bAllowDedicated = FALSE; - CMENU.gm_bAllowObserving = FALSE; - CMENU.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGameLoad; - CMENU.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; - ChangeToMenu(&CMENU); -} - -#undef CMENU - -// save/load menu calling functions -#define CMENU _pGUIM->gmLoadSaveMenu - -void StartPlayerModelLoadMenu(void) -{ - CMENU.gm_mgTitle.mg_strText = TRANS("CHOOSE MODEL"); - CMENU.gm_bAllowThumbnails = TRUE; - CMENU.gm_iSortType = LSSORT_FILEUP; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = FALSE; - CMENU.gm_fnmDirectory = CTString("Models\\Player\\"); - CMENU.gm_fnmSelected = _strLastPlayerAppearance; - CMENU.gm_fnmExt = CTString(".amc"); - CMENU.gm_pAfterFileChosen = &LSLoadPlayerModel; - CMENU.gm_mgNotes.mg_strText = ""; - - CMENU.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; - ChangeToMenu(&CMENU); -} - -void StartControlsLoadMenu(void) -{ - CMENU.gm_mgTitle.mg_strText = TRANS("LOAD CONTROLS"); - CMENU.gm_bAllowThumbnails = FALSE; - CMENU.gm_iSortType = LSSORT_FILEUP; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = FALSE; - CMENU.gm_fnmDirectory = CTString("Controls\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmExt = CTString(".ctl"); - CMENU.gm_pAfterFileChosen = &LSLoadControls; - CMENU.gm_mgNotes.mg_strText = ""; - - CMENU.gm_pgmParentMenu = &_pGUIM->gmControls; - ChangeToMenu(&CMENU); -} - -void StartCustomLoadMenu(void) -{ - CMENU.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); - CMENU.gm_bAllowThumbnails = FALSE; - CMENU.gm_iSortType = LSSORT_NAMEUP; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = FALSE; - CMENU.gm_fnmDirectory = CTString("Scripts\\CustomOptions\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmExt = CTString(".cfg"); - CMENU.gm_pAfterFileChosen = &LSLoadCustom; - CMENU.gm_mgNotes.mg_strText = ""; - - CMENU.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&CMENU); -} - -void StartAddonsLoadMenu(void) -{ - CMENU.gm_mgTitle.mg_strText = TRANS("EXECUTE ADDON"); - CMENU.gm_bAllowThumbnails = FALSE; - CMENU.gm_iSortType = LSSORT_NAMEUP; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = FALSE; - CMENU.gm_fnmDirectory = CTString("Scripts\\Addons\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmExt = CTString(".ini"); - CMENU.gm_pAfterFileChosen = &LSLoadAddon; - CMENU.gm_mgNotes.mg_strText = ""; - - CMENU.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&CMENU); -} - -void StartModsLoadMenu(void) -{ - CMENU.gm_mgTitle.mg_strText = TRANS("CHOOSE MOD"); - CMENU.gm_bAllowThumbnails = TRUE; - CMENU.gm_iSortType = LSSORT_NAMEUP; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = FALSE; - CMENU.gm_fnmDirectory = CTString("Mods\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmExt = CTString(".des"); - CMENU.gm_pAfterFileChosen = &LSLoadMod; - - CMENU.gm_pgmParentMenu = &_pGUIM->gmMainMenu; - ChangeToMenu(&CMENU); -} - -void StartNetworkSettingsMenu(void) -{ - CMENU.gm_mgTitle.mg_strText = TRANS("CONNECTION SETTINGS"); - CMENU.gm_bAllowThumbnails = FALSE; - CMENU.gm_iSortType = LSSORT_FILEUP; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = FALSE; - CMENU.gm_fnmDirectory = CTString("Scripts\\NetSettings\\"); - CMENU.gm_fnmSelected = sam_strNetworkSettings; - CMENU.gm_fnmExt = CTString(".ini"); - CMENU.gm_pAfterFileChosen = &LSLoadNetSettings; - if (sam_strNetworkSettings == "") { - CMENU.gm_mgNotes.mg_strText = TRANS( - "Before joining a network game,\n" - "you have to adjust your connection parameters.\n" - "Choose one option from the list.\n" - "If you have problems with connection, you can adjust\n" - "these parameters again from the Options menu.\n" - ); - } else { - CMENU.gm_mgNotes.mg_strText = ""; - } - - CMENU.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&CMENU); -} - -#undef CMENU - +// -------- Disabled Menu Calling Function void DisabledFunction(void) { _pGUIM->gmDisabledFunction.gm_pgmParentMenu = pgmCurrentMenu; From e9267112a1ff13c338d2215e158f1bd404b179da Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Thu, 31 Mar 2016 20:12:26 +0300 Subject: [PATCH 29/34] GameExecutable: Get rid of the TECHTESTONLY and _SE_DEMO code. --- Sources/SeriousSam/CmdLine.cpp | 6 ----- Sources/SeriousSam/Credits.cpp | 4 --- Sources/SeriousSam/GUI/Menus/Menu.cpp | 5 ---- Sources/SeriousSam/GUI/Menus/MenuActions.cpp | 27 +++----------------- Sources/SeriousSam/SeriousSam.cpp | 11 ++------ Sources/SeriousSam/StdH.h | 2 -- 6 files changed, 6 insertions(+), 49 deletions(-) diff --git a/Sources/SeriousSam/CmdLine.cpp b/Sources/SeriousSam/CmdLine.cpp index 4156bfe..dfcd7b7 100644 --- a/Sources/SeriousSam/CmdLine.cpp +++ b/Sources/SeriousSam/CmdLine.cpp @@ -112,12 +112,6 @@ void ParseCommandLine(CTString strCmd) cmd_bQuickJoin = TRUE; } else if (strWord=="+game") { CTString strMod = GetNextParam(); -#if _SE_DEMO - if (strMod!="SeriousSam" && strMod!="Warped") { - FatalError(TRANS("This MOD is not allowed in demo version!")); - return; - } -#endif if (strMod!="SeriousSam") { // (we ignore default mod - always use base dir in that case) _fnmMod = "Mods\\"+strMod+"\\"; } diff --git a/Sources/SeriousSam/Credits.cpp b/Sources/SeriousSam/Credits.cpp index 489e9d6..d44db17 100644 --- a/Sources/SeriousSam/Credits.cpp +++ b/Sources/SeriousSam/Credits.cpp @@ -99,11 +99,7 @@ void Credits_On(INDEX iType) LoadOneFile(CTFILENAME("Data\\Credits_End.txt")); } else { _fSpeed = 2.0f; -#if _SE_DEMO || TECHTESTONLY - LoadOneFile(CTFILENAME("Data\\Credits_Demo.txt")); -#else LoadOneFile(CTFILENAME("Data\\Credits.txt")); -#endif } // if some file was loaded if (_bCreditsOn) { diff --git a/Sources/SeriousSam/GUI/Menus/Menu.cpp b/Sources/SeriousSam/GUI/Menus/Menu.cpp index c383533..387fca4 100644 --- a/Sources/SeriousSam/GUI/Menus/Menu.cpp +++ b/Sources/SeriousSam/GUI/Menus/Menu.cpp @@ -259,13 +259,8 @@ void InitializeMenus(void) // initialize and load menu textures _toPointer.SetData_t( CTFILENAME( "Textures\\General\\Pointer.tex")); -#if _SE_DEMO || TECHTESTONLY - _toLogoMenuA.SetData_t( CTFILENAME( "Textures\\Logo\\sam_menulogo256a_demo.tex")); - _toLogoMenuB.SetData_t( CTFILENAME( "Textures\\Logo\\sam_menulogo256b_demo.tex")); -#else _toLogoMenuA.SetData_t( CTFILENAME( "Textures\\Logo\\sam_menulogo256a.tex")); _toLogoMenuB.SetData_t( CTFILENAME( "Textures\\Logo\\sam_menulogo256b.tex")); -#endif } catch( char *strError) { FatalError( strError); diff --git a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp index 3a88f15..97e29c8 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp @@ -37,7 +37,6 @@ INDEX _ctResolutions = 0; CTString * _astrResolutionTexts = NULL; CDisplayMode *_admResolutionModes = NULL; -extern BOOL _bMouseRight = FALSE; extern BOOL _bMouseUsedLast; ENGINE_API extern INDEX snd_iFormat; @@ -281,11 +280,7 @@ void InitActionsForMainMenu() { CMENU.gm_mgNetwork.mg_pActivatedFunction = StartNetworkMenu; CMENU.gm_mgSplitScreen.mg_pActivatedFunction = &StartSplitScreenMenu; CMENU.gm_mgDemo.mg_pActivatedFunction = &StartDemoLoadMenu; -#if TECHTESTONLY - CMENU.gm_mgMods.mg_pActivatedFunction = &DisabledFunction; -#else CMENU.gm_mgMods.mg_pActivatedFunction = &StartModsLoadMenu; -#endif CMENU.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; CMENU.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; CMENU.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; @@ -318,11 +313,7 @@ void InitActionsForInGameMenu() { CMENU.gm_mgSave.mg_pActivatedFunction = &StartCurrentSaveMenu; CMENU.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; CMENU.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; -#if TECHTESTONLY - CMENU.gm_mgStop.mg_pActivatedFunction = &ExitConfirm; -#else CMENU.gm_mgStop.mg_pActivatedFunction = &StopConfirm; -#endif CMENU.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; } @@ -364,11 +355,7 @@ void StartTraining(void) void InitActionsForSinglePlayerMenu() { CMENU.gm_mgNewGame.mg_pActivatedFunction = &StartSinglePlayerNewMenu; -#if _SE_DEMO || TECHTESTONLY - CMENU.gm_mgCustom.mg_pActivatedFunction = &DisabledFunction; -#else CMENU.gm_mgCustom.mg_pActivatedFunction = &StartSelectLevelFromSingle; -#endif CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartSinglePlayerQuickLoadMenu; CMENU.gm_mgLoad.mg_pActivatedFunction = &StartSinglePlayerLoadMenu; CMENU.gm_mgTraining.mg_pActivatedFunction = &StartTraining; @@ -727,12 +714,14 @@ extern void UpdateVideoOptionsButtons(INDEX iSelected) CMENU.gm_mgDisplayAdaptersTrigger.mg_bEnabled = _ctAdapters>1; CMENU.gm_mgApply.mg_bEnabled = _bVideoOptionsChanged; // determine which should be visible + CMENU.gm_mgFullScreenTrigger.mg_bEnabled = TRUE; if (da.da_ulFlags&DAF_FULLSCREENONLY) { CMENU.gm_mgFullScreenTrigger.mg_bEnabled = FALSE; CMENU.gm_mgFullScreenTrigger.mg_iSelected = 1; CMENU.gm_mgFullScreenTrigger.ApplyCurrentSelection(); } + CMENU.gm_mgBitsPerPixelTrigger.mg_bEnabled = TRUE; if (CMENU.gm_mgFullScreenTrigger.mg_iSelected == 0) { CMENU.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; @@ -917,11 +906,7 @@ static void OnWaveVolumeChange(INDEX iCurPos) void WaveSliderChange(void) { - if (_bMouseRight) { - CMENU.gm_mgWaveVolume.mg_iCurPos += 5; - } else { - CMENU.gm_mgWaveVolume.mg_iCurPos -= 5; - } + CMENU.gm_mgWaveVolume.mg_iCurPos -= 5; CMENU.gm_mgWaveVolume.ApplyCurrentPosition(); } @@ -934,11 +919,7 @@ void FrequencyTriggerChange(INDEX iDummy) void MPEGSliderChange(void) { - if (_bMouseRight) { - CMENU.gm_mgMPEGVolume.mg_iCurPos += 5; - } else { - CMENU.gm_mgMPEGVolume.mg_iCurPos -= 5; - } + CMENU.gm_mgMPEGVolume.mg_iCurPos -= 5; CMENU.gm_mgMPEGVolume.ApplyCurrentPosition(); } diff --git a/Sources/SeriousSam/SeriousSam.cpp b/Sources/SeriousSam/SeriousSam.cpp index 5276d46..b18fc39 100644 --- a/Sources/SeriousSam/SeriousSam.cpp +++ b/Sources/SeriousSam/SeriousSam.cpp @@ -111,11 +111,8 @@ extern CTextureObject *_ptoLogoEAX = NULL; extern CTString sam_strVersion = "1.10"; extern CTString sam_strModName = TRANS("- O P E N S O U R C E -"); -#if _SE_DEMO - extern CTString sam_strFirstLevel = "Levels\\KarnakDemo.wld"; -#else - extern CTString sam_strFirstLevel = "Levels\\LevelsMP\\1_0_InTheLastEpisode.wld"; -#endif + +extern CTString sam_strFirstLevel = "Levels\\LevelsMP\\1_0_InTheLastEpisode.wld"; extern CTString sam_strIntroLevel = "Levels\\LevelsMP\\Intro.wld"; extern CTString sam_strGameName = "serioussamse"; @@ -548,10 +545,6 @@ BOOL Init( HINSTANCE hInstance, int nCmdShow, CTString strCmdLine) _pShell->SetString("net_strConnectPassword", cmd_strPassword); } -#if TECHTESTONLY - cmd_strWorld = CTString("Levels\\TechTestElsa.wld"); -#endif - // if connecting to server from command line if (cmd_strServer!="") { CTString strPort = ""; diff --git a/Sources/SeriousSam/StdH.h b/Sources/SeriousSam/StdH.h index 0e407da..a6dc39b 100644 --- a/Sources/SeriousSam/StdH.h +++ b/Sources/SeriousSam/StdH.h @@ -32,7 +32,5 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #undef DECL_DLL -#define TECHTESTONLY 0 - #include "SeriousSam.h" #include "GUI/Menus/Menu.h" \ No newline at end of file From 3aa14342b31d03b84987bdeea160e93d16a6d031 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Thu, 31 Mar 2016 20:58:27 +0300 Subject: [PATCH 30/34] GameExecutable: Get rid of CMENU preprocessor. Use preprocessor for making the code shorter was bad idea. It makes weird code parser, shows a lot of false errors and breaks code highlighting(blinking). --- Sources/SeriousSam/GUI/Menus/MenuActions.cpp | 730 +++++++++--------- Sources/SeriousSam/GUI/Menus/MenuStarters.cpp | 638 ++++++++------- 2 files changed, 715 insertions(+), 653 deletions(-) diff --git a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp index 97e29c8..c3e82eb 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp @@ -99,8 +99,6 @@ static void SizeToResolution(PIX pixSizeI, PIX pixSizeJ, INDEX &iRes) } // ------------------------ CConfirmMenu implementation -#define CMENU _pGUIM->gmConfirmMenu - CTFileName _fnmModSelected; CTString _strModURLSelected; CTString _strModServerSelected; @@ -113,12 +111,14 @@ void ExitGame(void) void ExitConfirm(void) { + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + _pConfimedYes = &ExitGame; _pConfimedNo = NULL; - CMENU.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - CMENU.BeLarge(); - ChangeToMenu(&CMENU); + gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + gmCurrent.BeLarge(); + ChangeToMenu(&gmCurrent); } void StopCurrentGame(void) @@ -131,12 +131,14 @@ void StopCurrentGame(void) void StopConfirm(void) { + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + _pConfimedYes = &StopCurrentGame; _pConfimedNo = NULL; - CMENU.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - CMENU.BeLarge(); - ChangeToMenu(&CMENU); + gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + gmCurrent.BeLarge(); + ChangeToMenu(&gmCurrent); } void ModLoadYes(void) @@ -155,6 +157,8 @@ void ModConnect(void) extern void ModConnectConfirm(void) { + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + if (_fnmModSelected == " ") { _fnmModSelected = CTString("SeriousSam"); } @@ -171,21 +175,23 @@ extern void ModConnectConfirm(void) CPrintF(TRANS("Server is running a different MOD (%s).\nYou need to reload to connect.\n"), _fnmModSelected); _pConfimedYes = &ModConnect; _pConfimedNo = NULL; - CMENU.gm_mgConfirmLabel.mg_strText = TRANS("CHANGE THE MOD?"); - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - CMENU.BeLarge(); - ChangeToMenu(&CMENU); + gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("CHANGE THE MOD?"); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + gmCurrent.BeLarge(); + ChangeToMenu(&gmCurrent); } void SaveConfirm(void) { + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + extern void OnFileSaveOK(void); _pConfimedYes = &OnFileSaveOK; _pConfimedNo = NULL; - CMENU.gm_mgConfirmLabel.mg_strText = TRANS("OVERWRITE?"); - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - CMENU.BeLarge(); - ChangeToMenu(&CMENU); + gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("OVERWRITE?"); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + gmCurrent.BeLarge(); + ChangeToMenu(&gmCurrent); } void ExitAndSpawnExplorer(void) @@ -198,53 +204,47 @@ void ExitAndSpawnExplorer(void) void ModNotInstalled(void) { + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + _pConfimedYes = &ExitAndSpawnExplorer; _pConfimedNo = NULL; - CMENU.gm_mgConfirmLabel.mg_strText.PrintF( + gmCurrent.gm_mgConfirmLabel.mg_strText.PrintF( TRANS("You don't have MOD '%s' installed.\nDo you want to visit its web site?"), (const char*)_fnmModSelected); - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - CMENU.BeSmall(); - ChangeToMenu(&CMENU); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + gmCurrent.BeSmall(); + ChangeToMenu(&gmCurrent); } extern void ModConfirm(void) { + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + _pConfimedYes = &ModLoadYes; _pConfimedNo = NULL; - CMENU.gm_mgConfirmLabel.mg_strText = TRANS("LOAD THIS MOD?"); - CMENU.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; - CMENU.BeLarge(); - ChangeToMenu(&CMENU); + gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("LOAD THIS MOD?"); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + gmCurrent.BeLarge(); + ChangeToMenu(&gmCurrent); } void VideoConfirm(void) { + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + // FIXUP: keyboard focus lost when going from full screen to window mode // due to WM_MOUSEMOVE being sent _bMouseUsedLast = FALSE; - _pmgUnderCursor = CMENU.gm_pmgSelectedByDefault; + _pmgUnderCursor = gmCurrent.gm_pmgSelectedByDefault; _pConfimedYes = NULL; void RevertVideoSettings(void); _pConfimedNo = RevertVideoSettings; - CMENU.gm_mgConfirmLabel.mg_strText = TRANS("KEEP THIS SETTING?"); - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - CMENU.BeLarge(); - ChangeToMenu(&CMENU); -} - -void CDConfirm(void(*pOk)(void)) -{ - _pConfimedYes = pOk; - _pConfimedNo = NULL; - CMENU.gm_mgConfirmLabel.mg_strText = TRANS("PLEASE INSERT GAME CD?"); - if (pgmCurrentMenu != &CMENU) { - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - CMENU.BeLarge(); - ChangeToMenu(&CMENU); - } + gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("KEEP THIS SETTING?"); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + gmCurrent.BeLarge(); + ChangeToMenu(&gmCurrent); } void ConfirmYes(void) @@ -266,27 +266,25 @@ void ConfirmNo(void) } void InitActionsForConfirmMenu() { - CMENU.gm_mgConfirmYes.mg_pActivatedFunction = &ConfirmYes; - CMENU.gm_mgConfirmNo.mg_pActivatedFunction = &ConfirmNo; -} + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; -#undef CMENU + gmCurrent.gm_mgConfirmYes.mg_pActivatedFunction = &ConfirmYes; + gmCurrent.gm_mgConfirmNo.mg_pActivatedFunction = &ConfirmNo; +} // ------------------------ CMainMenu implementation -#define CMENU _pGUIM->gmMainMenu - void InitActionsForMainMenu() { - CMENU.gm_mgSingle.mg_pActivatedFunction = &StartSinglePlayerMenu; - CMENU.gm_mgNetwork.mg_pActivatedFunction = StartNetworkMenu; - CMENU.gm_mgSplitScreen.mg_pActivatedFunction = &StartSplitScreenMenu; - CMENU.gm_mgDemo.mg_pActivatedFunction = &StartDemoLoadMenu; - CMENU.gm_mgMods.mg_pActivatedFunction = &StartModsLoadMenu; - CMENU.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; - CMENU.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; - CMENU.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; -} + CMainMenu &gmCurrent = _pGUIM->gmMainMenu; -#undef CMENU + gmCurrent.gm_mgSingle.mg_pActivatedFunction = &StartSinglePlayerMenu; + gmCurrent.gm_mgNetwork.mg_pActivatedFunction = StartNetworkMenu; + gmCurrent.gm_mgSplitScreen.mg_pActivatedFunction = &StartSplitScreenMenu; + gmCurrent.gm_mgDemo.mg_pActivatedFunction = &StartDemoLoadMenu; + gmCurrent.gm_mgMods.mg_pActivatedFunction = &StartModsLoadMenu; + gmCurrent.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; + gmCurrent.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; + gmCurrent.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; +} // ------------------------ CInGameMenu implementation // start load/save menus depending on type of game running @@ -303,35 +301,36 @@ void StopRecordingDemo(void) SetDemoStartStopRecText(); } -#define CMENU _pGUIM->gmInGameMenu +void InitActionsForInGameMenu() +{ + CInGameMenu &gmCurrent = _pGUIM->gmInGameMenu; -void InitActionsForInGameMenu() { - - CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartCurrentQuickLoadMenu; - CMENU.gm_mgQuickSave.mg_pActivatedFunction = &QuickSaveFromMenu; - CMENU.gm_mgLoad.mg_pActivatedFunction = &StartCurrentLoadMenu; - CMENU.gm_mgSave.mg_pActivatedFunction = &StartCurrentSaveMenu; - CMENU.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; - CMENU.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; - CMENU.gm_mgStop.mg_pActivatedFunction = &StopConfirm; - CMENU.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; + gmCurrent.gm_mgQuickLoad.mg_pActivatedFunction = &StartCurrentQuickLoadMenu; + gmCurrent.gm_mgQuickSave.mg_pActivatedFunction = &QuickSaveFromMenu; + gmCurrent.gm_mgLoad.mg_pActivatedFunction = &StartCurrentLoadMenu; + gmCurrent.gm_mgSave.mg_pActivatedFunction = &StartCurrentSaveMenu; + gmCurrent.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; + gmCurrent.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; + gmCurrent.gm_mgStop.mg_pActivatedFunction = &StopConfirm; + gmCurrent.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; } extern void SetDemoStartStopRecText(void) { + CInGameMenu &gmCurrent = _pGUIM->gmInGameMenu; + if (_pNetwork->IsRecordingDemo()) { - CMENU.gm_mgDemoRec.SetText(TRANS("STOP RECORDING")); - CMENU.gm_mgDemoRec.mg_strTip = TRANS("stop current recording"); - CMENU.gm_mgDemoRec.mg_pActivatedFunction = &StopRecordingDemo; + gmCurrent.gm_mgDemoRec.SetText(TRANS("STOP RECORDING")); + gmCurrent.gm_mgDemoRec.mg_strTip = TRANS("stop current recording"); + gmCurrent.gm_mgDemoRec.mg_pActivatedFunction = &StopRecordingDemo; } else { - CMENU.gm_mgDemoRec.SetText(TRANS("RECORD DEMO")); - CMENU.gm_mgDemoRec.mg_strTip = TRANS("start recording current game"); - CMENU.gm_mgDemoRec.mg_pActivatedFunction = &StartDemoSaveMenu; + gmCurrent.gm_mgDemoRec.SetText(TRANS("RECORD DEMO")); + gmCurrent.gm_mgDemoRec.mg_strTip = TRANS("start recording current game"); + gmCurrent.gm_mgDemoRec.mg_pActivatedFunction = &StartDemoSaveMenu; } } -#undef CMENU // ------------------------ CSinglePlayerMenu implementation void StartSinglePlayerGame_Normal(void); @@ -351,21 +350,20 @@ void StartTraining(void) ChangeToMenu(&_pGUIM->gmSinglePlayerNewMenu); } -#define CMENU _pGUIM->gmSinglePlayerMenu +void InitActionsForSinglePlayerMenu() +{ + CSinglePlayerMenu &gmCurrent = _pGUIM->gmSinglePlayerMenu; -void InitActionsForSinglePlayerMenu() { - CMENU.gm_mgNewGame.mg_pActivatedFunction = &StartSinglePlayerNewMenu; - CMENU.gm_mgCustom.mg_pActivatedFunction = &StartSelectLevelFromSingle; - CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartSinglePlayerQuickLoadMenu; - CMENU.gm_mgLoad.mg_pActivatedFunction = &StartSinglePlayerLoadMenu; - CMENU.gm_mgTraining.mg_pActivatedFunction = &StartTraining; - CMENU.gm_mgTechTest.mg_pActivatedFunction = &StartTechTest; - CMENU.gm_mgPlayersAndControls.mg_pActivatedFunction = &StartChangePlayerMenuFromSinglePlayer; - CMENU.gm_mgOptions.mg_pActivatedFunction = &StartSinglePlayerGameOptions; + gmCurrent.gm_mgNewGame.mg_pActivatedFunction = &StartSinglePlayerNewMenu; + gmCurrent.gm_mgCustom.mg_pActivatedFunction = &StartSelectLevelFromSingle; + gmCurrent.gm_mgQuickLoad.mg_pActivatedFunction = &StartSinglePlayerQuickLoadMenu; + gmCurrent.gm_mgLoad.mg_pActivatedFunction = &StartSinglePlayerLoadMenu; + gmCurrent.gm_mgTraining.mg_pActivatedFunction = &StartTraining; + gmCurrent.gm_mgTechTest.mg_pActivatedFunction = &StartTechTest; + gmCurrent.gm_mgPlayersAndControls.mg_pActivatedFunction = &StartChangePlayerMenuFromSinglePlayer; + gmCurrent.gm_mgOptions.mg_pActivatedFunction = &StartSinglePlayerGameOptions; } -#undef CMENU - // ------------------------ CSinglePlayerNewMenu implementation void StartSinglePlayerGame(void) { @@ -431,40 +429,35 @@ void StartSinglePlayerGame_Mental(void) StartSinglePlayerGame(); } - -#define CMENU _pGUIM->gmSinglePlayerNewMenu - void InitActionsForSinglePlayerNewMenu() { - CMENU.gm_mgTourist.mg_pActivatedFunction = &StartSinglePlayerGame_Tourist; - CMENU.gm_mgEasy.mg_pActivatedFunction = &StartSinglePlayerGame_Easy; - CMENU.gm_mgMedium.mg_pActivatedFunction = &StartSinglePlayerGame_Normal; - CMENU.gm_mgHard.mg_pActivatedFunction = &StartSinglePlayerGame_Hard; - CMENU.gm_mgSerious.mg_pActivatedFunction = &StartSinglePlayerGame_Serious; - CMENU.gm_mgMental.mg_pActivatedFunction = &StartSinglePlayerGame_Mental; + CSinglePlayerNewMenu &gmCurrent = _pGUIM->gmSinglePlayerNewMenu; + + gmCurrent.gm_mgTourist.mg_pActivatedFunction = &StartSinglePlayerGame_Tourist; + gmCurrent.gm_mgEasy.mg_pActivatedFunction = &StartSinglePlayerGame_Easy; + gmCurrent.gm_mgMedium.mg_pActivatedFunction = &StartSinglePlayerGame_Normal; + gmCurrent.gm_mgHard.mg_pActivatedFunction = &StartSinglePlayerGame_Hard; + gmCurrent.gm_mgSerious.mg_pActivatedFunction = &StartSinglePlayerGame_Serious; + gmCurrent.gm_mgMental.mg_pActivatedFunction = &StartSinglePlayerGame_Mental; } -#undef CMENU - // ------------------------ CPlayerProfileMenu implementation -#define CMENU _pGUIM->gmPlayerProfile - void ChangeCrosshair(INDEX iNew) { - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; pps->ps_iCrossHairType = iNew - 1; } void ChangeWeaponSelect(INDEX iNew) { - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; pps->ps_iWeaponAutoSelect = iNew; } void ChangeWeaponHide(INDEX iNew) { - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; if (iNew) { pps->ps_ulFlags |= PSF_HIDEWEAPON; @@ -475,7 +468,7 @@ void ChangeWeaponHide(INDEX iNew) void Change3rdPerson(INDEX iNew) { - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; if (iNew) { pps->ps_ulFlags |= PSF_PREFER3RDPERSON; @@ -486,7 +479,7 @@ void Change3rdPerson(INDEX iNew) void ChangeQuotes(INDEX iNew) { - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; if (iNew) { pps->ps_ulFlags &= ~PSF_NOQUOTES; @@ -497,7 +490,7 @@ void ChangeQuotes(INDEX iNew) void ChangeAutoSave(INDEX iNew) { - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; if (iNew) { pps->ps_ulFlags |= PSF_AUTOSAVE; @@ -508,7 +501,7 @@ void ChangeAutoSave(INDEX iNew) void ChangeCompDoubleClick(INDEX iNew) { - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; if (iNew) { pps->ps_ulFlags &= ~PSF_COMPSINGLECLICK; @@ -519,7 +512,7 @@ void ChangeCompDoubleClick(INDEX iNew) void ChangeViewBobbing(INDEX iNew) { - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; if (iNew) { pps->ps_ulFlags &= ~PSF_NOBOBBING; @@ -530,7 +523,7 @@ void ChangeViewBobbing(INDEX iNew) void ChangeSharpTurning(INDEX iNew) { - INDEX iPlayer = *CMENU.gm_piCurrentPlayer; + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; if (iNew) { pps->ps_ulFlags |= PSF_SHARPTURNING; @@ -549,67 +542,62 @@ extern void PPOnPlayerSelect(void) void InitActionsForPlayerProfileMenu() { - CMENU.gm_mgCrosshair.mg_pOnTriggerChange = ChangeCrosshair; - CMENU.gm_mgWeaponSelect.mg_pOnTriggerChange = ChangeWeaponSelect; - CMENU.gm_mgWeaponHide.mg_pOnTriggerChange = ChangeWeaponHide; - CMENU.gm_mg3rdPerson.mg_pOnTriggerChange = Change3rdPerson; - CMENU.gm_mgQuotes.mg_pOnTriggerChange = ChangeQuotes; - CMENU.gm_mgAutoSave.mg_pOnTriggerChange = ChangeAutoSave; - CMENU.gm_mgCompDoubleClick.mg_pOnTriggerChange = ChangeCompDoubleClick; - CMENU.gm_mgSharpTurning.mg_pOnTriggerChange = ChangeSharpTurning; - CMENU.gm_mgViewBobbing.mg_pOnTriggerChange = ChangeViewBobbing; - CMENU.gm_mgCustomizeControls.mg_pActivatedFunction = &StartControlsMenuFromPlayer; - CMENU.gm_mgModel.mg_pActivatedFunction = &StartPlayerModelLoadMenu; -} + CPlayerProfileMenu &gmCurrent = _pGUIM->gmPlayerProfile; -#undef CMENU + gmCurrent.gm_mgCrosshair.mg_pOnTriggerChange = ChangeCrosshair; + gmCurrent.gm_mgWeaponSelect.mg_pOnTriggerChange = ChangeWeaponSelect; + gmCurrent.gm_mgWeaponHide.mg_pOnTriggerChange = ChangeWeaponHide; + gmCurrent.gm_mg3rdPerson.mg_pOnTriggerChange = Change3rdPerson; + gmCurrent.gm_mgQuotes.mg_pOnTriggerChange = ChangeQuotes; + gmCurrent.gm_mgAutoSave.mg_pOnTriggerChange = ChangeAutoSave; + gmCurrent.gm_mgCompDoubleClick.mg_pOnTriggerChange = ChangeCompDoubleClick; + gmCurrent.gm_mgSharpTurning.mg_pOnTriggerChange = ChangeSharpTurning; + gmCurrent.gm_mgViewBobbing.mg_pOnTriggerChange = ChangeViewBobbing; + gmCurrent.gm_mgCustomizeControls.mg_pActivatedFunction = &StartControlsMenuFromPlayer; + gmCurrent.gm_mgModel.mg_pActivatedFunction = &StartPlayerModelLoadMenu; +} // ------------------------ CControlsMenu implementation -#define CMENU _pGUIM->gmControls - void InitActionsForControlsMenu() { - CMENU.gm_mgButtons.mg_pActivatedFunction = &StartCustomizeKeyboardMenu; - CMENU.gm_mgAdvanced.mg_pActivatedFunction = &StartCustomizeAxisMenu; - CMENU.gm_mgPredefined.mg_pActivatedFunction = &StartControlsLoadMenu; + CControlsMenu &gmCurrent = _pGUIM->gmControls; + + gmCurrent.gm_mgButtons.mg_pActivatedFunction = &StartCustomizeKeyboardMenu; + gmCurrent.gm_mgAdvanced.mg_pActivatedFunction = &StartCustomizeAxisMenu; + gmCurrent.gm_mgPredefined.mg_pActivatedFunction = &StartControlsLoadMenu; } -#undef CMENU - // ------------------------ CCustomizeAxisMenu implementation -#define CMENU _pGUIM->gmCustomizeAxisMenu - void PreChangeAxis(INDEX iDummy) { - CMENU.ApplyActionSettings(); + _pGUIM->gmCustomizeAxisMenu.ApplyActionSettings(); } void PostChangeAxis(INDEX iDummy) { - CMENU.ObtainActionSettings(); + _pGUIM->gmCustomizeAxisMenu.ObtainActionSettings(); } -void InitActionsForCustomizeAxisMenu() { - CMENU.gm_mgActionTrigger.mg_pPreTriggerChange = PreChangeAxis; - CMENU.gm_mgActionTrigger.mg_pOnTriggerChange = PostChangeAxis; -} +void InitActionsForCustomizeAxisMenu() +{ + CCustomizeAxisMenu &gmCurrent = _pGUIM->gmCustomizeAxisMenu; -#undef CMENU + gmCurrent.gm_mgActionTrigger.mg_pPreTriggerChange = PreChangeAxis; + gmCurrent.gm_mgActionTrigger.mg_pOnTriggerChange = PostChangeAxis; +} // ------------------------ COptionsMenu implementation -#define CMENU _pGUIM->gmOptionsMenu - void InitActionsForOptionsMenu() { - CMENU.gm_mgVideoOptions.mg_pActivatedFunction = &StartVideoOptionsMenu; - CMENU.gm_mgAudioOptions.mg_pActivatedFunction = &StartAudioOptionsMenu; - CMENU.gm_mgPlayerProfileOptions.mg_pActivatedFunction = &StartChangePlayerMenuFromOptions; - CMENU.gm_mgNetworkOptions.mg_pActivatedFunction = &StartNetworkSettingsMenu; - CMENU.gm_mgCustomOptions.mg_pActivatedFunction = &StartCustomLoadMenu; - CMENU.gm_mgAddonOptions.mg_pActivatedFunction = &StartAddonsLoadMenu; -} + COptionsMenu &gmCurrent = _pGUIM->gmOptionsMenu; -#undef CMENU + gmCurrent.gm_mgVideoOptions.mg_pActivatedFunction = &StartVideoOptionsMenu; + gmCurrent.gm_mgAudioOptions.mg_pActivatedFunction = &StartAudioOptionsMenu; + gmCurrent.gm_mgPlayerProfileOptions.mg_pActivatedFunction = &StartChangePlayerMenuFromOptions; + gmCurrent.gm_mgNetworkOptions.mg_pActivatedFunction = &StartNetworkSettingsMenu; + gmCurrent.gm_mgCustomOptions.mg_pActivatedFunction = &StartCustomLoadMenu; + gmCurrent.gm_mgAddonOptions.mg_pActivatedFunction = &StartAddonsLoadMenu; +} // ------------------------ CVideoOptionsMenu implementation static INDEX sam_old_bFullScreenActive; @@ -620,11 +608,10 @@ static INDEX sam_old_iDisplayAdapter; static INDEX sam_old_iGfxAPI; static INDEX sam_old_iVideoSetup; // 0==speed, 1==normal, 2==quality, 3==custom - -#define CMENU _pGUIM->gmVideoOptionsMenu - static void FillResolutionsList(void) { + CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; + // free resolutions if (_astrResolutionTexts != NULL) { delete[] _astrResolutionTexts; @@ -635,7 +622,7 @@ static void FillResolutionsList(void) _ctResolutions = 0; // if window - if (CMENU.gm_mgFullScreenTrigger.mg_iSelected == 0) { + if (gmCurrent.gm_mgFullScreenTrigger.mg_iSelected == 0) { // always has fixed resolutions, but not greater than desktop _ctResolutions = ARRAYCOUNT(apixWidths); @@ -653,7 +640,7 @@ static void FillResolutionsList(void) } else { // get resolutions list from engine CDisplayMode *pdm = _pGfx->EnumDisplayModes(_ctResolutions, - SwitchToAPI(CMENU.gm_mgDisplayAPITrigger.mg_iSelected), CMENU.gm_mgDisplayAdaptersTrigger.mg_iSelected); + SwitchToAPI(gmCurrent.gm_mgDisplayAPITrigger.mg_iSelected), gmCurrent.gm_mgDisplayAdaptersTrigger.mg_iSelected); // allocate that much _astrResolutionTexts = new CTString[_ctResolutions]; _admResolutionModes = new CDisplayMode[_ctResolutions]; @@ -663,29 +650,36 @@ static void FillResolutionsList(void) SetResolutionInList(iRes, pdm[iRes].dm_pixSizeI, pdm[iRes].dm_pixSizeJ); } } - CMENU.gm_mgResolutionsTrigger.mg_astrTexts = _astrResolutionTexts; - CMENU.gm_mgResolutionsTrigger.mg_ctTexts = _ctResolutions; + + gmCurrent.gm_mgResolutionsTrigger.mg_astrTexts = _astrResolutionTexts; + gmCurrent.gm_mgResolutionsTrigger.mg_ctTexts = _ctResolutions; } static void FillAdaptersList(void) { + CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; + if (_astrAdapterTexts != NULL) { delete[] _astrAdapterTexts; } + _ctAdapters = 0; - INDEX iApi = SwitchToAPI(CMENU.gm_mgDisplayAPITrigger.mg_iSelected); + INDEX iApi = SwitchToAPI(gmCurrent.gm_mgDisplayAPITrigger.mg_iSelected); _ctAdapters = _pGfx->gl_gaAPI[iApi].ga_ctAdapters; _astrAdapterTexts = new CTString[_ctAdapters]; for (INDEX iAdapter = 0; iAdapter<_ctAdapters; iAdapter++) { _astrAdapterTexts[iAdapter] = _pGfx->gl_gaAPI[iApi].ga_adaAdapter[iAdapter].da_strRenderer; } - CMENU.gm_mgDisplayAdaptersTrigger.mg_astrTexts = _astrAdapterTexts; - CMENU.gm_mgDisplayAdaptersTrigger.mg_ctTexts = _ctAdapters; + + gmCurrent.gm_mgDisplayAdaptersTrigger.mg_astrTexts = _astrAdapterTexts; + gmCurrent.gm_mgDisplayAdaptersTrigger.mg_ctTexts = _ctAdapters; } extern void UpdateVideoOptionsButtons(INDEX iSelected) { + CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; + const BOOL _bVideoOptionsChanged = (iSelected != -1); const BOOL bOGLEnabled = _pGfx->HasAPI(GAT_OGL); @@ -695,84 +689,89 @@ extern void UpdateVideoOptionsButtons(INDEX iSelected) #else // ASSERT(bOGLEnabled); #endif // SE1_D3D - CDisplayAdapter &da = _pGfx->gl_gaAPI[SwitchToAPI(CMENU.gm_mgDisplayAPITrigger.mg_iSelected)] - .ga_adaAdapter[CMENU.gm_mgDisplayAdaptersTrigger.mg_iSelected]; + + CDisplayAdapter &da = _pGfx->gl_gaAPI[SwitchToAPI(gmCurrent.gm_mgDisplayAPITrigger.mg_iSelected)] + .ga_adaAdapter[gmCurrent.gm_mgDisplayAdaptersTrigger.mg_iSelected]; // number of available preferences is higher if video setup is custom - CMENU.gm_mgDisplayPrefsTrigger.mg_ctTexts = 3; - if (sam_iVideoSetup == 3) CMENU.gm_mgDisplayPrefsTrigger.mg_ctTexts++; + gmCurrent.gm_mgDisplayPrefsTrigger.mg_ctTexts = 3; + if (sam_iVideoSetup == 3) gmCurrent.gm_mgDisplayPrefsTrigger.mg_ctTexts++; // enumerate adapters FillAdaptersList(); // show or hide buttons - CMENU.gm_mgDisplayAPITrigger.mg_bEnabled = bOGLEnabled + gmCurrent.gm_mgDisplayAPITrigger.mg_bEnabled = bOGLEnabled #ifdef SE1_D3D && bD3DEnabled #endif // SE1_D3D ; - CMENU.gm_mgDisplayAdaptersTrigger.mg_bEnabled = _ctAdapters>1; - CMENU.gm_mgApply.mg_bEnabled = _bVideoOptionsChanged; + gmCurrent.gm_mgDisplayAdaptersTrigger.mg_bEnabled = _ctAdapters>1; + gmCurrent.gm_mgApply.mg_bEnabled = _bVideoOptionsChanged; // determine which should be visible - CMENU.gm_mgFullScreenTrigger.mg_bEnabled = TRUE; + gmCurrent.gm_mgFullScreenTrigger.mg_bEnabled = TRUE; if (da.da_ulFlags&DAF_FULLSCREENONLY) { - CMENU.gm_mgFullScreenTrigger.mg_bEnabled = FALSE; - CMENU.gm_mgFullScreenTrigger.mg_iSelected = 1; - CMENU.gm_mgFullScreenTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgFullScreenTrigger.mg_bEnabled = FALSE; + gmCurrent.gm_mgFullScreenTrigger.mg_iSelected = 1; + gmCurrent.gm_mgFullScreenTrigger.ApplyCurrentSelection(); } - CMENU.gm_mgBitsPerPixelTrigger.mg_bEnabled = TRUE; - if (CMENU.gm_mgFullScreenTrigger.mg_iSelected == 0) { - CMENU.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; - CMENU.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_DEFAULT); - CMENU.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgBitsPerPixelTrigger.mg_bEnabled = TRUE; + if (gmCurrent.gm_mgFullScreenTrigger.mg_iSelected == 0) { + gmCurrent.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; + gmCurrent.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_DEFAULT); + gmCurrent.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); } else if (da.da_ulFlags&DAF_16BITONLY) { - CMENU.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; - CMENU.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_16BIT); - CMENU.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; + gmCurrent.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_16BIT); + gmCurrent.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); } // remember current selected resolution PIX pixSizeI, pixSizeJ; - ResolutionToSize(CMENU.gm_mgResolutionsTrigger.mg_iSelected, pixSizeI, pixSizeJ); + ResolutionToSize(gmCurrent.gm_mgResolutionsTrigger.mg_iSelected, pixSizeI, pixSizeJ); // select same resolution again if possible FillResolutionsList(); - SizeToResolution(pixSizeI, pixSizeJ, CMENU.gm_mgResolutionsTrigger.mg_iSelected); + SizeToResolution(pixSizeI, pixSizeJ, gmCurrent.gm_mgResolutionsTrigger.mg_iSelected); // apply adapter and resolutions - CMENU.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); - CMENU.gm_mgResolutionsTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgResolutionsTrigger.ApplyCurrentSelection(); } - extern void InitVideoOptionsButtons(void) { + CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; + if (sam_bFullScreenActive) { - CMENU.gm_mgFullScreenTrigger.mg_iSelected = 1; + gmCurrent.gm_mgFullScreenTrigger.mg_iSelected = 1; } else { - CMENU.gm_mgFullScreenTrigger.mg_iSelected = 0; + gmCurrent.gm_mgFullScreenTrigger.mg_iSelected = 0; } - CMENU.gm_mgDisplayAPITrigger.mg_iSelected = APIToSwitch((GfxAPIType)(INDEX)sam_iGfxAPI); - CMENU.gm_mgDisplayAdaptersTrigger.mg_iSelected = sam_iDisplayAdapter; - CMENU.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch((enum DisplayDepth)(INDEX)sam_iDisplayDepth); + gmCurrent.gm_mgDisplayAPITrigger.mg_iSelected = APIToSwitch((GfxAPIType)(INDEX)sam_iGfxAPI); + gmCurrent.gm_mgDisplayAdaptersTrigger.mg_iSelected = sam_iDisplayAdapter; + gmCurrent.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch((enum DisplayDepth)(INDEX)sam_iDisplayDepth); FillResolutionsList(); - SizeToResolution(sam_iScreenSizeI, sam_iScreenSizeJ, CMENU.gm_mgResolutionsTrigger.mg_iSelected); - CMENU.gm_mgDisplayPrefsTrigger.mg_iSelected = Clamp(int(sam_iVideoSetup), 0, 3); + SizeToResolution(sam_iScreenSizeI, sam_iScreenSizeJ, gmCurrent.gm_mgResolutionsTrigger.mg_iSelected); + gmCurrent.gm_mgDisplayPrefsTrigger.mg_iSelected = Clamp(int(sam_iVideoSetup), 0, 3); - CMENU.gm_mgFullScreenTrigger.ApplyCurrentSelection(); - CMENU.gm_mgDisplayPrefsTrigger.ApplyCurrentSelection(); - CMENU.gm_mgDisplayAPITrigger.ApplyCurrentSelection(); - CMENU.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); - CMENU.gm_mgResolutionsTrigger.ApplyCurrentSelection(); - CMENU.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgFullScreenTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgDisplayPrefsTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgDisplayAPITrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgResolutionsTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); } void ApplyVideoOptions(void) { + CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; + + // Remember old video settings sam_old_bFullScreenActive = sam_bFullScreenActive; sam_old_iScreenSizeI = sam_iScreenSizeI; sam_old_iScreenSizeJ = sam_iScreenSizeJ; @@ -781,17 +780,17 @@ void ApplyVideoOptions(void) sam_old_iGfxAPI = sam_iGfxAPI; sam_old_iVideoSetup = sam_iVideoSetup; - BOOL bFullScreenMode = CMENU.gm_mgFullScreenTrigger.mg_iSelected == 1; + BOOL bFullScreenMode = gmCurrent.gm_mgFullScreenTrigger.mg_iSelected == 1; PIX pixWindowSizeI, pixWindowSizeJ; - ResolutionToSize(CMENU.gm_mgResolutionsTrigger.mg_iSelected, pixWindowSizeI, pixWindowSizeJ); - enum GfxAPIType gat = SwitchToAPI(CMENU.gm_mgDisplayAPITrigger.mg_iSelected); - enum DisplayDepth dd = SwitchToDepth(CMENU.gm_mgBitsPerPixelTrigger.mg_iSelected); - const INDEX iAdapter = CMENU.gm_mgDisplayAdaptersTrigger.mg_iSelected; + ResolutionToSize(gmCurrent.gm_mgResolutionsTrigger.mg_iSelected, pixWindowSizeI, pixWindowSizeJ); + enum GfxAPIType gat = SwitchToAPI(gmCurrent.gm_mgDisplayAPITrigger.mg_iSelected); + enum DisplayDepth dd = SwitchToDepth(gmCurrent.gm_mgBitsPerPixelTrigger.mg_iSelected); + const INDEX iAdapter = gmCurrent.gm_mgDisplayAdaptersTrigger.mg_iSelected; // setup preferences extern INDEX _iLastPreferences; if (sam_iVideoSetup == 3) _iLastPreferences = 3; - sam_iVideoSetup = CMENU.gm_mgDisplayPrefsTrigger.mg_iSelected; + sam_iVideoSetup = gmCurrent.gm_mgDisplayPrefsTrigger.mg_iSelected; // force fullscreen mode if needed CDisplayAdapter &da = _pGfx->gl_gaAPI[gat].ga_adaAdapter[iAdapter]; @@ -833,59 +832,61 @@ void RevertVideoSettings(void) void InitActionsForVideoOptionsMenu() { - CMENU.gm_mgDisplayPrefsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - CMENU.gm_mgDisplayAPITrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - CMENU.gm_mgDisplayAdaptersTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - CMENU.gm_mgFullScreenTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - CMENU.gm_mgResolutionsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - CMENU.gm_mgBitsPerPixelTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - CMENU.gm_mgVideoRendering.mg_pActivatedFunction = &StartRenderingOptionsMenu; - CMENU.gm_mgApply.mg_pActivatedFunction = &ApplyVideoOptions; + CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; + + gmCurrent.gm_mgDisplayPrefsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmCurrent.gm_mgDisplayAPITrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmCurrent.gm_mgDisplayAdaptersTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmCurrent.gm_mgFullScreenTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmCurrent.gm_mgResolutionsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmCurrent.gm_mgBitsPerPixelTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmCurrent.gm_mgVideoRendering.mg_pActivatedFunction = &StartRenderingOptionsMenu; + gmCurrent.gm_mgApply.mg_pActivatedFunction = &ApplyVideoOptions; } -#undef CMENU - // ------------------------ CAudioOptionsMenu implementation -#define CMENU _pGUIM->gmAudioOptionsMenu - extern void RefreshSoundFormat(void) { + CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; + switch (_pSound->GetFormat()) { - case CSoundLibrary::SF_NONE: {CMENU.gm_mgFrequencyTrigger.mg_iSelected = 0; break; } - case CSoundLibrary::SF_11025_16: {CMENU.gm_mgFrequencyTrigger.mg_iSelected = 1; break; } - case CSoundLibrary::SF_22050_16: {CMENU.gm_mgFrequencyTrigger.mg_iSelected = 2; break; } - case CSoundLibrary::SF_44100_16: {CMENU.gm_mgFrequencyTrigger.mg_iSelected = 3; break; } - default: CMENU.gm_mgFrequencyTrigger.mg_iSelected = 0; + case CSoundLibrary::SF_NONE: {gmCurrent.gm_mgFrequencyTrigger.mg_iSelected = 0; break; } + case CSoundLibrary::SF_11025_16: {gmCurrent.gm_mgFrequencyTrigger.mg_iSelected = 1; break; } + case CSoundLibrary::SF_22050_16: {gmCurrent.gm_mgFrequencyTrigger.mg_iSelected = 2; break; } + case CSoundLibrary::SF_44100_16: {gmCurrent.gm_mgFrequencyTrigger.mg_iSelected = 3; break; } + default: gmCurrent.gm_mgFrequencyTrigger.mg_iSelected = 0; } - CMENU.gm_mgAudioAutoTrigger.mg_iSelected = Clamp(sam_bAutoAdjustAudio, 0, 1); - CMENU.gm_mgAudioAPITrigger.mg_iSelected = Clamp(_pShell->GetINDEX("snd_iInterface"), 0L, 2L); + gmCurrent.gm_mgAudioAutoTrigger.mg_iSelected = Clamp(sam_bAutoAdjustAudio, 0, 1); + gmCurrent.gm_mgAudioAPITrigger.mg_iSelected = Clamp(_pShell->GetINDEX("snd_iInterface"), 0L, 2L); - CMENU.gm_mgWaveVolume.mg_iMinPos = 0; - CMENU.gm_mgWaveVolume.mg_iMaxPos = VOLUME_STEPS; - CMENU.gm_mgWaveVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fSoundVolume")*VOLUME_STEPS + 0.5f); - CMENU.gm_mgWaveVolume.ApplyCurrentPosition(); + gmCurrent.gm_mgWaveVolume.mg_iMinPos = 0; + gmCurrent.gm_mgWaveVolume.mg_iMaxPos = VOLUME_STEPS; + gmCurrent.gm_mgWaveVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fSoundVolume")*VOLUME_STEPS + 0.5f); + gmCurrent.gm_mgWaveVolume.ApplyCurrentPosition(); - CMENU.gm_mgMPEGVolume.mg_iMinPos = 0; - CMENU.gm_mgMPEGVolume.mg_iMaxPos = VOLUME_STEPS; - CMENU.gm_mgMPEGVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fMusicVolume")*VOLUME_STEPS + 0.5f); - CMENU.gm_mgMPEGVolume.ApplyCurrentPosition(); + gmCurrent.gm_mgMPEGVolume.mg_iMinPos = 0; + gmCurrent.gm_mgMPEGVolume.mg_iMaxPos = VOLUME_STEPS; + gmCurrent.gm_mgMPEGVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fMusicVolume")*VOLUME_STEPS + 0.5f); + gmCurrent.gm_mgMPEGVolume.ApplyCurrentPosition(); - CMENU.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); - CMENU.gm_mgAudioAPITrigger.ApplyCurrentSelection(); - CMENU.gm_mgFrequencyTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgAudioAPITrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgFrequencyTrigger.ApplyCurrentSelection(); } void ApplyAudioOptions(void) { - sam_bAutoAdjustAudio = CMENU.gm_mgAudioAutoTrigger.mg_iSelected; + CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; + + sam_bAutoAdjustAudio = gmCurrent.gm_mgAudioAutoTrigger.mg_iSelected; if (sam_bAutoAdjustAudio) { _pShell->Execute("include \"Scripts\\Addons\\SFX-AutoAdjust.ini\""); } else { - _pShell->SetINDEX("snd_iInterface", CMENU.gm_mgAudioAPITrigger.mg_iSelected); + _pShell->SetINDEX("snd_iInterface", gmCurrent.gm_mgAudioAPITrigger.mg_iSelected); - switch (CMENU.gm_mgFrequencyTrigger.mg_iSelected) + switch (gmCurrent.gm_mgFrequencyTrigger.mg_iSelected) { case 0: {_pSound->SetFormat(CSoundLibrary::SF_NONE); break; } case 1: {_pSound->SetFormat(CSoundLibrary::SF_11025_16); break; } @@ -906,21 +907,27 @@ static void OnWaveVolumeChange(INDEX iCurPos) void WaveSliderChange(void) { - CMENU.gm_mgWaveVolume.mg_iCurPos -= 5; - CMENU.gm_mgWaveVolume.ApplyCurrentPosition(); + CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; + + gmCurrent.gm_mgWaveVolume.mg_iCurPos -= 5; + gmCurrent.gm_mgWaveVolume.ApplyCurrentPosition(); } void FrequencyTriggerChange(INDEX iDummy) { + CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; + sam_bAutoAdjustAudio = 0; - CMENU.gm_mgAudioAutoTrigger.mg_iSelected = 0; - CMENU.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgAudioAutoTrigger.mg_iSelected = 0; + gmCurrent.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); } void MPEGSliderChange(void) { - CMENU.gm_mgMPEGVolume.mg_iCurPos -= 5; - CMENU.gm_mgMPEGVolume.ApplyCurrentPosition(); + CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; + + gmCurrent.gm_mgMPEGVolume.mg_iCurPos -= 5; + gmCurrent.gm_mgMPEGVolume.ApplyCurrentPosition(); } static void OnMPEGVolumeChange(INDEX iCurPos) @@ -930,51 +937,45 @@ static void OnMPEGVolumeChange(INDEX iCurPos) void InitActionsForAudioOptionsMenu() { - CMENU.gm_mgFrequencyTrigger.mg_pOnTriggerChange = FrequencyTriggerChange; - CMENU.gm_mgWaveVolume.mg_pOnSliderChange = &OnWaveVolumeChange; - CMENU.gm_mgWaveVolume.mg_pActivatedFunction = WaveSliderChange; - CMENU.gm_mgMPEGVolume.mg_pOnSliderChange = &OnMPEGVolumeChange; - CMENU.gm_mgMPEGVolume.mg_pActivatedFunction = MPEGSliderChange; - CMENU.gm_mgApply.mg_pActivatedFunction = &ApplyAudioOptions; + CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; + + gmCurrent.gm_mgFrequencyTrigger.mg_pOnTriggerChange = FrequencyTriggerChange; + gmCurrent.gm_mgWaveVolume.mg_pOnSliderChange = &OnWaveVolumeChange; + gmCurrent.gm_mgWaveVolume.mg_pActivatedFunction = WaveSliderChange; + gmCurrent.gm_mgMPEGVolume.mg_pOnSliderChange = &OnMPEGVolumeChange; + gmCurrent.gm_mgMPEGVolume.mg_pActivatedFunction = MPEGSliderChange; + gmCurrent.gm_mgApply.mg_pActivatedFunction = &ApplyAudioOptions; } -#undef CMENU - // ------------------------ CVarMenu implementation -#define CMENU _pGUIM->gmVarMenu - void VarApply(void) { + CVarMenu &gmCurrent = _pGUIM->gmVarMenu; + FlushVarSettings(TRUE); - CMENU.EndMenu(); - CMENU.StartMenu(); + gmCurrent.EndMenu(); + gmCurrent.StartMenu(); } void InitActionsForVarMenu() { - CMENU.gm_mgApply.mg_pActivatedFunction = &VarApply; + _pGUIM->gmVarMenu.gm_mgApply.mg_pActivatedFunction = &VarApply; } -#undef CMENU - // ------------------------ CServersMenu implementation -extern void RefreshServerList(void) -{ - _pNetwork->EnumSessions(_pGUIM->gmServersMenu.m_bInternet); -} -void RefreshServerListManually(void) -{ - ChangeToMenu(&_pGUIM->gmServersMenu); // this refreshes the list and sets focuses -} +extern CMGButton mgServerColumn[7]; +extern CMGEdit mgServerFilter[7]; void SortByColumn(int i) { - if (_pGUIM->gmServersMenu.gm_mgList.mg_iSort == i) { - _pGUIM->gmServersMenu.gm_mgList.mg_bSortDown = !_pGUIM->gmServersMenu.gm_mgList.mg_bSortDown; + CServersMenu &gmCurrent = _pGUIM->gmServersMenu; + + if (gmCurrent.gm_mgList.mg_iSort == i) { + gmCurrent.gm_mgList.mg_bSortDown = !gmCurrent.gm_mgList.mg_bSortDown; } else { - _pGUIM->gmServersMenu.gm_mgList.mg_bSortDown = FALSE; + gmCurrent.gm_mgList.mg_bSortDown = FALSE; } - _pGUIM->gmServersMenu.gm_mgList.mg_iSort = i; + gmCurrent.gm_mgList.mg_iSort = i; } void SortByServer(void) { SortByColumn(0); } @@ -985,8 +986,15 @@ void SortByGame(void) { SortByColumn(4); } void SortByMod(void) { SortByColumn(5); } void SortByVer(void) { SortByColumn(6); } -extern CMGButton mgServerColumn[7]; -extern CMGEdit mgServerFilter[7]; +extern void RefreshServerList(void) +{ + _pNetwork->EnumSessions(_pGUIM->gmServersMenu.m_bInternet); +} + +void RefreshServerListManually(void) +{ + ChangeToMenu(&_pGUIM->gmServersMenu); // this refreshes the list and sets focuses +} void InitActionsForServersMenu() { _pGUIM->gmServersMenu.gm_mgRefresh.mg_pActivatedFunction = &RefreshServerList; @@ -1001,29 +1009,25 @@ void InitActionsForServersMenu() { } // ------------------------ CNetworkMenu implementation -#define CMENU _pGUIM->gmNetworkMenu - void InitActionsForNetworkMenu() { - CMENU.gm_mgJoin.mg_pActivatedFunction = &StartNetworkJoinMenu; - CMENU.gm_mgStart.mg_pActivatedFunction = &StartNetworkStartMenu; - CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartNetworkQuickLoadMenu; - CMENU.gm_mgLoad.mg_pActivatedFunction = &StartNetworkLoadMenu; -} + CNetworkMenu &gmCurrent = _pGUIM->gmNetworkMenu; -#undef CMENU + gmCurrent.gm_mgJoin.mg_pActivatedFunction = &StartNetworkJoinMenu; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartNetworkStartMenu; + gmCurrent.gm_mgQuickLoad.mg_pActivatedFunction = &StartNetworkQuickLoadMenu; + gmCurrent.gm_mgLoad.mg_pActivatedFunction = &StartNetworkLoadMenu; +} // ------------------------ CNetworkJoinMenu implementation -#define CMENU _pGUIM->gmNetworkJoinMenu - void InitActionsForNetworkJoinMenu() { - CMENU.gm_mgLAN.mg_pActivatedFunction = &StartSelectServerLAN; - CMENU.gm_mgNET.mg_pActivatedFunction = &StartSelectServerNET; - CMENU.gm_mgOpen.mg_pActivatedFunction = &StartNetworkOpenMenu; -} + CNetworkJoinMenu &gmCurrent = _pGUIM->gmNetworkJoinMenu; -#undef CMENU + gmCurrent.gm_mgLAN.mg_pActivatedFunction = &StartSelectServerLAN; + gmCurrent.gm_mgNET.mg_pActivatedFunction = &StartSelectServerNET; + gmCurrent.gm_mgOpen.mg_pActivatedFunction = &StartNetworkOpenMenu; +} // ------------------------ CNetworkStartMenu implementation extern void UpdateNetworkLevel(INDEX iDummy) @@ -1041,8 +1045,6 @@ void InitActionsForNetworkStartMenu() } // ------------------------ CSelectPlayersMenu implementation -#define CMENU _pGUIM->gmSelectPlayersMenu - INDEX FindUnusedPlayer(void) { INDEX *ai = _pGame->gm_aiMenuLocalPlayers; @@ -1065,44 +1067,46 @@ INDEX FindUnusedPlayer(void) extern void SelectPlayersFillMenu(void) { + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + INDEX *ai = _pGame->gm_aiMenuLocalPlayers; - CMENU.gm_mgPlayer0Change.mg_iLocalPlayer = 0; - CMENU.gm_mgPlayer1Change.mg_iLocalPlayer = 1; - CMENU.gm_mgPlayer2Change.mg_iLocalPlayer = 2; - CMENU.gm_mgPlayer3Change.mg_iLocalPlayer = 3; + gmCurrent.gm_mgPlayer0Change.mg_iLocalPlayer = 0; + gmCurrent.gm_mgPlayer1Change.mg_iLocalPlayer = 1; + gmCurrent.gm_mgPlayer2Change.mg_iLocalPlayer = 2; + gmCurrent.gm_mgPlayer3Change.mg_iLocalPlayer = 3; - if (CMENU.gm_bAllowDedicated && _pGame->gm_MenuSplitScreenCfg == CGame::SSC_DEDICATED) { - CMENU.gm_mgDedicated.mg_iSelected = 1; + if (gmCurrent.gm_bAllowDedicated && _pGame->gm_MenuSplitScreenCfg == CGame::SSC_DEDICATED) { + gmCurrent.gm_mgDedicated.mg_iSelected = 1; } else { - CMENU.gm_mgDedicated.mg_iSelected = 0; + gmCurrent.gm_mgDedicated.mg_iSelected = 0; } - CMENU.gm_mgDedicated.ApplyCurrentSelection(); + gmCurrent.gm_mgDedicated.ApplyCurrentSelection(); - if (CMENU.gm_bAllowObserving && _pGame->gm_MenuSplitScreenCfg == CGame::SSC_OBSERVER) { - CMENU.gm_mgObserver.mg_iSelected = 1; + if (gmCurrent.gm_bAllowObserving && _pGame->gm_MenuSplitScreenCfg == CGame::SSC_OBSERVER) { + gmCurrent.gm_mgObserver.mg_iSelected = 1; } else { - CMENU.gm_mgObserver.mg_iSelected = 0; + gmCurrent.gm_mgObserver.mg_iSelected = 0; } - CMENU.gm_mgObserver.ApplyCurrentSelection(); + gmCurrent.gm_mgObserver.ApplyCurrentSelection(); if (_pGame->gm_MenuSplitScreenCfg >= CGame::SSC_PLAY1) { - CMENU.gm_mgSplitScreenCfg.mg_iSelected = _pGame->gm_MenuSplitScreenCfg; - CMENU.gm_mgSplitScreenCfg.ApplyCurrentSelection(); + gmCurrent.gm_mgSplitScreenCfg.mg_iSelected = _pGame->gm_MenuSplitScreenCfg; + gmCurrent.gm_mgSplitScreenCfg.ApplyCurrentSelection(); } - BOOL bHasDedicated = CMENU.gm_bAllowDedicated; - BOOL bHasObserver = CMENU.gm_bAllowObserving; + BOOL bHasDedicated = gmCurrent.gm_bAllowDedicated; + BOOL bHasObserver = gmCurrent.gm_bAllowObserving; BOOL bHasPlayers = TRUE; - if (bHasDedicated && CMENU.gm_mgDedicated.mg_iSelected) { + if (bHasDedicated && gmCurrent.gm_mgDedicated.mg_iSelected) { bHasObserver = FALSE; bHasPlayers = FALSE; } - if (bHasObserver && CMENU.gm_mgObserver.mg_iSelected) { + if (bHasObserver && gmCurrent.gm_mgObserver.mg_iSelected) { bHasPlayers = FALSE; } @@ -1111,17 +1115,17 @@ extern void SelectPlayersFillMenu(void) INDEX i = 0; if (bHasDedicated) { - CMENU.gm_mgDedicated.Appear(); - apmg[i++] = &CMENU.gm_mgDedicated; + gmCurrent.gm_mgDedicated.Appear(); + apmg[i++] = &gmCurrent.gm_mgDedicated; } else { - CMENU.gm_mgDedicated.Disappear(); + gmCurrent.gm_mgDedicated.Disappear(); } if (bHasObserver) { - CMENU.gm_mgObserver.Appear(); - apmg[i++] = &CMENU.gm_mgObserver; + gmCurrent.gm_mgObserver.Appear(); + apmg[i++] = &gmCurrent.gm_mgObserver; } else { - CMENU.gm_mgObserver.Disappear(); + gmCurrent.gm_mgObserver.Disappear(); } for (INDEX iLocal = 0; iLocal<4; iLocal++) { @@ -1135,32 +1139,32 @@ extern void SelectPlayersFillMenu(void) } } - CMENU.gm_mgPlayer0Change.Disappear(); - CMENU.gm_mgPlayer1Change.Disappear(); - CMENU.gm_mgPlayer2Change.Disappear(); - CMENU.gm_mgPlayer3Change.Disappear(); + gmCurrent.gm_mgPlayer0Change.Disappear(); + gmCurrent.gm_mgPlayer1Change.Disappear(); + gmCurrent.gm_mgPlayer2Change.Disappear(); + gmCurrent.gm_mgPlayer3Change.Disappear(); if (bHasPlayers) { - CMENU.gm_mgSplitScreenCfg.Appear(); - apmg[i++] = &CMENU.gm_mgSplitScreenCfg; - CMENU.gm_mgPlayer0Change.Appear(); - apmg[i++] = &CMENU.gm_mgPlayer0Change; - if (CMENU.gm_mgSplitScreenCfg.mg_iSelected >= 1) { - CMENU.gm_mgPlayer1Change.Appear(); - apmg[i++] = &CMENU.gm_mgPlayer1Change; + gmCurrent.gm_mgSplitScreenCfg.Appear(); + apmg[i++] = &gmCurrent.gm_mgSplitScreenCfg; + gmCurrent.gm_mgPlayer0Change.Appear(); + apmg[i++] = &gmCurrent.gm_mgPlayer0Change; + if (gmCurrent.gm_mgSplitScreenCfg.mg_iSelected >= 1) { + gmCurrent.gm_mgPlayer1Change.Appear(); + apmg[i++] = &gmCurrent.gm_mgPlayer1Change; } - if (CMENU.gm_mgSplitScreenCfg.mg_iSelected >= 2) { - CMENU.gm_mgPlayer2Change.Appear(); - apmg[i++] = &CMENU.gm_mgPlayer2Change; + if (gmCurrent.gm_mgSplitScreenCfg.mg_iSelected >= 2) { + gmCurrent.gm_mgPlayer2Change.Appear(); + apmg[i++] = &gmCurrent.gm_mgPlayer2Change; } - if (CMENU.gm_mgSplitScreenCfg.mg_iSelected >= 3) { - CMENU.gm_mgPlayer3Change.Appear(); - apmg[i++] = &CMENU.gm_mgPlayer3Change; + if (gmCurrent.gm_mgSplitScreenCfg.mg_iSelected >= 3) { + gmCurrent.gm_mgPlayer3Change.Appear(); + apmg[i++] = &gmCurrent.gm_mgPlayer3Change; } } else { - CMENU.gm_mgSplitScreenCfg.Disappear(); + gmCurrent.gm_mgSplitScreenCfg.Disappear(); } - apmg[i++] = &CMENU.gm_mgStart; + apmg[i++] = &gmCurrent.gm_mgStart; // relink for (INDEX img = 0; img<8; img++) { @@ -1183,31 +1187,33 @@ extern void SelectPlayersFillMenu(void) apmg[img]->mg_pmgDown = apmg[imgSucc]; } - CMENU.gm_mgPlayer0Change.SetPlayerText(); - CMENU.gm_mgPlayer1Change.SetPlayerText(); - CMENU.gm_mgPlayer2Change.SetPlayerText(); - CMENU.gm_mgPlayer3Change.SetPlayerText(); + gmCurrent.gm_mgPlayer0Change.SetPlayerText(); + gmCurrent.gm_mgPlayer1Change.SetPlayerText(); + gmCurrent.gm_mgPlayer2Change.SetPlayerText(); + gmCurrent.gm_mgPlayer3Change.SetPlayerText(); - if (bHasPlayers && CMENU.gm_mgSplitScreenCfg.mg_iSelected >= 1) { - CMENU.gm_mgNotes.mg_strText = TRANS("Make sure you set different controls for each player!"); + if (bHasPlayers && gmCurrent.gm_mgSplitScreenCfg.mg_iSelected >= 1) { + gmCurrent.gm_mgNotes.mg_strText = TRANS("Make sure you set different controls for each player!"); } else { - CMENU.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_mgNotes.mg_strText = ""; } } extern void SelectPlayersApplyMenu(void) { - if (CMENU.gm_bAllowDedicated && CMENU.gm_mgDedicated.mg_iSelected) { + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + + if (gmCurrent.gm_bAllowDedicated && gmCurrent.gm_mgDedicated.mg_iSelected) { _pGame->gm_MenuSplitScreenCfg = CGame::SSC_DEDICATED; return; } - if (CMENU.gm_bAllowObserving && CMENU.gm_mgObserver.mg_iSelected) { + if (gmCurrent.gm_bAllowObserving && gmCurrent.gm_mgObserver.mg_iSelected) { _pGame->gm_MenuSplitScreenCfg = CGame::SSC_OBSERVER; return; } - _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) CMENU.gm_mgSplitScreenCfg.mg_iSelected; + _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) gmCurrent.gm_mgSplitScreenCfg.mg_iSelected; } void UpdateSelectPlayers(INDEX i) @@ -1218,12 +1224,12 @@ void UpdateSelectPlayers(INDEX i) void InitActionsForSelectPlayersMenu() { - CMENU.gm_mgDedicated.mg_pOnTriggerChange = UpdateSelectPlayers; - CMENU.gm_mgObserver.mg_pOnTriggerChange = UpdateSelectPlayers; - CMENU.gm_mgSplitScreenCfg.mg_pOnTriggerChange = UpdateSelectPlayers; -} + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; -#undef CMENU + gmCurrent.gm_mgDedicated.mg_pOnTriggerChange = UpdateSelectPlayers; + gmCurrent.gm_mgObserver.mg_pOnTriggerChange = UpdateSelectPlayers; + gmCurrent.gm_mgSplitScreenCfg.mg_pOnTriggerChange = UpdateSelectPlayers; +} // ------------------------ CNetworkOpenMenu implementation void InitActionsForNetworkOpenMenu() @@ -1232,32 +1238,30 @@ void InitActionsForNetworkOpenMenu() } // ------------------------ CSplitScreenMenu implementation -#define CMENU _pGUIM->gmSplitScreenMenu - void InitActionsForSplitScreenMenu() { - CMENU.gm_mgStart.mg_pActivatedFunction = &StartSplitStartMenu; - CMENU.gm_mgQuickLoad.mg_pActivatedFunction = &StartSplitScreenQuickLoadMenu; - CMENU.gm_mgLoad.mg_pActivatedFunction = &StartSplitScreenLoadMenu; + CSplitScreenMenu &gmCurrent = _pGUIM->gmSplitScreenMenu; + + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartSplitStartMenu; + gmCurrent.gm_mgQuickLoad.mg_pActivatedFunction = &StartSplitScreenQuickLoadMenu; + gmCurrent.gm_mgLoad.mg_pActivatedFunction = &StartSplitScreenLoadMenu; } -#undef CMENU - // ------------------------ CSplitStartMenu implementation -#define CMENU _pGUIM->gmSplitStartMenu - void InitActionsForSplitStartMenu() { - CMENU.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromSplit; - CMENU.gm_mgOptions.mg_pActivatedFunction = &StartGameOptionsFromSplitScreen; - CMENU.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromSplit; + CSplitStartMenu &gmCurrent = _pGUIM->gmSplitStartMenu; + + gmCurrent.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromSplit; + gmCurrent.gm_mgOptions.mg_pActivatedFunction = &StartGameOptionsFromSplitScreen; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromSplit; } extern void UpdateSplitLevel(INDEX iDummy) { - ValidateLevelForFlags(_pGame->gam_strCustomLevel, - GetSpawnFlagsForGameType(CMENU.gm_mgGameType.mg_iSelected)); - CMENU.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; -} + CSplitStartMenu &gmCurrent = _pGUIM->gmSplitStartMenu; -#undef CMENU \ No newline at end of file + ValidateLevelForFlags(_pGame->gam_strCustomLevel, + GetSpawnFlagsForGameType(gmCurrent.gm_mgGameType.mg_iSelected)); + gmCurrent.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; +} \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp b/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp index d8ec6f9..d92c9e6 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp @@ -87,38 +87,48 @@ void StartSinglePlayerNewMenuCustom(void) static void SetQuickLoadNotes(void) { + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + if (_pShell->GetINDEX("gam_iQuickSaveSlots") <= 8) { - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = TRANS( + gmCurrent.gm_mgNotes.mg_strText = TRANS( "In-game QuickSave shortcuts:\n" "F6 - save a new QuickSave\n" "F9 - load the last QuickSave\n"); } else { - _pGUIM->gmLoadSaveMenu.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_mgNotes.mg_strText = ""; } } +extern CTString sam_strFirstLevel; + void StartSinglePlayerNewMenu(void) { - _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; - extern CTString sam_strFirstLevel; + CVarMenu &gmCurrent = _pGUIM->gmVarMenu; + _pGame->gam_strCustomLevel = sam_strFirstLevel; - ChangeToMenu(&_pGUIM->gmSinglePlayerNewMenu); + + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + ChangeToMenu(&gmCurrent); } // game options var settings void StartVarGameOptions(void) { - _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); - _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\GameOptions.cfg"); - ChangeToMenu(&_pGUIM->gmVarMenu); + CVarMenu &gmCurrent = _pGUIM->gmVarMenu; + + gmCurrent.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); + gmCurrent.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\GameOptions.cfg"); + ChangeToMenu(&gmCurrent); } void StartSinglePlayerGameOptions(void) { - _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); - _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\SPOptions.cfg"); - ChangeToMenu(&_pGUIM->gmVarMenu); - _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + CVarMenu &gmCurrent = _pGUIM->gmVarMenu; + + gmCurrent.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); + gmCurrent.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\SPOptions.cfg"); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + ChangeToMenu(&gmCurrent); } void StartGameOptionsFromNetwork(void) @@ -136,10 +146,12 @@ void StartGameOptionsFromSplitScreen(void) // rendering options var settings void StartRenderingOptionsMenu(void) { - _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("RENDERING OPTIONS"); - _pGUIM->gmVarMenu.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\RenderingOptions.cfg"); - _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmVideoOptionsMenu; - ChangeToMenu(&_pGUIM->gmVarMenu); + CVarMenu &gmCurrent = _pGUIM->gmVarMenu; + + gmCurrent.gm_mgTitle.mg_strText = TRANS("RENDERING OPTIONS"); + gmCurrent.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\RenderingOptions.cfg"); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmVideoOptionsMenu; + ChangeToMenu(&gmCurrent); } void StartCustomizeKeyboardMenu(void) @@ -325,230 +337,251 @@ void JoinNetworkGame(void) } // -------- Servers Menu Functions -#define CMENU _pGUIM->gmServersMenu - void StartSelectServerLAN(void) { - CMENU.m_bInternet = FALSE; - ChangeToMenu(&CMENU); - CMENU.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; + CServersMenu &gmCurrent = _pGUIM->gmServersMenu; + + gmCurrent.m_bInternet = FALSE; + ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; } void StartSelectServerNET(void) { - CMENU.m_bInternet = TRUE; - ChangeToMenu(&CMENU); - CMENU.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; + CServersMenu &gmCurrent = _pGUIM->gmServersMenu; + + gmCurrent.m_bInternet = TRUE; + ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; } -#undef CMENU - // -------- Levels Menu Functions -#define CMENU _pGUIM->gmLevelsMenu - void StartSelectLevelFromSingle(void) { + CLevelsMenu &gmCurrent = _pGUIM->gmLevelsMenu; + FilterLevels(GetSpawnFlagsForGameType(-1)); _pAfterLevelChosen = StartSinglePlayerNewMenuCustom; - ChangeToMenu(&CMENU); - CMENU.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; } void StartSelectLevelFromSplit(void) { + CLevelsMenu &gmCurrent = _pGUIM->gmLevelsMenu; + FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmSplitStartMenu.gm_mgGameType.mg_iSelected)); void StartSplitStartMenu(void); _pAfterLevelChosen = StartSplitStartMenu; - ChangeToMenu(&CMENU); - CMENU.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; + ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; } void StartSelectLevelFromNetwork(void) { + CLevelsMenu &gmCurrent = _pGUIM->gmLevelsMenu; + FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); void StartNetworkStartMenu(void); _pAfterLevelChosen = StartNetworkStartMenu; - ChangeToMenu(&CMENU); - CMENU.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; + ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; } -#undef CMENU - // -------- Players Selection Menu Functions -#define CMENU _pGUIM->gmSelectPlayersMenu - void StartSelectPlayersMenuFromSplit(void) { - CMENU.gm_bAllowDedicated = FALSE; - CMENU.gm_bAllowObserving = FALSE; - CMENU.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; - CMENU.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; - ChangeToMenu(&CMENU); + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + + gmCurrent.gm_bAllowDedicated = FALSE; + gmCurrent.gm_bAllowObserving = FALSE; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; + ChangeToMenu(&gmCurrent); } void StartSelectPlayersMenuFromNetwork(void) { - CMENU.gm_bAllowDedicated = TRUE; - CMENU.gm_bAllowObserving = TRUE; - CMENU.gm_mgStart.mg_pActivatedFunction = &StartNetworkGame; - CMENU.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; - ChangeToMenu(&CMENU); + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + + gmCurrent.gm_bAllowDedicated = TRUE; + gmCurrent.gm_bAllowObserving = TRUE; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartNetworkGame; + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; + ChangeToMenu(&gmCurrent); } void StartSelectPlayersMenuFromNetworkLoad(void) { - CMENU.gm_bAllowDedicated = FALSE; - CMENU.gm_bAllowObserving = TRUE; - CMENU.gm_mgStart.mg_pActivatedFunction = &StartNetworkLoadGame; - CMENU.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; - ChangeToMenu(&CMENU); + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + + gmCurrent.gm_bAllowDedicated = FALSE; + gmCurrent.gm_bAllowObserving = TRUE; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartNetworkLoadGame; + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + ChangeToMenu(&gmCurrent); } void StartSelectPlayersMenuFromSplitScreenLoad(void) { - CMENU.gm_bAllowDedicated = FALSE; - CMENU.gm_bAllowObserving = FALSE; - CMENU.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGameLoad; - CMENU.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; - ChangeToMenu(&CMENU); + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + + gmCurrent.gm_bAllowDedicated = FALSE; + gmCurrent.gm_bAllowObserving = FALSE; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGameLoad; + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + ChangeToMenu(&gmCurrent); } void StartSelectPlayersMenuFromOpen(void) { - CMENU.gm_bAllowDedicated = FALSE; - CMENU.gm_bAllowObserving = TRUE; - CMENU.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; - CMENU.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; - ChangeToMenu(&CMENU); + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + + gmCurrent.gm_bAllowDedicated = FALSE; + gmCurrent.gm_bAllowObserving = TRUE; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; + ChangeToMenu(&gmCurrent); /*if (sam_strNetworkSettings=="")*/ { void StartNetworkSettingsMenu(void); StartNetworkSettingsMenu(); _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; - _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &CMENU; + _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &gmCurrent; } } void StartSelectPlayersMenuFromServers(void) { - CMENU.gm_bAllowDedicated = FALSE; - CMENU.gm_bAllowObserving = TRUE; - CMENU.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; - CMENU.gm_pgmParentMenu = &_pGUIM->gmServersMenu; - ChangeToMenu(&CMENU); + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + + gmCurrent.gm_bAllowDedicated = FALSE; + gmCurrent.gm_bAllowObserving = TRUE; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmServersMenu; + ChangeToMenu(&gmCurrent); /*if (sam_strNetworkSettings=="")*/ { void StartNetworkSettingsMenu(void); StartNetworkSettingsMenu(); _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmServersMenu; - _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &CMENU; + _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &gmCurrent; } } -#undef CMENU - // -------- Save/Load Menu Calling Functions -#define CMENU _pGUIM->gmLoadSaveMenu - void StartPlayerModelLoadMenu(void) { - CMENU.gm_mgTitle.mg_strText = TRANS("CHOOSE MODEL"); - CMENU.gm_bAllowThumbnails = TRUE; - CMENU.gm_iSortType = LSSORT_FILEUP; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = FALSE; - CMENU.gm_fnmDirectory = CTString("Models\\Player\\"); - CMENU.gm_fnmSelected = _strLastPlayerAppearance; - CMENU.gm_fnmExt = CTString(".amc"); - CMENU.gm_pAfterFileChosen = &LSLoadPlayerModel; - CMENU.gm_mgNotes.mg_strText = ""; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - CMENU.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; - ChangeToMenu(&CMENU); + gmCurrent.gm_mgTitle.mg_strText = TRANS("CHOOSE MODEL"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEUP; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = FALSE; + gmCurrent.gm_fnmDirectory = CTString("Models\\Player\\"); + gmCurrent.gm_fnmSelected = _strLastPlayerAppearance; + gmCurrent.gm_fnmExt = CTString(".amc"); + gmCurrent.gm_pAfterFileChosen = &LSLoadPlayerModel; + gmCurrent.gm_mgNotes.mg_strText = ""; + + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; + ChangeToMenu(&gmCurrent); } void StartControlsLoadMenu(void) { - CMENU.gm_mgTitle.mg_strText = TRANS("LOAD CONTROLS"); - CMENU.gm_bAllowThumbnails = FALSE; - CMENU.gm_iSortType = LSSORT_FILEUP; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = FALSE; - CMENU.gm_fnmDirectory = CTString("Controls\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmExt = CTString(".ctl"); - CMENU.gm_pAfterFileChosen = &LSLoadControls; - CMENU.gm_mgNotes.mg_strText = ""; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - CMENU.gm_pgmParentMenu = &_pGUIM->gmControls; - ChangeToMenu(&CMENU); + gmCurrent.gm_mgTitle.mg_strText = TRANS("LOAD CONTROLS"); + gmCurrent.gm_bAllowThumbnails = FALSE; + gmCurrent.gm_iSortType = LSSORT_FILEUP; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = FALSE; + gmCurrent.gm_fnmDirectory = CTString("Controls\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".ctl"); + gmCurrent.gm_pAfterFileChosen = &LSLoadControls; + gmCurrent.gm_mgNotes.mg_strText = ""; + + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmControls; + ChangeToMenu(&gmCurrent); } void StartCustomLoadMenu(void) { - CMENU.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); - CMENU.gm_bAllowThumbnails = FALSE; - CMENU.gm_iSortType = LSSORT_NAMEUP; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = FALSE; - CMENU.gm_fnmDirectory = CTString("Scripts\\CustomOptions\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmExt = CTString(".cfg"); - CMENU.gm_pAfterFileChosen = &LSLoadCustom; - CMENU.gm_mgNotes.mg_strText = ""; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - CMENU.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&CMENU); + gmCurrent.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); + gmCurrent.gm_bAllowThumbnails = FALSE; + gmCurrent.gm_iSortType = LSSORT_NAMEUP; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = FALSE; + gmCurrent.gm_fnmDirectory = CTString("Scripts\\CustomOptions\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".cfg"); + gmCurrent.gm_pAfterFileChosen = &LSLoadCustom; + gmCurrent.gm_mgNotes.mg_strText = ""; + + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&gmCurrent); } void StartAddonsLoadMenu(void) { - CMENU.gm_mgTitle.mg_strText = TRANS("EXECUTE ADDON"); - CMENU.gm_bAllowThumbnails = FALSE; - CMENU.gm_iSortType = LSSORT_NAMEUP; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = FALSE; - CMENU.gm_fnmDirectory = CTString("Scripts\\Addons\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmExt = CTString(".ini"); - CMENU.gm_pAfterFileChosen = &LSLoadAddon; - CMENU.gm_mgNotes.mg_strText = ""; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - CMENU.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&CMENU); + gmCurrent.gm_mgTitle.mg_strText = TRANS("EXECUTE ADDON"); + gmCurrent.gm_bAllowThumbnails = FALSE; + gmCurrent.gm_iSortType = LSSORT_NAMEUP; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = FALSE; + gmCurrent.gm_fnmDirectory = CTString("Scripts\\Addons\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".ini"); + gmCurrent.gm_pAfterFileChosen = &LSLoadAddon; + gmCurrent.gm_mgNotes.mg_strText = ""; + + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&gmCurrent); } void StartModsLoadMenu(void) { - CMENU.gm_mgTitle.mg_strText = TRANS("CHOOSE MOD"); - CMENU.gm_bAllowThumbnails = TRUE; - CMENU.gm_iSortType = LSSORT_NAMEUP; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = FALSE; - CMENU.gm_fnmDirectory = CTString("Mods\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmExt = CTString(".des"); - CMENU.gm_pAfterFileChosen = &LSLoadMod; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - CMENU.gm_pgmParentMenu = &_pGUIM->gmMainMenu; - ChangeToMenu(&CMENU); + gmCurrent.gm_mgTitle.mg_strText = TRANS("CHOOSE MOD"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_NAMEUP; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = FALSE; + gmCurrent.gm_fnmDirectory = CTString("Mods\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".des"); + gmCurrent.gm_pAfterFileChosen = &LSLoadMod; + + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmMainMenu; + ChangeToMenu(&gmCurrent); } void StartNetworkSettingsMenu(void) { - CMENU.gm_mgTitle.mg_strText = TRANS("CONNECTION SETTINGS"); - CMENU.gm_bAllowThumbnails = FALSE; - CMENU.gm_iSortType = LSSORT_FILEUP; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = FALSE; - CMENU.gm_fnmDirectory = CTString("Scripts\\NetSettings\\"); - CMENU.gm_fnmSelected = sam_strNetworkSettings; - CMENU.gm_fnmExt = CTString(".ini"); - CMENU.gm_pAfterFileChosen = &LSLoadNetSettings; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + + gmCurrent.gm_mgTitle.mg_strText = TRANS("CONNECTION SETTINGS"); + gmCurrent.gm_bAllowThumbnails = FALSE; + gmCurrent.gm_iSortType = LSSORT_FILEUP; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = FALSE; + gmCurrent.gm_fnmDirectory = CTString("Scripts\\NetSettings\\"); + gmCurrent.gm_fnmSelected = sam_strNetworkSettings; + gmCurrent.gm_fnmExt = CTString(".ini"); + gmCurrent.gm_pAfterFileChosen = &LSLoadNetSettings; + if (sam_strNetworkSettings == "") { - CMENU.gm_mgNotes.mg_strText = TRANS( + gmCurrent.gm_mgNotes.mg_strText = TRANS( "Before joining a network game,\n" "you have to adjust your connection parameters.\n" "Choose one option from the list.\n" @@ -556,246 +589,271 @@ void StartNetworkSettingsMenu(void) "these parameters again from the Options menu.\n" ); } else { - CMENU.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_mgNotes.mg_strText = ""; } - CMENU.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&CMENU); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&gmCurrent); } void StartSinglePlayerQuickLoadMenu(void) { + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + _gmMenuGameMode = GM_SINGLE_PLAYER; - CMENU.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); - CMENU.gm_bAllowThumbnails = TRUE; - CMENU.gm_iSortType = LSSORT_FILEDN; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = TRUE; - CMENU.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\Quick\\", _pGame->gm_iSinglePlayer); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmExt = CTString(".sav"); - CMENU.gm_pAfterFileChosen = &LSLoadSinglePlayer; + gmCurrent.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\Quick\\", _pGame->gm_iSinglePlayer); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSLoadSinglePlayer; SetQuickLoadNotes(); - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&CMENU); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartSinglePlayerLoadMenu(void) { + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + _gmMenuGameMode = GM_SINGLE_PLAYER; - CMENU.gm_mgTitle.mg_strText = TRANS("LOAD"); - CMENU.gm_bAllowThumbnails = TRUE; - CMENU.gm_iSortType = LSSORT_FILEDN; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = TRUE; - CMENU.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmExt = CTString(".sav"); - CMENU.gm_pAfterFileChosen = &LSLoadSinglePlayer; - CMENU.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_mgTitle.mg_strText = TRANS("LOAD"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSLoadSinglePlayer; + gmCurrent.gm_mgNotes.mg_strText = ""; - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&CMENU); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartSinglePlayerSaveMenu(void) { if (_gmRunningGameMode != GM_SINGLE_PLAYER) return; + // if no live players if (_pGame->GetPlayersCount()>0 && _pGame->GetLivePlayersCount() <= 0) { // do nothing return; } - _gmMenuGameMode = GM_SINGLE_PLAYER; - CMENU.gm_mgTitle.mg_strText = TRANS("SAVE"); - CMENU.gm_bAllowThumbnails = TRUE; - CMENU.gm_iSortType = LSSORT_FILEDN; - CMENU.gm_bSave = TRUE; - CMENU.gm_bManage = TRUE; - CMENU.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmBaseName = CTString("SaveGame"); - CMENU.gm_fnmExt = CTString(".sav"); - CMENU.gm_pAfterFileChosen = &LSSaveAnyGame; - CMENU.gm_mgNotes.mg_strText = ""; - CMENU.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&CMENU); + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + + _gmMenuGameMode = GM_SINGLE_PLAYER; + + gmCurrent.gm_mgTitle.mg_strText = TRANS("SAVE"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = TRUE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmBaseName = CTString("SaveGame"); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSSaveAnyGame; + gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); + + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartDemoLoadMenu(void) { + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + _gmMenuGameMode = GM_DEMO; - CMENU.gm_mgTitle.mg_strText = TRANS("PLAY DEMO"); - CMENU.gm_bAllowThumbnails = TRUE; - CMENU.gm_iSortType = LSSORT_FILEDN; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = TRUE; - CMENU.gm_fnmDirectory = CTString("Demos\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmExt = CTString(".dem"); - CMENU.gm_pAfterFileChosen = &LSLoadDemo; - CMENU.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_mgTitle.mg_strText = TRANS("PLAY DEMO"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("Demos\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".dem"); + gmCurrent.gm_pAfterFileChosen = &LSLoadDemo; + gmCurrent.gm_mgNotes.mg_strText = ""; - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&CMENU); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartDemoSaveMenu(void) { + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + if (_gmRunningGameMode == GM_NONE) return; _gmMenuGameMode = GM_DEMO; - CMENU.gm_mgTitle.mg_strText = TRANS("RECORD DEMO"); - CMENU.gm_bAllowThumbnails = TRUE; - CMENU.gm_iSortType = LSSORT_FILEUP; - CMENU.gm_bSave = TRUE; - CMENU.gm_bManage = TRUE; - CMENU.gm_fnmDirectory = CTString("Demos\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmBaseName = CTString("Demo"); - CMENU.gm_fnmExt = CTString(".dem"); - CMENU.gm_pAfterFileChosen = &LSSaveDemo; - CMENU.gm_mgNotes.mg_strText = ""; - CMENU.gm_strSaveDes = _pGame->GetDefaultGameDescription(FALSE); + gmCurrent.gm_mgTitle.mg_strText = TRANS("RECORD DEMO"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEUP; + gmCurrent.gm_bSave = TRUE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("Demos\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmBaseName = CTString("Demo"); + gmCurrent.gm_fnmExt = CTString(".dem"); + gmCurrent.gm_pAfterFileChosen = &LSSaveDemo; + gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_strSaveDes = _pGame->GetDefaultGameDescription(FALSE); - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&CMENU); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartNetworkQuickLoadMenu(void) { + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + _gmMenuGameMode = GM_NETWORK; - CMENU.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); - CMENU.gm_bAllowThumbnails = TRUE; - CMENU.gm_iSortType = LSSORT_FILEDN; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = TRUE; - CMENU.gm_fnmDirectory = CTString("SaveGame\\Network\\Quick\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmExt = CTString(".sav"); - CMENU.gm_pAfterFileChosen = &LSLoadNetwork; + gmCurrent.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("SaveGame\\Network\\Quick\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSLoadNetwork; SetQuickLoadNotes(); - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&CMENU); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartNetworkLoadMenu(void) { + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + _gmMenuGameMode = GM_NETWORK; - CMENU.gm_mgTitle.mg_strText = TRANS("LOAD"); - CMENU.gm_bAllowThumbnails = TRUE; - CMENU.gm_iSortType = LSSORT_FILEDN; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = TRUE; - CMENU.gm_fnmDirectory = CTString("SaveGame\\Network\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmExt = CTString(".sav"); - CMENU.gm_pAfterFileChosen = &LSLoadNetwork; - CMENU.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_mgTitle.mg_strText = TRANS("LOAD"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("SaveGame\\Network\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSLoadNetwork; + gmCurrent.gm_mgNotes.mg_strText = ""; - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&CMENU); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartNetworkSaveMenu(void) { + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + if (_gmRunningGameMode != GM_NETWORK) return; _gmMenuGameMode = GM_NETWORK; - CMENU.gm_mgTitle.mg_strText = TRANS("SAVE"); - CMENU.gm_bAllowThumbnails = TRUE; - CMENU.gm_iSortType = LSSORT_FILEDN; - CMENU.gm_bSave = TRUE; - CMENU.gm_bManage = TRUE; - CMENU.gm_fnmDirectory = CTString("SaveGame\\Network\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmBaseName = CTString("SaveGame"); - CMENU.gm_fnmExt = CTString(".sav"); - CMENU.gm_pAfterFileChosen = &LSSaveAnyGame; - CMENU.gm_mgNotes.mg_strText = ""; - CMENU.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); + gmCurrent.gm_mgTitle.mg_strText = TRANS("SAVE"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = TRUE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("SaveGame\\Network\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmBaseName = CTString("SaveGame"); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSSaveAnyGame; + gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&CMENU); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartSplitScreenQuickLoadMenu(void) { + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + _gmMenuGameMode = GM_SPLIT_SCREEN; - CMENU.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); - CMENU.gm_bAllowThumbnails = TRUE; - CMENU.gm_iSortType = LSSORT_FILEDN; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = TRUE; - CMENU.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\Quick\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmExt = CTString(".sav"); - CMENU.gm_pAfterFileChosen = &LSLoadSplitScreen; + gmCurrent.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\Quick\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSLoadSplitScreen; SetQuickLoadNotes(); - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&CMENU); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartSplitScreenLoadMenu(void) { + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + _gmMenuGameMode = GM_SPLIT_SCREEN; - CMENU.gm_mgTitle.mg_strText = TRANS("LOAD"); - CMENU.gm_bAllowThumbnails = TRUE; - CMENU.gm_iSortType = LSSORT_FILEDN; - CMENU.gm_bSave = FALSE; - CMENU.gm_bManage = TRUE; - CMENU.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmExt = CTString(".sav"); - CMENU.gm_pAfterFileChosen = &LSLoadSplitScreen; - CMENU.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_mgTitle.mg_strText = TRANS("LOAD"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSLoadSplitScreen; + gmCurrent.gm_mgNotes.mg_strText = ""; - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&CMENU); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartSplitScreenSaveMenu(void) { + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + if (_gmRunningGameMode != GM_SPLIT_SCREEN) return; _gmMenuGameMode = GM_SPLIT_SCREEN; - CMENU.gm_mgTitle.mg_strText = TRANS("SAVE"); - CMENU.gm_bAllowThumbnails = TRUE; - CMENU.gm_iSortType = LSSORT_FILEDN; - CMENU.gm_bSave = TRUE; - CMENU.gm_bManage = TRUE; - CMENU.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); - CMENU.gm_fnmSelected = CTString(""); - CMENU.gm_fnmBaseName = CTString("SaveGame"); - CMENU.gm_fnmExt = CTString(".sav"); - CMENU.gm_pAfterFileChosen = &LSSaveAnyGame; - CMENU.gm_mgNotes.mg_strText = ""; - CMENU.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); + gmCurrent.gm_mgTitle.mg_strText = TRANS("SAVE"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = TRUE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmBaseName = CTString("SaveGame"); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSSaveAnyGame; + gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); - CMENU.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&CMENU); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } -#undef CMENU - // -------- Disabled Menu Calling Function void DisabledFunction(void) { - _pGUIM->gmDisabledFunction.gm_pgmParentMenu = pgmCurrentMenu; - _pGUIM->gmDisabledFunction.gm_mgButton.mg_strText = TRANS("The feature is not available in this version!"); - _pGUIM->gmDisabledFunction.gm_mgTitle.mg_strText = TRANS("DISABLED"); - ChangeToMenu(&_pGUIM->gmDisabledFunction); + CDisabledMenu &gmCurrent = _pGUIM->gmDisabledFunction; + + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + gmCurrent.gm_mgButton.mg_strText = TRANS("The feature is not available in this version!"); + gmCurrent.gm_mgTitle.mg_strText = TRANS("DISABLED"); + ChangeToMenu(&gmCurrent); } \ No newline at end of file From 7972586d1dae4dcb7061c1edb28d9b4958227cc8 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Thu, 31 Mar 2016 21:58:50 +0300 Subject: [PATCH 31/34] GameExecutable: Cleanup. Make some extern functions and variables static. --- Sources/SeriousSam/GUI/Menus/MConfirm.cpp | 3 + Sources/SeriousSam/GUI/Menus/MConfirm.h | 3 + Sources/SeriousSam/GUI/Menus/MenuActions.cpp | 170 ++++++++++--------- 3 files changed, 94 insertions(+), 82 deletions(-) diff --git a/Sources/SeriousSam/GUI/Menus/MConfirm.cpp b/Sources/SeriousSam/GUI/Menus/MConfirm.cpp index 6555cbb..d7bc1b9 100644 --- a/Sources/SeriousSam/GUI/Menus/MConfirm.cpp +++ b/Sources/SeriousSam/GUI/Menus/MConfirm.cpp @@ -44,6 +44,9 @@ void CConfirmMenu::Initialize_t(void) gm_mgConfirmNo.mg_pmgRight = &gm_mgConfirmYes; gm_mgConfirmNo.mg_iCenterI = -1; gm_mgConfirmNo.mg_bfsFontSize = BFS_LARGE; + + _pConfimedYes = NULL; + _pConfimedNo = NULL; } void CConfirmMenu::BeLarge(void) diff --git a/Sources/SeriousSam/GUI/Menus/MConfirm.h b/Sources/SeriousSam/GUI/Menus/MConfirm.h index 904f1c0..5fb75a9 100644 --- a/Sources/SeriousSam/GUI/Menus/MConfirm.h +++ b/Sources/SeriousSam/GUI/Menus/MConfirm.h @@ -28,6 +28,9 @@ public: CMGButton gm_mgConfirmYes; CMGButton gm_mgConfirmNo; + void(*_pConfimedYes)(void) = NULL; + void(*_pConfimedNo)(void) = NULL; + void Initialize_t(void); // return TRUE if handled BOOL OnKeyDown(int iVKey); diff --git a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp index c3e82eb..0a27758 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp @@ -22,26 +22,23 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "LevelInfo.h" #include "VarList.h" -#define VOLUME_STEPS 50 +ENGINE_API extern INDEX snd_iFormat; +extern BOOL _bMouseUsedLast; extern CMenuGadget *_pmgLastActivatedGadget; extern CMenuGadget *_pmgUnderCursor; -// functions to activate when user chose 'yes/no' on confirmation -void(*_pConfimedYes)(void) = NULL; -void(*_pConfimedNo)(void) = NULL; +static INDEX _ctAdapters = 0; +static CTString * _astrAdapterTexts = NULL; +static INDEX _ctResolutions = 0; +static CTString * _astrResolutionTexts = NULL; +static CDisplayMode *_admResolutionModes = NULL; -INDEX _ctAdapters = 0; -CTString * _astrAdapterTexts = NULL; -INDEX _ctResolutions = 0; -CTString * _astrResolutionTexts = NULL; -CDisplayMode *_admResolutionModes = NULL; +#define VOLUME_STEPS 50 -extern BOOL _bMouseUsedLast; -ENGINE_API extern INDEX snd_iFormat; // make description for a given resolution -CTString GetResolutionDescription(CDisplayMode &dm) +static CTString GetResolutionDescription(CDisplayMode &dm) { CTString str; // if dual head @@ -58,7 +55,7 @@ CTString GetResolutionDescription(CDisplayMode &dm) } // make description for a given resolution -void SetResolutionInList(INDEX iRes, PIX pixSizeI, PIX pixSizeJ) +static void SetResolutionInList(INDEX iRes, PIX pixSizeI, PIX pixSizeJ) { ASSERT(iRes >= 0 && iRes<_ctResolutions); @@ -103,25 +100,25 @@ CTFileName _fnmModSelected; CTString _strModURLSelected; CTString _strModServerSelected; -void ExitGame(void) +static void ExitGame(void) { _bRunning = FALSE; _bQuitScreen = TRUE; } -void ExitConfirm(void) +static void ExitConfirm(void) { CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; - _pConfimedYes = &ExitGame; - _pConfimedNo = NULL; + gmCurrent._pConfimedYes = &ExitGame; + gmCurrent._pConfimedNo = NULL; gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; gmCurrent.BeLarge(); ChangeToMenu(&gmCurrent); } -void StopCurrentGame(void) +static void StopCurrentGame(void) { _pGame->StopGame(); _gmRunningGameMode = GM_NONE; @@ -129,25 +126,25 @@ void StopCurrentGame(void) StartMenus(""); } -void StopConfirm(void) +static void StopConfirm(void) { CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; - _pConfimedYes = &StopCurrentGame; - _pConfimedNo = NULL; + gmCurrent._pConfimedYes = &StopCurrentGame; + gmCurrent._pConfimedNo = NULL; gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; gmCurrent.BeLarge(); ChangeToMenu(&gmCurrent); } -void ModLoadYes(void) +static void ModLoadYes(void) { extern CTFileName _fnmModToLoad; _fnmModToLoad = _fnmModSelected; } -void ModConnect(void) +static void ModConnect(void) { extern CTFileName _fnmModToLoad; extern CTString _strModServerJoin; @@ -162,6 +159,7 @@ extern void ModConnectConfirm(void) if (_fnmModSelected == " ") { _fnmModSelected = CTString("SeriousSam"); } + CTFileName fnmModPath = "Mods\\" + _fnmModSelected + "\\"; if (!FileExists(fnmModPath + "BaseWriteInclude.lst") && !FileExists(fnmModPath + "BaseWriteExclude.lst") @@ -173,8 +171,8 @@ extern void ModConnectConfirm(void) } CPrintF(TRANS("Server is running a different MOD (%s).\nYou need to reload to connect.\n"), _fnmModSelected); - _pConfimedYes = &ModConnect; - _pConfimedNo = NULL; + gmCurrent._pConfimedYes = &ModConnect; + gmCurrent._pConfimedNo = NULL; gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("CHANGE THE MOD?"); gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; gmCurrent.BeLarge(); @@ -186,8 +184,8 @@ void SaveConfirm(void) CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; extern void OnFileSaveOK(void); - _pConfimedYes = &OnFileSaveOK; - _pConfimedNo = NULL; + gmCurrent._pConfimedYes = &OnFileSaveOK; + gmCurrent._pConfimedNo = NULL; gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("OVERWRITE?"); gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; gmCurrent.BeLarge(); @@ -206,8 +204,8 @@ void ModNotInstalled(void) { CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; - _pConfimedYes = &ExitAndSpawnExplorer; - _pConfimedNo = NULL; + gmCurrent._pConfimedYes = &ExitAndSpawnExplorer; + gmCurrent._pConfimedNo = NULL; gmCurrent.gm_mgConfirmLabel.mg_strText.PrintF( TRANS("You don't have MOD '%s' installed.\nDo you want to visit its web site?"), (const char*)_fnmModSelected); gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; @@ -220,14 +218,16 @@ extern void ModConfirm(void) { CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; - _pConfimedYes = &ModLoadYes; - _pConfimedNo = NULL; + gmCurrent._pConfimedYes = &ModLoadYes; + gmCurrent._pConfimedNo = NULL; gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("LOAD THIS MOD?"); gmCurrent.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; gmCurrent.BeLarge(); ChangeToMenu(&gmCurrent); } +static void RevertVideoSettings(void); + void VideoConfirm(void) { CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; @@ -237,9 +237,8 @@ void VideoConfirm(void) _bMouseUsedLast = FALSE; _pmgUnderCursor = gmCurrent.gm_pmgSelectedByDefault; - _pConfimedYes = NULL; - void RevertVideoSettings(void); - _pConfimedNo = RevertVideoSettings; + gmCurrent._pConfimedYes = NULL; + gmCurrent._pConfimedNo = RevertVideoSettings; gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("KEEP THIS SETTING?"); gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; @@ -247,19 +246,23 @@ void VideoConfirm(void) ChangeToMenu(&gmCurrent); } -void ConfirmYes(void) +static void ConfirmYes(void) { - if (_pConfimedYes != NULL) { - _pConfimedYes(); + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + + if (gmCurrent._pConfimedYes != NULL) { + gmCurrent._pConfimedYes(); } void MenuGoToParent(void); MenuGoToParent(); } -void ConfirmNo(void) +static void ConfirmNo(void) { - if (_pConfimedNo != NULL) { - _pConfimedNo(); + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + + if (gmCurrent._pConfimedNo != NULL) { + gmCurrent._pConfimedNo(); } void MenuGoToParent(void); MenuGoToParent(); @@ -288,13 +291,13 @@ void InitActionsForMainMenu() { // ------------------------ CInGameMenu implementation // start load/save menus depending on type of game running -void QuickSaveFromMenu() +static void QuickSaveFromMenu() { _pShell->SetINDEX("gam_bQuickSave", 2); // force save with reporting StopMenus(TRUE); } -void StopRecordingDemo(void) +static void StopRecordingDemo(void) { _pNetwork->StopDemoRec(); void SetDemoStartStopRecText(void); @@ -333,19 +336,20 @@ extern void SetDemoStartStopRecText(void) // ------------------------ CSinglePlayerMenu implementation -void StartSinglePlayerGame_Normal(void); -void StartTechTest(void) +extern CTString sam_strTechTestLevel; +extern CTString sam_strTrainingLevel; + +static void StartSinglePlayerGame_Normal(void); +static void StartTechTest(void) { _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; - extern CTString sam_strTechTestLevel; _pGame->gam_strCustomLevel = sam_strTechTestLevel; StartSinglePlayerGame_Normal(); } -void StartTraining(void) +static void StartTraining(void) { _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; - extern CTString sam_strTrainingLevel; _pGame->gam_strCustomLevel = sam_strTrainingLevel; ChangeToMenu(&_pGUIM->gmSinglePlayerNewMenu); } @@ -387,42 +391,42 @@ void StartSinglePlayerGame(void) } } -void StartSinglePlayerGame_Tourist(void) +static void StartSinglePlayerGame_Tourist(void) { _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_TOURIST); _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); StartSinglePlayerGame(); } -void StartSinglePlayerGame_Easy(void) +static void StartSinglePlayerGame_Easy(void) { _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EASY); _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); StartSinglePlayerGame(); } -void StartSinglePlayerGame_Normal(void) +static void StartSinglePlayerGame_Normal(void) { _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_NORMAL); _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); StartSinglePlayerGame(); } -void StartSinglePlayerGame_Hard(void) +static void StartSinglePlayerGame_Hard(void) { _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_HARD); _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); StartSinglePlayerGame(); } -void StartSinglePlayerGame_Serious(void) +static void StartSinglePlayerGame_Serious(void) { _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EXTREME); _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); StartSinglePlayerGame(); } -void StartSinglePlayerGame_Mental(void) +static void StartSinglePlayerGame_Mental(void) { _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EXTREME + 1); _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); @@ -441,21 +445,21 @@ void InitActionsForSinglePlayerNewMenu() { } // ------------------------ CPlayerProfileMenu implementation -void ChangeCrosshair(INDEX iNew) +static void ChangeCrosshair(INDEX iNew) { INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; pps->ps_iCrossHairType = iNew - 1; } -void ChangeWeaponSelect(INDEX iNew) +static void ChangeWeaponSelect(INDEX iNew) { INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; pps->ps_iWeaponAutoSelect = iNew; } -void ChangeWeaponHide(INDEX iNew) +static void ChangeWeaponHide(INDEX iNew) { INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; @@ -466,7 +470,7 @@ void ChangeWeaponHide(INDEX iNew) } } -void Change3rdPerson(INDEX iNew) +static void Change3rdPerson(INDEX iNew) { INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; @@ -477,7 +481,7 @@ void Change3rdPerson(INDEX iNew) } } -void ChangeQuotes(INDEX iNew) +static void ChangeQuotes(INDEX iNew) { INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; @@ -488,7 +492,7 @@ void ChangeQuotes(INDEX iNew) } } -void ChangeAutoSave(INDEX iNew) +static void ChangeAutoSave(INDEX iNew) { INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; @@ -499,7 +503,7 @@ void ChangeAutoSave(INDEX iNew) } } -void ChangeCompDoubleClick(INDEX iNew) +static void ChangeCompDoubleClick(INDEX iNew) { INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; @@ -510,7 +514,7 @@ void ChangeCompDoubleClick(INDEX iNew) } } -void ChangeViewBobbing(INDEX iNew) +static void ChangeViewBobbing(INDEX iNew) { INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; @@ -521,7 +525,7 @@ void ChangeViewBobbing(INDEX iNew) } } -void ChangeSharpTurning(INDEX iNew) +static void ChangeSharpTurning(INDEX iNew) { INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; @@ -767,7 +771,7 @@ extern void InitVideoOptionsButtons(void) gmCurrent.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); } -void ApplyVideoOptions(void) +static void ApplyVideoOptions(void) { CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; @@ -810,7 +814,7 @@ void ApplyVideoOptions(void) if (bFullScreenMode) VideoConfirm(); } -void RevertVideoSettings(void) +static void RevertVideoSettings(void) { // restore previous variables sam_bFullScreenActive = sam_old_bFullScreenActive; @@ -876,7 +880,7 @@ extern void RefreshSoundFormat(void) gmCurrent.gm_mgFrequencyTrigger.ApplyCurrentSelection(); } -void ApplyAudioOptions(void) +static void ApplyAudioOptions(void) { CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; @@ -905,7 +909,7 @@ static void OnWaveVolumeChange(INDEX iCurPos) _pShell->SetFLOAT("snd_fSoundVolume", iCurPos / FLOAT(VOLUME_STEPS)); } -void WaveSliderChange(void) +static void WaveSliderChange(void) { CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; @@ -913,7 +917,7 @@ void WaveSliderChange(void) gmCurrent.gm_mgWaveVolume.ApplyCurrentPosition(); } -void FrequencyTriggerChange(INDEX iDummy) +static void FrequencyTriggerChange(INDEX iDummy) { CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; @@ -922,7 +926,7 @@ void FrequencyTriggerChange(INDEX iDummy) gmCurrent.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); } -void MPEGSliderChange(void) +static void MPEGSliderChange(void) { CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; @@ -948,7 +952,7 @@ void InitActionsForAudioOptionsMenu() } // ------------------------ CVarMenu implementation -void VarApply(void) +static void VarApply(void) { CVarMenu &gmCurrent = _pGUIM->gmVarMenu; @@ -966,7 +970,7 @@ void InitActionsForVarMenu() { extern CMGButton mgServerColumn[7]; extern CMGEdit mgServerFilter[7]; -void SortByColumn(int i) +static void SortByColumn(int i) { CServersMenu &gmCurrent = _pGUIM->gmServersMenu; @@ -978,13 +982,13 @@ void SortByColumn(int i) gmCurrent.gm_mgList.mg_iSort = i; } -void SortByServer(void) { SortByColumn(0); } -void SortByMap(void) { SortByColumn(1); } -void SortByPing(void) { SortByColumn(2); } -void SortByPlayers(void){ SortByColumn(3); } -void SortByGame(void) { SortByColumn(4); } -void SortByMod(void) { SortByColumn(5); } -void SortByVer(void) { SortByColumn(6); } +static void SortByServer(void) { SortByColumn(0); } +static void SortByMap(void) { SortByColumn(1); } +static void SortByPing(void) { SortByColumn(2); } +static void SortByPlayers(void){ SortByColumn(3); } +static void SortByGame(void) { SortByColumn(4); } +static void SortByMod(void) { SortByColumn(5); } +static void SortByVer(void) { SortByColumn(6); } extern void RefreshServerList(void) { @@ -1039,13 +1043,15 @@ extern void UpdateNetworkLevel(INDEX iDummy) void InitActionsForNetworkStartMenu() { - _pGUIM->gmNetworkStartMenu.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromNetwork; - _pGUIM->gmNetworkStartMenu.gm_mgGameOptions.mg_pActivatedFunction = &StartGameOptionsFromNetwork; - _pGUIM->gmNetworkStartMenu.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromNetwork; + CNetworkStartMenu &gmCurrent = _pGUIM->gmNetworkStartMenu; + + gmCurrent.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromNetwork; + gmCurrent.gm_mgGameOptions.mg_pActivatedFunction = &StartGameOptionsFromNetwork; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromNetwork; } // ------------------------ CSelectPlayersMenu implementation -INDEX FindUnusedPlayer(void) +static INDEX FindUnusedPlayer(void) { INDEX *ai = _pGame->gm_aiMenuLocalPlayers; INDEX iPlayer = 0; @@ -1216,7 +1222,7 @@ extern void SelectPlayersApplyMenu(void) _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) gmCurrent.gm_mgSplitScreenCfg.mg_iSelected; } -void UpdateSelectPlayers(INDEX i) +static void UpdateSelectPlayers(INDEX i) { SelectPlayersApplyMenu(); SelectPlayersFillMenu(); From 6434adfc1babd3ad862fecf64f269364ddbd84a3 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Thu, 31 Mar 2016 22:43:28 +0300 Subject: [PATCH 32/34] GameExecutable: Fix spaces for headers. --- Sources/SeriousSam/ArrowDir.h | 10 +-- Sources/SeriousSam/CDCheck.h | 15 ---- Sources/SeriousSam/FileInfo.h | 6 +- Sources/SeriousSam/GUI/Components/MGArrow.h | 6 +- Sources/SeriousSam/GUI/Components/MGButton.h | 35 ++++----- .../GUI/Components/MGChangePlayer.h | 6 +- Sources/SeriousSam/GUI/Components/MGEdit.h | 26 ++++--- .../SeriousSam/GUI/Components/MGFileButton.h | 45 +++++------ .../SeriousSam/GUI/Components/MGHighScore.h | 2 +- .../GUI/Components/MGKeyDefinition.h | 30 ++++---- .../SeriousSam/GUI/Components/MGLevelButton.h | 6 +- Sources/SeriousSam/GUI/Components/MGModel.h | 12 +-- .../SeriousSam/GUI/Components/MGServerList.h | 72 +++++++++--------- Sources/SeriousSam/GUI/Components/MGSlider.h | 24 +++--- Sources/SeriousSam/GUI/Components/MGTitle.h | 4 +- Sources/SeriousSam/GUI/Components/MGTrigger.h | 30 ++++---- .../SeriousSam/GUI/Components/MGVarButton.h | 12 +-- .../SeriousSam/GUI/Components/MenuGadget.h | 58 +++++++------- Sources/SeriousSam/GUI/Menus/GameMenu.h | 50 ++++++------- Sources/SeriousSam/GUI/Menus/MAudioOptions.h | 18 ++--- Sources/SeriousSam/GUI/Menus/MConfirm.h | 20 ++--- Sources/SeriousSam/GUI/Menus/MControls.h | 30 ++++---- Sources/SeriousSam/GUI/Menus/MCredits.h | 2 +- Sources/SeriousSam/GUI/Menus/MCustomizeAxis.h | 28 +++---- .../SeriousSam/GUI/Menus/MCustomizeKeyboard.h | 16 ++-- Sources/SeriousSam/GUI/Menus/MDisabled.h | 6 +- Sources/SeriousSam/GUI/Menus/MHighScore.h | 8 +- Sources/SeriousSam/GUI/Menus/MInGame.h | 28 +++---- Sources/SeriousSam/GUI/Menus/MLevels.h | 14 ++-- Sources/SeriousSam/GUI/Menus/MLoadSave.h | 75 ++++++++++--------- Sources/SeriousSam/GUI/Menus/MMain.h | 24 +++--- Sources/SeriousSam/GUI/Menus/MNetwork.h | 14 ++-- Sources/SeriousSam/GUI/Menus/MNetworkJoin.h | 10 +-- Sources/SeriousSam/GUI/Menus/MNetworkOpen.h | 20 ++--- Sources/SeriousSam/GUI/Menus/MNetworkStart.h | 26 +++---- Sources/SeriousSam/GUI/Menus/MOptions.h | 14 ++-- Sources/SeriousSam/GUI/Menus/MPlayerProfile.h | 52 ++++++------- .../SeriousSam/GUI/Menus/MRenderingOptions.h | 6 +- Sources/SeriousSam/GUI/Menus/MSelectPlayers.h | 30 ++++---- Sources/SeriousSam/GUI/Menus/MServers.h | 14 ++-- Sources/SeriousSam/GUI/Menus/MSinglePlayer.h | 24 +++--- .../SeriousSam/GUI/Menus/MSinglePlayerNew.h | 18 ++--- Sources/SeriousSam/GUI/Menus/MSplitScreen.h | 12 +-- Sources/SeriousSam/GUI/Menus/MSplitStart.h | 18 ++--- Sources/SeriousSam/GUI/Menus/MVar.h | 22 +++--- Sources/SeriousSam/GUI/Menus/MVideoOptions.h | 22 +++--- Sources/SeriousSam/GUI/Menus/MenuActions.cpp | 8 +- Sources/SeriousSam/GUI/Menus/MenuManager.h | 52 ++++++------- .../SeriousSam/GUI/Menus/MenuStartersAF.cpp | 4 +- Sources/SeriousSam/GUI/Menus/MenuStuff.h | 18 ++--- Sources/SeriousSam/SeriousSam.h | 1 - Sources/SeriousSam/SeriousSam.vcxproj | 1 - Sources/SeriousSam/SeriousSam.vcxproj.filters | 3 - 53 files changed, 547 insertions(+), 560 deletions(-) delete mode 100644 Sources/SeriousSam/CDCheck.h diff --git a/Sources/SeriousSam/ArrowDir.h b/Sources/SeriousSam/ArrowDir.h index aa9740d..8b02b09 100644 --- a/Sources/SeriousSam/ArrowDir.h +++ b/Sources/SeriousSam/ArrowDir.h @@ -20,11 +20,11 @@ with this program; if not, write to the Free Software Foundation, Inc., enum ArrowDir { - AD_NONE, - AD_UP, - AD_DOWN, - AD_LEFT, - AD_RIGHT, + AD_NONE, + AD_UP, + AD_DOWN, + AD_LEFT, + AD_RIGHT, }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/CDCheck.h b/Sources/SeriousSam/CDCheck.h deleted file mode 100644 index 283b894..0000000 --- a/Sources/SeriousSam/CDCheck.h +++ /dev/null @@ -1,15 +0,0 @@ -/* Copyright (c) 2002-2012 Croteam Ltd. -This program is free software; you can redistribute it and/or modify -it under the terms of version 2 of the GNU General Public License as published by -the Free Software Foundation - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ - -#define CD_CHECK 1 diff --git a/Sources/SeriousSam/FileInfo.h b/Sources/SeriousSam/FileInfo.h index cad9465..c775720 100644 --- a/Sources/SeriousSam/FileInfo.h +++ b/Sources/SeriousSam/FileInfo.h @@ -21,9 +21,9 @@ with this program; if not, write to the Free Software Foundation, Inc., class CFileInfo { public: - CListNode fi_lnNode; - CTFileName fi_fnFile; - CTString fi_strName; + CListNode fi_lnNode; + CTFileName fi_fnFile; + CTString fi_strName; }; diff --git a/Sources/SeriousSam/GUI/Components/MGArrow.h b/Sources/SeriousSam/GUI/Components/MGArrow.h index e0d424f..532c94a 100644 --- a/Sources/SeriousSam/GUI/Components/MGArrow.h +++ b/Sources/SeriousSam/GUI/Components/MGArrow.h @@ -24,9 +24,9 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMGArrow : public CMGButton { public: - enum ArrowDir mg_adDirection; - void Render(CDrawPort *pdp); - void OnActivate(void); + enum ArrowDir mg_adDirection; + void Render(CDrawPort *pdp); + void OnActivate(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGButton.h b/Sources/SeriousSam/GUI/Components/MGButton.h index 676b6ef..4b3ea4a 100644 --- a/Sources/SeriousSam/GUI/Components/MGButton.h +++ b/Sources/SeriousSam/GUI/Components/MGButton.h @@ -23,24 +23,25 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMGButton : public CMenuGadget { public: - CTString mg_strLabel; // for those that have labels separately from main text - CTString mg_strText; - INDEX mg_iCenterI; - enum ButtonFontSize mg_bfsFontSize; - BOOL mg_bEditing; - BOOL mg_bHighlighted; - BOOL mg_bRectangle; - BOOL mg_bMental; - INDEX mg_iTextMode; - INDEX mg_iCursorPos; + CTString mg_strLabel; // for those that have labels separately from main text + CTString mg_strText; + INDEX mg_iCenterI; + enum ButtonFontSize mg_bfsFontSize; + BOOL mg_bEditing; + BOOL mg_bHighlighted; + BOOL mg_bRectangle; + BOOL mg_bMental; + INDEX mg_iTextMode; + INDEX mg_iCursorPos; + INDEX mg_iIndex; - INDEX mg_iIndex; - void(*mg_pActivatedFunction)(void); - CMGButton(void); - void SetText(CTString strNew); - void OnActivate(void); - void Render(CDrawPort *pdp); - PIX GetCharOffset(CDrawPort *pdp, INDEX iCharNo); + void(*mg_pActivatedFunction)(void); + + CMGButton(void); + void SetText(CTString strNew); + void OnActivate(void); + void Render(CDrawPort *pdp); + PIX GetCharOffset(CDrawPort *pdp, INDEX iCharNo); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGChangePlayer.h b/Sources/SeriousSam/GUI/Components/MGChangePlayer.h index e7f343a..8dd0f08 100644 --- a/Sources/SeriousSam/GUI/Components/MGChangePlayer.h +++ b/Sources/SeriousSam/GUI/Components/MGChangePlayer.h @@ -23,10 +23,10 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMGChangePlayer : public CMGButton { public: - INDEX mg_iLocalPlayer; + INDEX mg_iLocalPlayer; - void SetPlayerText(void); - void OnActivate(void); + void SetPlayerText(void); + void OnActivate(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGEdit.h b/Sources/SeriousSam/GUI/Components/MGEdit.h index 12ff4b1..86eb385 100644 --- a/Sources/SeriousSam/GUI/Components/MGEdit.h +++ b/Sources/SeriousSam/GUI/Components/MGEdit.h @@ -23,18 +23,20 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMGEdit : public CMGButton { public: - INDEX mg_ctMaxStringLen; - CTString *mg_pstrToChange; - CMGEdit(void); - // return TRUE if handled - BOOL OnKeyDown(int iVKey); - BOOL OnChar(MSG msg); - void Clear(void); - void OnActivate(void); - void OnKillFocus(void); - void Render(CDrawPort *pdp); - virtual void OnStringChanged(void); - virtual void OnStringCanceled(void); + INDEX mg_ctMaxStringLen; + CTString *mg_pstrToChange; + + CMGEdit(void); + + // return TRUE if handled + BOOL OnKeyDown(int iVKey); + BOOL OnChar(MSG msg); + void Clear(void); + void OnActivate(void); + void OnKillFocus(void); + void Render(CDrawPort *pdp); + virtual void OnStringChanged(void); + virtual void OnStringCanceled(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGFileButton.h b/Sources/SeriousSam/GUI/Components/MGFileButton.h index 8dee6a4..ca37a05 100644 --- a/Sources/SeriousSam/GUI/Components/MGFileButton.h +++ b/Sources/SeriousSam/GUI/Components/MGFileButton.h @@ -26,30 +26,31 @@ with this program; if not, write to the Free Software Foundation, Inc., #define FBS_RENAME 2 // renaming existing file class CMGFileButton : public CMGEdit { public: - CMGFileButton(void); - CTFileName mg_fnm; - CTString mg_strDes; // entire description goes here - CTString mg_strInfo; // info part of text to print above the gadget tip - INDEX mg_iState; - // refresh current text from description - void RefreshText(void); - // save description to disk - void SaveDescription(void); - void SaveYes(void); - void DoSave(void); - void DoLoad(void); - void StartEdit(void); + CMGFileButton(void); + CTFileName mg_fnm; + CTString mg_strDes; // entire description goes here + CTString mg_strInfo; // info part of text to print above the gadget tip + INDEX mg_iState; - // return TRUE if handled - BOOL OnKeyDown(int iVKey); - void OnActivate(void); - void OnSetFocus(void); - void OnKillFocus(void); + // refresh current text from description + void RefreshText(void); + // save description to disk + void SaveDescription(void); + void SaveYes(void); + void DoSave(void); + void DoLoad(void); + void StartEdit(void); - // overrides from edit gadget - void OnStringChanged(void); - void OnStringCanceled(void); - void Render(CDrawPort *pdp); + // return TRUE if handled + BOOL OnKeyDown(int iVKey); + void OnActivate(void); + void OnSetFocus(void); + void OnKillFocus(void); + + // overrides from edit gadget + void OnStringChanged(void); + void OnStringCanceled(void); + void Render(CDrawPort *pdp); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGHighScore.h b/Sources/SeriousSam/GUI/Components/MGHighScore.h index 614460f..0299122 100644 --- a/Sources/SeriousSam/GUI/Components/MGHighScore.h +++ b/Sources/SeriousSam/GUI/Components/MGHighScore.h @@ -23,7 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMGHighScore : public CMenuGadget { public: - void Render(CDrawPort *pdp); + void Render(CDrawPort *pdp); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGKeyDefinition.h b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.h index 157361b..ef4370f 100644 --- a/Sources/SeriousSam/GUI/Components/MGKeyDefinition.h +++ b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.h @@ -23,23 +23,23 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMGKeyDefinition : public CMenuGadget { public: - INDEX mg_iState; - INDEX mg_iControlNumber; + INDEX mg_iState; + INDEX mg_iControlNumber; - CTString mg_strLabel; - CTString mg_strBinding; + CTString mg_strLabel; + CTString mg_strBinding; - CMGKeyDefinition(void); - void Appear(void); - void Disappear(void); - void OnActivate(void); - // return TRUE if handled - BOOL OnKeyDown(int iVKey); - void Think(void); - // set names for both key bindings - void SetBindingNames(BOOL bDefining); - void DefineKey(INDEX iDik); - void Render(CDrawPort *pdp); + CMGKeyDefinition(void); + void Appear(void); + void Disappear(void); + void OnActivate(void); + // return TRUE if handled + BOOL OnKeyDown(int iVKey); + void Think(void); + // set names for both key bindings + void SetBindingNames(BOOL bDefining); + void DefineKey(INDEX iDik); + void Render(CDrawPort *pdp); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGLevelButton.h b/Sources/SeriousSam/GUI/Components/MGLevelButton.h index 24c4578..b3392a3 100644 --- a/Sources/SeriousSam/GUI/Components/MGLevelButton.h +++ b/Sources/SeriousSam/GUI/Components/MGLevelButton.h @@ -23,10 +23,10 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMGLevelButton : public CMGButton { public: - CTFileName mg_fnmLevel; + CTFileName mg_fnmLevel; - void OnActivate(void); - void OnSetFocus(void); + void OnActivate(void); + void OnSetFocus(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGModel.h b/Sources/SeriousSam/GUI/Components/MGModel.h index 72d4f30..30f002e 100644 --- a/Sources/SeriousSam/GUI/Components/MGModel.h +++ b/Sources/SeriousSam/GUI/Components/MGModel.h @@ -23,13 +23,13 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMGModel : public CMGButton { public: - CModelObject mg_moModel; - CModelObject mg_moFloor; - CPlacement3D mg_plModel; - BOOL mg_fFloorY; + CModelObject mg_moModel; + CModelObject mg_moFloor; + CPlacement3D mg_plModel; + BOOL mg_fFloorY; - CMGModel(void); - void Render(CDrawPort *pdp); + CMGModel(void); + void Render(CDrawPort *pdp); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGServerList.h b/Sources/SeriousSam/GUI/Components/MGServerList.h index 4796013..dc3195a 100644 --- a/Sources/SeriousSam/GUI/Components/MGServerList.h +++ b/Sources/SeriousSam/GUI/Components/MGServerList.h @@ -23,44 +23,44 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMGServerList : public CMGButton { public: - INDEX mg_iSelected; - INDEX mg_iFirstOnScreen; - INDEX mg_ctOnScreen; - // server list dimensions - PIX mg_pixMinI; - PIX mg_pixMaxI; - PIX mg_pixListMinJ; - PIX mg_pixListStepJ; - // header dimensions - PIX mg_pixHeaderMinJ; - PIX mg_pixHeaderMidJ; - PIX mg_pixHeaderMaxJ; - PIX mg_pixHeaderI[8]; - // scrollbar dimensions - PIX mg_pixSBMinI; - PIX mg_pixSBMaxI; - PIX mg_pixSBMinJ; - PIX mg_pixSBMaxJ; - // scrollbar dragging params - PIX mg_pixDragJ; - PIX mg_iDragLine; - PIX mg_pixMouseDrag; - // current mouse pos - PIX mg_pixMouseI; - PIX mg_pixMouseJ; + INDEX mg_iSelected; + INDEX mg_iFirstOnScreen; + INDEX mg_ctOnScreen; + // server list dimensions + PIX mg_pixMinI; + PIX mg_pixMaxI; + PIX mg_pixListMinJ; + PIX mg_pixListStepJ; + // header dimensions + PIX mg_pixHeaderMinJ; + PIX mg_pixHeaderMidJ; + PIX mg_pixHeaderMaxJ; + PIX mg_pixHeaderI[8]; + // scrollbar dimensions + PIX mg_pixSBMinI; + PIX mg_pixSBMaxI; + PIX mg_pixSBMinJ; + PIX mg_pixSBMaxJ; + // scrollbar dragging params + PIX mg_pixDragJ; + PIX mg_iDragLine; + PIX mg_pixMouseDrag; + // current mouse pos + PIX mg_pixMouseI; + PIX mg_pixMouseJ; - INDEX mg_iSort; // column to sort by - BOOL mg_bSortDown; // sort in reverse order + INDEX mg_iSort; // column to sort by + BOOL mg_bSortDown; // sort in reverse order - CMGServerList(); - BOOL OnKeyDown(int iVKey); - PIXaabbox2D GetScrollBarFullBox(void); - PIXaabbox2D GetScrollBarHandleBox(void); - void OnSetFocus(void); - void OnKillFocus(void); - void Render(CDrawPort *pdp); - void AdjustFirstOnScreen(void); - void OnMouseOver(PIX pixI, PIX pixJ); + CMGServerList(); + BOOL OnKeyDown(int iVKey); + PIXaabbox2D GetScrollBarFullBox(void); + PIXaabbox2D GetScrollBarHandleBox(void); + void OnSetFocus(void); + void OnKillFocus(void); + void Render(CDrawPort *pdp); + void AdjustFirstOnScreen(void); + void OnMouseOver(PIX pixI, PIX pixJ); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGSlider.h b/Sources/SeriousSam/GUI/Components/MGSlider.h index 12f1f7a..5d25b06 100644 --- a/Sources/SeriousSam/GUI/Components/MGSlider.h +++ b/Sources/SeriousSam/GUI/Components/MGSlider.h @@ -23,19 +23,19 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMGSlider : public CMGButton { public: - FLOAT mg_fFactor; - INDEX mg_iMinPos; - INDEX mg_iMaxPos; - INDEX mg_iCurPos; + FLOAT mg_fFactor; + INDEX mg_iMinPos; + INDEX mg_iMaxPos; + INDEX mg_iCurPos; - CMGSlider(); - void ApplyCurrentPosition(void); - void ApplyGivenPosition(INDEX iMin, INDEX iMax, INDEX iCur); - // return TRUE if handled - virtual BOOL OnKeyDown(int iVKey); - void(*mg_pOnSliderChange)(INDEX iCurPos); - PIXaabbox2D GetSliderBox(void); - void Render(CDrawPort *pdp); + CMGSlider(); + void ApplyCurrentPosition(void); + void ApplyGivenPosition(INDEX iMin, INDEX iMax, INDEX iCur); + // return TRUE if handled + virtual BOOL OnKeyDown(int iVKey); + void(*mg_pOnSliderChange)(INDEX iCurPos); + PIXaabbox2D GetSliderBox(void); + void Render(CDrawPort *pdp); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGTitle.h b/Sources/SeriousSam/GUI/Components/MGTitle.h index eab0473..534c388 100644 --- a/Sources/SeriousSam/GUI/Components/MGTitle.h +++ b/Sources/SeriousSam/GUI/Components/MGTitle.h @@ -23,8 +23,8 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMGTitle : public CMenuGadget { public: - CTString mg_strText; - void Render(CDrawPort *pdp); + CTString mg_strText; + void Render(CDrawPort *pdp); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGTrigger.h b/Sources/SeriousSam/GUI/Components/MGTrigger.h index 6392eff..e15c4d7 100644 --- a/Sources/SeriousSam/GUI/Components/MGTrigger.h +++ b/Sources/SeriousSam/GUI/Components/MGTrigger.h @@ -23,24 +23,24 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMGTrigger : public CMenuGadget { public: - CTString mg_strLabel; - CTString mg_strValue; - CTString *mg_astrTexts; - INDEX mg_ctTexts; - INDEX mg_iSelected; - INDEX mg_iCenterI; - BOOL mg_bVisual; + CTString mg_strLabel; + CTString mg_strValue; + CTString *mg_astrTexts; + INDEX mg_ctTexts; + INDEX mg_iSelected; + INDEX mg_iCenterI; + BOOL mg_bVisual; - CMGTrigger(void); + CMGTrigger(void); - void ApplyCurrentSelection(void); - void OnSetNextInList(int iVKey); - void(*mg_pPreTriggerChange)(INDEX iCurrentlySelected); - void(*mg_pOnTriggerChange)(INDEX iCurrentlySelected); + void ApplyCurrentSelection(void); + void OnSetNextInList(int iVKey); + void(*mg_pPreTriggerChange)(INDEX iCurrentlySelected); + void(*mg_pOnTriggerChange)(INDEX iCurrentlySelected); - // return TRUE if handled - BOOL OnKeyDown(int iVKey); - void Render(CDrawPort *pdp); + // return TRUE if handled + BOOL OnKeyDown(int iVKey); + void Render(CDrawPort *pdp); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGVarButton.h b/Sources/SeriousSam/GUI/Components/MGVarButton.h index 820165a..0bda9b2 100644 --- a/Sources/SeriousSam/GUI/Components/MGVarButton.h +++ b/Sources/SeriousSam/GUI/Components/MGVarButton.h @@ -23,12 +23,12 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMGVarButton : public CMGButton { public: - class CVarSetting *mg_pvsVar; - PIXaabbox2D GetSliderBox(void); - BOOL OnKeyDown(int iVKey); - void Render(CDrawPort *pdp); - BOOL IsSeparator(void); - BOOL IsEnabled(void); + class CVarSetting *mg_pvsVar; + PIXaabbox2D GetSliderBox(void); + BOOL OnKeyDown(int iVKey); + void Render(CDrawPort *pdp); + BOOL IsSeparator(void); + BOOL IsEnabled(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MenuGadget.h b/Sources/SeriousSam/GUI/Components/MenuGadget.h index 3d03589..b4a4fbb 100644 --- a/Sources/SeriousSam/GUI/Components/MenuGadget.h +++ b/Sources/SeriousSam/GUI/Components/MenuGadget.h @@ -29,41 +29,41 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMenuGadget { public: - CListNode mg_lnNode; - FLOATaabbox2D mg_boxOnScreen; - BOOL mg_bVisible; - BOOL mg_bEnabled; - BOOL mg_bLabel; - BOOL mg_bFocused; - INDEX mg_iInList; // for scrollable gadget lists + CListNode mg_lnNode; + FLOATaabbox2D mg_boxOnScreen; + BOOL mg_bVisible; + BOOL mg_bEnabled; + BOOL mg_bLabel; + BOOL mg_bFocused; + INDEX mg_iInList; // for scrollable gadget lists - CTString mg_strTip; - CMenuGadget *mg_pmgLeft; - CMenuGadget *mg_pmgRight; - CMenuGadget *mg_pmgUp; - CMenuGadget *mg_pmgDown; + CTString mg_strTip; + CMenuGadget *mg_pmgLeft; + CMenuGadget *mg_pmgRight; + CMenuGadget *mg_pmgUp; + CMenuGadget *mg_pmgDown; - CMenuGadget(void); - // return TRUE if handled - virtual BOOL OnKeyDown(int iVKey); - virtual BOOL OnChar(MSG msg); - virtual void OnActivate(void); - virtual void OnSetFocus(void); - virtual void OnKillFocus(void); - virtual void Appear(void); - virtual void Disappear(void); - virtual void Think(void); - virtual void OnMouseOver(PIX pixI, PIX pixJ); + CMenuGadget(void); + // return TRUE if handled + virtual BOOL OnKeyDown(int iVKey); + virtual BOOL OnChar(MSG msg); + virtual void OnActivate(void); + virtual void OnSetFocus(void); + virtual void OnKillFocus(void); + virtual void Appear(void); + virtual void Disappear(void); + virtual void Think(void); + virtual void OnMouseOver(PIX pixI, PIX pixJ); - virtual COLOR GetCurrentColor(void); - virtual void Render(CDrawPort *pdp); - virtual BOOL IsSeparator(void) { return FALSE; }; + virtual COLOR GetCurrentColor(void); + virtual void Render(CDrawPort *pdp); + virtual BOOL IsSeparator(void) { return FALSE; }; }; enum ButtonFontSize { - BFS_SMALL = 0, - BFS_MEDIUM = 1, - BFS_LARGE = 2, + BFS_SMALL = 0, + BFS_MEDIUM = 1, + BFS_LARGE = 2, }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/GameMenu.h b/Sources/SeriousSam/GUI/Menus/GameMenu.h index 72b57a6..b386400 100644 --- a/Sources/SeriousSam/GUI/Menus/GameMenu.h +++ b/Sources/SeriousSam/GUI/Menus/GameMenu.h @@ -21,31 +21,31 @@ with this program; if not, write to the Free Software Foundation, Inc., class CGameMenu { public: - CListHead gm_lhGadgets; - CGameMenu *gm_pgmParentMenu; - BOOL gm_bPopup; - const char *gm_strName; // menu name (for mod interface only) - class CMenuGadget *gm_pmgSelectedByDefault; - class CMenuGadget *gm_pmgArrowUp; - class CMenuGadget *gm_pmgArrowDn; - class CMenuGadget *gm_pmgListTop; - class CMenuGadget *gm_pmgListBottom; - INDEX gm_iListOffset; - INDEX gm_iListWantedItem; // item you want to focus initially - INDEX gm_ctListVisible; - INDEX gm_ctListTotal; - CGameMenu(void); - void ScrollList(INDEX iDir); - void KillAllFocuses(void); - virtual void Initialize_t(void); - virtual void Destroy(void); - virtual void StartMenu(void); - virtual void FillListItems(void); - virtual void EndMenu(void); - // return TRUE if handled - virtual BOOL OnKeyDown(int iVKey); - virtual BOOL OnChar(MSG msg); - virtual void Think(void); + CListHead gm_lhGadgets; + CGameMenu *gm_pgmParentMenu; + BOOL gm_bPopup; + const char *gm_strName; // menu name (for mod interface only) + class CMenuGadget *gm_pmgSelectedByDefault; + class CMenuGadget *gm_pmgArrowUp; + class CMenuGadget *gm_pmgArrowDn; + class CMenuGadget *gm_pmgListTop; + class CMenuGadget *gm_pmgListBottom; + INDEX gm_iListOffset; + INDEX gm_iListWantedItem; // item you want to focus initially + INDEX gm_ctListVisible; + INDEX gm_ctListTotal; + CGameMenu(void); + void ScrollList(INDEX iDir); + void KillAllFocuses(void); + virtual void Initialize_t(void); + virtual void Destroy(void); + virtual void StartMenu(void); + virtual void FillListItems(void); + virtual void EndMenu(void); + // return TRUE if handled + virtual BOOL OnKeyDown(int iVKey); + virtual BOOL OnChar(MSG msg); + virtual void Think(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MAudioOptions.h b/Sources/SeriousSam/GUI/Menus/MAudioOptions.h index e0d1b5a..4d6a592 100644 --- a/Sources/SeriousSam/GUI/Menus/MAudioOptions.h +++ b/Sources/SeriousSam/GUI/Menus/MAudioOptions.h @@ -27,16 +27,16 @@ with this program; if not, write to the Free Software Foundation, Inc., class CAudioOptionsMenu : public CGameMenu { public: - CMGTitle gm_mgTitle; - CMGTrigger gm_mgAudioAutoTrigger; - CMGTrigger gm_mgAudioAPITrigger; - CMGTrigger gm_mgFrequencyTrigger; - CMGSlider gm_mgWaveVolume; - CMGSlider gm_mgMPEGVolume; - CMGButton gm_mgApply; + CMGTitle gm_mgTitle; + CMGTrigger gm_mgAudioAutoTrigger; + CMGTrigger gm_mgAudioAPITrigger; + CMGTrigger gm_mgFrequencyTrigger; + CMGSlider gm_mgWaveVolume; + CMGSlider gm_mgMPEGVolume; + CMGButton gm_mgApply; - void StartMenu(void); - void Initialize_t(void); + void StartMenu(void); + void Initialize_t(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MConfirm.h b/Sources/SeriousSam/GUI/Menus/MConfirm.h index 5fb75a9..b67e97f 100644 --- a/Sources/SeriousSam/GUI/Menus/MConfirm.h +++ b/Sources/SeriousSam/GUI/Menus/MConfirm.h @@ -24,19 +24,19 @@ with this program; if not, write to the Free Software Foundation, Inc., class CConfirmMenu : public CGameMenu { public: - CMGButton gm_mgConfirmLabel; - CMGButton gm_mgConfirmYes; - CMGButton gm_mgConfirmNo; + CMGButton gm_mgConfirmLabel; + CMGButton gm_mgConfirmYes; + CMGButton gm_mgConfirmNo; - void(*_pConfimedYes)(void) = NULL; - void(*_pConfimedNo)(void) = NULL; + void(*_pConfimedYes)(void) = NULL; + void(*_pConfimedNo)(void) = NULL; - void Initialize_t(void); - // return TRUE if handled - BOOL OnKeyDown(int iVKey); + void Initialize_t(void); + // return TRUE if handled + BOOL OnKeyDown(int iVKey); - void BeLarge(void); - void BeSmall(void); + void BeLarge(void); + void BeSmall(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MControls.h b/Sources/SeriousSam/GUI/Menus/MControls.h index f34503f..93f9d2a 100644 --- a/Sources/SeriousSam/GUI/Menus/MControls.h +++ b/Sources/SeriousSam/GUI/Menus/MControls.h @@ -27,22 +27,22 @@ with this program; if not, write to the Free Software Foundation, Inc., class CControlsMenu : public CGameMenu { public: - CMGTitle gm_mgTitle; - CMGButton gm_mgNameLabel; - CMGButton gm_mgButtons; - CMGSlider gm_mgSensitivity; - CMGTrigger gm_mgInvertTrigger; - CMGTrigger gm_mgSmoothTrigger; - CMGTrigger gm_mgAccelTrigger; - CMGTrigger gm_mgIFeelTrigger; - CMGButton gm_mgPredefined; - CMGButton gm_mgAdvanced; + CMGTitle gm_mgTitle; + CMGButton gm_mgNameLabel; + CMGButton gm_mgButtons; + CMGSlider gm_mgSensitivity; + CMGTrigger gm_mgInvertTrigger; + CMGTrigger gm_mgSmoothTrigger; + CMGTrigger gm_mgAccelTrigger; + CMGTrigger gm_mgIFeelTrigger; + CMGButton gm_mgPredefined; + CMGButton gm_mgAdvanced; - void Initialize_t(void); - void StartMenu(void); - void EndMenu(void); - void ObtainActionSettings(void); - void ApplyActionSettings(void); + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); + void ObtainActionSettings(void); + void ApplyActionSettings(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MCredits.h b/Sources/SeriousSam/GUI/Menus/MCredits.h index 06be76d..a36d139 100644 --- a/Sources/SeriousSam/GUI/Menus/MCredits.h +++ b/Sources/SeriousSam/GUI/Menus/MCredits.h @@ -23,7 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., class CCreditsMenu : public CGameMenu { public: - void Initialize_t(void); + void Initialize_t(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.h b/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.h index 6038733..5a92719 100644 --- a/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.h +++ b/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.h @@ -26,21 +26,21 @@ with this program; if not, write to the Free Software Foundation, Inc., 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; + 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); - void EndMenu(void); - void ObtainActionSettings(void); - void ApplyActionSettings(void); + ~CCustomizeAxisMenu(void); + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); + void ObtainActionSettings(void); + void ApplyActionSettings(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.h b/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.h index 0b4c96e..b67861e 100644 --- a/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.h +++ b/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.h @@ -26,15 +26,15 @@ with this program; if not, write to the Free Software Foundation, Inc., class CCustomizeKeyboardMenu : public CGameMenu { public: - CMGTitle gm_mgTitle; - CMGKeyDefinition gm_mgKey[KEYS_ON_SCREEN]; - CMGArrow gm_mgArrowUp; - CMGArrow gm_mgArrowDn; + 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); - void FillListItems(void); + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); + void FillListItems(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MDisabled.h b/Sources/SeriousSam/GUI/Menus/MDisabled.h index 0a13a46..32cb7f2 100644 --- a/Sources/SeriousSam/GUI/Menus/MDisabled.h +++ b/Sources/SeriousSam/GUI/Menus/MDisabled.h @@ -25,10 +25,10 @@ with this program; if not, write to the Free Software Foundation, Inc., class CDisabledMenu : public CGameMenu { public: - CMGTitle gm_mgTitle; - CMGButton gm_mgButton; + CMGTitle gm_mgTitle; + CMGButton gm_mgButton; - void Initialize_t(void); + void Initialize_t(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MHighScore.h b/Sources/SeriousSam/GUI/Menus/MHighScore.h index d563953..7402486 100644 --- a/Sources/SeriousSam/GUI/Menus/MHighScore.h +++ b/Sources/SeriousSam/GUI/Menus/MHighScore.h @@ -25,11 +25,11 @@ with this program; if not, write to the Free Software Foundation, Inc., class CHighScoreMenu : public CGameMenu { public: - CMGTitle gm_mgTitle; - CMGHighScore gm_mgHScore; + CMGTitle gm_mgTitle; + CMGHighScore gm_mgHScore; - void Initialize_t(void); - void StartMenu(void); + void Initialize_t(void); + void StartMenu(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MInGame.h b/Sources/SeriousSam/GUI/Menus/MInGame.h index c337fc3..1b9112e 100644 --- a/Sources/SeriousSam/GUI/Menus/MInGame.h +++ b/Sources/SeriousSam/GUI/Menus/MInGame.h @@ -25,21 +25,21 @@ with this program; if not, write to the Free Software Foundation, Inc., class CInGameMenu : public CGameMenu { public: - CMGTitle gm_mgTitle; - CMGButton gm_mgLabel1; - CMGButton gm_mgLabel2; - CMGButton gm_mgQuickLoad; - CMGButton gm_mgQuickSave; - CMGButton gm_mgLoad; - CMGButton gm_mgSave; - CMGButton gm_mgDemoRec; - CMGButton gm_mgHighScore; - CMGButton gm_mgOptions; - CMGButton gm_mgStop; - CMGButton gm_mgQuit; + CMGTitle gm_mgTitle; + CMGButton gm_mgLabel1; + CMGButton gm_mgLabel2; + CMGButton gm_mgQuickLoad; + CMGButton gm_mgQuickSave; + CMGButton gm_mgLoad; + CMGButton gm_mgSave; + CMGButton gm_mgDemoRec; + CMGButton gm_mgHighScore; + CMGButton gm_mgOptions; + CMGButton gm_mgStop; + CMGButton gm_mgQuit; - void Initialize_t(void); - void StartMenu(void); + void Initialize_t(void); + void StartMenu(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MLevels.h b/Sources/SeriousSam/GUI/Menus/MLevels.h index d39fe06..a746b50 100644 --- a/Sources/SeriousSam/GUI/Menus/MLevels.h +++ b/Sources/SeriousSam/GUI/Menus/MLevels.h @@ -26,14 +26,14 @@ with this program; if not, write to the Free Software Foundation, Inc., class CLevelsMenu : public CGameMenu { public: - CMGTitle gm_mgTitle; - CMGLevelButton gm_mgManualLevel[LEVELS_ON_SCREEN]; - CMGArrow gm_mgArrowUp; - CMGArrow gm_mgArrowDn; + CMGTitle gm_mgTitle; + CMGLevelButton gm_mgManualLevel[LEVELS_ON_SCREEN]; + CMGArrow gm_mgArrowUp; + CMGArrow gm_mgArrowDn; - void Initialize_t(void); - void FillListItems(void); - void StartMenu(void); + void Initialize_t(void); + void FillListItems(void); + void StartMenu(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MLoadSave.h b/Sources/SeriousSam/GUI/Menus/MLoadSave.h index 44e794e..1836f69 100644 --- a/Sources/SeriousSam/GUI/Menus/MLoadSave.h +++ b/Sources/SeriousSam/GUI/Menus/MLoadSave.h @@ -26,49 +26,54 @@ with this program; if not, write to the Free Software Foundation, Inc., #define SAVELOAD_BUTTONS_CT 14 +enum ELSSortType +{ + LSSORT_NONE, + LSSORT_NAMEUP, + LSSORT_NAMEDN, + LSSORT_FILEUP, + LSSORT_FILEDN, +}; + class CLoadSaveMenu : public CGameMenu { public: - // settings adjusted before starting the menu - CGameMenu *gm_pgmNextMenu; // menu to go to after selecting a file (if null, use parent menu) - CTFileName gm_fnmSelected; // file that is selected initially - CTFileName gm_fnmDirectory; // directory that should be read - CTFileName gm_fnmBaseName; // base file name for saving (numbers are auto-added) - CTFileName gm_fnmExt; // accepted file extension - BOOL gm_bSave; // set when chosing file for saving - BOOL gm_bManage; // set if managing (rename/delet is enabled) - CTString gm_strSaveDes; // default description (if saving) - BOOL gm_bAllowThumbnails; // set when chosing file for saving - BOOL gm_bNoEscape; // forbid exiting with escape/rmb -#define LSSORT_NONE 0 -#define LSSORT_NAMEUP 1 -#define LSSORT_NAMEDN 2 -#define LSSORT_FILEUP 3 -#define LSSORT_FILEDN 4 - INDEX gm_iSortType; // sort type + // settings adjusted before starting the menu + CGameMenu *gm_pgmNextMenu; // menu to go to after selecting a file (if null, use parent menu) + CTFileName gm_fnmSelected; // file that is selected initially + CTFileName gm_fnmDirectory; // directory that should be read + CTFileName gm_fnmBaseName; // base file name for saving (numbers are auto-added) + CTFileName gm_fnmExt; // accepted file extension + BOOL gm_bSave; // set when chosing file for saving + BOOL gm_bManage; // set if managing (rename/delet is enabled) + CTString gm_strSaveDes; // default description (if saving) + BOOL gm_bAllowThumbnails; // set when chosing file for saving + BOOL gm_bNoEscape; // forbid exiting with escape/rmb - // function to activate when file is chosen - // return true if saving succeeded - description is saved automatically - // always return true for loading - BOOL(*gm_pAfterFileChosen)(const CTFileName &fnm); + INDEX gm_iSortType; // sort type - // internal properties - CListHead gm_lhFileInfos; // all file infos to list - INDEX gm_iLastFile; // index of last saved file in numbered format + // function to activate when file is chosen + // return true if saving succeeded - description is saved automatically + // always return true for loading + BOOL(*gm_pAfterFileChosen)(const CTFileName &fnm); - CMGTitle gm_mgTitle; - CMGButton gm_mgNotes; - CMGFileButton gm_amgButton[SAVELOAD_BUTTONS_CT]; - CMGArrow gm_mgArrowUp; - CMGArrow gm_mgArrowDn; + // internal properties + CListHead gm_lhFileInfos; // all file infos to list + INDEX gm_iLastFile; // index of last saved file in numbered format - // called to get info of a file from directory, or to skip it - BOOL ParseFile(const CTFileName &fnm, CTString &strName); + CMGTitle gm_mgTitle; + CMGButton gm_mgNotes; + CMGFileButton gm_amgButton[SAVELOAD_BUTTONS_CT]; + CMGArrow gm_mgArrowUp; + CMGArrow gm_mgArrowDn; - void Initialize_t(void); - void StartMenu(void); - void EndMenu(void); - void FillListItems(void); + // called to get info of a file from directory, or to skip it + BOOL ParseFile(const CTFileName &fnm, CTString &strName); + + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); + void FillListItems(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MMain.h b/Sources/SeriousSam/GUI/Menus/MMain.h index e1e920d..327a828 100644 --- a/Sources/SeriousSam/GUI/Menus/MMain.h +++ b/Sources/SeriousSam/GUI/Menus/MMain.h @@ -24,19 +24,19 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMainMenu : public CGameMenu { public: - CMGButton gm_mgVersionLabel; - CMGButton gm_mgModLabel; - CMGButton gm_mgSingle; - CMGButton gm_mgNetwork; - CMGButton gm_mgSplitScreen; - CMGButton gm_mgDemo; - CMGButton gm_mgMods; - CMGButton gm_mgHighScore; - CMGButton gm_mgOptions; - CMGButton gm_mgQuit; + CMGButton gm_mgVersionLabel; + CMGButton gm_mgModLabel; + CMGButton gm_mgSingle; + CMGButton gm_mgNetwork; + CMGButton gm_mgSplitScreen; + CMGButton gm_mgDemo; + CMGButton gm_mgMods; + CMGButton gm_mgHighScore; + CMGButton gm_mgOptions; + CMGButton gm_mgQuit; - void Initialize_t(void); - void StartMenu(void); + void Initialize_t(void); + void StartMenu(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MNetwork.h b/Sources/SeriousSam/GUI/Menus/MNetwork.h index 44a523f..100e13e 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetwork.h +++ b/Sources/SeriousSam/GUI/Menus/MNetwork.h @@ -25,14 +25,14 @@ with this program; if not, write to the Free Software Foundation, Inc., class CNetworkMenu : public CGameMenu { public: - CMGTitle gm_mgTitle; - CMGButton gm_mgJoin; - CMGButton gm_mgStart; - CMGButton gm_mgQuickLoad; - CMGButton gm_mgLoad; + CMGTitle gm_mgTitle; + CMGButton gm_mgJoin; + CMGButton gm_mgStart; + CMGButton gm_mgQuickLoad; + CMGButton gm_mgLoad; - void Initialize_t(void); - void StartMenu(void); + void Initialize_t(void); + void StartMenu(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MNetworkJoin.h b/Sources/SeriousSam/GUI/Menus/MNetworkJoin.h index 7875785..0b4322f 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetworkJoin.h +++ b/Sources/SeriousSam/GUI/Menus/MNetworkJoin.h @@ -25,12 +25,12 @@ with this program; if not, write to the Free Software Foundation, Inc., class CNetworkJoinMenu : public CGameMenu { public: - CMGTitle gm_mgTitle; - CMGButton gm_mgLAN; - CMGButton gm_mgNET; - CMGButton gm_mgOpen; + CMGTitle gm_mgTitle; + CMGButton gm_mgLAN; + CMGButton gm_mgNET; + CMGButton gm_mgOpen; - void Initialize_t(void); + void Initialize_t(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MNetworkOpen.h b/Sources/SeriousSam/GUI/Menus/MNetworkOpen.h index ef1094e..ba29554 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetworkOpen.h +++ b/Sources/SeriousSam/GUI/Menus/MNetworkOpen.h @@ -26,18 +26,18 @@ with this program; if not, write to the Free Software Foundation, Inc., class CNetworkOpenMenu : public CGameMenu { public: - CTString gm_strPort; + CTString gm_strPort; - CMGTitle gm_mgTitle; - CMGButton gm_mgAddressLabel; - CMGEdit gm_mgAddress; - CMGButton gm_mgPortLabel; - CMGEdit gm_mgPort; - CMGButton gm_mgJoin; + CMGTitle gm_mgTitle; + CMGButton gm_mgAddressLabel; + CMGEdit gm_mgAddress; + CMGButton gm_mgPortLabel; + CMGEdit gm_mgPort; + CMGButton gm_mgJoin; - void Initialize_t(void); - void StartMenu(void); - void EndMenu(void); + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MNetworkStart.h b/Sources/SeriousSam/GUI/Menus/MNetworkStart.h index 9645fab..401af4d 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetworkStart.h +++ b/Sources/SeriousSam/GUI/Menus/MNetworkStart.h @@ -27,20 +27,20 @@ with this program; if not, write to the Free Software Foundation, Inc., 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; + 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); + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MOptions.h b/Sources/SeriousSam/GUI/Menus/MOptions.h index 905aab9..283a4f8 100644 --- a/Sources/SeriousSam/GUI/Menus/MOptions.h +++ b/Sources/SeriousSam/GUI/Menus/MOptions.h @@ -25,13 +25,13 @@ with this program; if not, write to the Free Software Foundation, Inc., 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; + 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/GUI/Menus/MPlayerProfile.h b/Sources/SeriousSam/GUI/Menus/MPlayerProfile.h index 948e51a..def0eb9 100644 --- a/Sources/SeriousSam/GUI/Menus/MPlayerProfile.h +++ b/Sources/SeriousSam/GUI/Menus/MPlayerProfile.h @@ -28,34 +28,34 @@ with this program; if not, write to the Free Software Foundation, Inc., class CPlayerProfileMenu : public CGameMenu { public: - INDEX *gm_piCurrentPlayer; + INDEX *gm_piCurrentPlayer; - CMGTitle gm_mgProfileTitle; - CMGButton gm_mgNoLabel; - CMGButton gm_mgNumber[8]; - CMGButton gm_mgNameLabel; - CMGEdit gm_mgNameField; - CMGButton gm_mgTeamLabel; - CMGEdit gm_mgTeam; - CMGButton gm_mgCustomizeControls; - CMGTrigger gm_mgCrosshair; - CMGTrigger gm_mgWeaponSelect; - CMGTrigger gm_mgWeaponHide; - CMGTrigger gm_mg3rdPerson; - CMGTrigger gm_mgQuotes; - CMGTrigger gm_mgAutoSave; - CMGTrigger gm_mgCompDoubleClick; - CMGTrigger gm_mgViewBobbing; - CMGTrigger gm_mgSharpTurning; - CMGModel gm_mgModel; + CMGTitle gm_mgProfileTitle; + CMGButton gm_mgNoLabel; + CMGButton gm_mgNumber[8]; + CMGButton gm_mgNameLabel; + CMGEdit gm_mgNameField; + CMGButton gm_mgTeamLabel; + CMGEdit gm_mgTeam; + CMGButton gm_mgCustomizeControls; + CMGTrigger gm_mgCrosshair; + CMGTrigger gm_mgWeaponSelect; + CMGTrigger gm_mgWeaponHide; + CMGTrigger gm_mg3rdPerson; + CMGTrigger gm_mgQuotes; + CMGTrigger gm_mgAutoSave; + CMGTrigger gm_mgCompDoubleClick; + CMGTrigger gm_mgViewBobbing; + CMGTrigger gm_mgSharpTurning; + CMGModel gm_mgModel; - void Initialize_t(void); - INDEX ComboFromPlayer(INDEX iPlayer); - INDEX PlayerFromCombo(INDEX iCombo); - void SelectPlayer(INDEX iPlayer); - void ApplyComboPlayer(INDEX iPlayer); - void StartMenu(void); - void EndMenu(void); + void Initialize_t(void); + INDEX ComboFromPlayer(INDEX iPlayer); + INDEX PlayerFromCombo(INDEX iCombo); + void SelectPlayer(INDEX iPlayer); + void ApplyComboPlayer(INDEX iPlayer); + void StartMenu(void); + void EndMenu(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MRenderingOptions.h b/Sources/SeriousSam/GUI/Menus/MRenderingOptions.h index 5ccaff1..d12c614 100644 --- a/Sources/SeriousSam/GUI/Menus/MRenderingOptions.h +++ b/Sources/SeriousSam/GUI/Menus/MRenderingOptions.h @@ -23,8 +23,8 @@ with this program; if not, write to the Free Software Foundation, Inc., class CRenderingOptionsMenu : public CGameMenu { public: - void StartMenu(void); - void EndMenu(void); - void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); + void Initialize_t(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MSelectPlayers.h b/Sources/SeriousSam/GUI/Menus/MSelectPlayers.h index a743ec5..4befeed 100644 --- a/Sources/SeriousSam/GUI/Menus/MSelectPlayers.h +++ b/Sources/SeriousSam/GUI/Menus/MSelectPlayers.h @@ -27,27 +27,27 @@ with this program; if not, write to the Free Software Foundation, Inc., class CSelectPlayersMenu : public CGameMenu { public: - BOOL gm_bAllowDedicated; - BOOL gm_bAllowObserving; + BOOL gm_bAllowDedicated; + BOOL gm_bAllowObserving; - CMGTitle gm_mgTitle; + CMGTitle gm_mgTitle; - CMGTrigger gm_mgDedicated; - CMGTrigger gm_mgObserver; - CMGTrigger gm_mgSplitScreenCfg; + CMGTrigger gm_mgDedicated; + CMGTrigger gm_mgObserver; + CMGTrigger gm_mgSplitScreenCfg; - CMGChangePlayer gm_mgPlayer0Change; - CMGChangePlayer gm_mgPlayer1Change; - CMGChangePlayer gm_mgPlayer2Change; - CMGChangePlayer gm_mgPlayer3Change; + CMGChangePlayer gm_mgPlayer0Change; + CMGChangePlayer gm_mgPlayer1Change; + CMGChangePlayer gm_mgPlayer2Change; + CMGChangePlayer gm_mgPlayer3Change; - CMGButton gm_mgNotes; + CMGButton gm_mgNotes; - CMGButton gm_mgStart; + CMGButton gm_mgStart; - void Initialize_t(void); - void StartMenu(void); - void EndMenu(void); + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MServers.h b/Sources/SeriousSam/GUI/Menus/MServers.h index cb2d7d3..0b24f8f 100644 --- a/Sources/SeriousSam/GUI/Menus/MServers.h +++ b/Sources/SeriousSam/GUI/Menus/MServers.h @@ -27,15 +27,15 @@ with this program; if not, write to the Free Software Foundation, Inc., class CServersMenu : public CGameMenu { public: - BOOL m_bInternet; + BOOL m_bInternet; - CMGTitle gm_mgTitle; - CMGServerList gm_mgList; - CMGButton gm_mgRefresh; + CMGTitle gm_mgTitle; + CMGServerList gm_mgList; + CMGButton gm_mgRefresh; - void Initialize_t(void); - void StartMenu(void); - void Think(void); + void Initialize_t(void); + void StartMenu(void); + void Think(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MSinglePlayer.h b/Sources/SeriousSam/GUI/Menus/MSinglePlayer.h index 5dc0efb..2249338 100644 --- a/Sources/SeriousSam/GUI/Menus/MSinglePlayer.h +++ b/Sources/SeriousSam/GUI/Menus/MSinglePlayer.h @@ -25,19 +25,19 @@ with this program; if not, write to the Free Software Foundation, Inc., class CSinglePlayerMenu : public CGameMenu { public: - CMGTitle gm_mgTitle; - CMGButton gm_mgPlayerLabel; - CMGButton gm_mgNewGame; - CMGButton gm_mgCustom; - CMGButton gm_mgQuickLoad; - CMGButton gm_mgLoad; - CMGButton gm_mgTraining; - CMGButton gm_mgTechTest; - CMGButton gm_mgPlayersAndControls; - CMGButton gm_mgOptions; + CMGTitle gm_mgTitle; + CMGButton gm_mgPlayerLabel; + CMGButton gm_mgNewGame; + CMGButton gm_mgCustom; + CMGButton gm_mgQuickLoad; + CMGButton gm_mgLoad; + CMGButton gm_mgTraining; + CMGButton gm_mgTechTest; + CMGButton gm_mgPlayersAndControls; + CMGButton gm_mgOptions; - void Initialize_t(void); - void StartMenu(void); + void Initialize_t(void); + void StartMenu(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.h b/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.h index 1d91f95..502f190 100644 --- a/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.h +++ b/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.h @@ -25,16 +25,16 @@ with this program; if not, write to the Free Software Foundation, Inc., class CSinglePlayerNewMenu : public CGameMenu { public: - CMGTitle gm_mgTitle; - CMGButton gm_mgTourist; - CMGButton gm_mgEasy; - CMGButton gm_mgMedium; - CMGButton gm_mgHard; - CMGButton gm_mgSerious; - CMGButton gm_mgMental; + CMGTitle gm_mgTitle; + CMGButton gm_mgTourist; + CMGButton gm_mgEasy; + CMGButton gm_mgMedium; + CMGButton gm_mgHard; + CMGButton gm_mgSerious; + CMGButton gm_mgMental; - void Initialize_t(void); - void StartMenu(void); + void Initialize_t(void); + void StartMenu(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MSplitScreen.h b/Sources/SeriousSam/GUI/Menus/MSplitScreen.h index ed73579..2e6ea97 100644 --- a/Sources/SeriousSam/GUI/Menus/MSplitScreen.h +++ b/Sources/SeriousSam/GUI/Menus/MSplitScreen.h @@ -25,13 +25,13 @@ with this program; if not, write to the Free Software Foundation, Inc., class CSplitScreenMenu : public CGameMenu { public: - CMGTitle gm_mgTitle; - CMGButton gm_mgStart; - CMGButton gm_mgQuickLoad; - CMGButton gm_mgLoad; + CMGTitle gm_mgTitle; + CMGButton gm_mgStart; + CMGButton gm_mgQuickLoad; + CMGButton gm_mgLoad; - void Initialize_t(void); - void StartMenu(void); + void Initialize_t(void); + void StartMenu(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MSplitStart.h b/Sources/SeriousSam/GUI/Menus/MSplitStart.h index 1c28069..8cb8597 100644 --- a/Sources/SeriousSam/GUI/Menus/MSplitStart.h +++ b/Sources/SeriousSam/GUI/Menus/MSplitStart.h @@ -26,16 +26,16 @@ with this program; if not, write to the Free Software Foundation, Inc., class CSplitStartMenu : public CGameMenu { public: - CMGTitle gm_mgTitle; - CMGTrigger gm_mgGameType; - CMGTrigger gm_mgDifficulty; - CMGButton gm_mgLevel; - CMGButton gm_mgOptions; - CMGButton gm_mgStart; + CMGTitle gm_mgTitle; + CMGTrigger gm_mgGameType; + CMGTrigger gm_mgDifficulty; + CMGButton gm_mgLevel; + CMGButton gm_mgOptions; + CMGButton gm_mgStart; - void Initialize_t(void); - void StartMenu(void); - void EndMenu(void); + void Initialize_t(void); + void StartMenu(void); + void EndMenu(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MVar.h b/Sources/SeriousSam/GUI/Menus/MVar.h index 4601e30..cc32d43 100644 --- a/Sources/SeriousSam/GUI/Menus/MVar.h +++ b/Sources/SeriousSam/GUI/Menus/MVar.h @@ -27,19 +27,19 @@ with this program; if not, write to the Free Software Foundation, Inc., class CVarMenu : public CGameMenu { public: - CTFileName gm_fnmMenuCFG; + CTFileName gm_fnmMenuCFG; - CMGTitle gm_mgTitle; - CMGVarButton gm_mgVar[LEVELS_ON_SCREEN]; - CMGButton gm_mgApply; - CMGArrow gm_mgArrowUp; - CMGArrow gm_mgArrowDn; + CMGTitle gm_mgTitle; + CMGVarButton gm_mgVar[LEVELS_ON_SCREEN]; + CMGButton gm_mgApply; + CMGArrow gm_mgArrowUp; + CMGArrow gm_mgArrowDn; - void Initialize_t(void); - void FillListItems(void); - void StartMenu(void); - void EndMenu(void); - void Think(void); + void Initialize_t(void); + void FillListItems(void); + void StartMenu(void); + void EndMenu(void); + void Think(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MVideoOptions.h b/Sources/SeriousSam/GUI/Menus/MVideoOptions.h index 2cc0c69..4befd27 100644 --- a/Sources/SeriousSam/GUI/Menus/MVideoOptions.h +++ b/Sources/SeriousSam/GUI/Menus/MVideoOptions.h @@ -23,18 +23,18 @@ with this program; if not, write to the Free Software Foundation, Inc., class CVideoOptionsMenu : public CGameMenu { public: - CMGTitle gm_mgTitle; - CMGTrigger gm_mgDisplayAPITrigger; - CMGTrigger gm_mgDisplayAdaptersTrigger; - CMGTrigger gm_mgFullScreenTrigger; - CMGTrigger gm_mgResolutionsTrigger; - CMGTrigger gm_mgDisplayPrefsTrigger; - CMGButton gm_mgVideoRendering; - CMGTrigger gm_mgBitsPerPixelTrigger; - CMGButton gm_mgApply; + CMGTitle gm_mgTitle; + CMGTrigger gm_mgDisplayAPITrigger; + CMGTrigger gm_mgDisplayAdaptersTrigger; + CMGTrigger gm_mgFullScreenTrigger; + CMGTrigger gm_mgResolutionsTrigger; + CMGTrigger gm_mgDisplayPrefsTrigger; + CMGButton gm_mgVideoRendering; + CMGTrigger gm_mgBitsPerPixelTrigger; + CMGButton gm_mgApply; - void StartMenu(void); - void Initialize_t(void); + void StartMenu(void); + void Initialize_t(void); }; #endif /* include-once check. */ \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp index 0a27758..54d09a1 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp @@ -96,6 +96,9 @@ static void SizeToResolution(PIX pixSizeI, PIX pixSizeJ, INDEX &iRes) } // ------------------------ CConfirmMenu implementation +extern CTFileName _fnmModToLoad; +extern CTString _strModServerJoin; + CTFileName _fnmModSelected; CTString _strModURLSelected; CTString _strModServerSelected; @@ -140,14 +143,11 @@ static void StopConfirm(void) static void ModLoadYes(void) { - extern CTFileName _fnmModToLoad; _fnmModToLoad = _fnmModSelected; } static void ModConnect(void) { - extern CTFileName _fnmModToLoad; - extern CTString _strModServerJoin; _fnmModToLoad = _fnmModSelected; _strModServerJoin = _strModServerSelected; } @@ -213,7 +213,6 @@ void ModNotInstalled(void) ChangeToMenu(&gmCurrent); } - extern void ModConfirm(void) { CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; @@ -334,7 +333,6 @@ extern void SetDemoStartStopRecText(void) } } - // ------------------------ CSinglePlayerMenu implementation extern CTString sam_strTechTestLevel; extern CTString sam_strTrainingLevel; diff --git a/Sources/SeriousSam/GUI/Menus/MenuManager.h b/Sources/SeriousSam/GUI/Menus/MenuManager.h index 400ac49..6ee755e 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuManager.h +++ b/Sources/SeriousSam/GUI/Menus/MenuManager.h @@ -15,7 +15,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifndef SE_INCL_MENUMANAGER_H #define SE_INCL_MENUMANAGER_H #ifdef PRAGMA_ONCE -#pragma once + #pragma once #endif #include "MAudioOptions.h" @@ -46,31 +46,31 @@ with this program; if not, write to the Free Software Foundation, Inc., class CMenuManager { public: - CConfirmMenu gmConfirmMenu; - CMainMenu gmMainMenu; - CInGameMenu gmInGameMenu; - CSinglePlayerMenu gmSinglePlayerMenu; - CSinglePlayerNewMenu gmSinglePlayerNewMenu; - CDisabledMenu gmDisabledFunction; - CLevelsMenu gmLevelsMenu; - CVarMenu gmVarMenu; - CPlayerProfileMenu gmPlayerProfile; - CControlsMenu gmControls; - CLoadSaveMenu gmLoadSaveMenu; - CHighScoreMenu gmHighScoreMenu; - CCustomizeKeyboardMenu gmCustomizeKeyboardMenu; - CServersMenu gmServersMenu; - CCustomizeAxisMenu gmCustomizeAxisMenu; - COptionsMenu gmOptionsMenu; - CVideoOptionsMenu gmVideoOptionsMenu; - CAudioOptionsMenu gmAudioOptionsMenu; - CNetworkMenu gmNetworkMenu; - CNetworkJoinMenu gmNetworkJoinMenu; - CNetworkStartMenu gmNetworkStartMenu; - CNetworkOpenMenu gmNetworkOpenMenu; - CSplitScreenMenu gmSplitScreenMenu; - CSplitStartMenu gmSplitStartMenu; - CSelectPlayersMenu gmSelectPlayersMenu; + CConfirmMenu gmConfirmMenu; + CMainMenu gmMainMenu; + CInGameMenu gmInGameMenu; + CSinglePlayerMenu gmSinglePlayerMenu; + CSinglePlayerNewMenu gmSinglePlayerNewMenu; + CDisabledMenu gmDisabledFunction; + CLevelsMenu gmLevelsMenu; + CVarMenu gmVarMenu; + CPlayerProfileMenu gmPlayerProfile; + CControlsMenu gmControls; + CLoadSaveMenu gmLoadSaveMenu; + CHighScoreMenu gmHighScoreMenu; + CCustomizeKeyboardMenu gmCustomizeKeyboardMenu; + CServersMenu gmServersMenu; + CCustomizeAxisMenu gmCustomizeAxisMenu; + COptionsMenu gmOptionsMenu; + CVideoOptionsMenu gmVideoOptionsMenu; + CAudioOptionsMenu gmAudioOptionsMenu; + CNetworkMenu gmNetworkMenu; + CNetworkJoinMenu gmNetworkJoinMenu; + CNetworkStartMenu gmNetworkStartMenu; + CNetworkOpenMenu gmNetworkOpenMenu; + CSplitScreenMenu gmSplitScreenMenu; + CSplitStartMenu gmSplitStartMenu; + CSelectPlayersMenu gmSelectPlayersMenu; }; extern CMenuManager *_pGUIM; // TODO: Make singleton! diff --git a/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp b/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp index e2cb17d..f0c6937 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp @@ -22,8 +22,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "MenuStarters.h" #include "MenuStuff.h" -CTFileName _fnDemoToPlay; -CTFileName _fnGameToLoad; +static CTFileName _fnDemoToPlay; +static CTFileName _fnGameToLoad; extern CTString sam_strNetworkSettings; diff --git a/Sources/SeriousSam/GUI/Menus/MenuStuff.h b/Sources/SeriousSam/GUI/Menus/MenuStuff.h index 08a4a25..a51d69c 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStuff.h +++ b/Sources/SeriousSam/GUI/Menus/MenuStuff.h @@ -21,15 +21,15 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "FileInfo.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]; + 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; diff --git a/Sources/SeriousSam/SeriousSam.h b/Sources/SeriousSam/SeriousSam.h index d98b629..0e1adc3 100644 --- a/Sources/SeriousSam/SeriousSam.h +++ b/Sources/SeriousSam/SeriousSam.h @@ -13,7 +13,6 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define APPLICATION_NAME "SeriousSam" -#include "CDCheck.h" extern HINSTANCE _hInstance; extern BOOL _bRunning, _bQuitScreen; diff --git a/Sources/SeriousSam/SeriousSam.vcxproj b/Sources/SeriousSam/SeriousSam.vcxproj index 93fed95..d5f2ca6 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj +++ b/Sources/SeriousSam/SeriousSam.vcxproj @@ -297,7 +297,6 @@ copy Release\$(TargetName).map $(SolutionDir)..\Bin\ >nul - diff --git a/Sources/SeriousSam/SeriousSam.vcxproj.filters b/Sources/SeriousSam/SeriousSam.vcxproj.filters index 6bacaec..433430c 100644 --- a/Sources/SeriousSam/SeriousSam.vcxproj.filters +++ b/Sources/SeriousSam/SeriousSam.vcxproj.filters @@ -215,9 +215,6 @@ - - Header Files - Header Files From 80471f50414fbbbb9a6eca4905f2c0bcdf1dbda3 Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Thu, 31 Mar 2016 22:57:40 +0300 Subject: [PATCH 33/34] GameExecutable: Fix } else { formatting. Make code more readable. --- Sources/SeriousSam/GUI/Components/MGArrow.cpp | 10 +++----- .../SeriousSam/GUI/Components/MGButton.cpp | 7 +++--- .../GUI/Components/MGChangePlayer.cpp | 7 ++++-- Sources/SeriousSam/GUI/Components/MGEdit.cpp | 19 ++++++-------- .../GUI/Components/MGFileButton.cpp | 25 +++++++++---------- .../SeriousSam/GUI/Components/MGHighScore.cpp | 3 +-- .../GUI/Components/MGKeyDefinition.cpp | 21 ++++++---------- .../GUI/Components/MGServerList.cpp | 17 ++++++------- .../SeriousSam/GUI/Components/MGSlider.cpp | 6 ++--- .../SeriousSam/GUI/Components/MGTrigger.cpp | 14 ++++------- .../SeriousSam/GUI/Components/MGVarButton.cpp | 8 +++--- Sources/SeriousSam/GUI/Menus/GameMenu.cpp | 5 ++-- Sources/SeriousSam/SeriousSam.cpp | 4 +-- 13 files changed, 60 insertions(+), 86 deletions(-) diff --git a/Sources/SeriousSam/GUI/Components/MGArrow.cpp b/Sources/SeriousSam/GUI/Components/MGArrow.cpp index c88d1c4..ce7ccde 100644 --- a/Sources/SeriousSam/GUI/Components/MGArrow.cpp +++ b/Sources/SeriousSam/GUI/Components/MGArrow.cpp @@ -29,16 +29,14 @@ void CMGArrow::Render(CDrawPort *pdp) CTString str; if (mg_adDirection == AD_NONE) { str = "???"; - } - else if (mg_adDirection == AD_UP) { + } else if (mg_adDirection == AD_UP) { str = TRANS("Page Up"); - } - else if (mg_adDirection == AD_DOWN) { + } else if (mg_adDirection == AD_DOWN) { str = TRANS("Page Down"); - } - else { + } else { ASSERT(FALSE); } + PIX pixI = box.Min()(1); PIX pixJ = box.Min()(2); pdp->PutText(str, pixI, pixJ, col); diff --git a/Sources/SeriousSam/GUI/Components/MGButton.cpp b/Sources/SeriousSam/GUI/Components/MGButton.cpp index d45323a..2747988 100644 --- a/Sources/SeriousSam/GUI/Components/MGButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGButton.cpp @@ -62,11 +62,9 @@ void CMGButton::Render(CDrawPort *pdp) { if (mg_bfsFontSize == BFS_LARGE) { SetFontBig(pdp); - } - else if (mg_bfsFontSize == BFS_MEDIUM) { + } else if (mg_bfsFontSize == BFS_MEDIUM) { SetFontMedium(pdp); - } - else { + } else { ASSERT(mg_bfsFontSize == BFS_SMALL); SetFontSmall(pdp); } @@ -159,6 +157,7 @@ void CMGButton::Render(CDrawPort *pdp) if (mg_strLabel != "") { pixX += box.Size()(1)*0.55f; } + PIX pixY = box.Min()(2); if (!pdp->dp_FontData->fd_bFixedWidth) { pixY -= pdp->dp_fTextScaling * 2; diff --git a/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp b/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp index 2ae4818..bed5e08 100644 --- a/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp +++ b/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp @@ -27,10 +27,13 @@ void CMGChangePlayer::OnActivate(void) PlayMenuSound(_psdPress); IFeel_PlayEffect("Menu_press"); _iLocalPlayer = mg_iLocalPlayer; + if (_pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer] < 0) _pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer] = 0; + _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer]; _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmSelectPlayersMenu; + extern BOOL _bPlayerMenuFromSinglePlayer; _bPlayerMenuFromSinglePlayer = FALSE; ChangeToMenu(&_pGUIM->gmPlayerProfile); @@ -40,10 +43,10 @@ void CMGChangePlayer::SetPlayerText(void) { INDEX iPlayer = _pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer]; CPlayerCharacter &pc = _pGame->gm_apcPlayers[iPlayer]; + if (iPlayer<0 || iPlayer>7) { mg_strText = "????"; - } - else { + } else { mg_strText.PrintF(TRANS("Player %d: %s\n"), mg_iLocalPlayer + 1, pc.GetNameForPrinting()); } } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGEdit.cpp b/Sources/SeriousSam/GUI/Components/MGEdit.cpp index 10a077f..b50f78b 100644 --- a/Sources/SeriousSam/GUI/Components/MGEdit.cpp +++ b/Sources/SeriousSam/GUI/Components/MGEdit.cpp @@ -74,8 +74,7 @@ static void Key_BackDel(CTString &str, INDEX &iPos, BOOL bShift, BOOL bRight) if (bShift) { // delete to end of line str.TrimRight(iPos); - } - else { + } else { // delete only one char str.DeleteChar(iPos); } @@ -85,8 +84,7 @@ static void Key_BackDel(CTString &str, INDEX &iPos, BOOL bShift, BOOL bRight) // delete to start of line str.TrimLeft(ctChars - iPos); iPos = 0; - } - else { + } else { // delete only one char str.DeleteChar(iPos - 1); iPos--; @@ -147,24 +145,21 @@ void CMGEdit::Render(CDrawPort *pdp) { if (mg_bEditing) { mg_iTextMode = -1; - } - else if (mg_bFocused) { + } else if (mg_bFocused) { mg_iTextMode = 0; - } - else { + } else { mg_iTextMode = 1; } + if (mg_strText == "" && !mg_bEditing) { if (mg_bfsFontSize == BFS_SMALL) { mg_strText = "*"; - } - else { + } else { mg_strText = TRANS(""); } CMGButton::Render(pdp); mg_strText = ""; - } - else { + } else { CMGButton::Render(pdp); } } diff --git a/Sources/SeriousSam/GUI/Components/MGFileButton.cpp b/Sources/SeriousSam/GUI/Components/MGFileButton.cpp index b1af656..d530ad3 100644 --- a/Sources/SeriousSam/GUI/Components/MGFileButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGFileButton.cpp @@ -42,8 +42,7 @@ void CMGFileButton::SaveDescription(void) CTFileName fnFileNameDescription = mg_fnm.NoExt() + ".des"; try { mg_strDes.Save_t(fnFileNameDescription); - } - catch (char *strError) { + } catch (char *strError) { CPrintF("%s\n", strError); } } @@ -62,8 +61,7 @@ void CMGFileButton::DoSave(void) _pmgFileToSave = this; extern void SaveConfirm(void); SaveConfirm(); - } - else { + } else { SaveYes(); } } @@ -118,16 +116,17 @@ void CMGFileButton::OnActivate(void) // load now DoLoad(); // if saving - } - else { + } else { // switch to editing mode BOOL bWasEmpty = mg_strText == EMPTYSLOTSTRING; mg_strDes = _pGUIM->gmLoadSaveMenu.gm_strSaveDes; RefreshText(); _strOrgDescription = _strTmpDescription = mg_strText; + if (bWasEmpty) { _strOrgDescription = EMPTYSLOTSTRING; } + mg_pstrToChange = &_strTmpDescription; StartEdit(); mg_iState = FBS_SAVENAME; @@ -148,8 +147,8 @@ BOOL CMGFileButton::OnKeyDown(int iVKey) mg_iState = FBS_RENAME; } return TRUE; - } - else if (iVKey == VK_DELETE) { + + } else if (iVKey == VK_DELETE) { if (FileExistsForWriting(mg_fnm)) { // delete the file, its description and thumbnail RemoveFile(mg_fnm); @@ -164,8 +163,7 @@ BOOL CMGFileButton::OnKeyDown(int iVKey) } } return CMenuGadget::OnKeyDown(iVKey); - } - else { + } else { // go out of editing mode if (mg_bEditing) { if (iVKey == VK_UP || iVKey == VK_DOWN) { @@ -185,6 +183,7 @@ void CMGFileButton::OnSetFocus(void) } else { ClearThumbnail(); } + pgmCurrentMenu->KillAllFocuses(); CMGButton::OnSetFocus(); } @@ -195,6 +194,7 @@ void CMGFileButton::OnKillFocus(void) if (mg_bEditing) { OnKeyDown(VK_ESCAPE); } + CMGEdit::OnKillFocus(); } @@ -206,9 +206,8 @@ void CMGFileButton::OnStringChanged(void) // do the save mg_strDes = _strTmpDescription + "\n" + mg_strInfo; DoSave(); - // if renaming - } - else if (mg_iState == FBS_RENAME) { + // if renaming + } else if (mg_iState == FBS_RENAME) { // do the rename mg_strDes = _strTmpDescription + "\n" + mg_strInfo; SaveDescription(); diff --git a/Sources/SeriousSam/GUI/Components/MGHighScore.cpp b/Sources/SeriousSam/GUI/Components/MGHighScore.cpp index 31466ee..a46c124 100644 --- a/Sources/SeriousSam/GUI/Components/MGHighScore.cpp +++ b/Sources/SeriousSam/GUI/Components/MGHighScore.cpp @@ -94,8 +94,7 @@ void CMGHighScore::Render(CDrawPort *pdp) }} if (iRow == 0) { pixJ += pdp->GetHeight()*0.06f; - } - else { + } else { pixJ += pdp->GetHeight()*0.04f; } }} diff --git a/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp index 4d82ba6..85cce3c 100644 --- a/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp +++ b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp @@ -79,9 +79,8 @@ void CMGKeyDefinition::SetBindingNames(BOOL bDefining) if (bKey1Bound && !bKey2Bound) { // put question mark for second key mg_strBinding = strKey1 + TRANS(" or ") + "?"; - // otherwise - } - else { + // otherwise + } else { // put question mark only mg_strBinding = "?"; } @@ -92,9 +91,8 @@ void CMGKeyDefinition::SetBindingNames(BOOL bDefining) if (bKey2Bound) { // add both mg_strBinding = strKey1 + TRANS(" or ") + strKey2; - // if second key is undefined - } - else { + // if second key is undefined + } else { // display only first one mg_strBinding = strKey1; } @@ -139,15 +137,13 @@ void CMGKeyDefinition::DefineKey(INDEX iDik) ba.ba_iFirstKey = iDik; // clear second key ba.ba_iSecondKey = KID_NONE; - // if only first key bound - } - else { + // if only first key bound + } else { // bind second key ba.ba_iSecondKey = iDik; } // if it is not this one - } - else { + } else { // clear bindings that contain this key if (ba.ba_iFirstKey == iDik) { ba.ba_iFirstKey = KID_NONE; @@ -195,8 +191,7 @@ void CMGKeyDefinition::Think(void) // define the new key DefineKey(iDik); // if escape pressed - } - else { + } else { // undefine the key DefineKey(KID_NONE); } diff --git a/Sources/SeriousSam/GUI/Components/MGServerList.cpp b/Sources/SeriousSam/GUI/Components/MGServerList.cpp index 5872ea9..286a001 100644 --- a/Sources/SeriousSam/GUI/Components/MGServerList.cpp +++ b/Sources/SeriousSam/GUI/Components/MGServerList.cpp @@ -67,8 +67,7 @@ void CMGServerList::AdjustFirstOnScreen(void) if (mg_iSelected= mg_iFirstOnScreen + mg_ctOnScreen) { + } else if (mg_iSelected >= mg_iFirstOnScreen + mg_ctOnScreen) { mg_iFirstOnScreen = ClampDn(mg_iSelected - mg_ctOnScreen + 1L, 0L); } } @@ -104,11 +103,11 @@ extern CMGEdit mgServerFilter[7]; void SortAndFilterServers(void) { - { FORDELETELIST(CNetworkSession, ns_lnNode, _lhServers, itns) { + {FORDELETELIST(CNetworkSession, ns_lnNode, _lhServers, itns) { delete &*itns; - } } - { - FOREACHINLIST(CNetworkSession, ns_lnNode, _pNetwork->ga_lhEnumeratedSessions, itns) { + }} + + {FOREACHINLIST(CNetworkSession, ns_lnNode, _pNetwork->ga_lhEnumeratedSessions, itns) { CNetworkSession &ns = *itns; extern CTString _strServerFilter[7]; if (_strServerFilter[0] != "" && !ns.ns_strSession.Matches("*" + _strServerFilter[0] + "*")) continue; @@ -245,8 +244,7 @@ void CMGServerList::Render(CDrawPort *pdp) PrintInBox(pdp, apixSeparatorI[0] + pixCharSizeI, pixListTopJ + pixCharSizeJ + pixLineSize + 1, apixSeparatorI[1] - apixSeparatorI[0], TRANS("searching..."), colItem); } - } - else { + } else { FOREACHINLIST(CNetworkSession, ns_lnNode, _lhServers, itns) { CNetworkSession &ns = *itns; @@ -352,8 +350,7 @@ void CMGServerList::OnMouseOver(PIX pixI, PIX pixJ) AdjustFirstOnScreen(); mg_pixMouseDrag = -1; } - } - else if (bInSlider) { + } else if (bInSlider) { mg_pixMouseDrag = pixJ; } } diff --git a/Sources/SeriousSam/GUI/Components/MGSlider.cpp b/Sources/SeriousSam/GUI/Components/MGSlider.cpp index 18055f7..275aa19 100644 --- a/Sources/SeriousSam/GUI/Components/MGSlider.cpp +++ b/Sources/SeriousSam/GUI/Components/MGSlider.cpp @@ -60,14 +60,12 @@ BOOL CMGSlider::OnKeyDown(int iVKey) ApplyCurrentPosition(); return TRUE; // if scrolling right - } - else if ((iVKey == VK_RETURN || iVKey == VK_RIGHT) && mg_iCurPosPutText(mg_strLabel, box.Min()(1), pixJ, col); pdp->PutTextR(strValue, box.Max()(1), pixJ, col); - } - else { + } else { pdp->PutTextR(mg_strLabel, pixIL, pixJ, col); pdp->PutText(strValue, pixIR, pixJ, col); } - } - else { + } else { CTString strLabel = mg_strLabel + ": "; pdp->PutText(strLabel, box.Min()(1), pixJ, col); CTextureObject to; @@ -116,8 +113,7 @@ void CMGTrigger::Render(CDrawPort *pdp) pdp->PutTexture(&to, PIXaabbox2D( PIX2D(pixCX - pixSize / 2, pixCY - pixSize / 2), PIX2D(pixCX - pixSize / 2 + pixSize, pixCY - pixSize / 2 + pixSize)), C_WHITE | 255); - } - catch (char *strError) { + } catch (char *strError) { CPrintF("%s\n", strError); } to.SetData(NULL); diff --git a/Sources/SeriousSam/GUI/Components/MGVarButton.cpp b/Sources/SeriousSam/GUI/Components/MGVarButton.cpp index 5537ce3..970412a 100644 --- a/Sources/SeriousSam/GUI/Components/MGVarButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGVarButton.cpp @@ -141,9 +141,7 @@ void CMGVarButton::Render(CDrawPort *pdp) COLOR col = LCDGetColor(C_WHITE | 255, "separator"); CTString strText = mg_pvsVar->vs_strName; pdp->PutTextC(strText, pixIC, pixJ, col); - } - else if (mg_pvsVar->Validate()) - { + } else if (mg_pvsVar->Validate()) { // check whether the variable is disabled if (mg_pvsVar->vs_strFilter != "") mg_bEnabled = _pShell->GetINDEX(mg_pvsVar->vs_strFilter); COLOR col = GetCurrentColor(); @@ -160,13 +158,13 @@ void CMGVarButton::Render(CDrawPort *pdp) PIX pixJSize = box.Size()(2); LCDDrawBox(0, -1, PIXaabbox2D(PIX2D(pixIR, pixJ + 1), PIX2D(pixIR + pixISize - 4, pixJ + pixJSize - 6)), LCDGetColor(C_GREEN | 255, "slider box")); + // draw filled part of slider if (mg_pvsVar->vs_iSlider == 1) { // fill slider FLOAT fFactor = (FLOAT)(mg_pvsVar->vs_iValue + 1) / mg_pvsVar->vs_ctValues; pdp->Fill(pixIR + 1, pixJ + 2, (pixISize - 6)*fFactor, pixJSize - 9, col); - } - else { + } else { // ratio slider ASSERT(mg_pvsVar->vs_iSlider == 2); FLOAT fUnitWidth = (FLOAT)(pixISize - 5) / mg_pvsVar->vs_ctValues; diff --git a/Sources/SeriousSam/GUI/Menus/GameMenu.cpp b/Sources/SeriousSam/GUI/Menus/GameMenu.cpp index 91dd9d8..320a703 100644 --- a/Sources/SeriousSam/GUI/Menus/GameMenu.cpp +++ b/Sources/SeriousSam/GUI/Menus/GameMenu.cpp @@ -324,9 +324,8 @@ void CGameMenu::StartMenu(void) if (itmg->mg_iInList == -2) { // hide it itmg->mg_bVisible = FALSE; - // if in list - } - else if (itmg->mg_iInList >= 0) { + // if in list + } else if (itmg->mg_iInList >= 0) { // show it itmg->mg_bVisible = TRUE; } diff --git a/Sources/SeriousSam/SeriousSam.cpp b/Sources/SeriousSam/SeriousSam.cpp index b18fc39..5459745 100644 --- a/Sources/SeriousSam/SeriousSam.cpp +++ b/Sources/SeriousSam/SeriousSam.cpp @@ -1364,10 +1364,8 @@ BOOL TryToSetDisplayMode( enum GfxAPIType eGfxAPI, INDEX iAdapter, PIX pixSizeI, // report success return TRUE; - } - // if couldn't set new mode - else { + } else { // close the application window CloseMainWindow(); // report failure From 4cb76b506f892d206f4ff3566f2c3dc1e209aebf Mon Sep 17 00:00:00 2001 From: zcaliptium Date: Thu, 31 Mar 2016 23:27:11 +0300 Subject: [PATCH 34/34] GameExecutable: Replace 4-spaced tabs with 2-spaced. --- Sources/SeriousSam/GLSettings.cpp | 4 +- Sources/SeriousSam/GUI/Components/MGArrow.cpp | 44 +- .../GUI/Components/MGChangePlayer.cpp | 34 +- Sources/SeriousSam/GUI/Components/MGEdit.cpp | 202 +-- .../GUI/Components/MGFileButton.cpp | 286 ++-- .../SeriousSam/GUI/Components/MGHighScore.cpp | 134 +- .../GUI/Components/MGKeyDefinition.cpp | 304 ++-- .../GUI/Components/MGLevelButton.cpp | 14 +- Sources/SeriousSam/GUI/Components/MGModel.cpp | 164 +- .../GUI/Components/MGServerList.cpp | 654 ++++---- .../SeriousSam/GUI/Components/MGSlider.cpp | 140 +- Sources/SeriousSam/GUI/Components/MGTitle.cpp | 10 +- .../SeriousSam/GUI/Components/MGTrigger.cpp | 144 +- .../SeriousSam/GUI/Components/MGVarButton.cpp | 250 +-- .../SeriousSam/GUI/Components/MenuGadget.cpp | 108 +- Sources/SeriousSam/GUI/Menus/GameMenu.cpp | 530 +++--- .../SeriousSam/GUI/Menus/MAudioOptions.cpp | 82 +- Sources/SeriousSam/GUI/Menus/MConfirm.cpp | 82 +- Sources/SeriousSam/GUI/Menus/MControls.cpp | 198 +-- .../SeriousSam/GUI/Menus/MCustomizeAxis.cpp | 186 +-- .../GUI/Menus/MCustomizeKeyboard.cpp | 138 +- Sources/SeriousSam/GUI/Menus/MDisabled.cpp | 12 +- Sources/SeriousSam/GUI/Menus/MHighScore.cpp | 14 +- Sources/SeriousSam/GUI/Menus/MInGame.cpp | 252 +-- Sources/SeriousSam/GUI/Menus/MLevels.cpp | 148 +- Sources/SeriousSam/GUI/Menus/MLoadSave.cpp | 346 ++-- Sources/SeriousSam/GUI/Menus/MMain.cpp | 182 +- Sources/SeriousSam/GUI/Menus/MNetwork.cpp | 74 +- Sources/SeriousSam/GUI/Menus/MNetworkJoin.cpp | 56 +- Sources/SeriousSam/GUI/Menus/MNetworkOpen.cpp | 82 +- .../SeriousSam/GUI/Menus/MNetworkStart.cpp | 186 +-- Sources/SeriousSam/GUI/Menus/MOptions.cpp | 104 +- .../SeriousSam/GUI/Menus/MPlayerProfile.cpp | 442 ++--- .../SeriousSam/GUI/Menus/MSelectPlayers.cpp | 142 +- Sources/SeriousSam/GUI/Menus/MServers.cpp | 138 +- .../SeriousSam/GUI/Menus/MSinglePlayer.cpp | 214 +-- .../SeriousSam/GUI/Menus/MSinglePlayerNew.cpp | 128 +- Sources/SeriousSam/GUI/Menus/MSplitScreen.cpp | 58 +- Sources/SeriousSam/GUI/Menus/MSplitStart.cpp | 112 +- Sources/SeriousSam/GUI/Menus/MVar.cpp | 172 +- .../SeriousSam/GUI/Menus/MVideoOptions.cpp | 94 +- Sources/SeriousSam/GUI/Menus/Menu.cpp | 266 +-- Sources/SeriousSam/GUI/Menus/MenuActions.cpp | 1464 ++++++++--------- Sources/SeriousSam/GUI/Menus/MenuStarters.cpp | 996 +++++------ .../SeriousSam/GUI/Menus/MenuStartersAF.cpp | 254 +-- Sources/SeriousSam/GUI/Menus/MenuStuff.cpp | 354 ++-- Sources/SeriousSam/MainWindow.cpp | 50 +- Sources/SeriousSam/SeriousSam.cpp | 14 +- Sources/SeriousSam/SplashScreen.cpp | 28 +- 49 files changed, 5046 insertions(+), 5044 deletions(-) diff --git a/Sources/SeriousSam/GLSettings.cpp b/Sources/SeriousSam/GLSettings.cpp index 59e2c02..2e4d475 100644 --- a/Sources/SeriousSam/GLSettings.cpp +++ b/Sources/SeriousSam/GLSettings.cpp @@ -72,7 +72,7 @@ void InitGLSettings(void) { strmFile.Open_t( CTString("Scripts\\GLSettings\\GLSettings.lst"), CTStream::OM_READ); INDEX iIndex = 0; - do + do { achrLine [0] = 0; achrRenderer[0] = 0; @@ -89,7 +89,7 @@ void InitGLSettings(void) se.se_fnmScript = CTString(achrScript); _lhSettings.AddTail( se.se_lnNode); } - while( !strmFile.AtEOF()); + while( !strmFile.AtEOF()); } // ignore errors diff --git a/Sources/SeriousSam/GUI/Components/MGArrow.cpp b/Sources/SeriousSam/GUI/Components/MGArrow.cpp index ce7ccde..49ab7dd 100644 --- a/Sources/SeriousSam/GUI/Components/MGArrow.cpp +++ b/Sources/SeriousSam/GUI/Components/MGArrow.cpp @@ -21,33 +21,33 @@ with this program; if not, write to the Free Software Foundation, Inc., void CMGArrow::Render(CDrawPort *pdp) { - SetFontMedium(pdp); + SetFontMedium(pdp); - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - COLOR col = GetCurrentColor(); + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + COLOR col = GetCurrentColor(); - CTString str; - if (mg_adDirection == AD_NONE) { - str = "???"; - } else if (mg_adDirection == AD_UP) { - str = TRANS("Page Up"); - } else if (mg_adDirection == AD_DOWN) { - str = TRANS("Page Down"); - } else { - ASSERT(FALSE); - } + CTString str; + if (mg_adDirection == AD_NONE) { + str = "???"; + } else if (mg_adDirection == AD_UP) { + str = TRANS("Page Up"); + } else if (mg_adDirection == AD_DOWN) { + str = TRANS("Page Down"); + } else { + ASSERT(FALSE); + } - PIX pixI = box.Min()(1); - PIX pixJ = box.Min()(2); - pdp->PutText(str, pixI, pixJ, col); + PIX pixI = box.Min()(1); + PIX pixJ = box.Min()(2); + pdp->PutText(str, pixI, pixJ, col); } void CMGArrow::OnActivate(void) { - if (mg_adDirection == AD_UP) { - pgmCurrentMenu->ScrollList(-3); - } - else if (mg_adDirection == AD_DOWN) { - pgmCurrentMenu->ScrollList(+3); - } + if (mg_adDirection == AD_UP) { + pgmCurrentMenu->ScrollList(-3); + } + else if (mg_adDirection == AD_DOWN) { + pgmCurrentMenu->ScrollList(+3); + } } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp b/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp index bed5e08..c7bad69 100644 --- a/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp +++ b/Sources/SeriousSam/GUI/Components/MGChangePlayer.cpp @@ -24,29 +24,29 @@ extern CSoundData *_psdPress; void CMGChangePlayer::OnActivate(void) { - PlayMenuSound(_psdPress); - IFeel_PlayEffect("Menu_press"); - _iLocalPlayer = mg_iLocalPlayer; + PlayMenuSound(_psdPress); + IFeel_PlayEffect("Menu_press"); + _iLocalPlayer = mg_iLocalPlayer; - if (_pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer] < 0) - _pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer] = 0; + if (_pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer] < 0) + _pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer] = 0; - _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer]; - _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmSelectPlayersMenu; + _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer]; + _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmSelectPlayersMenu; - extern BOOL _bPlayerMenuFromSinglePlayer; - _bPlayerMenuFromSinglePlayer = FALSE; - ChangeToMenu(&_pGUIM->gmPlayerProfile); + extern BOOL _bPlayerMenuFromSinglePlayer; + _bPlayerMenuFromSinglePlayer = FALSE; + ChangeToMenu(&_pGUIM->gmPlayerProfile); } void CMGChangePlayer::SetPlayerText(void) { - INDEX iPlayer = _pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer]; - CPlayerCharacter &pc = _pGame->gm_apcPlayers[iPlayer]; + INDEX iPlayer = _pGame->gm_aiMenuLocalPlayers[mg_iLocalPlayer]; + CPlayerCharacter &pc = _pGame->gm_apcPlayers[iPlayer]; - if (iPlayer<0 || iPlayer>7) { - mg_strText = "????"; - } else { - mg_strText.PrintF(TRANS("Player %d: %s\n"), mg_iLocalPlayer + 1, pc.GetNameForPrinting()); - } + if (iPlayer<0 || iPlayer>7) { + mg_strText = "????"; + } else { + mg_strText.PrintF(TRANS("Player %d: %s\n"), mg_iLocalPlayer + 1, pc.GetNameForPrinting()); + } } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGEdit.cpp b/Sources/SeriousSam/GUI/Components/MGEdit.cpp index b50f78b..e41f351 100644 --- a/Sources/SeriousSam/GUI/Components/MGEdit.cpp +++ b/Sources/SeriousSam/GUI/Components/MGEdit.cpp @@ -25,143 +25,143 @@ extern BOOL _bEditingString; CMGEdit::CMGEdit(void) { - mg_pstrToChange = NULL; - mg_ctMaxStringLen = 70; - Clear(); + mg_pstrToChange = NULL; + mg_ctMaxStringLen = 70; + Clear(); } void CMGEdit::Clear(void) { - mg_iCursorPos = 0; - mg_bEditing = FALSE; - _bEditingString = FALSE; + mg_iCursorPos = 0; + mg_bEditing = FALSE; + _bEditingString = FALSE; } void CMGEdit::OnActivate(void) { - if (!mg_bEnabled) { - return; - } - ASSERT(mg_pstrToChange != NULL); - PlayMenuSound(_psdPress); - IFeel_PlayEffect("Menu_press"); - SetText(mg_strText); - mg_iCursorPos = strlen(mg_strText); - mg_bEditing = TRUE; - _bEditingString = TRUE; + if (!mg_bEnabled) { + return; + } + ASSERT(mg_pstrToChange != NULL); + PlayMenuSound(_psdPress); + IFeel_PlayEffect("Menu_press"); + SetText(mg_strText); + mg_iCursorPos = strlen(mg_strText); + mg_bEditing = TRUE; + _bEditingString = TRUE; } // focus lost void CMGEdit::OnKillFocus(void) { - // go out of editing mode - if (mg_bEditing) { - OnKeyDown(VK_RETURN); - Clear(); - } - // proceed - CMenuGadget::OnKillFocus(); + // go out of editing mode + if (mg_bEditing) { + OnKeyDown(VK_RETURN); + Clear(); + } + // proceed + CMenuGadget::OnKillFocus(); } // helper function for deleting char(s) from string static void Key_BackDel(CTString &str, INDEX &iPos, BOOL bShift, BOOL bRight) { - // do nothing if string is empty - INDEX ctChars = strlen(str); - if (ctChars == 0) return; - if (bRight && iPos0) { // BACKSPACE key - if (bShift) { - // delete to start of line - str.TrimLeft(ctChars - iPos); - iPos = 0; - } else { - // delete only one char - str.DeleteChar(iPos - 1); - iPos--; - } - } + // do nothing if string is empty + INDEX ctChars = strlen(str); + if (ctChars == 0) return; + if (bRight && iPos0) { // BACKSPACE key + if (bShift) { + // delete to start of line + str.TrimLeft(ctChars - iPos); + iPos = 0; + } else { + // delete only one char + str.DeleteChar(iPos - 1); + iPos--; + } + } } // key/mouse button pressed BOOL CMGEdit::OnKeyDown(int iVKey) { - // if not in edit mode - if (!mg_bEditing) { - // behave like normal gadget - return CMenuGadget::OnKeyDown(iVKey); - } + // if not in edit mode + if (!mg_bEditing) { + // behave like normal gadget + return CMenuGadget::OnKeyDown(iVKey); + } - // finish editing? - BOOL bShift = GetKeyState(VK_SHIFT) & 0x8000; - switch (iVKey) { - case VK_UP: case VK_DOWN: - case VK_RETURN: case VK_LBUTTON: *mg_pstrToChange = mg_strText; Clear(); OnStringChanged(); break; - case VK_ESCAPE: case VK_RBUTTON: mg_strText = *mg_pstrToChange; Clear(); OnStringCanceled(); break; - case VK_LEFT: if (mg_iCursorPos > 0) mg_iCursorPos--; break; - case VK_RIGHT: if (mg_iCursorPos < strlen(mg_strText)) mg_iCursorPos++; break; - case VK_HOME: mg_iCursorPos = 0; break; - case VK_END: mg_iCursorPos = strlen(mg_strText); break; - case VK_BACK: Key_BackDel(mg_strText, mg_iCursorPos, bShift, FALSE); break; - case VK_DELETE: Key_BackDel(mg_strText, mg_iCursorPos, bShift, TRUE); break; - default: break; // ignore all other special keys - } + // finish editing? + BOOL bShift = GetKeyState(VK_SHIFT) & 0x8000; + switch (iVKey) { + case VK_UP: case VK_DOWN: + case VK_RETURN: case VK_LBUTTON: *mg_pstrToChange = mg_strText; Clear(); OnStringChanged(); break; + case VK_ESCAPE: case VK_RBUTTON: mg_strText = *mg_pstrToChange; Clear(); OnStringCanceled(); break; + case VK_LEFT: if (mg_iCursorPos > 0) mg_iCursorPos--; break; + case VK_RIGHT: if (mg_iCursorPos < strlen(mg_strText)) mg_iCursorPos++; break; + case VK_HOME: mg_iCursorPos = 0; break; + case VK_END: mg_iCursorPos = strlen(mg_strText); break; + case VK_BACK: Key_BackDel(mg_strText, mg_iCursorPos, bShift, FALSE); break; + case VK_DELETE: Key_BackDel(mg_strText, mg_iCursorPos, bShift, TRUE); break; + default: break; // ignore all other special keys + } - // key is handled - return TRUE; + // key is handled + return TRUE; } // char typed BOOL CMGEdit::OnChar(MSG msg) { - // if not in edit mode - if (!mg_bEditing) { - // behave like normal gadget - return CMenuGadget::OnChar(msg); - } - // only chars are allowed - const INDEX ctFullLen = mg_strText.Length(); - const INDEX ctNakedLen = mg_strText.LengthNaked(); - mg_iCursorPos = Clamp(mg_iCursorPos, 0L, ctFullLen); - int iVKey = msg.wParam; - if (isprint(iVKey) && ctNakedLen <= mg_ctMaxStringLen) { - mg_strText.InsertChar(mg_iCursorPos, (char)iVKey); - mg_iCursorPos++; - } - // key is handled - return TRUE; + // if not in edit mode + if (!mg_bEditing) { + // behave like normal gadget + return CMenuGadget::OnChar(msg); + } + // only chars are allowed + const INDEX ctFullLen = mg_strText.Length(); + const INDEX ctNakedLen = mg_strText.LengthNaked(); + mg_iCursorPos = Clamp(mg_iCursorPos, 0L, ctFullLen); + int iVKey = msg.wParam; + if (isprint(iVKey) && ctNakedLen <= mg_ctMaxStringLen) { + mg_strText.InsertChar(mg_iCursorPos, (char)iVKey); + mg_iCursorPos++; + } + // key is handled + return TRUE; } void CMGEdit::Render(CDrawPort *pdp) { - if (mg_bEditing) { - mg_iTextMode = -1; - } else if (mg_bFocused) { - mg_iTextMode = 0; - } else { - mg_iTextMode = 1; - } + if (mg_bEditing) { + mg_iTextMode = -1; + } else if (mg_bFocused) { + mg_iTextMode = 0; + } else { + mg_iTextMode = 1; + } - if (mg_strText == "" && !mg_bEditing) { - if (mg_bfsFontSize == BFS_SMALL) { - mg_strText = "*"; - } else { - mg_strText = TRANS(""); - } - CMGButton::Render(pdp); - mg_strText = ""; - } else { - CMGButton::Render(pdp); - } + if (mg_strText == "" && !mg_bEditing) { + if (mg_bfsFontSize == BFS_SMALL) { + mg_strText = "*"; + } else { + mg_strText = TRANS(""); + } + CMGButton::Render(pdp); + mg_strText = ""; + } else { + CMGButton::Render(pdp); + } } void CMGEdit::OnStringChanged(void) diff --git a/Sources/SeriousSam/GUI/Components/MGFileButton.cpp b/Sources/SeriousSam/GUI/Components/MGFileButton.cpp index d530ad3..9597350 100644 --- a/Sources/SeriousSam/GUI/Components/MGFileButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGFileButton.cpp @@ -24,74 +24,74 @@ extern CSoundData *_psdPress; CMGFileButton::CMGFileButton(void) { - mg_iState = FBS_NORMAL; + mg_iState = FBS_NORMAL; } // refresh current text from description void CMGFileButton::RefreshText(void) { - mg_strText = mg_strDes; - mg_strText.OnlyFirstLine(); - mg_strInfo = mg_strDes; - mg_strInfo.RemovePrefix(mg_strText); - mg_strInfo.DeleteChar(0); + mg_strText = mg_strDes; + mg_strText.OnlyFirstLine(); + mg_strInfo = mg_strDes; + mg_strInfo.RemovePrefix(mg_strText); + mg_strInfo.DeleteChar(0); } void CMGFileButton::SaveDescription(void) { - CTFileName fnFileNameDescription = mg_fnm.NoExt() + ".des"; - try { - mg_strDes.Save_t(fnFileNameDescription); - } catch (char *strError) { - CPrintF("%s\n", strError); - } + CTFileName fnFileNameDescription = mg_fnm.NoExt() + ".des"; + try { + mg_strDes.Save_t(fnFileNameDescription); + } catch (char *strError) { + CPrintF("%s\n", strError); + } } CMGFileButton *_pmgFileToSave = NULL; void OnFileSaveOK(void) { - if (_pmgFileToSave != NULL) { - _pmgFileToSave->SaveYes(); - } + if (_pmgFileToSave != NULL) { + _pmgFileToSave->SaveYes(); + } } void CMGFileButton::DoSave(void) { - if (FileExistsForWriting(mg_fnm)) { - _pmgFileToSave = this; - extern void SaveConfirm(void); - SaveConfirm(); - } else { - SaveYes(); - } + if (FileExistsForWriting(mg_fnm)) { + _pmgFileToSave = this; + extern void SaveConfirm(void); + SaveConfirm(); + } else { + SaveYes(); + } } void CMGFileButton::SaveYes(void) { - ASSERT(_pGUIM->gmLoadSaveMenu.gm_bSave); - // call saving function - BOOL bSucceeded = _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen(mg_fnm); - // if saved - if (bSucceeded) { - // save the description too - SaveDescription(); - } + ASSERT(_pGUIM->gmLoadSaveMenu.gm_bSave); + // call saving function + BOOL bSucceeded = _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen(mg_fnm); + // if saved + if (bSucceeded) { + // save the description too + SaveDescription(); + } } void CMGFileButton::DoLoad(void) { - ASSERT(!_pGUIM->gmLoadSaveMenu.gm_bSave); - // if no file - if (!FileExists(mg_fnm)) { - // do nothing - return; - } - if (_pGUIM->gmLoadSaveMenu.gm_pgmNextMenu != NULL) { - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu; - } - // call loading function - BOOL bSucceeded = _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen(mg_fnm); - ASSERT(bSucceeded); + ASSERT(!_pGUIM->gmLoadSaveMenu.gm_bSave); + // if no file + if (!FileExists(mg_fnm)) { + // do nothing + return; + } + if (_pGUIM->gmLoadSaveMenu.gm_pgmNextMenu != NULL) { + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu; + } + // call loading function + BOOL bSucceeded = _pGUIM->gmLoadSaveMenu.gm_pAfterFileChosen(mg_fnm); + ASSERT(bSucceeded); } static CTString _strTmpDescription; @@ -99,144 +99,144 @@ static CTString _strOrgDescription; void CMGFileButton::StartEdit(void) { - CMGEdit::OnActivate(); + CMGEdit::OnActivate(); } void CMGFileButton::OnActivate(void) { - if (mg_fnm == "") { - return; - } + if (mg_fnm == "") { + return; + } - PlayMenuSound(_psdPress); - IFeel_PlayEffect("Menu_press"); + PlayMenuSound(_psdPress); + IFeel_PlayEffect("Menu_press"); - // if loading - if (!_pGUIM->gmLoadSaveMenu.gm_bSave) { - // load now - DoLoad(); - // if saving - } else { - // switch to editing mode - BOOL bWasEmpty = mg_strText == EMPTYSLOTSTRING; - mg_strDes = _pGUIM->gmLoadSaveMenu.gm_strSaveDes; - RefreshText(); - _strOrgDescription = _strTmpDescription = mg_strText; + // if loading + if (!_pGUIM->gmLoadSaveMenu.gm_bSave) { + // load now + DoLoad(); + // if saving + } else { + // switch to editing mode + BOOL bWasEmpty = mg_strText == EMPTYSLOTSTRING; + mg_strDes = _pGUIM->gmLoadSaveMenu.gm_strSaveDes; + RefreshText(); + _strOrgDescription = _strTmpDescription = mg_strText; - if (bWasEmpty) { - _strOrgDescription = EMPTYSLOTSTRING; - } + if (bWasEmpty) { + _strOrgDescription = EMPTYSLOTSTRING; + } - mg_pstrToChange = &_strTmpDescription; - StartEdit(); - mg_iState = FBS_SAVENAME; - } + mg_pstrToChange = &_strTmpDescription; + StartEdit(); + mg_iState = FBS_SAVENAME; + } } BOOL CMGFileButton::OnKeyDown(int iVKey) { - if (mg_iState == FBS_NORMAL) { - if (_pGUIM->gmLoadSaveMenu.gm_bSave || _pGUIM->gmLoadSaveMenu.gm_bManage) { - if (iVKey == VK_F2) { - if (FileExistsForWriting(mg_fnm)) { - // switch to renaming mode - _strOrgDescription = mg_strText; - _strTmpDescription = mg_strText; - mg_pstrToChange = &_strTmpDescription; - StartEdit(); - mg_iState = FBS_RENAME; - } - return TRUE; + if (mg_iState == FBS_NORMAL) { + if (_pGUIM->gmLoadSaveMenu.gm_bSave || _pGUIM->gmLoadSaveMenu.gm_bManage) { + if (iVKey == VK_F2) { + if (FileExistsForWriting(mg_fnm)) { + // switch to renaming mode + _strOrgDescription = mg_strText; + _strTmpDescription = mg_strText; + mg_pstrToChange = &_strTmpDescription; + StartEdit(); + mg_iState = FBS_RENAME; + } + return TRUE; - } else if (iVKey == VK_DELETE) { - if (FileExistsForWriting(mg_fnm)) { - // delete the file, its description and thumbnail - RemoveFile(mg_fnm); - RemoveFile(mg_fnm.NoExt() + ".des"); - RemoveFile(mg_fnm.NoExt() + "Tbn.tex"); - // refresh menu - _pGUIM->gmLoadSaveMenu.EndMenu(); - _pGUIM->gmLoadSaveMenu.StartMenu(); - OnSetFocus(); - } - return TRUE; - } - } - return CMenuGadget::OnKeyDown(iVKey); - } else { - // go out of editing mode - if (mg_bEditing) { - if (iVKey == VK_UP || iVKey == VK_DOWN) { - CMGEdit::OnKeyDown(VK_ESCAPE); - } - } - return CMGEdit::OnKeyDown(iVKey); - } + } else if (iVKey == VK_DELETE) { + if (FileExistsForWriting(mg_fnm)) { + // delete the file, its description and thumbnail + RemoveFile(mg_fnm); + RemoveFile(mg_fnm.NoExt() + ".des"); + RemoveFile(mg_fnm.NoExt() + "Tbn.tex"); + // refresh menu + _pGUIM->gmLoadSaveMenu.EndMenu(); + _pGUIM->gmLoadSaveMenu.StartMenu(); + OnSetFocus(); + } + return TRUE; + } + } + return CMenuGadget::OnKeyDown(iVKey); + } else { + // go out of editing mode + if (mg_bEditing) { + if (iVKey == VK_UP || iVKey == VK_DOWN) { + CMGEdit::OnKeyDown(VK_ESCAPE); + } + } + return CMGEdit::OnKeyDown(iVKey); + } } void CMGFileButton::OnSetFocus(void) { - mg_iState = FBS_NORMAL; + mg_iState = FBS_NORMAL; - if (_pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails && mg_bEnabled) { - SetThumbnail(mg_fnm); - } else { - ClearThumbnail(); - } + if (_pGUIM->gmLoadSaveMenu.gm_bAllowThumbnails && mg_bEnabled) { + SetThumbnail(mg_fnm); + } else { + ClearThumbnail(); + } - pgmCurrentMenu->KillAllFocuses(); - CMGButton::OnSetFocus(); + pgmCurrentMenu->KillAllFocuses(); + CMGButton::OnSetFocus(); } void CMGFileButton::OnKillFocus(void) { - // go out of editing mode - if (mg_bEditing) { - OnKeyDown(VK_ESCAPE); - } + // go out of editing mode + if (mg_bEditing) { + OnKeyDown(VK_ESCAPE); + } - CMGEdit::OnKillFocus(); + CMGEdit::OnKillFocus(); } // override from edit gadget void CMGFileButton::OnStringChanged(void) { - // if saving - if (mg_iState == FBS_SAVENAME) { - // do the save - mg_strDes = _strTmpDescription + "\n" + mg_strInfo; - DoSave(); - // if renaming - } else if (mg_iState == FBS_RENAME) { - // do the rename - mg_strDes = _strTmpDescription + "\n" + mg_strInfo; - SaveDescription(); - // refresh menu - _pGUIM->gmLoadSaveMenu.EndMenu(); - _pGUIM->gmLoadSaveMenu.StartMenu(); - OnSetFocus(); - } + // if saving + if (mg_iState == FBS_SAVENAME) { + // do the save + mg_strDes = _strTmpDescription + "\n" + mg_strInfo; + DoSave(); + // if renaming + } else if (mg_iState == FBS_RENAME) { + // do the rename + mg_strDes = _strTmpDescription + "\n" + mg_strInfo; + SaveDescription(); + // refresh menu + _pGUIM->gmLoadSaveMenu.EndMenu(); + _pGUIM->gmLoadSaveMenu.StartMenu(); + OnSetFocus(); + } } void CMGFileButton::OnStringCanceled(void) { - mg_strText = _strOrgDescription; + mg_strText = _strOrgDescription; } void CMGFileButton::Render(CDrawPort *pdp) { - // render original gadget first - CMGEdit::Render(pdp); + // render original gadget first + CMGEdit::Render(pdp); - // if currently selected - if (mg_bFocused && mg_bEnabled) { - // add info at the bottom if screen - SetFontMedium(pdp); + // if currently selected + if (mg_bFocused && mg_bEnabled) { + // add info at the bottom if screen + SetFontMedium(pdp); - PIXaabbox2D box = FloatBoxToPixBox(pdp, BoxSaveLoad(15.0)); - PIX pixI = box.Min()(1); - PIX pixJ = box.Min()(2); + PIXaabbox2D box = FloatBoxToPixBox(pdp, BoxSaveLoad(15.0)); + PIX pixI = box.Min()(1); + PIX pixJ = box.Min()(2); - COLOR col = LCDGetColor(C_mlGREEN | 255, "file info"); - pdp->PutText(mg_strInfo, pixI, pixJ, col); - } + COLOR col = LCDGetColor(C_mlGREEN | 255, "file info"); + pdp->PutText(mg_strInfo, pixI, pixJ, col); + } } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGHighScore.cpp b/Sources/SeriousSam/GUI/Components/MGHighScore.cpp index a46c124..6ab4120 100644 --- a/Sources/SeriousSam/GUI/Components/MGHighScore.cpp +++ b/Sources/SeriousSam/GUI/Components/MGHighScore.cpp @@ -21,81 +21,81 @@ with this program; if not, write to the Free Software Foundation, Inc., #define HSCOLUMNS 6 CTString strHighScores[HIGHSCORE_COUNT + 1][HSCOLUMNS]; FLOAT afI[HSCOLUMNS] = { - 0.12f, 0.15f, 0.6f, 0.7f, 0.78f, 0.9f + 0.12f, 0.15f, 0.6f, 0.7f, 0.78f, 0.9f }; void CMGHighScore::Render(CDrawPort *pdp) { - SetFontMedium(pdp); + SetFontMedium(pdp); - COLOR colHeader = LCDGetColor(C_GREEN | 255, "hiscore header"); - COLOR colData = LCDGetColor(C_mdGREEN | 255, "hiscore data"); - COLOR colLastSet = LCDGetColor(C_mlGREEN | 255, "hiscore last set"); - INDEX iLastSet = _pGame->gm_iLastSetHighScore; + COLOR colHeader = LCDGetColor(C_GREEN | 255, "hiscore header"); + COLOR colData = LCDGetColor(C_mdGREEN | 255, "hiscore data"); + COLOR colLastSet = LCDGetColor(C_mlGREEN | 255, "hiscore last set"); + INDEX iLastSet = _pGame->gm_iLastSetHighScore; - CTString strText; + CTString strText; - strHighScores[0][0] = TRANS("No."); - strHighScores[0][1] = TRANS("Player Name"); - strHighScores[0][2] = TRANS("Difficulty"); - strHighScores[0][3] = TRANS("Time"); - strHighScores[0][4] = TRANS("Kills"); - strHighScores[0][5] = TRANS("Score"); + strHighScores[0][0] = TRANS("No."); + strHighScores[0][1] = TRANS("Player Name"); + strHighScores[0][2] = TRANS("Difficulty"); + strHighScores[0][3] = TRANS("Time"); + strHighScores[0][4] = TRANS("Kills"); + strHighScores[0][5] = TRANS("Score"); - {for (INDEX i = 0; igm_ahseHighScores[i].hse_gdDifficulty) { - default: - ASSERT(FALSE); - case (CSessionProperties::GameDifficulty) - 100: - strHighScores[i + 1][1] = "---"; - continue; - break; - case CSessionProperties::GD_TOURIST: - strHighScores[i + 1][2] = TRANS("Tourist"); - break; - case CSessionProperties::GD_EASY: - strHighScores[i + 1][2] = TRANS("Easy"); - break; - case CSessionProperties::GD_NORMAL: - strHighScores[i + 1][2] = TRANS("Normal"); - break; - case CSessionProperties::GD_HARD: - strHighScores[i + 1][2] = TRANS("Hard"); - break; - case CSessionProperties::GD_EXTREME: - strHighScores[i + 1][2] = TRANS("Serious"); - break; - case CSessionProperties::GD_EXTREME + 1: - strHighScores[i + 1][2] = TRANS("Mental"); - break; - } - strHighScores[i + 1][0].PrintF("%d", i + 1); - strHighScores[i + 1][1] = _pGame->gm_ahseHighScores[i].hse_strPlayer; - strHighScores[i + 1][3] = TimeToString(_pGame->gm_ahseHighScores[i].hse_tmTime); - strHighScores[i + 1][4].PrintF("%03d", _pGame->gm_ahseHighScores[i].hse_ctKills); - strHighScores[i + 1][5].PrintF("%9d", _pGame->gm_ahseHighScores[i].hse_ctScore); - }} + {for (INDEX i = 0; igm_ahseHighScores[i].hse_gdDifficulty) { + default: + ASSERT(FALSE); + case (CSessionProperties::GameDifficulty) - 100: + strHighScores[i + 1][1] = "---"; + continue; + break; + case CSessionProperties::GD_TOURIST: + strHighScores[i + 1][2] = TRANS("Tourist"); + break; + case CSessionProperties::GD_EASY: + strHighScores[i + 1][2] = TRANS("Easy"); + break; + case CSessionProperties::GD_NORMAL: + strHighScores[i + 1][2] = TRANS("Normal"); + break; + case CSessionProperties::GD_HARD: + strHighScores[i + 1][2] = TRANS("Hard"); + break; + case CSessionProperties::GD_EXTREME: + strHighScores[i + 1][2] = TRANS("Serious"); + break; + case CSessionProperties::GD_EXTREME + 1: + strHighScores[i + 1][2] = TRANS("Mental"); + break; + } + strHighScores[i + 1][0].PrintF("%d", i + 1); + strHighScores[i + 1][1] = _pGame->gm_ahseHighScores[i].hse_strPlayer; + strHighScores[i + 1][3] = TimeToString(_pGame->gm_ahseHighScores[i].hse_tmTime); + strHighScores[i + 1][4].PrintF("%03d", _pGame->gm_ahseHighScores[i].hse_ctKills); + strHighScores[i + 1][5].PrintF("%9d", _pGame->gm_ahseHighScores[i].hse_ctScore); + }} - PIX pixJ = pdp->GetHeight()*0.25f; - {for (INDEX iRow = 0; iRowGetWidth()*afI[iColumn]; - if (iColumn == 1) { - pdp->PutText(strHighScores[iRow][iColumn], pixI, pixJ, col); - } - else { - pdp->PutTextR(strHighScores[iRow][iColumn], pixI, pixJ, col); - } - }} - if (iRow == 0) { - pixJ += pdp->GetHeight()*0.06f; - } else { - pixJ += pdp->GetHeight()*0.04f; - } - }} + PIX pixJ = pdp->GetHeight()*0.25f; + {for (INDEX iRow = 0; iRowGetWidth()*afI[iColumn]; + if (iColumn == 1) { + pdp->PutText(strHighScores[iRow][iColumn], pixI, pixJ, col); + } + else { + pdp->PutTextR(strHighScores[iRow][iColumn], pixI, pixJ, col); + } + }} + if (iRow == 0) { + pixJ += pdp->GetHeight()*0.06f; + } else { + pixJ += pdp->GetHeight()*0.04f; + } + }} } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp index 85cce3c..a4029dc 100644 --- a/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp +++ b/Sources/SeriousSam/GUI/Components/MGKeyDefinition.cpp @@ -26,197 +26,197 @@ extern BOOL _bDefiningKey; CMGKeyDefinition::CMGKeyDefinition(void) { - mg_iState = DOING_NOTHING; + mg_iState = DOING_NOTHING; } void CMGKeyDefinition::OnActivate(void) { - PlayMenuSound(_psdPress); - IFeel_PlayEffect("Menu_press"); - SetBindingNames(/*bDefining=*/TRUE); - mg_iState = RELEASE_RETURN_WAITING; + PlayMenuSound(_psdPress); + IFeel_PlayEffect("Menu_press"); + SetBindingNames(/*bDefining=*/TRUE); + mg_iState = RELEASE_RETURN_WAITING; } BOOL CMGKeyDefinition::OnKeyDown(int iVKey) { - // if waiting for a key definition - if (mg_iState == PRESS_KEY_WAITING) { - // do nothing - return TRUE; - } + // if waiting for a key definition + if (mg_iState == PRESS_KEY_WAITING) { + // do nothing + return TRUE; + } - // if backspace pressed - if (iVKey == VK_BACK) { - // clear both keys - DefineKey(KID_NONE); - // message is processed - return TRUE; - } + // if backspace pressed + if (iVKey == VK_BACK) { + // clear both keys + DefineKey(KID_NONE); + // message is processed + return TRUE; + } - return CMenuGadget::OnKeyDown(iVKey); + return CMenuGadget::OnKeyDown(iVKey); } // set names for both key bindings void CMGKeyDefinition::SetBindingNames(BOOL bDefining) { - // find the button - INDEX ict = 0; - INDEX iDik = 0; - FOREACHINLIST(CButtonAction, ba_lnNode, _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions, itba) { - if (ict == mg_iControlNumber) { - CButtonAction &ba = *itba; - // get the current bindings and names - INDEX iKey1 = ba.ba_iFirstKey; - INDEX iKey2 = ba.ba_iSecondKey; - BOOL bKey1Bound = iKey1 != KID_NONE; - BOOL bKey2Bound = iKey2 != KID_NONE; - CTString strKey1 = _pInput->GetButtonTransName(iKey1); - CTString strKey2 = _pInput->GetButtonTransName(iKey2); + // find the button + INDEX ict = 0; + INDEX iDik = 0; + FOREACHINLIST(CButtonAction, ba_lnNode, _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions, itba) { + if (ict == mg_iControlNumber) { + CButtonAction &ba = *itba; + // get the current bindings and names + INDEX iKey1 = ba.ba_iFirstKey; + INDEX iKey2 = ba.ba_iSecondKey; + BOOL bKey1Bound = iKey1 != KID_NONE; + BOOL bKey2Bound = iKey2 != KID_NONE; + CTString strKey1 = _pInput->GetButtonTransName(iKey1); + CTString strKey2 = _pInput->GetButtonTransName(iKey2); - // if defining - if (bDefining) { - // if only first key is defined - if (bKey1Bound && !bKey2Bound) { - // put question mark for second key - mg_strBinding = strKey1 + TRANS(" or ") + "?"; - // otherwise - } else { - // put question mark only - mg_strBinding = "?"; - } - // if not defining - } - else { - // if second key is defined - if (bKey2Bound) { - // add both - mg_strBinding = strKey1 + TRANS(" or ") + strKey2; - // if second key is undefined - } else { - // display only first one - mg_strBinding = strKey1; - } - } - return; - } - ict++; - } + // if defining + if (bDefining) { + // if only first key is defined + if (bKey1Bound && !bKey2Bound) { + // put question mark for second key + mg_strBinding = strKey1 + TRANS(" or ") + "?"; + // otherwise + } else { + // put question mark only + mg_strBinding = "?"; + } + // if not defining + } + else { + // if second key is defined + if (bKey2Bound) { + // add both + mg_strBinding = strKey1 + TRANS(" or ") + strKey2; + // if second key is undefined + } else { + // display only first one + mg_strBinding = strKey1; + } + } + return; + } + ict++; + } - // if not found, put errorneous string - mg_strBinding = "???"; + // if not found, put errorneous string + mg_strBinding = "???"; } void CMGKeyDefinition::Appear(void) { - SetBindingNames(/*bDefining=*/FALSE); - CMenuGadget::Appear(); + SetBindingNames(/*bDefining=*/FALSE); + CMenuGadget::Appear(); } void CMGKeyDefinition::Disappear(void) { - CMenuGadget::Disappear(); + CMenuGadget::Disappear(); } void CMGKeyDefinition::DefineKey(INDEX iDik) { - // for each button in controls - INDEX ict = 0; - FOREACHINLIST(CButtonAction, ba_lnNode, _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions, itba) { - CButtonAction &ba = *itba; - // if it is this one - if (ict == mg_iControlNumber) { - // if should clear - if (iDik == KID_NONE) { - // unbind both - ba.ba_iFirstKey = KID_NONE; - ba.ba_iSecondKey = KID_NONE; - } - // if first key is unbound, or both keys are bound - if (ba.ba_iFirstKey == KID_NONE || ba.ba_iSecondKey != KID_NONE) { - // bind first key - ba.ba_iFirstKey = iDik; - // clear second key - ba.ba_iSecondKey = KID_NONE; - // if only first key bound - } else { - // bind second key - ba.ba_iSecondKey = iDik; - } - // if it is not this one - } else { - // clear bindings that contain this key - if (ba.ba_iFirstKey == iDik) { - ba.ba_iFirstKey = KID_NONE; - } - if (ba.ba_iSecondKey == iDik) { - ba.ba_iSecondKey = KID_NONE; - } - } - ict++; - } + // for each button in controls + INDEX ict = 0; + FOREACHINLIST(CButtonAction, ba_lnNode, _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions, itba) { + CButtonAction &ba = *itba; + // if it is this one + if (ict == mg_iControlNumber) { + // if should clear + if (iDik == KID_NONE) { + // unbind both + ba.ba_iFirstKey = KID_NONE; + ba.ba_iSecondKey = KID_NONE; + } + // if first key is unbound, or both keys are bound + if (ba.ba_iFirstKey == KID_NONE || ba.ba_iSecondKey != KID_NONE) { + // bind first key + ba.ba_iFirstKey = iDik; + // clear second key + ba.ba_iSecondKey = KID_NONE; + // if only first key bound + } else { + // bind second key + ba.ba_iSecondKey = iDik; + } + // if it is not this one + } else { + // clear bindings that contain this key + if (ba.ba_iFirstKey == iDik) { + ba.ba_iFirstKey = KID_NONE; + } + if (ba.ba_iSecondKey == iDik) { + ba.ba_iSecondKey = KID_NONE; + } + } + ict++; + } - SetBindingNames(/*bDefining=*/FALSE); + SetBindingNames(/*bDefining=*/FALSE); } void CMGKeyDefinition::Think(void) { - if (mg_iState == RELEASE_RETURN_WAITING) - { - _bDefiningKey = TRUE; - extern BOOL _bMouseUsedLast; - _bMouseUsedLast = FALSE; - _pInput->SetJoyPolling(TRUE); - _pInput->GetInput(FALSE); - if (_pInput->IsInputEnabled() && - !_pInput->GetButtonState(KID_ENTER) && - !_pInput->GetButtonState(KID_MOUSE1)) - { - mg_iState = PRESS_KEY_WAITING; - } - } - else if (mg_iState == PRESS_KEY_WAITING) - { - _pInput->SetJoyPolling(TRUE); - _pInput->GetInput(FALSE); - for (INDEX iDik = 0; iDikGetButtonState(iDik)) - { - // skip keys that cannot be defined - if (iDik == KID_TILDE) { - continue; - } - // if escape not pressed - if (iDik != KID_ESCAPE) { - // define the new key - DefineKey(iDik); - // if escape pressed - } else { - // undefine the key - DefineKey(KID_NONE); - } + if (mg_iState == RELEASE_RETURN_WAITING) + { + _bDefiningKey = TRUE; + extern BOOL _bMouseUsedLast; + _bMouseUsedLast = FALSE; + _pInput->SetJoyPolling(TRUE); + _pInput->GetInput(FALSE); + if (_pInput->IsInputEnabled() && + !_pInput->GetButtonState(KID_ENTER) && + !_pInput->GetButtonState(KID_MOUSE1)) + { + mg_iState = PRESS_KEY_WAITING; + } + } + else if (mg_iState == PRESS_KEY_WAITING) + { + _pInput->SetJoyPolling(TRUE); + _pInput->GetInput(FALSE); + for (INDEX iDik = 0; iDikGetButtonState(iDik)) + { + // skip keys that cannot be defined + if (iDik == KID_TILDE) { + continue; + } + // if escape not pressed + if (iDik != KID_ESCAPE) { + // define the new key + DefineKey(iDik); + // if escape pressed + } else { + // undefine the key + DefineKey(KID_NONE); + } - // end defining loop - mg_iState = DOING_NOTHING; - _bDefiningKey = FALSE; - // refresh all buttons - pgmCurrentMenu->FillListItems(); - break; - } - } - } + // end defining loop + mg_iState = DOING_NOTHING; + _bDefiningKey = FALSE; + // refresh all buttons + pgmCurrentMenu->FillListItems(); + break; + } + } + } } void CMGKeyDefinition::Render(CDrawPort *pdp) { - SetFontMedium(pdp); + SetFontMedium(pdp); - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - PIX pixIL = box.Min()(1) + box.Size()(1)*0.45f; - PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; - PIX pixJ = box.Min()(2); + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + PIX pixIL = box.Min()(1) + box.Size()(1)*0.45f; + PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; + PIX pixJ = box.Min()(2); - COLOR col = GetCurrentColor(); - pdp->PutTextR(mg_strLabel, pixIL, pixJ, col); - pdp->PutText(mg_strBinding, pixIR, pixJ, col); + COLOR col = GetCurrentColor(); + pdp->PutTextR(mg_strLabel, pixIL, pixJ, col); + pdp->PutText(mg_strBinding, pixIR, pixJ, col); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp b/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp index 2fe418f..1c222c8 100644 --- a/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGLevelButton.cpp @@ -23,15 +23,15 @@ extern CSoundData *_psdPress; void CMGLevelButton::OnActivate(void) { - PlayMenuSound(_psdPress); - IFeel_PlayEffect("Menu_press"); - _pGame->gam_strCustomLevel = mg_fnmLevel; - extern void(*_pAfterLevelChosen)(void); - _pAfterLevelChosen(); + PlayMenuSound(_psdPress); + IFeel_PlayEffect("Menu_press"); + _pGame->gam_strCustomLevel = mg_fnmLevel; + extern void(*_pAfterLevelChosen)(void); + _pAfterLevelChosen(); } void CMGLevelButton::OnSetFocus(void) { - SetThumbnail(mg_fnmLevel); - CMGButton::OnSetFocus(); + SetThumbnail(mg_fnmLevel); + CMGButton::OnSetFocus(); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGModel.cpp b/Sources/SeriousSam/GUI/Components/MGModel.cpp index 0d45d05..2a7eb9e 100644 --- a/Sources/SeriousSam/GUI/Components/MGModel.cpp +++ b/Sources/SeriousSam/GUI/Components/MGModel.cpp @@ -23,103 +23,103 @@ extern INDEX sam_bWideScreen; CMGModel::CMGModel(void) { - mg_fFloorY = 0; + mg_fFloorY = 0; } void CMGModel::Render(CDrawPort *pdp) { - // if no model - if (mg_moModel.GetData() == NULL) { - // just render text - mg_strText = TRANS("No model"); - CMGButton::Render(pdp); - return; - } + // if no model + if (mg_moModel.GetData() == NULL) { + // just render text + mg_strText = TRANS("No model"); + CMGButton::Render(pdp); + return; + } - // get position on screen - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - CDrawPort dpModel(pdp, box); - dpModel.Lock(); - dpModel.FillZBuffer(1.0f); + // get position on screen + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + CDrawPort dpModel(pdp, box); + dpModel.Lock(); + dpModel.FillZBuffer(1.0f); - LCDSetDrawport(&dpModel); - // clear menu here - dpModel.Fill(C_BLACK | 255); - LCDRenderClouds1(); - LCDRenderClouds2(); + LCDSetDrawport(&dpModel); + // clear menu here + dpModel.Fill(C_BLACK | 255); + LCDRenderClouds1(); + LCDRenderClouds2(); - // prepare projection - CRenderModel rmRenderModel; - CPerspectiveProjection3D pr; - pr.FOVL() = sam_bWideScreen ? AngleDeg(45.0f) : AngleDeg(30.0f); - pr.ScreenBBoxL() = FLOATaabbox2D( - FLOAT2D(0.0f, 0.0f), - FLOAT2D((float)dpModel.GetWidth(), (float)dpModel.GetHeight()) - ); - pr.AspectRatioL() = 1.0f; - pr.FrontClipDistanceL() = 0.3f; - pr.ViewerPlacementL() = CPlacement3D(FLOAT3D(0, 0, 0), ANGLE3D(0, 0, 0)); + // prepare projection + CRenderModel rmRenderModel; + CPerspectiveProjection3D pr; + pr.FOVL() = sam_bWideScreen ? AngleDeg(45.0f) : AngleDeg(30.0f); + pr.ScreenBBoxL() = FLOATaabbox2D( + FLOAT2D(0.0f, 0.0f), + FLOAT2D((float)dpModel.GetWidth(), (float)dpModel.GetHeight()) + ); + pr.AspectRatioL() = 1.0f; + pr.FrontClipDistanceL() = 0.3f; + pr.ViewerPlacementL() = CPlacement3D(FLOAT3D(0, 0, 0), ANGLE3D(0, 0, 0)); - // initialize remdering - CAnyProjection3D apr; - apr = pr; - BeginModelRenderingView(apr, &dpModel); - rmRenderModel.rm_vLightDirection = FLOAT3D(0.2f, -0.2f, -0.2f); + // initialize remdering + CAnyProjection3D apr; + apr = pr; + BeginModelRenderingView(apr, &dpModel); + rmRenderModel.rm_vLightDirection = FLOAT3D(0.2f, -0.2f, -0.2f); - // if model needs floor - if (mg_moFloor.GetData() != NULL) { - // set floor's position - CPlacement3D pl = mg_plModel; - pl.pl_OrientationAngle = ANGLE3D(0, 0, 0); - pl.pl_PositionVector = mg_plModel.pl_PositionVector; - pl.pl_PositionVector(2) += mg_fFloorY; - rmRenderModel.SetObjectPlacement(pl); + // if model needs floor + if (mg_moFloor.GetData() != NULL) { + // set floor's position + CPlacement3D pl = mg_plModel; + pl.pl_OrientationAngle = ANGLE3D(0, 0, 0); + pl.pl_PositionVector = mg_plModel.pl_PositionVector; + pl.pl_PositionVector(2) += mg_fFloorY; + rmRenderModel.SetObjectPlacement(pl); - // render the floor - rmRenderModel.rm_colLight = C_WHITE; - rmRenderModel.rm_colAmbient = C_WHITE; - mg_moFloor.SetupModelRendering(rmRenderModel); - mg_moFloor.RenderModel(rmRenderModel); - } + // render the floor + rmRenderModel.rm_colLight = C_WHITE; + rmRenderModel.rm_colAmbient = C_WHITE; + mg_moFloor.SetupModelRendering(rmRenderModel); + mg_moFloor.RenderModel(rmRenderModel); + } - // set model's position - CPlacement3D pl; - pl.pl_OrientationAngle = mg_plModel.pl_OrientationAngle; - pl.pl_PositionVector = mg_plModel.pl_PositionVector; - extern FLOAT sam_fPlayerOffset; - pl.pl_PositionVector(3) += sam_fPlayerOffset; - rmRenderModel.SetObjectPlacement(pl); + // set model's position + CPlacement3D pl; + pl.pl_OrientationAngle = mg_plModel.pl_OrientationAngle; + pl.pl_PositionVector = mg_plModel.pl_PositionVector; + extern FLOAT sam_fPlayerOffset; + pl.pl_PositionVector(3) += sam_fPlayerOffset; + rmRenderModel.SetObjectPlacement(pl); - // render the model - rmRenderModel.rm_colLight = LerpColor(C_BLACK, C_WHITE, 0.4f) | CT_OPAQUE; - rmRenderModel.rm_colAmbient = LerpColor(C_BLACK, C_WHITE, 0.2f) | CT_OPAQUE; - mg_moModel.SetupModelRendering(rmRenderModel); - FLOATplane3D plFloorPlane = FLOATplane3D(FLOAT3D(0.0f, 1.0f, 0.0f), - mg_plModel.pl_PositionVector(2) + mg_fFloorY); - FLOAT3D vShadowLightDir = FLOAT3D(-0.2f, -0.4f, -0.6f); - CPlacement3D plLightPlacement = CPlacement3D( - mg_plModel.pl_PositionVector + - vShadowLightDir*mg_plModel.pl_PositionVector(3) * 5, - ANGLE3D(0, 0, 0)); - mg_moModel.RenderShadow(rmRenderModel, plLightPlacement, 200.0f, 200.0f, 1.0f, plFloorPlane); - mg_moModel.RenderModel(rmRenderModel); - EndModelRenderingView(); + // render the model + rmRenderModel.rm_colLight = LerpColor(C_BLACK, C_WHITE, 0.4f) | CT_OPAQUE; + rmRenderModel.rm_colAmbient = LerpColor(C_BLACK, C_WHITE, 0.2f) | CT_OPAQUE; + mg_moModel.SetupModelRendering(rmRenderModel); + FLOATplane3D plFloorPlane = FLOATplane3D(FLOAT3D(0.0f, 1.0f, 0.0f), + mg_plModel.pl_PositionVector(2) + mg_fFloorY); + FLOAT3D vShadowLightDir = FLOAT3D(-0.2f, -0.4f, -0.6f); + CPlacement3D plLightPlacement = CPlacement3D( + mg_plModel.pl_PositionVector + + vShadowLightDir*mg_plModel.pl_PositionVector(3) * 5, + ANGLE3D(0, 0, 0)); + mg_moModel.RenderShadow(rmRenderModel, plLightPlacement, 200.0f, 200.0f, 1.0f, plFloorPlane); + mg_moModel.RenderModel(rmRenderModel); + EndModelRenderingView(); - LCDScreenBox(LCDGetColor(C_GREEN, "model box") | GetCurrentColor()); + LCDScreenBox(LCDGetColor(C_GREEN, "model box") | GetCurrentColor()); - dpModel.Unlock(); + dpModel.Unlock(); - pdp->Unlock(); - pdp->Lock(); - LCDSetDrawport(pdp); + pdp->Unlock(); + pdp->Lock(); + LCDSetDrawport(pdp); - // print the model name - { - PIXaabbox2D box = FloatBoxToPixBox(pdp, BoxPlayerModelName()); - COLOR col = GetCurrentColor(); + // print the model name + { + PIXaabbox2D box = FloatBoxToPixBox(pdp, BoxPlayerModelName()); + COLOR col = GetCurrentColor(); - PIX pixI = box.Min()(1); - PIX pixJ = box.Max()(2); - pdp->PutText(mg_strText, pixI, pixJ, col); - } + PIX pixI = box.Min()(1); + PIX pixJ = box.Max()(2); + pdp->PutText(mg_strText, pixI, pixJ, col); + } } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGServerList.cpp b/Sources/SeriousSam/GUI/Components/MGServerList.cpp index 286a001..fa196fc 100644 --- a/Sources/SeriousSam/GUI/Components/MGServerList.cpp +++ b/Sources/SeriousSam/GUI/Components/MGServerList.cpp @@ -25,51 +25,51 @@ extern CSoundData *_psdPress; FLOATaabbox2D GetBoxPartHoriz(const FLOATaabbox2D &box, FLOAT fMin, FLOAT fMax) { - FLOAT fBoxMin = box.Min()(1); - FLOAT fBoxSize = box.Size()(1); + FLOAT fBoxMin = box.Min()(1); + FLOAT fBoxSize = box.Size()(1); - return FLOATaabbox2D( - FLOAT2D(fBoxMin + fBoxSize*fMin, box.Min()(2)), - FLOAT2D(fBoxMin + fBoxSize*fMax, box.Max()(2))); + return FLOATaabbox2D( + FLOAT2D(fBoxMin + fBoxSize*fMin, box.Min()(2)), + FLOAT2D(fBoxMin + fBoxSize*fMax, box.Max()(2))); } void PrintInBox(CDrawPort *pdp, PIX pixI, PIX pixJ, PIX pixSizeI, CTString str, COLOR col) { - str = str.Undecorated(); - PIX pixCharSize = pdp->dp_pixTextCharSpacing + pdp->dp_FontData->fd_pixCharWidth; - str.TrimRight(pixSizeI / pixCharSize); + str = str.Undecorated(); + PIX pixCharSize = pdp->dp_pixTextCharSpacing + pdp->dp_FontData->fd_pixCharWidth; + str.TrimRight(pixSizeI / pixCharSize); - // print text - pdp->PutText(str, pixI, pixJ, col); + // print text + pdp->PutText(str, pixI, pixJ, col); } CMGServerList::CMGServerList() { - mg_iSelected = 0; - mg_iFirstOnScreen = 0; - mg_ctOnScreen = 10; - mg_pixMinI = 0; - mg_pixMaxI = 0; - mg_pixListMinJ = 0; - mg_pixListStepJ = 0; - mg_pixDragJ = -1; - mg_iDragLine = -1; - mg_pixMouseDrag = -1; - // by default, sort by ping, best on top - mg_iSort = 2; - mg_bSortDown = FALSE; + mg_iSelected = 0; + mg_iFirstOnScreen = 0; + mg_ctOnScreen = 10; + mg_pixMinI = 0; + mg_pixMaxI = 0; + mg_pixListMinJ = 0; + mg_pixListStepJ = 0; + mg_pixDragJ = -1; + mg_iDragLine = -1; + mg_pixMouseDrag = -1; + // by default, sort by ping, best on top + mg_iSort = 2; + mg_bSortDown = FALSE; } void CMGServerList::AdjustFirstOnScreen(void) { - INDEX ctSessions = _lhServers.Count(); - mg_iSelected = Clamp(mg_iSelected, 0L, ClampDn(ctSessions - 1L, 0L)); - mg_iFirstOnScreen = Clamp(mg_iFirstOnScreen, 0L, ClampDn(ctSessions - mg_ctOnScreen, 0L)); + INDEX ctSessions = _lhServers.Count(); + mg_iSelected = Clamp(mg_iSelected, 0L, ClampDn(ctSessions - 1L, 0L)); + mg_iFirstOnScreen = Clamp(mg_iFirstOnScreen, 0L, ClampDn(ctSessions - mg_ctOnScreen, 0L)); - if (mg_iSelected= mg_iFirstOnScreen + mg_ctOnScreen) { - mg_iFirstOnScreen = ClampDn(mg_iSelected - mg_ctOnScreen + 1L, 0L); - } + if (mg_iSelected= mg_iFirstOnScreen + mg_ctOnScreen) { + mg_iFirstOnScreen = ClampDn(mg_iSelected - mg_ctOnScreen + 1L, 0L); + } } BOOL _iSort = 0; @@ -77,25 +77,25 @@ BOOL _bSortDown = FALSE; int CompareSessions(const void *pv0, const void *pv1) { - const CNetworkSession &ns0 = **(const CNetworkSession **)pv0; - const CNetworkSession &ns1 = **(const CNetworkSession **)pv1; + const CNetworkSession &ns0 = **(const CNetworkSession **)pv0; + const CNetworkSession &ns1 = **(const CNetworkSession **)pv1; - int iResult = 0; - switch (_iSort) { - case 0: iResult = stricmp(ns0.ns_strSession, ns1.ns_strSession); break; - case 1: iResult = stricmp(ns0.ns_strWorld, ns1.ns_strWorld); break; - case 2: iResult = Sgn(ns0.ns_tmPing - ns1.ns_tmPing); break; - case 3: iResult = Sgn(ns0.ns_ctPlayers - ns1.ns_ctPlayers); break; - case 4: iResult = stricmp(ns0.ns_strGameType, ns1.ns_strGameType); break; - case 5: iResult = stricmp(ns0.ns_strMod, ns1.ns_strMod); break; - case 6: iResult = stricmp(ns0.ns_strVer, ns1.ns_strVer); break; - } + int iResult = 0; + switch (_iSort) { + case 0: iResult = stricmp(ns0.ns_strSession, ns1.ns_strSession); break; + case 1: iResult = stricmp(ns0.ns_strWorld, ns1.ns_strWorld); break; + case 2: iResult = Sgn(ns0.ns_tmPing - ns1.ns_tmPing); break; + case 3: iResult = Sgn(ns0.ns_ctPlayers - ns1.ns_ctPlayers); break; + case 4: iResult = stricmp(ns0.ns_strGameType, ns1.ns_strGameType); break; + case 5: iResult = stricmp(ns0.ns_strMod, ns1.ns_strMod); break; + case 6: iResult = stricmp(ns0.ns_strVer, ns1.ns_strVer); break; + } - if (iResult == 0) { // make sure we always have unique order when resorting - return stricmp(ns0.ns_strAddress, ns1.ns_strAddress);; - } + if (iResult == 0) { // make sure we always have unique order when resorting + return stricmp(ns0.ns_strAddress, ns1.ns_strAddress);; + } - return _bSortDown ? -iResult : iResult; + return _bSortDown ? -iResult : iResult; } extern CMGButton mgServerColumn[7]; @@ -103,351 +103,351 @@ extern CMGEdit mgServerFilter[7]; void SortAndFilterServers(void) { - {FORDELETELIST(CNetworkSession, ns_lnNode, _lhServers, itns) { - delete &*itns; - }} + {FORDELETELIST(CNetworkSession, ns_lnNode, _lhServers, itns) { + delete &*itns; + }} - {FOREACHINLIST(CNetworkSession, ns_lnNode, _pNetwork->ga_lhEnumeratedSessions, itns) { - CNetworkSession &ns = *itns; - extern CTString _strServerFilter[7]; - if (_strServerFilter[0] != "" && !ns.ns_strSession.Matches("*" + _strServerFilter[0] + "*")) continue; - if (_strServerFilter[1] != "" && !ns.ns_strWorld.Matches("*" + _strServerFilter[1] + "*")) continue; - if (_strServerFilter[2] != "") { - char strCompare[3] = { 0, 0, 0 }; - int iPing = 0; - _strServerFilter[2].ScanF("%2[<>=]%d", strCompare, &iPing); - if (strcmp(strCompare, "<") == 0 && !(int(ns.ns_tmPing * 1000)< iPing)) continue; - if (strcmp(strCompare, "<=") == 0 && !(int(ns.ns_tmPing * 1000) <= iPing)) continue; - if (strcmp(strCompare, ">") == 0 && !(int(ns.ns_tmPing * 1000)> iPing)) continue; - if (strcmp(strCompare, ">=") == 0 && !(int(ns.ns_tmPing * 1000) >= iPing)) continue; - if (strcmp(strCompare, "=") == 0 && !(int(ns.ns_tmPing * 1000) == iPing)) continue; - } - if (_strServerFilter[3] != "") { - char strCompare[3] = { 0, 0, 0 }; - int iPlayers = 0; - _strServerFilter[3].ScanF("%2[<>=]%d", strCompare, &iPlayers); - if (strcmp(strCompare, "<") == 0 && !(ns.ns_ctPlayers< iPlayers)) continue; - if (strcmp(strCompare, "<=") == 0 && !(ns.ns_ctPlayers <= iPlayers)) continue; - if (strcmp(strCompare, ">") == 0 && !(ns.ns_ctPlayers> iPlayers)) continue; - if (strcmp(strCompare, ">=") == 0 && !(ns.ns_ctPlayers >= iPlayers)) continue; - if (strcmp(strCompare, "=") == 0 && !(ns.ns_ctPlayers == iPlayers)) continue; - } - if (_strServerFilter[4] != "" && !ns.ns_strGameType.Matches("*" + _strServerFilter[4] + "*")) continue; - if (_strServerFilter[5] != "" && !ns.ns_strMod.Matches("*" + _strServerFilter[5] + "*")) continue; - if (_strServerFilter[6] != "" && !ns.ns_strVer.Matches("*" + _strServerFilter[6] + "*")) continue; + {FOREACHINLIST(CNetworkSession, ns_lnNode, _pNetwork->ga_lhEnumeratedSessions, itns) { + CNetworkSession &ns = *itns; + extern CTString _strServerFilter[7]; + if (_strServerFilter[0] != "" && !ns.ns_strSession.Matches("*" + _strServerFilter[0] + "*")) continue; + if (_strServerFilter[1] != "" && !ns.ns_strWorld.Matches("*" + _strServerFilter[1] + "*")) continue; + if (_strServerFilter[2] != "") { + char strCompare[3] = { 0, 0, 0 }; + int iPing = 0; + _strServerFilter[2].ScanF("%2[<>=]%d", strCompare, &iPing); + if (strcmp(strCompare, "<") == 0 && !(int(ns.ns_tmPing * 1000)< iPing)) continue; + if (strcmp(strCompare, "<=") == 0 && !(int(ns.ns_tmPing * 1000) <= iPing)) continue; + if (strcmp(strCompare, ">") == 0 && !(int(ns.ns_tmPing * 1000)> iPing)) continue; + if (strcmp(strCompare, ">=") == 0 && !(int(ns.ns_tmPing * 1000) >= iPing)) continue; + if (strcmp(strCompare, "=") == 0 && !(int(ns.ns_tmPing * 1000) == iPing)) continue; + } + if (_strServerFilter[3] != "") { + char strCompare[3] = { 0, 0, 0 }; + int iPlayers = 0; + _strServerFilter[3].ScanF("%2[<>=]%d", strCompare, &iPlayers); + if (strcmp(strCompare, "<") == 0 && !(ns.ns_ctPlayers< iPlayers)) continue; + if (strcmp(strCompare, "<=") == 0 && !(ns.ns_ctPlayers <= iPlayers)) continue; + if (strcmp(strCompare, ">") == 0 && !(ns.ns_ctPlayers> iPlayers)) continue; + if (strcmp(strCompare, ">=") == 0 && !(ns.ns_ctPlayers >= iPlayers)) continue; + if (strcmp(strCompare, "=") == 0 && !(ns.ns_ctPlayers == iPlayers)) continue; + } + if (_strServerFilter[4] != "" && !ns.ns_strGameType.Matches("*" + _strServerFilter[4] + "*")) continue; + if (_strServerFilter[5] != "" && !ns.ns_strMod.Matches("*" + _strServerFilter[5] + "*")) continue; + if (_strServerFilter[6] != "" && !ns.ns_strVer.Matches("*" + _strServerFilter[6] + "*")) continue; - CNetworkSession *pnsNew = new CNetworkSession; - pnsNew->Copy(*itns); - _lhServers.AddTail(pnsNew->ns_lnNode); - } + CNetworkSession *pnsNew = new CNetworkSession; + pnsNew->Copy(*itns); + _lhServers.AddTail(pnsNew->ns_lnNode); + } } - _lhServers.Sort(CompareSessions, offsetof(CNetworkSession, ns_lnNode)); + _lhServers.Sort(CompareSessions, offsetof(CNetworkSession, ns_lnNode)); } void CMGServerList::Render(CDrawPort *pdp) { - _iSort = mg_iSort; - _bSortDown = mg_bSortDown; - SortAndFilterServers(); + _iSort = mg_iSort; + _bSortDown = mg_bSortDown; + SortAndFilterServers(); - SetFontSmall(pdp); - BOOL bFocusedBefore = mg_bFocused; - mg_bFocused = FALSE; + SetFontSmall(pdp); + BOOL bFocusedBefore = mg_bFocused; + mg_bFocused = FALSE; - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - COLOR col = GetCurrentColor(); + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + COLOR col = GetCurrentColor(); - PIX pixDPSizeI = pdp->GetWidth(); - PIX pixDPSizeJ = pdp->GetHeight(); - PIX pixCharSizeI = pdp->dp_pixTextCharSpacing + pdp->dp_FontData->fd_pixCharWidth; - PIX pixCharSizeJ = pdp->dp_pixTextLineSpacing + pdp->dp_FontData->fd_pixCharHeight + 1; - PIX pixLineSize = 1; - PIX pixSliderSizeI = 10; - PIX pixOuterMargin = 20; + PIX pixDPSizeI = pdp->GetWidth(); + PIX pixDPSizeJ = pdp->GetHeight(); + PIX pixCharSizeI = pdp->dp_pixTextCharSpacing + pdp->dp_FontData->fd_pixCharWidth; + PIX pixCharSizeJ = pdp->dp_pixTextLineSpacing + pdp->dp_FontData->fd_pixCharHeight + 1; + PIX pixLineSize = 1; + PIX pixSliderSizeI = 10; + PIX pixOuterMargin = 20; - INDEX ctSessions = _lhServers.Count(); - INDEX iSession = 0; + INDEX ctSessions = _lhServers.Count(); + INDEX iSession = 0; - INDEX ctColumns[7]; - {for (INDEX i = 0; iDrawLine(apixSeparatorI[i], pixTopJ, apixSeparatorI[i], pixBottomJ, col | CT_OPAQUE); - } - pdp->DrawLine(apixSeparatorI[0], pixTopJ, apixSeparatorI[8], pixTopJ, col | CT_OPAQUE); - pdp->DrawLine(apixSeparatorI[0], pixListTopJ - pixLineSize, apixSeparatorI[8], pixListTopJ - pixLineSize, col | CT_OPAQUE); - pdp->DrawLine(apixSeparatorI[0], pixBottomJ, apixSeparatorI[8], pixBottomJ, col | CT_OPAQUE); + for (INDEX i = 0; iDrawLine(apixSeparatorI[i], pixTopJ, apixSeparatorI[i], pixBottomJ, col | CT_OPAQUE); + } + pdp->DrawLine(apixSeparatorI[0], pixTopJ, apixSeparatorI[8], pixTopJ, col | CT_OPAQUE); + pdp->DrawLine(apixSeparatorI[0], pixListTopJ - pixLineSize, apixSeparatorI[8], pixListTopJ - pixLineSize, col | CT_OPAQUE); + pdp->DrawLine(apixSeparatorI[0], pixBottomJ, apixSeparatorI[8], pixBottomJ, col | CT_OPAQUE); - PIXaabbox2D boxHandle = GetScrollBarHandleBox(); - pdp->Fill(boxHandle.Min()(1) + 2, boxHandle.Min()(2) + 2, boxHandle.Size()(1) - 3, boxHandle.Size()(2) - 3, col | CT_OPAQUE); + PIXaabbox2D boxHandle = GetScrollBarHandleBox(); + pdp->Fill(boxHandle.Min()(1) + 2, boxHandle.Min()(2) + 2, boxHandle.Size()(1) - 3, boxHandle.Size()(2) - 3, col | CT_OPAQUE); - PIX pixJ = pixTopJ + pixLineSize * 2 + 1; + PIX pixJ = pixTopJ + pixLineSize * 2 + 1; - mg_ctOnScreen = ctSessionsOnScreen; - AdjustFirstOnScreen(); + mg_ctOnScreen = ctSessionsOnScreen; + AdjustFirstOnScreen(); - if (_lhServers.Count() == 0) { - if (_pNetwork->ga_strEnumerationStatus != "") { - mg_bFocused = TRUE; - COLOR colItem = GetCurrentColor(); - PrintInBox(pdp, apixSeparatorI[0] + pixCharSizeI, pixListTopJ + pixCharSizeJ + pixLineSize + 1, apixSeparatorI[1] - apixSeparatorI[0], - TRANS("searching..."), colItem); - } - } else { - FOREACHINLIST(CNetworkSession, ns_lnNode, _lhServers, itns) { - CNetworkSession &ns = *itns; + if (_lhServers.Count() == 0) { + if (_pNetwork->ga_strEnumerationStatus != "") { + mg_bFocused = TRUE; + COLOR colItem = GetCurrentColor(); + PrintInBox(pdp, apixSeparatorI[0] + pixCharSizeI, pixListTopJ + pixCharSizeJ + pixLineSize + 1, apixSeparatorI[1] - apixSeparatorI[0], + TRANS("searching..."), colItem); + } + } else { + FOREACHINLIST(CNetworkSession, ns_lnNode, _lhServers, itns) { + CNetworkSession &ns = *itns; - if (iSession= mg_iFirstOnScreen + ctSessionsOnScreen) { - iSession++; - continue; - } + if (iSession= mg_iFirstOnScreen + ctSessionsOnScreen) { + iSession++; + continue; + } - PIX pixJ = pixListTopJ + (iSession - mg_iFirstOnScreen)*pixCharSizeJ + pixLineSize + 1; + PIX pixJ = pixListTopJ + (iSession - mg_iFirstOnScreen)*pixCharSizeJ + pixLineSize + 1; - mg_bFocused = bFocusedBefore&&iSession == mg_iSelected; - COLOR colItem = GetCurrentColor(); + mg_bFocused = bFocusedBefore&&iSession == mg_iSelected; + COLOR colItem = GetCurrentColor(); - if (ns.ns_strVer != _SE_VER_STRING) { - colItem = MulColors(colItem, 0xA0A0A0FF); - } + if (ns.ns_strVer != _SE_VER_STRING) { + colItem = MulColors(colItem, 0xA0A0A0FF); + } - CTString strPing(0, "%4d", INDEX(ns.ns_tmPing * 1000)); - CTString strPlayersCt(0, "%2d/%2d", ns.ns_ctPlayers, ns.ns_ctMaxPlayers); - CTString strMod = ns.ns_strMod; - if (strMod == "") { - strMod = "SeriousSam"; - } - PrintInBox(pdp, apixSeparatorI[0] + pixCharSizeI / 2, pixJ, apixSeparatorI[1] - apixSeparatorI[0] - pixCharSizeI, ns.ns_strSession, colItem); - PrintInBox(pdp, apixSeparatorI[1] + pixCharSizeI / 2, pixJ, apixSeparatorI[2] - apixSeparatorI[1] - pixCharSizeI, TranslateConst(ns.ns_strWorld), colItem); - PrintInBox(pdp, apixSeparatorI[2] + pixCharSizeI / 2, pixJ, apixSeparatorI[3] - apixSeparatorI[2] - pixCharSizeI, strPing, colItem); - PrintInBox(pdp, apixSeparatorI[3] + pixCharSizeI / 2, pixJ, apixSeparatorI[4] - apixSeparatorI[3] - pixCharSizeI, strPlayersCt, colItem); - PrintInBox(pdp, apixSeparatorI[4] + pixCharSizeI / 2, pixJ, apixSeparatorI[5] - apixSeparatorI[4] - pixCharSizeI, TranslateConst(ns.ns_strGameType), colItem); - PrintInBox(pdp, apixSeparatorI[5] + pixCharSizeI / 2, pixJ, apixSeparatorI[6] - apixSeparatorI[5] - pixCharSizeI, TranslateConst(strMod), colItem); - PrintInBox(pdp, apixSeparatorI[6] + pixCharSizeI / 2, pixJ, apixSeparatorI[7] - apixSeparatorI[6] - pixCharSizeI, ns.ns_strVer, colItem); + CTString strPing(0, "%4d", INDEX(ns.ns_tmPing * 1000)); + CTString strPlayersCt(0, "%2d/%2d", ns.ns_ctPlayers, ns.ns_ctMaxPlayers); + CTString strMod = ns.ns_strMod; + if (strMod == "") { + strMod = "SeriousSam"; + } + PrintInBox(pdp, apixSeparatorI[0] + pixCharSizeI / 2, pixJ, apixSeparatorI[1] - apixSeparatorI[0] - pixCharSizeI, ns.ns_strSession, colItem); + PrintInBox(pdp, apixSeparatorI[1] + pixCharSizeI / 2, pixJ, apixSeparatorI[2] - apixSeparatorI[1] - pixCharSizeI, TranslateConst(ns.ns_strWorld), colItem); + PrintInBox(pdp, apixSeparatorI[2] + pixCharSizeI / 2, pixJ, apixSeparatorI[3] - apixSeparatorI[2] - pixCharSizeI, strPing, colItem); + PrintInBox(pdp, apixSeparatorI[3] + pixCharSizeI / 2, pixJ, apixSeparatorI[4] - apixSeparatorI[3] - pixCharSizeI, strPlayersCt, colItem); + PrintInBox(pdp, apixSeparatorI[4] + pixCharSizeI / 2, pixJ, apixSeparatorI[5] - apixSeparatorI[4] - pixCharSizeI, TranslateConst(ns.ns_strGameType), colItem); + PrintInBox(pdp, apixSeparatorI[5] + pixCharSizeI / 2, pixJ, apixSeparatorI[6] - apixSeparatorI[5] - pixCharSizeI, TranslateConst(strMod), colItem); + PrintInBox(pdp, apixSeparatorI[6] + pixCharSizeI / 2, pixJ, apixSeparatorI[7] - apixSeparatorI[6] - pixCharSizeI, ns.ns_strVer, colItem); - iSession++; - } - } + iSession++; + } + } - mg_bFocused = bFocusedBefore; + mg_bFocused = bFocusedBefore; } static INDEX SliderPixToIndex(PIX pixOffset, INDEX iVisible, INDEX iTotal, PIXaabbox2D boxFull) { - FLOAT fSize = ClampUp(FLOAT(iVisible) / iTotal, 1.0f); - PIX pixFull = boxFull.Size()(2); - PIX pixSize = PIX(pixFull*fSize); - if (pixSize >= boxFull.Size()(2)) { - return 0; - } - return (iTotal*pixOffset) / pixFull; + FLOAT fSize = ClampUp(FLOAT(iVisible) / iTotal, 1.0f); + PIX pixFull = boxFull.Size()(2); + PIX pixSize = PIX(pixFull*fSize); + if (pixSize >= boxFull.Size()(2)) { + return 0; + } + return (iTotal*pixOffset) / pixFull; } static PIXaabbox2D GetSliderBox(INDEX iFirst, INDEX iVisible, INDEX iTotal, - PIXaabbox2D boxFull) + PIXaabbox2D boxFull) { - if (iTotal <= 0) { - return boxFull; - } - FLOAT fSize = ClampUp(FLOAT(iVisible) / iTotal, 1.0f); - PIX pixFull = boxFull.Size()(2); - PIX pixSize = PIX(pixFull*fSize); - pixSize = ClampDn(pixSize, boxFull.Size()(1)); - PIX pixTop = pixFull*(FLOAT(iFirst) / iTotal) + boxFull.Min()(2); - PIX pixI0 = boxFull.Min()(1); - PIX pixI1 = boxFull.Max()(1); - return PIXaabbox2D(PIX2D(pixI0, pixTop), PIX2D(pixI1, pixTop + pixSize)); + if (iTotal <= 0) { + return boxFull; + } + FLOAT fSize = ClampUp(FLOAT(iVisible) / iTotal, 1.0f); + PIX pixFull = boxFull.Size()(2); + PIX pixSize = PIX(pixFull*fSize); + pixSize = ClampDn(pixSize, boxFull.Size()(1)); + PIX pixTop = pixFull*(FLOAT(iFirst) / iTotal) + boxFull.Min()(2); + PIX pixI0 = boxFull.Min()(1); + PIX pixI1 = boxFull.Max()(1); + return PIXaabbox2D(PIX2D(pixI0, pixTop), PIX2D(pixI1, pixTop + pixSize)); } PIXaabbox2D CMGServerList::GetScrollBarFullBox(void) { - return PIXaabbox2D(PIX2D(mg_pixSBMinI, mg_pixSBMinJ), PIX2D(mg_pixSBMaxI, mg_pixSBMaxJ)); + return PIXaabbox2D(PIX2D(mg_pixSBMinI, mg_pixSBMinJ), PIX2D(mg_pixSBMaxI, mg_pixSBMaxJ)); } PIXaabbox2D CMGServerList::GetScrollBarHandleBox(void) { - return GetSliderBox(mg_iFirstOnScreen, mg_ctOnScreen, _lhServers.Count(), GetScrollBarFullBox()); + return GetSliderBox(mg_iFirstOnScreen, mg_ctOnScreen, _lhServers.Count(), GetScrollBarFullBox()); } void CMGServerList::OnMouseOver(PIX pixI, PIX pixJ) { - mg_pixMouseI = pixI; - mg_pixMouseJ = pixJ; + mg_pixMouseI = pixI; + mg_pixMouseJ = pixJ; - if (!(GetKeyState(VK_LBUTTON) & 0x8000)) { - mg_pixDragJ = -1; - } + if (!(GetKeyState(VK_LBUTTON) & 0x8000)) { + mg_pixDragJ = -1; + } - BOOL bInSlider = (pixI >= mg_pixSBMinI && pixI <= mg_pixSBMaxI && pixJ >= mg_pixSBMinJ && pixJ <= mg_pixSBMaxJ); - if (mg_pixDragJ >= 0 && bInSlider) { - PIX pixDelta = pixJ - mg_pixDragJ; - INDEX ctSessions = _lhServers.Count(); - INDEX iWantedLine = mg_iDragLine + - SliderPixToIndex(pixDelta, mg_ctOnScreen, ctSessions, GetScrollBarFullBox()); - mg_iFirstOnScreen = Clamp(iWantedLine, 0L, ClampDn(ctSessions - mg_ctOnScreen, 0L)); - mg_iSelected = Clamp(mg_iSelected, mg_iFirstOnScreen, mg_iFirstOnScreen + mg_ctOnScreen - 1L); - // AdjustFirstOnScreen(); - return; - } + BOOL bInSlider = (pixI >= mg_pixSBMinI && pixI <= mg_pixSBMaxI && pixJ >= mg_pixSBMinJ && pixJ <= mg_pixSBMaxJ); + if (mg_pixDragJ >= 0 && bInSlider) { + PIX pixDelta = pixJ - mg_pixDragJ; + INDEX ctSessions = _lhServers.Count(); + INDEX iWantedLine = mg_iDragLine + + SliderPixToIndex(pixDelta, mg_ctOnScreen, ctSessions, GetScrollBarFullBox()); + mg_iFirstOnScreen = Clamp(iWantedLine, 0L, ClampDn(ctSessions - mg_ctOnScreen, 0L)); + mg_iSelected = Clamp(mg_iSelected, mg_iFirstOnScreen, mg_iFirstOnScreen + mg_ctOnScreen - 1L); + // AdjustFirstOnScreen(); + return; + } - // if some server is selected - if (pixI >= mg_pixMinI && pixI <= mg_pixMaxI) { - INDEX iOnScreen = (pixJ - mg_pixListMinJ) / mg_pixListStepJ; - if (iOnScreen >= 0 && iOnScreen= mg_pixMinI && pixI <= mg_pixMaxI) { + INDEX iOnScreen = (pixJ - mg_pixListMinJ) / mg_pixListStepJ; + if (iOnScreen >= 0 && iOnScreen=mg_pixHeaderMinJ && mg_pixMouseJ<=mg_pixHeaderMidJ - && mg_pixMouseI>=mg_pixHeaderI[0] && mg_pixMouseI<=mg_pixHeaderI[7]) { - INDEX iNewSort = mg_iSort; - if (mg_pixMouseI<=mg_pixHeaderI[1]) { - iNewSort = 0; - } else if (mg_pixMouseI<=mg_pixHeaderI[2]) { - iNewSort = 1; - } else if (mg_pixMouseI<=mg_pixHeaderI[3]) { - iNewSort = 2; - } else if (mg_pixMouseI<=mg_pixHeaderI[4]) { - iNewSort = 3; - } else if (mg_pixMouseI<=mg_pixHeaderI[5]) { - iNewSort = 4; - } else if (mg_pixMouseI<=mg_pixHeaderI[6]) { - iNewSort = 5; - } else if (mg_pixMouseI<=mg_pixHeaderI[7]) { - iNewSort = 6; - } - if (iNewSort==mg_iSort) { - mg_bSortDown = !mg_bSortDown; - } else { - mg_bSortDown = FALSE; - } - mg_iSort = iNewSort; - break; - } else */if (mg_pixMouseDrag >= 0) { - mg_pixDragJ = mg_pixMouseDrag; - mg_iDragLine = mg_iFirstOnScreen; - break; - } - case VK_RETURN: - PlayMenuSound(_psdPress); - IFeel_PlayEffect("Menu_press"); - {INDEX i = 0; - FOREACHINLIST(CNetworkSession, ns_lnNode, _lhServers, itns) { - if (i == mg_iSelected) { + switch (iVKey) { + case VK_UP: + mg_iSelected -= 1; + AdjustFirstOnScreen(); + break; + case VK_DOWN: + mg_iSelected += 1; + AdjustFirstOnScreen(); + break; + case VK_PRIOR: + mg_iSelected -= mg_ctOnScreen - 1; + mg_iFirstOnScreen -= mg_ctOnScreen - 1; + AdjustFirstOnScreen(); + break; + case VK_NEXT: + mg_iSelected += mg_ctOnScreen - 1; + mg_iFirstOnScreen += mg_ctOnScreen - 1; + AdjustFirstOnScreen(); + break; + case 11: + mg_iSelected -= 3; + mg_iFirstOnScreen -= 3; + AdjustFirstOnScreen(); + break; + case 10: + mg_iSelected += 3; + mg_iFirstOnScreen += 3; + AdjustFirstOnScreen(); + break; + case VK_LBUTTON: + /* if (mg_pixMouseJ>=mg_pixHeaderMinJ && mg_pixMouseJ<=mg_pixHeaderMidJ + && mg_pixMouseI>=mg_pixHeaderI[0] && mg_pixMouseI<=mg_pixHeaderI[7]) { + INDEX iNewSort = mg_iSort; + if (mg_pixMouseI<=mg_pixHeaderI[1]) { + iNewSort = 0; + } else if (mg_pixMouseI<=mg_pixHeaderI[2]) { + iNewSort = 1; + } else if (mg_pixMouseI<=mg_pixHeaderI[3]) { + iNewSort = 2; + } else if (mg_pixMouseI<=mg_pixHeaderI[4]) { + iNewSort = 3; + } else if (mg_pixMouseI<=mg_pixHeaderI[5]) { + iNewSort = 4; + } else if (mg_pixMouseI<=mg_pixHeaderI[6]) { + iNewSort = 5; + } else if (mg_pixMouseI<=mg_pixHeaderI[7]) { + iNewSort = 6; + } + if (iNewSort==mg_iSort) { + mg_bSortDown = !mg_bSortDown; + } else { + mg_bSortDown = FALSE; + } + mg_iSort = iNewSort; + break; + } else */if (mg_pixMouseDrag >= 0) { + mg_pixDragJ = mg_pixMouseDrag; + mg_iDragLine = mg_iFirstOnScreen; + break; + } + case VK_RETURN: + PlayMenuSound(_psdPress); + IFeel_PlayEffect("Menu_press"); + {INDEX i = 0; + FOREACHINLIST(CNetworkSession, ns_lnNode, _lhServers, itns) { + if (i == mg_iSelected) { - char strAddress[256]; - int iPort; - itns->ns_strAddress.ScanF("%200[^:]:%d", &strAddress, &iPort); - _pGame->gam_strJoinAddress = strAddress; - _pShell->SetINDEX("net_iPort", iPort); - extern void StartSelectPlayersMenuFromServers(void); - StartSelectPlayersMenuFromServers(); - return TRUE; - } - i++; - }} - break; - default: - return FALSE; - } - return TRUE; + char strAddress[256]; + int iPort; + itns->ns_strAddress.ScanF("%200[^:]:%d", &strAddress, &iPort); + _pGame->gam_strJoinAddress = strAddress; + _pShell->SetINDEX("net_iPort", iPort); + extern void StartSelectPlayersMenuFromServers(void); + StartSelectPlayersMenuFromServers(); + return TRUE; + } + i++; + }} + break; + default: + return FALSE; + } + return TRUE; } void CMGServerList::OnSetFocus(void) { - mg_bFocused = TRUE; + mg_bFocused = TRUE; } void CMGServerList::OnKillFocus(void) { - mg_bFocused = FALSE; + mg_bFocused = FALSE; } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGSlider.cpp b/Sources/SeriousSam/GUI/Components/MGSlider.cpp index 275aa19..105b61f 100644 --- a/Sources/SeriousSam/GUI/Components/MGSlider.cpp +++ b/Sources/SeriousSam/GUI/Components/MGSlider.cpp @@ -25,101 +25,101 @@ extern INDEX sam_bWideScreen; CMGSlider::CMGSlider() { - mg_iMinPos = 0; - mg_iMaxPos = 16; - mg_iCurPos = 8; - mg_pOnSliderChange = NULL; - mg_fFactor = 1.0f; + mg_iMinPos = 0; + mg_iMaxPos = 16; + mg_iCurPos = 8; + mg_pOnSliderChange = NULL; + mg_fFactor = 1.0f; } void CMGSlider::ApplyCurrentPosition(void) { - mg_iCurPos = Clamp(mg_iCurPos, mg_iMinPos, mg_iMaxPos); - FLOAT fStretch = FLOAT(mg_iCurPos) / (mg_iMaxPos - mg_iMinPos); - mg_fFactor = fStretch; + mg_iCurPos = Clamp(mg_iCurPos, mg_iMinPos, mg_iMaxPos); + FLOAT fStretch = FLOAT(mg_iCurPos) / (mg_iMaxPos - mg_iMinPos); + mg_fFactor = fStretch; - if (mg_pOnSliderChange != NULL) { - mg_pOnSliderChange(mg_iCurPos); - } + if (mg_pOnSliderChange != NULL) { + mg_pOnSliderChange(mg_iCurPos); + } } void CMGSlider::ApplyGivenPosition(INDEX iMin, INDEX iMax, INDEX iCur) { - mg_iMinPos = iMin; - mg_iMaxPos = iMax; - mg_iCurPos = iCur; - ApplyCurrentPosition(); + mg_iMinPos = iMin; + mg_iMaxPos = iMax; + mg_iCurPos = iCur; + ApplyCurrentPosition(); } BOOL CMGSlider::OnKeyDown(int iVKey) { - // if scrolling left - if ((iVKey == VK_BACK || iVKey == VK_LEFT) && mg_iCurPos>mg_iMinPos) { - mg_iCurPos--; - ApplyCurrentPosition(); - return TRUE; - // if scrolling right - } else if ((iVKey == VK_RETURN || iVKey == VK_RIGHT) && mg_iCurPos= PIX2D(_pixCursorPosI, _pixCursorPosJ)) { - // set new position exactly where mouse pointer is - FLOAT fRatio = FLOAT(_pixCursorPosI - boxSlider.Min()(1)) / boxSlider.Size()(1); - fRatio = (fRatio - 0.01f) / (0.99f - 0.01f); - fRatio = Clamp(fRatio, 0.0f, 1.0f); - mg_iCurPos = fRatio*(mg_iMaxPos - mg_iMinPos) + mg_iMinPos; - ApplyCurrentPosition(); - return TRUE; - } - } - return CMenuGadget::OnKeyDown(iVKey); + // if scrolling left + if ((iVKey == VK_BACK || iVKey == VK_LEFT) && mg_iCurPos>mg_iMinPos) { + mg_iCurPos--; + ApplyCurrentPosition(); + return TRUE; + // if scrolling right + } else if ((iVKey == VK_RETURN || iVKey == VK_RIGHT) && mg_iCurPos= PIX2D(_pixCursorPosI, _pixCursorPosJ)) { + // set new position exactly where mouse pointer is + FLOAT fRatio = FLOAT(_pixCursorPosI - boxSlider.Min()(1)) / boxSlider.Size()(1); + fRatio = (fRatio - 0.01f) / (0.99f - 0.01f); + fRatio = Clamp(fRatio, 0.0f, 1.0f); + mg_iCurPos = fRatio*(mg_iMaxPos - mg_iMinPos) + mg_iMinPos; + ApplyCurrentPosition(); + return TRUE; + } + } + return CMenuGadget::OnKeyDown(iVKey); } PIXaabbox2D CMGSlider::GetSliderBox(void) { - extern CDrawPort *pdp; - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; - PIX pixJ = box.Min()(2); - PIX pixJSize = box.Size()(2)*0.95f; - PIX pixISizeR = box.Size()(1)*0.45f; - if (sam_bWideScreen) pixJSize++; - return PIXaabbox2D(PIX2D(pixIR + 1, pixJ + 1), PIX2D(pixIR + pixISizeR - 2, pixJ + pixJSize - 2)); + extern CDrawPort *pdp; + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; + PIX pixJ = box.Min()(2); + PIX pixJSize = box.Size()(2)*0.95f; + PIX pixISizeR = box.Size()(1)*0.45f; + if (sam_bWideScreen) pixJSize++; + return PIXaabbox2D(PIX2D(pixIR + 1, pixJ + 1), PIX2D(pixIR + pixISizeR - 2, pixJ + pixJSize - 2)); } void CMGSlider::Render(CDrawPort *pdp) { - SetFontMedium(pdp); + SetFontMedium(pdp); - // get geometry - COLOR col = GetCurrentColor(); - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - PIX pixIL = box.Min()(1) + box.Size()(1)*0.45f; - PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; - PIX pixJ = box.Min()(2); - PIX pixJSize = box.Size()(2)*0.95f; - PIX pixISizeR = box.Size()(1)*0.45f; - if (sam_bWideScreen) pixJSize++; + // get geometry + COLOR col = GetCurrentColor(); + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + PIX pixIL = box.Min()(1) + box.Size()(1)*0.45f; + PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; + PIX pixJ = box.Min()(2); + PIX pixJSize = box.Size()(2)*0.95f; + PIX pixISizeR = box.Size()(1)*0.45f; + if (sam_bWideScreen) pixJSize++; - // print text left of slider - pdp->PutTextR(mg_strText, pixIL, pixJ, col); + // print text left of slider + pdp->PutTextR(mg_strText, pixIL, pixJ, col); - // draw box around slider - LCDDrawBox(0, -1, PIXaabbox2D(PIX2D(pixIR + 1, pixJ), PIX2D(pixIR + pixISizeR - 2, pixJ + pixJSize - 2)), - LCDGetColor(C_GREEN | 255, "slider box")); + // draw box around slider + LCDDrawBox(0, -1, PIXaabbox2D(PIX2D(pixIR + 1, pixJ), PIX2D(pixIR + pixISizeR - 2, pixJ + pixJSize - 2)), + LCDGetColor(C_GREEN | 255, "slider box")); - // draw filled part of slider - pdp->Fill(pixIR + 2, pixJ + 1, (pixISizeR - 5)*mg_fFactor, (pixJSize - 4), col); + // draw filled part of slider + pdp->Fill(pixIR + 2, pixJ + 1, (pixISizeR - 5)*mg_fFactor, (pixJSize - 4), col); - // print percentage text - CTString strPercentage; - strPercentage.PrintF("%d%%", (int)floor(mg_fFactor * 100 + 0.5f)); - pdp->PutTextC(strPercentage, pixIR + pixISizeR / 2, pixJ + 1, col); + // print percentage text + CTString strPercentage; + strPercentage.PrintF("%d%%", (int)floor(mg_fFactor * 100 + 0.5f)); + pdp->PutTextC(strPercentage, pixIR + pixISizeR / 2, pixJ + 1, col); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGTitle.cpp b/Sources/SeriousSam/GUI/Components/MGTitle.cpp index c5d7098..f432500 100644 --- a/Sources/SeriousSam/GUI/Components/MGTitle.cpp +++ b/Sources/SeriousSam/GUI/Components/MGTitle.cpp @@ -21,11 +21,11 @@ with this program; if not, write to the Free Software Foundation, Inc., void CMGTitle::Render(CDrawPort *pdp) { - SetFontTitle(pdp); + SetFontTitle(pdp); - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - PIX pixI = box.Center()(1); - PIX pixJ = box.Min()(2); + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + PIX pixI = box.Center()(1); + PIX pixJ = box.Min()(2); - pdp->PutTextC(mg_strText, pixI, pixJ, LCDGetColor(C_WHITE | CT_OPAQUE, "title")); + pdp->PutTextC(mg_strText, pixI, pixJ, LCDGetColor(C_WHITE | CT_OPAQUE, "title")); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGTrigger.cpp b/Sources/SeriousSam/GUI/Components/MGTrigger.cpp index 1e275dd..4903518 100644 --- a/Sources/SeriousSam/GUI/Components/MGTrigger.cpp +++ b/Sources/SeriousSam/GUI/Components/MGTrigger.cpp @@ -21,101 +21,101 @@ with this program; if not, write to the Free Software Foundation, Inc., INDEX GetNewLoopValue(int iVKey, INDEX iCurrent, INDEX ctMembers) { - INDEX iPrev = (iCurrent + ctMembers - 1) % ctMembers; - INDEX iNext = (iCurrent + 1) % ctMembers; - // return and right arrow set new text - if (iVKey == VK_RETURN || iVKey == VK_LBUTTON || iVKey == VK_RIGHT) - { - return iNext; - // left arrow and backspace sets prev text - } else if ((iVKey == VK_BACK || iVKey == VK_RBUTTON) || (iVKey == VK_LEFT)) { - return iPrev; - } - return iCurrent; + INDEX iPrev = (iCurrent + ctMembers - 1) % ctMembers; + INDEX iNext = (iCurrent + 1) % ctMembers; + // return and right arrow set new text + if (iVKey == VK_RETURN || iVKey == VK_LBUTTON || iVKey == VK_RIGHT) + { + return iNext; + // left arrow and backspace sets prev text + } else if ((iVKey == VK_BACK || iVKey == VK_RBUTTON) || (iVKey == VK_LEFT)) { + return iPrev; + } + return iCurrent; } CMGTrigger::CMGTrigger(void) { - mg_pPreTriggerChange = NULL; - mg_pOnTriggerChange = NULL; - mg_iCenterI = 0; - mg_bVisual = FALSE; + mg_pPreTriggerChange = NULL; + mg_pOnTriggerChange = NULL; + mg_iCenterI = 0; + mg_bVisual = FALSE; } void CMGTrigger::ApplyCurrentSelection(void) { - mg_iSelected = Clamp(mg_iSelected, 0L, mg_ctTexts - 1L); - mg_strValue = mg_astrTexts[mg_iSelected]; + mg_iSelected = Clamp(mg_iSelected, 0L, mg_ctTexts - 1L); + mg_strValue = mg_astrTexts[mg_iSelected]; } void CMGTrigger::OnSetNextInList(int iVKey) { - if (mg_pPreTriggerChange != NULL) { - mg_pPreTriggerChange(mg_iSelected); - } + if (mg_pPreTriggerChange != NULL) { + mg_pPreTriggerChange(mg_iSelected); + } - mg_iSelected = GetNewLoopValue(iVKey, mg_iSelected, mg_ctTexts); - mg_strValue = mg_astrTexts[mg_iSelected]; + mg_iSelected = GetNewLoopValue(iVKey, mg_iSelected, mg_ctTexts); + mg_strValue = mg_astrTexts[mg_iSelected]; - if (mg_pOnTriggerChange != NULL) { - (*mg_pOnTriggerChange)(mg_iSelected); - } + if (mg_pOnTriggerChange != NULL) { + (*mg_pOnTriggerChange)(mg_iSelected); + } } BOOL CMGTrigger::OnKeyDown(int iVKey) { - if ((iVKey == VK_RETURN || iVKey == VK_LBUTTON) || - (iVKey == VK_LEFT) || - (iVKey == VK_BACK || iVKey == VK_RBUTTON) || - (iVKey == VK_RIGHT)) - { - // key is handled - if (mg_bEnabled) OnSetNextInList(iVKey); - return TRUE; - } - // key is not handled - return FALSE; + if ((iVKey == VK_RETURN || iVKey == VK_LBUTTON) || + (iVKey == VK_LEFT) || + (iVKey == VK_BACK || iVKey == VK_RBUTTON) || + (iVKey == VK_RIGHT)) + { + // key is handled + if (mg_bEnabled) OnSetNextInList(iVKey); + return TRUE; + } + // key is not handled + return FALSE; } void CMGTrigger::Render(CDrawPort *pdp) { - SetFontMedium(pdp); + SetFontMedium(pdp); - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - PIX pixIL = box.Min()(1) + box.Size()(1)*0.45f; - PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; - PIX pixJ = box.Min()(2); + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + PIX pixIL = box.Min()(1) + box.Size()(1)*0.45f; + PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; + PIX pixJ = box.Min()(2); - COLOR col = GetCurrentColor(); - if (!mg_bVisual || mg_strValue == "") { - CTString strValue = mg_strValue; - if (mg_bVisual) { - strValue = TRANS("none"); - } + COLOR col = GetCurrentColor(); + if (!mg_bVisual || mg_strValue == "") { + CTString strValue = mg_strValue; + if (mg_bVisual) { + strValue = TRANS("none"); + } - if (mg_iCenterI == -1) { - pdp->PutText(mg_strLabel, box.Min()(1), pixJ, col); - pdp->PutTextR(strValue, box.Max()(1), pixJ, col); - } else { - pdp->PutTextR(mg_strLabel, pixIL, pixJ, col); - pdp->PutText(strValue, pixIR, pixJ, col); - } - } else { - CTString strLabel = mg_strLabel + ": "; - pdp->PutText(strLabel, box.Min()(1), pixJ, col); - CTextureObject to; - try { - to.SetData_t(mg_strValue); - CTextureData *ptd = (CTextureData *)to.GetData(); - PIX pixSize = box.Size()(2); - PIX pixCX = box.Max()(1) - pixSize / 2; - PIX pixCY = box.Center()(2); - pdp->PutTexture(&to, PIXaabbox2D( - PIX2D(pixCX - pixSize / 2, pixCY - pixSize / 2), - PIX2D(pixCX - pixSize / 2 + pixSize, pixCY - pixSize / 2 + pixSize)), C_WHITE | 255); - } catch (char *strError) { - CPrintF("%s\n", strError); - } - to.SetData(NULL); - } + if (mg_iCenterI == -1) { + pdp->PutText(mg_strLabel, box.Min()(1), pixJ, col); + pdp->PutTextR(strValue, box.Max()(1), pixJ, col); + } else { + pdp->PutTextR(mg_strLabel, pixIL, pixJ, col); + pdp->PutText(strValue, pixIR, pixJ, col); + } + } else { + CTString strLabel = mg_strLabel + ": "; + pdp->PutText(strLabel, box.Min()(1), pixJ, col); + CTextureObject to; + try { + to.SetData_t(mg_strValue); + CTextureData *ptd = (CTextureData *)to.GetData(); + PIX pixSize = box.Size()(2); + PIX pixCX = box.Max()(1) - pixSize / 2; + PIX pixCY = box.Center()(2); + pdp->PutTexture(&to, PIXaabbox2D( + PIX2D(pixCX - pixSize / 2, pixCY - pixSize / 2), + PIX2D(pixCX - pixSize / 2 + pixSize, pixCY - pixSize / 2 + pixSize)), C_WHITE | 255); + } catch (char *strError) { + CPrintF("%s\n", strError); + } + to.SetData(NULL); + } } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MGVarButton.cpp b/Sources/SeriousSam/GUI/Components/MGVarButton.cpp index 970412a..a8fa59a 100644 --- a/Sources/SeriousSam/GUI/Components/MGVarButton.cpp +++ b/Sources/SeriousSam/GUI/Components/MGVarButton.cpp @@ -25,156 +25,156 @@ extern PIX _pixCursorPosJ; BOOL CMGVarButton::IsSeparator(void) { - if (mg_pvsVar == NULL) return FALSE; - return mg_pvsVar->vs_bSeparator; + if (mg_pvsVar == NULL) return FALSE; + return mg_pvsVar->vs_bSeparator; } BOOL CMGVarButton::IsEnabled(void) { - return(_gmRunningGameMode == GM_NONE - || mg_pvsVar == NULL - || mg_pvsVar->vs_bCanChangeInGame); + return(_gmRunningGameMode == GM_NONE + || mg_pvsVar == NULL + || mg_pvsVar->vs_bCanChangeInGame); } // return slider position on scren PIXaabbox2D CMGVarButton::GetSliderBox(void) { - extern CDrawPort *pdp; - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; - PIX pixJ = box.Min()(2); - PIX pixISize = box.Size()(1)*0.13f; - PIX pixJSize = box.Size()(2); - return PIXaabbox2D(PIX2D(pixIR, pixJ + 1), PIX2D(pixIR + pixISize - 4, pixJ + pixJSize - 6)); + extern CDrawPort *pdp; + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; + PIX pixJ = box.Min()(2); + PIX pixISize = box.Size()(1)*0.13f; + PIX pixJSize = box.Size()(2); + return PIXaabbox2D(PIX2D(pixIR, pixJ + 1), PIX2D(pixIR + pixISize - 4, pixJ + pixJSize - 6)); } extern BOOL _bVarChanged; BOOL CMGVarButton::OnKeyDown(int iVKey) { - if (mg_pvsVar == NULL || mg_pvsVar->vs_bSeparator || !mg_pvsVar->Validate() || !mg_bEnabled) { - return CMenuGadget::OnKeyDown(iVKey); - } + if (mg_pvsVar == NULL || mg_pvsVar->vs_bSeparator || !mg_pvsVar->Validate() || !mg_bEnabled) { + return CMenuGadget::OnKeyDown(iVKey); + } - // handle slider - if (mg_pvsVar->vs_iSlider && !mg_pvsVar->vs_bCustom) { - // ignore RMB - if (iVKey == VK_RBUTTON) return TRUE; - // handle LMB - if (iVKey == VK_LBUTTON) { - // get position of slider box on screen - PIXaabbox2D boxSlider = GetSliderBox(); - // if mouse is within - if (boxSlider >= PIX2D(_pixCursorPosI, _pixCursorPosJ)) { - // set new position exactly where mouse pointer is - mg_pvsVar->vs_iValue = (FLOAT)(_pixCursorPosI - boxSlider.Min()(1)) / boxSlider.Size()(1) * (mg_pvsVar->vs_ctValues); - _bVarChanged = TRUE; - } - // handled - return TRUE; - } - } + // handle slider + if (mg_pvsVar->vs_iSlider && !mg_pvsVar->vs_bCustom) { + // ignore RMB + if (iVKey == VK_RBUTTON) return TRUE; + // handle LMB + if (iVKey == VK_LBUTTON) { + // get position of slider box on screen + PIXaabbox2D boxSlider = GetSliderBox(); + // if mouse is within + if (boxSlider >= PIX2D(_pixCursorPosI, _pixCursorPosJ)) { + // set new position exactly where mouse pointer is + mg_pvsVar->vs_iValue = (FLOAT)(_pixCursorPosI - boxSlider.Min()(1)) / boxSlider.Size()(1) * (mg_pvsVar->vs_ctValues); + _bVarChanged = TRUE; + } + // handled + return TRUE; + } + } - if (iVKey == VK_RETURN) { - FlushVarSettings(TRUE); - void MenuGoToParent(void); - MenuGoToParent(); - return TRUE; - } + if (iVKey == VK_RETURN) { + FlushVarSettings(TRUE); + void MenuGoToParent(void); + MenuGoToParent(); + return TRUE; + } - if (iVKey == VK_LBUTTON || iVKey == VK_RIGHT) { - if (mg_pvsVar != NULL) { - INDEX iOldValue = mg_pvsVar->vs_iValue; - mg_pvsVar->vs_iValue++; - if (mg_pvsVar->vs_iValue >= mg_pvsVar->vs_ctValues) { - // wrap non-sliders, clamp sliders - if (mg_pvsVar->vs_iSlider) mg_pvsVar->vs_iValue = mg_pvsVar->vs_ctValues - 1L; - else mg_pvsVar->vs_iValue = 0; - } - if (iOldValue != mg_pvsVar->vs_iValue) { - _bVarChanged = TRUE; - mg_pvsVar->vs_bCustom = FALSE; - mg_pvsVar->Validate(); - } - } - return TRUE; - } + if (iVKey == VK_LBUTTON || iVKey == VK_RIGHT) { + if (mg_pvsVar != NULL) { + INDEX iOldValue = mg_pvsVar->vs_iValue; + mg_pvsVar->vs_iValue++; + if (mg_pvsVar->vs_iValue >= mg_pvsVar->vs_ctValues) { + // wrap non-sliders, clamp sliders + if (mg_pvsVar->vs_iSlider) mg_pvsVar->vs_iValue = mg_pvsVar->vs_ctValues - 1L; + else mg_pvsVar->vs_iValue = 0; + } + if (iOldValue != mg_pvsVar->vs_iValue) { + _bVarChanged = TRUE; + mg_pvsVar->vs_bCustom = FALSE; + mg_pvsVar->Validate(); + } + } + return TRUE; + } - if (iVKey == VK_LEFT || iVKey == VK_RBUTTON) { - if (mg_pvsVar != NULL) { - INDEX iOldValue = mg_pvsVar->vs_iValue; - mg_pvsVar->vs_iValue--; - if (mg_pvsVar->vs_iValue<0) { - // wrap non-sliders, clamp sliders - if (mg_pvsVar->vs_iSlider) mg_pvsVar->vs_iValue = 0; - else mg_pvsVar->vs_iValue = mg_pvsVar->vs_ctValues - 1L; - } - if (iOldValue != mg_pvsVar->vs_iValue) { - _bVarChanged = TRUE; - mg_pvsVar->vs_bCustom = FALSE; - mg_pvsVar->Validate(); - } - } - return TRUE; - } + if (iVKey == VK_LEFT || iVKey == VK_RBUTTON) { + if (mg_pvsVar != NULL) { + INDEX iOldValue = mg_pvsVar->vs_iValue; + mg_pvsVar->vs_iValue--; + if (mg_pvsVar->vs_iValue<0) { + // wrap non-sliders, clamp sliders + if (mg_pvsVar->vs_iSlider) mg_pvsVar->vs_iValue = 0; + else mg_pvsVar->vs_iValue = mg_pvsVar->vs_ctValues - 1L; + } + if (iOldValue != mg_pvsVar->vs_iValue) { + _bVarChanged = TRUE; + mg_pvsVar->vs_bCustom = FALSE; + mg_pvsVar->Validate(); + } + } + return TRUE; + } - // not handled - return CMenuGadget::OnKeyDown(iVKey); + // not handled + return CMenuGadget::OnKeyDown(iVKey); } void CMGVarButton::Render(CDrawPort *pdp) { - if (mg_pvsVar == NULL) { - return; - } + if (mg_pvsVar == NULL) { + return; + } - SetFontMedium(pdp); + SetFontMedium(pdp); - PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); - PIX pixIL = box.Min()(1) + box.Size()(1)*0.45f; - PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; - PIX pixIC = box.Center()(1); - PIX pixJ = box.Min()(2); + PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen); + PIX pixIL = box.Min()(1) + box.Size()(1)*0.45f; + PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f; + PIX pixIC = box.Center()(1); + PIX pixJ = box.Min()(2); - if (mg_pvsVar->vs_bSeparator) - { - mg_bEnabled = FALSE; - COLOR col = LCDGetColor(C_WHITE | 255, "separator"); - CTString strText = mg_pvsVar->vs_strName; - pdp->PutTextC(strText, pixIC, pixJ, col); - } else if (mg_pvsVar->Validate()) { - // check whether the variable is disabled - if (mg_pvsVar->vs_strFilter != "") mg_bEnabled = _pShell->GetINDEX(mg_pvsVar->vs_strFilter); - COLOR col = GetCurrentColor(); - pdp->PutTextR(mg_pvsVar->vs_strName, pixIL, pixJ, col); - // custom is by default - CTString strText = TRANS("Custom"); - if (!mg_pvsVar->vs_bCustom) - { // not custom! - strText = mg_pvsVar->vs_astrTexts[mg_pvsVar->vs_iValue]; - // need slider? - if (mg_pvsVar->vs_iSlider>0) { - // draw box around slider - PIX pixISize = box.Size()(1)*0.13f; - PIX pixJSize = box.Size()(2); - LCDDrawBox(0, -1, PIXaabbox2D(PIX2D(pixIR, pixJ + 1), PIX2D(pixIR + pixISize - 4, pixJ + pixJSize - 6)), - LCDGetColor(C_GREEN | 255, "slider box")); + if (mg_pvsVar->vs_bSeparator) + { + mg_bEnabled = FALSE; + COLOR col = LCDGetColor(C_WHITE | 255, "separator"); + CTString strText = mg_pvsVar->vs_strName; + pdp->PutTextC(strText, pixIC, pixJ, col); + } else if (mg_pvsVar->Validate()) { + // check whether the variable is disabled + if (mg_pvsVar->vs_strFilter != "") mg_bEnabled = _pShell->GetINDEX(mg_pvsVar->vs_strFilter); + COLOR col = GetCurrentColor(); + pdp->PutTextR(mg_pvsVar->vs_strName, pixIL, pixJ, col); + // custom is by default + CTString strText = TRANS("Custom"); + if (!mg_pvsVar->vs_bCustom) + { // not custom! + strText = mg_pvsVar->vs_astrTexts[mg_pvsVar->vs_iValue]; + // need slider? + if (mg_pvsVar->vs_iSlider>0) { + // draw box around slider + PIX pixISize = box.Size()(1)*0.13f; + PIX pixJSize = box.Size()(2); + LCDDrawBox(0, -1, PIXaabbox2D(PIX2D(pixIR, pixJ + 1), PIX2D(pixIR + pixISize - 4, pixJ + pixJSize - 6)), + LCDGetColor(C_GREEN | 255, "slider box")); - // draw filled part of slider - if (mg_pvsVar->vs_iSlider == 1) { - // fill slider - FLOAT fFactor = (FLOAT)(mg_pvsVar->vs_iValue + 1) / mg_pvsVar->vs_ctValues; - pdp->Fill(pixIR + 1, pixJ + 2, (pixISize - 6)*fFactor, pixJSize - 9, col); - } else { - // ratio slider - ASSERT(mg_pvsVar->vs_iSlider == 2); - FLOAT fUnitWidth = (FLOAT)(pixISize - 5) / mg_pvsVar->vs_ctValues; - pdp->Fill(pixIR + 1 + (mg_pvsVar->vs_iValue*fUnitWidth), pixJ + 2, fUnitWidth, pixJSize - 9, col); - } - // move text printout to the right of slider - pixIR += box.Size()(1)*0.15f; - } - } - // write right text - pdp->PutText(strText, pixIR, pixJ, col); - } + // draw filled part of slider + if (mg_pvsVar->vs_iSlider == 1) { + // fill slider + FLOAT fFactor = (FLOAT)(mg_pvsVar->vs_iValue + 1) / mg_pvsVar->vs_ctValues; + pdp->Fill(pixIR + 1, pixJ + 2, (pixISize - 6)*fFactor, pixJSize - 9, col); + } else { + // ratio slider + ASSERT(mg_pvsVar->vs_iSlider == 2); + FLOAT fUnitWidth = (FLOAT)(pixISize - 5) / mg_pvsVar->vs_ctValues; + pdp->Fill(pixIR + 1 + (mg_pvsVar->vs_iValue*fUnitWidth), pixJ + 2, fUnitWidth, pixJSize - 9, col); + } + // move text printout to the right of slider + pixIR += box.Size()(1)*0.15f; + } + } + // write right text + pdp->PutText(strText, pixIR, pixJ, col); + } } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Components/MenuGadget.cpp b/Sources/SeriousSam/GUI/Components/MenuGadget.cpp index 36a1f2c..929ba17 100644 --- a/Sources/SeriousSam/GUI/Components/MenuGadget.cpp +++ b/Sources/SeriousSam/GUI/Components/MenuGadget.cpp @@ -29,69 +29,69 @@ extern CMenuGadget *_pmgLastActivatedGadget = NULL; CMenuGadget::CMenuGadget(void) { - mg_pmgLeft = NULL; - mg_pmgRight = NULL; - mg_pmgUp = NULL; - mg_pmgDown = NULL; + mg_pmgLeft = NULL; + mg_pmgRight = NULL; + mg_pmgUp = NULL; + mg_pmgDown = NULL; - mg_bVisible = TRUE; - mg_bEnabled = TRUE; - mg_bLabel = FALSE; - mg_bFocused = FALSE; - mg_iInList = -1; // not in list + mg_bVisible = TRUE; + mg_bEnabled = TRUE; + mg_bLabel = FALSE; + mg_bFocused = FALSE; + mg_iInList = -1; // not in list } void CMenuGadget::OnActivate(void) { - NOTHING; + NOTHING; } // return TRUE if handled BOOL CMenuGadget::OnKeyDown(int iVKey) { - // if return pressed - if (iVKey == VK_RETURN || iVKey == VK_LBUTTON) { - // activate - OnActivate(); - // key is handled - return TRUE; - } - // key is not handled - return FALSE; + // if return pressed + if (iVKey == VK_RETURN || iVKey == VK_LBUTTON) { + // activate + OnActivate(); + // key is handled + return TRUE; + } + // key is not handled + return FALSE; } BOOL CMenuGadget::OnChar(MSG msg) { - // key is not handled - return FALSE; + // key is not handled + return FALSE; } void CMenuGadget::OnSetFocus(void) { - mg_bFocused = TRUE; - if (!IsSeparator()) - { - PlayMenuSound(_psdSelect); - IFeel_PlayEffect("Menu_select"); - } + mg_bFocused = TRUE; + if (!IsSeparator()) + { + PlayMenuSound(_psdSelect); + IFeel_PlayEffect("Menu_select"); + } } void CMenuGadget::OnKillFocus(void) { - mg_bFocused = FALSE; + mg_bFocused = FALSE; } void CMenuGadget::Appear(void) { - mg_bVisible = TRUE; + mg_bVisible = TRUE; } void CMenuGadget::Disappear(void) { - mg_bVisible = FALSE; - mg_bFocused = FALSE; + mg_bVisible = FALSE; + mg_bFocused = FALSE; } void CMenuGadget::Think(void) @@ -105,30 +105,30 @@ void CMenuGadget::OnMouseOver(PIX pixI, PIX pixJ) // get current color for the gadget COLOR CMenuGadget::GetCurrentColor(void) { - // use normal colors - COLOR colUnselected = LCDGetColor(C_GREEN, "unselected"); - COLOR colSelected = LCDGetColor(C_WHITE, "selected"); - // if disabled - if (!mg_bEnabled) { - // use a bit darker colors - colUnselected = LCDGetColor(C_dGREEN, "disabled unselected"); - colSelected = LCDGetColor(C_GRAY, "disabled selected"); - // if label - if (mg_bLabel) { - // use white - colUnselected = colSelected = LCDGetColor(C_WHITE, "label"); - } - } - // use unselected color - COLOR colRet = colUnselected; - // if selected - if (mg_bFocused) { - // oscilate towards selected color - FLOAT tmNow = _pTimer->GetHighPrecisionTimer().GetSeconds(); - colRet = LerpColor((colUnselected >> 1) & 0x7F7F7F7F, colSelected, sin(tmNow*10.0f)*0.5f + 0.5f); - } + // use normal colors + COLOR colUnselected = LCDGetColor(C_GREEN, "unselected"); + COLOR colSelected = LCDGetColor(C_WHITE, "selected"); + // if disabled + if (!mg_bEnabled) { + // use a bit darker colors + colUnselected = LCDGetColor(C_dGREEN, "disabled unselected"); + colSelected = LCDGetColor(C_GRAY, "disabled selected"); + // if label + if (mg_bLabel) { + // use white + colUnselected = colSelected = LCDGetColor(C_WHITE, "label"); + } + } + // use unselected color + COLOR colRet = colUnselected; + // if selected + if (mg_bFocused) { + // oscilate towards selected color + FLOAT tmNow = _pTimer->GetHighPrecisionTimer().GetSeconds(); + colRet = LerpColor((colUnselected >> 1) & 0x7F7F7F7F, colSelected, sin(tmNow*10.0f)*0.5f + 0.5f); + } - return colRet | CT_OPAQUE; + return colRet | CT_OPAQUE; } void CMenuGadget::Render(CDrawPort *pdp) diff --git a/Sources/SeriousSam/GUI/Menus/GameMenu.cpp b/Sources/SeriousSam/GUI/Menus/GameMenu.cpp index 320a703..91f8b72 100644 --- a/Sources/SeriousSam/GUI/Menus/GameMenu.cpp +++ b/Sources/SeriousSam/GUI/Menus/GameMenu.cpp @@ -20,16 +20,16 @@ with this program; if not, write to the Free Software Foundation, Inc., CGameMenu::CGameMenu(void) { - gm_pgmParentMenu = NULL; - gm_pmgSelectedByDefault = NULL; - gm_pmgArrowUp = NULL; - gm_pmgArrowDn = NULL; - gm_pmgListTop = NULL; - gm_pmgListBottom = NULL; - gm_iListOffset = 0; - gm_ctListVisible = 0; - gm_ctListTotal = 0; - gm_bPopup = FALSE; + gm_pgmParentMenu = NULL; + gm_pmgSelectedByDefault = NULL; + gm_pmgArrowUp = NULL; + gm_pmgArrowDn = NULL; + gm_pmgListTop = NULL; + gm_pmgListBottom = NULL; + gm_iListOffset = 0; + gm_ctListVisible = 0; + gm_ctListTotal = 0; + gm_bPopup = FALSE; } void CGameMenu::Initialize_t(void) @@ -42,15 +42,15 @@ void CGameMenu::Destroy(void) void CGameMenu::FillListItems(void) { - ASSERT(FALSE); // must be implemented to scroll up/down + ASSERT(FALSE); // must be implemented to scroll up/down } void CGameMenu::KillAllFocuses(void) { - // for each menu gadget in menu - FOREACHINLIST(CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) { - itmg->mg_bFocused = FALSE; - } + // for each menu gadget in menu + FOREACHINLIST(CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) { + itmg->mg_bFocused = FALSE; + } } void CGameMenu::Think(void) @@ -63,288 +63,288 @@ void CGameMenu::Think(void) // +-4 -> scrolling with mouse wheel void CGameMenu::ScrollList(INDEX iDir) { - // if not valid for scrolling - if (gm_ctListTotal <= 0 - || gm_pmgArrowUp == NULL || gm_pmgArrowDn == NULL - || gm_pmgListTop == NULL || gm_pmgListBottom == NULL) { - // do nothing - return; - } + // if not valid for scrolling + if (gm_ctListTotal <= 0 + || gm_pmgArrowUp == NULL || gm_pmgArrowDn == NULL + || gm_pmgListTop == NULL || gm_pmgListBottom == NULL) { + // do nothing + return; + } - INDEX iOldTopKey = gm_iListOffset; - // change offset - switch (iDir) { - case -1: - gm_iListOffset -= 1; - break; - case -4: - gm_iListOffset -= 3; - break; - case -2: - case -3: - gm_iListOffset -= gm_ctListVisible; - break; - case +1: - gm_iListOffset += 1; - break; - case +4: - gm_iListOffset += 3; - break; - case +2: - case +3: - gm_iListOffset += gm_ctListVisible; - break; - default: - ASSERT(FALSE); - return; - } - if (gm_ctListTotal <= gm_ctListVisible) { - gm_iListOffset = 0; - } - else { - gm_iListOffset = Clamp(gm_iListOffset, INDEX(0), INDEX(gm_ctListTotal - gm_ctListVisible)); - } + INDEX iOldTopKey = gm_iListOffset; + // change offset + switch (iDir) { + case -1: + gm_iListOffset -= 1; + break; + case -4: + gm_iListOffset -= 3; + break; + case -2: + case -3: + gm_iListOffset -= gm_ctListVisible; + break; + case +1: + gm_iListOffset += 1; + break; + case +4: + gm_iListOffset += 3; + break; + case +2: + case +3: + gm_iListOffset += gm_ctListVisible; + break; + default: + ASSERT(FALSE); + return; + } + if (gm_ctListTotal <= gm_ctListVisible) { + gm_iListOffset = 0; + } + else { + gm_iListOffset = Clamp(gm_iListOffset, INDEX(0), INDEX(gm_ctListTotal - gm_ctListVisible)); + } - // set new names - FillListItems(); + // set new names + FillListItems(); - // if scroling with wheel - if (iDir == +4 || iDir == -4) { - // no focus changing - return; - } + // if scroling with wheel + if (iDir == +4 || iDir == -4) { + // no focus changing + return; + } - // delete all focuses - FOREACHINLIST(CMenuGadget, mg_lnNode, pgmCurrentMenu->gm_lhGadgets, itmg) { - itmg->OnKillFocus(); - } + // delete all focuses + FOREACHINLIST(CMenuGadget, mg_lnNode, pgmCurrentMenu->gm_lhGadgets, itmg) { + itmg->OnKillFocus(); + } - // set new focus - const INDEX iFirst = 0; - const INDEX iLast = gm_ctListVisible - 1; - switch (iDir) { - case +1: - gm_pmgListBottom->OnSetFocus(); - break; - case +2: - if (gm_iListOffset != iOldTopKey) { - gm_pmgListTop->OnSetFocus(); - } - else { - gm_pmgListBottom->OnSetFocus(); - } - break; - case +3: - gm_pmgArrowDn->OnSetFocus(); - break; - case -1: - gm_pmgListTop->OnSetFocus(); - break; - case -2: - gm_pmgListTop->OnSetFocus(); - break; - case -3: - gm_pmgArrowUp->OnSetFocus(); - break; - } + // set new focus + const INDEX iFirst = 0; + const INDEX iLast = gm_ctListVisible - 1; + switch (iDir) { + case +1: + gm_pmgListBottom->OnSetFocus(); + break; + case +2: + if (gm_iListOffset != iOldTopKey) { + gm_pmgListTop->OnSetFocus(); + } + else { + gm_pmgListBottom->OnSetFocus(); + } + break; + case +3: + gm_pmgArrowDn->OnSetFocus(); + break; + case -1: + gm_pmgListTop->OnSetFocus(); + break; + case -2: + gm_pmgListTop->OnSetFocus(); + break; + case -3: + gm_pmgArrowUp->OnSetFocus(); + break; + } } BOOL CGameMenu::OnChar(MSG msg) { - // find curently active gadget - CMenuGadget *pmgActive = NULL; - // for each menu gadget in menu - FOREACHINLIST(CMenuGadget, mg_lnNode, pgmCurrentMenu->gm_lhGadgets, itmg) { - // if focused - if (itmg->mg_bFocused) { - // remember as active - pmgActive = &itmg.Current(); - } - } + // find curently active gadget + CMenuGadget *pmgActive = NULL; + // for each menu gadget in menu + FOREACHINLIST(CMenuGadget, mg_lnNode, pgmCurrentMenu->gm_lhGadgets, itmg) { + // if focused + if (itmg->mg_bFocused) { + // remember as active + pmgActive = &itmg.Current(); + } + } - // if none focused - if (pmgActive == NULL) { - // do nothing - return FALSE; - } + // if none focused + if (pmgActive == NULL) { + // do nothing + return FALSE; + } - // if active gadget handles it - if (pmgActive->OnChar(msg)) { - // key is handled - return TRUE; - } + // if active gadget handles it + if (pmgActive->OnChar(msg)) { + // key is handled + return TRUE; + } - // key is not handled - return FALSE; + // key is not handled + return FALSE; } // return TRUE if handled BOOL CGameMenu::OnKeyDown(int iVKey) { - // find curently active gadget - CMenuGadget *pmgActive = NULL; - // for each menu gadget in menu - FOREACHINLIST(CMenuGadget, mg_lnNode, pgmCurrentMenu->gm_lhGadgets, itmg) { - // if focused - if (itmg->mg_bFocused) { - // remember as active - pmgActive = &itmg.Current(); - } - } + // find curently active gadget + CMenuGadget *pmgActive = NULL; + // for each menu gadget in menu + FOREACHINLIST(CMenuGadget, mg_lnNode, pgmCurrentMenu->gm_lhGadgets, itmg) { + // if focused + if (itmg->mg_bFocused) { + // remember as active + pmgActive = &itmg.Current(); + } + } - // if none focused - if (pmgActive == NULL) { - // do nothing - return FALSE; - } + // if none focused + if (pmgActive == NULL) { + // do nothing + return FALSE; + } - // if active gadget handles it - if (pmgActive->OnKeyDown(iVKey)) { - // key is handled - return TRUE; - } + // if active gadget handles it + if (pmgActive->OnKeyDown(iVKey)) { + // key is handled + return TRUE; + } - // process normal in menu movement - switch (iVKey) { - case VK_PRIOR: - ScrollList(-2); - return TRUE; - case VK_NEXT: - ScrollList(+2); - return TRUE; + // process normal in menu movement + switch (iVKey) { + case VK_PRIOR: + ScrollList(-2); + return TRUE; + case VK_NEXT: + ScrollList(+2); + return TRUE; - case 11: - ScrollList(-4); - return TRUE; - case 10: - ScrollList(+4); - return TRUE; + case 11: + ScrollList(-4); + return TRUE; + case 10: + ScrollList(+4); + return TRUE; - case VK_UP: - // if this is top button in list - if (pmgActive == gm_pmgListTop) { - // scroll list up - ScrollList(-1); - // key is handled - return TRUE; - } - // if we can go up - if (pmgActive->mg_pmgUp != NULL && pmgActive->mg_pmgUp->mg_bVisible) { - // call lose focus to still active gadget and - pmgActive->OnKillFocus(); - // set focus to new one - pmgActive = pmgActive->mg_pmgUp; - pmgActive->OnSetFocus(); - // key is handled - return TRUE; - } - break; - case VK_DOWN: - // if this is bottom button in list - if (pmgActive == gm_pmgListBottom) { - // scroll list down - ScrollList(+1); - // key is handled - return TRUE; - } - // if we can go down - if (pmgActive->mg_pmgDown != NULL && pmgActive->mg_pmgDown->mg_bVisible) { - // call lose focus to still active gadget and - pmgActive->OnKillFocus(); - // set focus to new one - pmgActive = pmgActive->mg_pmgDown; - pmgActive->OnSetFocus(); - // key is handled - return TRUE; - } - break; - case VK_LEFT: - // if we can go left - if (pmgActive->mg_pmgLeft != NULL) { - // call lose focus to still active gadget and - pmgActive->OnKillFocus(); - // set focus to new one - if (!pmgActive->mg_pmgLeft->mg_bVisible && gm_pmgSelectedByDefault != NULL) { - pmgActive = gm_pmgSelectedByDefault; - } - else { - pmgActive = pmgActive->mg_pmgLeft; - } - pmgActive->OnSetFocus(); - // key is handled - return TRUE; - } - break; - case VK_RIGHT: - // if we can go right - if (pmgActive->mg_pmgRight != NULL) { - // call lose focus to still active gadget and - pmgActive->OnKillFocus(); - // set focus to new one - if (!pmgActive->mg_pmgRight->mg_bVisible && gm_pmgSelectedByDefault != NULL) { - pmgActive = gm_pmgSelectedByDefault; - } - else { - pmgActive = pmgActive->mg_pmgRight; - } - pmgActive->OnSetFocus(); - // key is handled - return TRUE; - } - break; - } + case VK_UP: + // if this is top button in list + if (pmgActive == gm_pmgListTop) { + // scroll list up + ScrollList(-1); + // key is handled + return TRUE; + } + // if we can go up + if (pmgActive->mg_pmgUp != NULL && pmgActive->mg_pmgUp->mg_bVisible) { + // call lose focus to still active gadget and + pmgActive->OnKillFocus(); + // set focus to new one + pmgActive = pmgActive->mg_pmgUp; + pmgActive->OnSetFocus(); + // key is handled + return TRUE; + } + break; + case VK_DOWN: + // if this is bottom button in list + if (pmgActive == gm_pmgListBottom) { + // scroll list down + ScrollList(+1); + // key is handled + return TRUE; + } + // if we can go down + if (pmgActive->mg_pmgDown != NULL && pmgActive->mg_pmgDown->mg_bVisible) { + // call lose focus to still active gadget and + pmgActive->OnKillFocus(); + // set focus to new one + pmgActive = pmgActive->mg_pmgDown; + pmgActive->OnSetFocus(); + // key is handled + return TRUE; + } + break; + case VK_LEFT: + // if we can go left + if (pmgActive->mg_pmgLeft != NULL) { + // call lose focus to still active gadget and + pmgActive->OnKillFocus(); + // set focus to new one + if (!pmgActive->mg_pmgLeft->mg_bVisible && gm_pmgSelectedByDefault != NULL) { + pmgActive = gm_pmgSelectedByDefault; + } + else { + pmgActive = pmgActive->mg_pmgLeft; + } + pmgActive->OnSetFocus(); + // key is handled + return TRUE; + } + break; + case VK_RIGHT: + // if we can go right + if (pmgActive->mg_pmgRight != NULL) { + // call lose focus to still active gadget and + pmgActive->OnKillFocus(); + // set focus to new one + if (!pmgActive->mg_pmgRight->mg_bVisible && gm_pmgSelectedByDefault != NULL) { + pmgActive = gm_pmgSelectedByDefault; + } + else { + pmgActive = pmgActive->mg_pmgRight; + } + pmgActive->OnSetFocus(); + // key is handled + return TRUE; + } + break; + } - // key is not handled - return FALSE; + // key is not handled + return FALSE; } void CGameMenu::StartMenu(void) { - // for each menu gadget in menu - FOREACHINLIST(CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) - { - itmg->mg_bFocused = FALSE; - // call appear - itmg->Appear(); - } + // for each menu gadget in menu + FOREACHINLIST(CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) + { + itmg->mg_bFocused = FALSE; + // call appear + itmg->Appear(); + } - // if there is a list - if (gm_pmgListTop != NULL) { - // scroll it so that the wanted tem is centered - gm_iListOffset = gm_iListWantedItem - gm_ctListVisible / 2; - // clamp the scrolling - gm_iListOffset = Clamp(gm_iListOffset, 0L, Max(0L, gm_ctListTotal - gm_ctListVisible)); + // if there is a list + if (gm_pmgListTop != NULL) { + // scroll it so that the wanted tem is centered + gm_iListOffset = gm_iListWantedItem - gm_ctListVisible / 2; + // clamp the scrolling + gm_iListOffset = Clamp(gm_iListOffset, 0L, Max(0L, gm_ctListTotal - gm_ctListVisible)); - // fill the list - FillListItems(); + // fill the list + FillListItems(); - // for each menu gadget in menu - FOREACHINLIST(CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) { - // if in list, but disabled - if (itmg->mg_iInList == -2) { - // hide it - itmg->mg_bVisible = FALSE; - // if in list - } else if (itmg->mg_iInList >= 0) { - // show it - itmg->mg_bVisible = TRUE; - } - // if wanted - if (itmg->mg_iInList == gm_iListWantedItem) { - // focus it - itmg->OnSetFocus(); - gm_pmgSelectedByDefault = itmg; - } - } - } + // for each menu gadget in menu + FOREACHINLIST(CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) { + // if in list, but disabled + if (itmg->mg_iInList == -2) { + // hide it + itmg->mg_bVisible = FALSE; + // if in list + } else if (itmg->mg_iInList >= 0) { + // show it + itmg->mg_bVisible = TRUE; + } + // if wanted + if (itmg->mg_iInList == gm_iListWantedItem) { + // focus it + itmg->OnSetFocus(); + gm_pmgSelectedByDefault = itmg; + } + } + } } void CGameMenu::EndMenu(void) { - // for each menu gadget in menu - FOREACHINLIST(CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) - { - // call disappear - itmg->Disappear(); - } + // for each menu gadget in menu + FOREACHINLIST(CMenuGadget, mg_lnNode, gm_lhGadgets, itmg) + { + // call disappear + itmg->Disappear(); + } } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MAudioOptions.cpp b/Sources/SeriousSam/GUI/Menus/MAudioOptions.cpp index e62316d..772ed57 100644 --- a/Sources/SeriousSam/GUI/Menus/MAudioOptions.cpp +++ b/Sources/SeriousSam/GUI/Menus/MAudioOptions.cpp @@ -23,55 +23,55 @@ extern void RefreshSoundFormat(void); void CAudioOptionsMenu::Initialize_t(void) { - // intialize Audio options menu - gm_mgTitle.mg_boxOnScreen = BoxTitle(); - gm_mgTitle.mg_strText = TRANS("AUDIO"); - gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + // intialize Audio options menu + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("AUDIO"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); - TRIGGER_MG(gm_mgAudioAutoTrigger, 0, - gm_mgApply, gm_mgFrequencyTrigger, TRANS("AUTO-ADJUST"), astrNoYes); - gm_mgAudioAutoTrigger.mg_strTip = TRANS("adjust quality to fit your system"); + TRIGGER_MG(gm_mgAudioAutoTrigger, 0, + gm_mgApply, gm_mgFrequencyTrigger, TRANS("AUTO-ADJUST"), astrNoYes); + gm_mgAudioAutoTrigger.mg_strTip = TRANS("adjust quality to fit your system"); - TRIGGER_MG(gm_mgFrequencyTrigger, 1, - gm_mgAudioAutoTrigger, gm_mgAudioAPITrigger, TRANS("FREQUENCY"), astrFrequencyRadioTexts); - gm_mgFrequencyTrigger.mg_strTip = TRANS("select sound quality or turn sound off"); - gm_mgFrequencyTrigger.mg_pOnTriggerChange = NULL; + TRIGGER_MG(gm_mgFrequencyTrigger, 1, + gm_mgAudioAutoTrigger, gm_mgAudioAPITrigger, TRANS("FREQUENCY"), astrFrequencyRadioTexts); + gm_mgFrequencyTrigger.mg_strTip = TRANS("select sound quality or turn sound off"); + gm_mgFrequencyTrigger.mg_pOnTriggerChange = NULL; - TRIGGER_MG(gm_mgAudioAPITrigger, 2, - gm_mgFrequencyTrigger, gm_mgWaveVolume, TRANS("SOUND SYSTEM"), astrSoundAPIRadioTexts); - gm_mgAudioAPITrigger.mg_strTip = TRANS("choose sound system (API) to use"); - gm_mgAudioAPITrigger.mg_pOnTriggerChange = NULL; + TRIGGER_MG(gm_mgAudioAPITrigger, 2, + gm_mgFrequencyTrigger, gm_mgWaveVolume, TRANS("SOUND SYSTEM"), astrSoundAPIRadioTexts); + gm_mgAudioAPITrigger.mg_strTip = TRANS("choose sound system (API) to use"); + gm_mgAudioAPITrigger.mg_pOnTriggerChange = NULL; - gm_mgWaveVolume.mg_boxOnScreen = BoxMediumRow(3); - gm_mgWaveVolume.mg_strText = TRANS("SOUND EFFECTS VOLUME"); - gm_mgWaveVolume.mg_strTip = TRANS("adjust volume of in-game sound effects"); - gm_mgWaveVolume.mg_pmgUp = &gm_mgAudioAPITrigger; - gm_mgWaveVolume.mg_pmgDown = &gm_mgMPEGVolume; - gm_mgWaveVolume.mg_pOnSliderChange = NULL; - gm_mgWaveVolume.mg_pActivatedFunction = NULL; - gm_lhGadgets.AddTail(gm_mgWaveVolume.mg_lnNode); + gm_mgWaveVolume.mg_boxOnScreen = BoxMediumRow(3); + gm_mgWaveVolume.mg_strText = TRANS("SOUND EFFECTS VOLUME"); + gm_mgWaveVolume.mg_strTip = TRANS("adjust volume of in-game sound effects"); + gm_mgWaveVolume.mg_pmgUp = &gm_mgAudioAPITrigger; + gm_mgWaveVolume.mg_pmgDown = &gm_mgMPEGVolume; + gm_mgWaveVolume.mg_pOnSliderChange = NULL; + gm_mgWaveVolume.mg_pActivatedFunction = NULL; + gm_lhGadgets.AddTail(gm_mgWaveVolume.mg_lnNode); - gm_mgMPEGVolume.mg_boxOnScreen = BoxMediumRow(4); - gm_mgMPEGVolume.mg_strText = TRANS("MUSIC VOLUME"); - gm_mgMPEGVolume.mg_strTip = TRANS("adjust volume of in-game music"); - gm_mgMPEGVolume.mg_pmgUp = &gm_mgWaveVolume; - gm_mgMPEGVolume.mg_pmgDown = &gm_mgApply; - gm_mgMPEGVolume.mg_pOnSliderChange = NULL; - gm_mgMPEGVolume.mg_pActivatedFunction = NULL; - gm_lhGadgets.AddTail(gm_mgMPEGVolume.mg_lnNode); + gm_mgMPEGVolume.mg_boxOnScreen = BoxMediumRow(4); + gm_mgMPEGVolume.mg_strText = TRANS("MUSIC VOLUME"); + gm_mgMPEGVolume.mg_strTip = TRANS("adjust volume of in-game music"); + gm_mgMPEGVolume.mg_pmgUp = &gm_mgWaveVolume; + gm_mgMPEGVolume.mg_pmgDown = &gm_mgApply; + gm_mgMPEGVolume.mg_pOnSliderChange = NULL; + gm_mgMPEGVolume.mg_pActivatedFunction = NULL; + gm_lhGadgets.AddTail(gm_mgMPEGVolume.mg_lnNode); - gm_mgApply.mg_bfsFontSize = BFS_LARGE; - gm_mgApply.mg_boxOnScreen = BoxBigRow(4); - gm_mgApply.mg_strText = TRANS("APPLY"); - gm_mgApply.mg_strTip = TRANS("activate selected options"); - gm_lhGadgets.AddTail(gm_mgApply.mg_lnNode); - gm_mgApply.mg_pmgUp = &gm_mgMPEGVolume; - gm_mgApply.mg_pmgDown = &gm_mgAudioAutoTrigger; - gm_mgApply.mg_pActivatedFunction = NULL; + gm_mgApply.mg_bfsFontSize = BFS_LARGE; + gm_mgApply.mg_boxOnScreen = BoxBigRow(4); + gm_mgApply.mg_strText = TRANS("APPLY"); + gm_mgApply.mg_strTip = TRANS("activate selected options"); + gm_lhGadgets.AddTail(gm_mgApply.mg_lnNode); + gm_mgApply.mg_pmgUp = &gm_mgMPEGVolume; + gm_mgApply.mg_pmgDown = &gm_mgAudioAutoTrigger; + gm_mgApply.mg_pActivatedFunction = NULL; } void CAudioOptionsMenu::StartMenu(void) { - RefreshSoundFormat(); - CGameMenu::StartMenu(); + RefreshSoundFormat(); + CGameMenu::StartMenu(); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MConfirm.cpp b/Sources/SeriousSam/GUI/Menus/MConfirm.cpp index d7bc1b9..bdb21d5 100644 --- a/Sources/SeriousSam/GUI/Menus/MConfirm.cpp +++ b/Sources/SeriousSam/GUI/Menus/MConfirm.cpp @@ -19,64 +19,64 @@ with this program; if not, write to the Free Software Foundation, Inc., void CConfirmMenu::Initialize_t(void) { - gm_bPopup = TRUE; + gm_bPopup = TRUE; - gm_mgConfirmLabel.mg_strText = ""; - gm_lhGadgets.AddTail(gm_mgConfirmLabel.mg_lnNode); - gm_mgConfirmLabel.mg_boxOnScreen = BoxPopupLabel(); - gm_mgConfirmLabel.mg_iCenterI = 0; - gm_mgConfirmLabel.mg_bfsFontSize = BFS_LARGE; + gm_mgConfirmLabel.mg_strText = ""; + gm_lhGadgets.AddTail(gm_mgConfirmLabel.mg_lnNode); + gm_mgConfirmLabel.mg_boxOnScreen = BoxPopupLabel(); + gm_mgConfirmLabel.mg_iCenterI = 0; + gm_mgConfirmLabel.mg_bfsFontSize = BFS_LARGE; - gm_mgConfirmYes.mg_strText = TRANS("YES"); - gm_lhGadgets.AddTail(gm_mgConfirmYes.mg_lnNode); - gm_mgConfirmYes.mg_boxOnScreen = BoxPopupYesLarge(); - gm_mgConfirmYes.mg_pActivatedFunction = NULL; - gm_mgConfirmYes.mg_pmgLeft = - gm_mgConfirmYes.mg_pmgRight = &gm_mgConfirmNo; - gm_mgConfirmYes.mg_iCenterI = 1; - gm_mgConfirmYes.mg_bfsFontSize = BFS_LARGE; + gm_mgConfirmYes.mg_strText = TRANS("YES"); + gm_lhGadgets.AddTail(gm_mgConfirmYes.mg_lnNode); + gm_mgConfirmYes.mg_boxOnScreen = BoxPopupYesLarge(); + gm_mgConfirmYes.mg_pActivatedFunction = NULL; + gm_mgConfirmYes.mg_pmgLeft = + gm_mgConfirmYes.mg_pmgRight = &gm_mgConfirmNo; + gm_mgConfirmYes.mg_iCenterI = 1; + gm_mgConfirmYes.mg_bfsFontSize = BFS_LARGE; - gm_mgConfirmNo.mg_strText = TRANS("NO"); - gm_lhGadgets.AddTail(gm_mgConfirmNo.mg_lnNode); - gm_mgConfirmNo.mg_boxOnScreen = BoxPopupNoLarge(); - gm_mgConfirmNo.mg_pActivatedFunction = NULL; - gm_mgConfirmNo.mg_pmgLeft = - gm_mgConfirmNo.mg_pmgRight = &gm_mgConfirmYes; - gm_mgConfirmNo.mg_iCenterI = -1; - gm_mgConfirmNo.mg_bfsFontSize = BFS_LARGE; + gm_mgConfirmNo.mg_strText = TRANS("NO"); + gm_lhGadgets.AddTail(gm_mgConfirmNo.mg_lnNode); + gm_mgConfirmNo.mg_boxOnScreen = BoxPopupNoLarge(); + gm_mgConfirmNo.mg_pActivatedFunction = NULL; + gm_mgConfirmNo.mg_pmgLeft = + gm_mgConfirmNo.mg_pmgRight = &gm_mgConfirmYes; + gm_mgConfirmNo.mg_iCenterI = -1; + gm_mgConfirmNo.mg_bfsFontSize = BFS_LARGE; - _pConfimedYes = NULL; - _pConfimedNo = NULL; + _pConfimedYes = NULL; + _pConfimedNo = NULL; } void CConfirmMenu::BeLarge(void) { - gm_mgConfirmLabel.mg_bfsFontSize = BFS_LARGE; - gm_mgConfirmYes.mg_bfsFontSize = BFS_LARGE; - gm_mgConfirmNo.mg_bfsFontSize = BFS_LARGE; + gm_mgConfirmLabel.mg_bfsFontSize = BFS_LARGE; + gm_mgConfirmYes.mg_bfsFontSize = BFS_LARGE; + gm_mgConfirmNo.mg_bfsFontSize = BFS_LARGE; - gm_mgConfirmLabel.mg_iCenterI = 0; - gm_mgConfirmYes.mg_boxOnScreen = BoxPopupYesLarge(); - gm_mgConfirmNo.mg_boxOnScreen = BoxPopupNoLarge(); + gm_mgConfirmLabel.mg_iCenterI = 0; + gm_mgConfirmYes.mg_boxOnScreen = BoxPopupYesLarge(); + gm_mgConfirmNo.mg_boxOnScreen = BoxPopupNoLarge(); } void CConfirmMenu::BeSmall(void) { - gm_mgConfirmLabel.mg_bfsFontSize = BFS_MEDIUM; - gm_mgConfirmYes.mg_bfsFontSize = BFS_MEDIUM; - gm_mgConfirmNo.mg_bfsFontSize = BFS_MEDIUM; + gm_mgConfirmLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgConfirmYes.mg_bfsFontSize = BFS_MEDIUM; + gm_mgConfirmNo.mg_bfsFontSize = BFS_MEDIUM; - gm_mgConfirmLabel.mg_iCenterI = -1; - gm_mgConfirmYes.mg_boxOnScreen = BoxPopupYesSmall(); - gm_mgConfirmNo.mg_boxOnScreen = BoxPopupNoSmall(); + gm_mgConfirmLabel.mg_iCenterI = -1; + gm_mgConfirmYes.mg_boxOnScreen = BoxPopupYesSmall(); + gm_mgConfirmNo.mg_boxOnScreen = BoxPopupNoSmall(); } // return TRUE if handled BOOL CConfirmMenu::OnKeyDown(int iVKey) { - if ((iVKey == VK_ESCAPE || iVKey == VK_RBUTTON) && gm_mgConfirmNo.mg_pActivatedFunction != NULL) { - gm_mgConfirmNo.OnActivate(); - return TRUE; - } - return CGameMenu::OnKeyDown(iVKey); + if ((iVKey == VK_ESCAPE || iVKey == VK_RBUTTON) && gm_mgConfirmNo.mg_pActivatedFunction != NULL) { + gm_mgConfirmNo.OnActivate(); + return TRUE; + } + return CGameMenu::OnKeyDown(iVKey); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MControls.cpp b/Sources/SeriousSam/GUI/Menus/MControls.cpp index 5ec61a4..6d2b9b4 100644 --- a/Sources/SeriousSam/GUI/Menus/MControls.cpp +++ b/Sources/SeriousSam/GUI/Menus/MControls.cpp @@ -23,136 +23,136 @@ extern CTFileName _fnmControlsToCustomize; void CControlsMenu::Initialize_t(void) { - // intialize player and controls menu - gm_mgTitle.mg_boxOnScreen = BoxTitle(); - gm_mgTitle.mg_strText = TRANS("CONTROLS"); - gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + // intialize player and controls menu + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("CONTROLS"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); - gm_mgNameLabel.mg_strText = ""; - gm_mgNameLabel.mg_boxOnScreen = BoxMediumRow(0.0); - gm_mgNameLabel.mg_bfsFontSize = BFS_MEDIUM; - gm_mgNameLabel.mg_iCenterI = -1; - gm_mgNameLabel.mg_bEnabled = FALSE; - gm_mgNameLabel.mg_bLabel = TRUE; - gm_lhGadgets.AddTail(gm_mgNameLabel.mg_lnNode); + gm_mgNameLabel.mg_strText = ""; + gm_mgNameLabel.mg_boxOnScreen = BoxMediumRow(0.0); + gm_mgNameLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgNameLabel.mg_iCenterI = -1; + gm_mgNameLabel.mg_bEnabled = FALSE; + gm_mgNameLabel.mg_bLabel = TRUE; + gm_lhGadgets.AddTail(gm_mgNameLabel.mg_lnNode); - gm_mgButtons.mg_strText = TRANS("CUSTOMIZE BUTTONS"); - gm_mgButtons.mg_boxOnScreen = BoxMediumRow(2.0); - gm_mgButtons.mg_bfsFontSize = BFS_MEDIUM; - gm_mgButtons.mg_iCenterI = 0; - gm_lhGadgets.AddTail(gm_mgButtons.mg_lnNode); - gm_mgButtons.mg_pmgUp = &gm_mgPredefined; - gm_mgButtons.mg_pmgDown = &gm_mgAdvanced; - gm_mgButtons.mg_pActivatedFunction = NULL; - gm_mgButtons.mg_strTip = TRANS("customize buttons in current controls"); + gm_mgButtons.mg_strText = TRANS("CUSTOMIZE BUTTONS"); + gm_mgButtons.mg_boxOnScreen = BoxMediumRow(2.0); + gm_mgButtons.mg_bfsFontSize = BFS_MEDIUM; + gm_mgButtons.mg_iCenterI = 0; + gm_lhGadgets.AddTail(gm_mgButtons.mg_lnNode); + gm_mgButtons.mg_pmgUp = &gm_mgPredefined; + gm_mgButtons.mg_pmgDown = &gm_mgAdvanced; + gm_mgButtons.mg_pActivatedFunction = NULL; + gm_mgButtons.mg_strTip = TRANS("customize buttons in current controls"); - gm_mgAdvanced.mg_strText = TRANS("ADVANCED JOYSTICK SETUP"); - gm_mgAdvanced.mg_iCenterI = 0; - gm_mgAdvanced.mg_boxOnScreen = BoxMediumRow(3); - gm_mgAdvanced.mg_bfsFontSize = BFS_MEDIUM; - gm_lhGadgets.AddTail(gm_mgAdvanced.mg_lnNode); - gm_mgAdvanced.mg_pmgUp = &gm_mgButtons; - gm_mgAdvanced.mg_pmgDown = &gm_mgSensitivity; - gm_mgAdvanced.mg_pActivatedFunction = NULL; - gm_mgAdvanced.mg_strTip = TRANS("adjust advanced settings for joystick axis"); + gm_mgAdvanced.mg_strText = TRANS("ADVANCED JOYSTICK SETUP"); + gm_mgAdvanced.mg_iCenterI = 0; + gm_mgAdvanced.mg_boxOnScreen = BoxMediumRow(3); + gm_mgAdvanced.mg_bfsFontSize = BFS_MEDIUM; + gm_lhGadgets.AddTail(gm_mgAdvanced.mg_lnNode); + gm_mgAdvanced.mg_pmgUp = &gm_mgButtons; + gm_mgAdvanced.mg_pmgDown = &gm_mgSensitivity; + gm_mgAdvanced.mg_pActivatedFunction = NULL; + gm_mgAdvanced.mg_strTip = TRANS("adjust advanced settings for joystick axis"); - gm_mgSensitivity.mg_boxOnScreen = BoxMediumRow(4.5); - gm_mgSensitivity.mg_strText = TRANS("SENSITIVITY"); - gm_mgSensitivity.mg_pmgUp = &gm_mgAdvanced; - gm_mgSensitivity.mg_pmgDown = &gm_mgInvertTrigger; - gm_mgSensitivity.mg_strTip = TRANS("sensitivity for all axis in this control set"); - gm_lhGadgets.AddTail(gm_mgSensitivity.mg_lnNode); + gm_mgSensitivity.mg_boxOnScreen = BoxMediumRow(4.5); + gm_mgSensitivity.mg_strText = TRANS("SENSITIVITY"); + gm_mgSensitivity.mg_pmgUp = &gm_mgAdvanced; + gm_mgSensitivity.mg_pmgDown = &gm_mgInvertTrigger; + gm_mgSensitivity.mg_strTip = TRANS("sensitivity for all axis in this control set"); + gm_lhGadgets.AddTail(gm_mgSensitivity.mg_lnNode); - TRIGGER_MG(gm_mgInvertTrigger, 5.5, gm_mgSensitivity, gm_mgSmoothTrigger, - TRANS("INVERT LOOK"), astrNoYes); - gm_mgInvertTrigger.mg_strTip = TRANS("invert up/down looking"); - TRIGGER_MG(gm_mgSmoothTrigger, 6.5, gm_mgInvertTrigger, gm_mgAccelTrigger, - TRANS("SMOOTH AXIS"), astrNoYes); - gm_mgSmoothTrigger.mg_strTip = TRANS("smooth mouse/joystick movements"); - TRIGGER_MG(gm_mgAccelTrigger, 7.5, gm_mgSmoothTrigger, gm_mgIFeelTrigger, - TRANS("MOUSE ACCELERATION"), astrNoYes); - gm_mgAccelTrigger.mg_strTip = TRANS("allow mouse acceleration"); - TRIGGER_MG(gm_mgIFeelTrigger, 8.5, gm_mgAccelTrigger, gm_mgPredefined, - TRANS("ENABLE IFEEL"), astrNoYes); - gm_mgIFeelTrigger.mg_strTip = TRANS("enable support for iFeel tactile feedback mouse"); + TRIGGER_MG(gm_mgInvertTrigger, 5.5, gm_mgSensitivity, gm_mgSmoothTrigger, + TRANS("INVERT LOOK"), astrNoYes); + gm_mgInvertTrigger.mg_strTip = TRANS("invert up/down looking"); + TRIGGER_MG(gm_mgSmoothTrigger, 6.5, gm_mgInvertTrigger, gm_mgAccelTrigger, + TRANS("SMOOTH AXIS"), astrNoYes); + gm_mgSmoothTrigger.mg_strTip = TRANS("smooth mouse/joystick movements"); + TRIGGER_MG(gm_mgAccelTrigger, 7.5, gm_mgSmoothTrigger, gm_mgIFeelTrigger, + TRANS("MOUSE ACCELERATION"), astrNoYes); + gm_mgAccelTrigger.mg_strTip = TRANS("allow mouse acceleration"); + TRIGGER_MG(gm_mgIFeelTrigger, 8.5, gm_mgAccelTrigger, gm_mgPredefined, + TRANS("ENABLE IFEEL"), astrNoYes); + gm_mgIFeelTrigger.mg_strTip = TRANS("enable support for iFeel tactile feedback mouse"); - gm_mgPredefined.mg_strText = TRANS("LOAD PREDEFINED SETTINGS"); - gm_mgPredefined.mg_iCenterI = 0; - gm_mgPredefined.mg_boxOnScreen = BoxMediumRow(10); - gm_mgPredefined.mg_bfsFontSize = BFS_MEDIUM; - gm_lhGadgets.AddTail(gm_mgPredefined.mg_lnNode); - gm_mgPredefined.mg_pmgUp = &gm_mgIFeelTrigger; - gm_mgPredefined.mg_pmgDown = &gm_mgButtons; - gm_mgPredefined.mg_pActivatedFunction = NULL; - gm_mgPredefined.mg_strTip = TRANS("load one of several predefined control settings"); + gm_mgPredefined.mg_strText = TRANS("LOAD PREDEFINED SETTINGS"); + gm_mgPredefined.mg_iCenterI = 0; + gm_mgPredefined.mg_boxOnScreen = BoxMediumRow(10); + gm_mgPredefined.mg_bfsFontSize = BFS_MEDIUM; + gm_lhGadgets.AddTail(gm_mgPredefined.mg_lnNode); + gm_mgPredefined.mg_pmgUp = &gm_mgIFeelTrigger; + gm_mgPredefined.mg_pmgDown = &gm_mgButtons; + gm_mgPredefined.mg_pActivatedFunction = NULL; + gm_mgPredefined.mg_strTip = TRANS("load one of several predefined control settings"); } void CControlsMenu::StartMenu(void) { - gm_pmgSelectedByDefault = &gm_mgButtons; - INDEX iPlayer = _pGame->gm_iSinglePlayer; - if (_iLocalPlayer >= 0 && _iLocalPlayer<4) { - iPlayer = _pGame->gm_aiMenuLocalPlayers[_iLocalPlayer]; - } - _fnmControlsToCustomize.PrintF("Controls\\Controls%d.ctl", iPlayer); + gm_pmgSelectedByDefault = &gm_mgButtons; + INDEX iPlayer = _pGame->gm_iSinglePlayer; + if (_iLocalPlayer >= 0 && _iLocalPlayer<4) { + iPlayer = _pGame->gm_aiMenuLocalPlayers[_iLocalPlayer]; + } + _fnmControlsToCustomize.PrintF("Controls\\Controls%d.ctl", iPlayer); - ControlsMenuOn(); + ControlsMenuOn(); - gm_mgNameLabel.mg_strText.PrintF(TRANS("CONTROLS FOR: %s"), _pGame->gm_apcPlayers[iPlayer].GetNameForPrinting()); + gm_mgNameLabel.mg_strText.PrintF(TRANS("CONTROLS FOR: %s"), _pGame->gm_apcPlayers[iPlayer].GetNameForPrinting()); - ObtainActionSettings(); - CGameMenu::StartMenu(); + ObtainActionSettings(); + CGameMenu::StartMenu(); } void CControlsMenu::EndMenu(void) { - ApplyActionSettings(); + ApplyActionSettings(); - ControlsMenuOff(); + ControlsMenuOff(); - CGameMenu::EndMenu(); + CGameMenu::EndMenu(); } void CControlsMenu::ObtainActionSettings(void) { - CControls &ctrls = _pGame->gm_ctrlControlsExtra; + CControls &ctrls = _pGame->gm_ctrlControlsExtra; - gm_mgSensitivity.mg_iMinPos = 0; - gm_mgSensitivity.mg_iMaxPos = 50; - gm_mgSensitivity.mg_iCurPos = ctrls.ctrl_fSensitivity / 2; - gm_mgSensitivity.ApplyCurrentPosition(); + gm_mgSensitivity.mg_iMinPos = 0; + gm_mgSensitivity.mg_iMaxPos = 50; + gm_mgSensitivity.mg_iCurPos = ctrls.ctrl_fSensitivity / 2; + gm_mgSensitivity.ApplyCurrentPosition(); - gm_mgInvertTrigger.mg_iSelected = ctrls.ctrl_bInvertLook ? 1 : 0; - gm_mgSmoothTrigger.mg_iSelected = ctrls.ctrl_bSmoothAxes ? 1 : 0; - gm_mgAccelTrigger.mg_iSelected = _pShell->GetINDEX("inp_bAllowMouseAcceleration") ? 1 : 0; - gm_mgIFeelTrigger.mg_bEnabled = _pShell->GetINDEX("sys_bIFeelEnabled") ? 1 : 0; - gm_mgIFeelTrigger.mg_iSelected = _pShell->GetFLOAT("inp_fIFeelGain")>0 ? 1 : 0; + gm_mgInvertTrigger.mg_iSelected = ctrls.ctrl_bInvertLook ? 1 : 0; + gm_mgSmoothTrigger.mg_iSelected = ctrls.ctrl_bSmoothAxes ? 1 : 0; + gm_mgAccelTrigger.mg_iSelected = _pShell->GetINDEX("inp_bAllowMouseAcceleration") ? 1 : 0; + gm_mgIFeelTrigger.mg_bEnabled = _pShell->GetINDEX("sys_bIFeelEnabled") ? 1 : 0; + gm_mgIFeelTrigger.mg_iSelected = _pShell->GetFLOAT("inp_fIFeelGain")>0 ? 1 : 0; - gm_mgInvertTrigger.ApplyCurrentSelection(); - gm_mgSmoothTrigger.ApplyCurrentSelection(); - gm_mgAccelTrigger.ApplyCurrentSelection(); - gm_mgIFeelTrigger.ApplyCurrentSelection(); + gm_mgInvertTrigger.ApplyCurrentSelection(); + gm_mgSmoothTrigger.ApplyCurrentSelection(); + gm_mgAccelTrigger.ApplyCurrentSelection(); + gm_mgIFeelTrigger.ApplyCurrentSelection(); } void CControlsMenu::ApplyActionSettings(void) { - CControls &ctrls = _pGame->gm_ctrlControlsExtra; + CControls &ctrls = _pGame->gm_ctrlControlsExtra; - FLOAT fSensitivity = - FLOAT(gm_mgSensitivity.mg_iCurPos - gm_mgSensitivity.mg_iMinPos) / - FLOAT(gm_mgSensitivity.mg_iMaxPos - gm_mgSensitivity.mg_iMinPos)*100.0f; + FLOAT fSensitivity = + FLOAT(gm_mgSensitivity.mg_iCurPos - gm_mgSensitivity.mg_iMinPos) / + FLOAT(gm_mgSensitivity.mg_iMaxPos - gm_mgSensitivity.mg_iMinPos)*100.0f; - BOOL bInvert = gm_mgInvertTrigger.mg_iSelected != 0; - BOOL bSmooth = gm_mgSmoothTrigger.mg_iSelected != 0; - BOOL bAccel = gm_mgAccelTrigger.mg_iSelected != 0; - BOOL bIFeel = gm_mgIFeelTrigger.mg_iSelected != 0; + BOOL bInvert = gm_mgInvertTrigger.mg_iSelected != 0; + BOOL bSmooth = gm_mgSmoothTrigger.mg_iSelected != 0; + BOOL bAccel = gm_mgAccelTrigger.mg_iSelected != 0; + BOOL bIFeel = gm_mgIFeelTrigger.mg_iSelected != 0; - if (INDEX(ctrls.ctrl_fSensitivity) != INDEX(fSensitivity)) { - ctrls.ctrl_fSensitivity = fSensitivity; - } - ctrls.ctrl_bInvertLook = bInvert; - ctrls.ctrl_bSmoothAxes = bSmooth; - _pShell->SetINDEX("inp_bAllowMouseAcceleration", bAccel); - _pShell->SetFLOAT("inp_fIFeelGain", bIFeel ? 1.0f : 0.0f); - ctrls.CalculateInfluencesForAllAxis(); + if (INDEX(ctrls.ctrl_fSensitivity) != INDEX(fSensitivity)) { + ctrls.ctrl_fSensitivity = fSensitivity; + } + ctrls.ctrl_bInvertLook = bInvert; + ctrls.ctrl_bSmoothAxes = bSmooth; + _pShell->SetINDEX("inp_bAllowMouseAcceleration", bAccel); + _pShell->SetFLOAT("inp_fIFeelGain", bIFeel ? 1.0f : 0.0f); + ctrls.CalculateInfluencesForAllAxis(); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.cpp b/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.cpp index 9b9fc23..176c7a8 100644 --- a/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.cpp +++ b/Sources/SeriousSam/GUI/Menus/MCustomizeAxis.cpp @@ -21,135 +21,135 @@ with this program; if not, write to the Free Software Foundation, Inc., 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); + // 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_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"); + 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_astrTexts = new CTString[AXIS_ACTIONS_CT]; + gm_mgActionTrigger.mg_ctTexts = AXIS_ACTIONS_CT; - gm_mgActionTrigger.mg_pPreTriggerChange = NULL; - gm_mgActionTrigger.mg_pOnTriggerChange = NULL; + 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; + // 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); - } + 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_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"); + 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"); + 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; + 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; + 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_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_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_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_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(); + 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; + 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; + 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(); + 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(); + ControlsMenuOff(); } void CCustomizeAxisMenu::StartMenu(void) { - ObtainActionSettings(); + ObtainActionSettings(); - CGameMenu::StartMenu(); + CGameMenu::StartMenu(); } void CCustomizeAxisMenu::EndMenu(void) { - ApplyActionSettings(); - CGameMenu::EndMenu(); + ApplyActionSettings(); + CGameMenu::EndMenu(); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp b/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp index c9ab6bf..0290f8b 100644 --- a/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp +++ b/Sources/SeriousSam/GUI/Menus/MCustomizeKeyboard.cpp @@ -21,91 +21,91 @@ with this program; if not, write to the Free Software Foundation, Inc., 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++; - } + 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; + // 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); + // 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(); + ControlsMenuOn(); + gm_iListOffset = 0; + gm_ctListTotal = _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions.Count(); + gm_iListWantedItem = 0; + CGameMenu::StartMenu(); } void CCustomizeKeyboardMenu::EndMenu(void) { - ControlsMenuOff(); - CGameMenu::EndMenu(); + ControlsMenuOff(); + CGameMenu::EndMenu(); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MDisabled.cpp b/Sources/SeriousSam/GUI/Menus/MDisabled.cpp index 8c61de8..1d88736 100644 --- a/Sources/SeriousSam/GUI/Menus/MDisabled.cpp +++ b/Sources/SeriousSam/GUI/Menus/MDisabled.cpp @@ -20,11 +20,11 @@ with this program; if not, write to the Free Software Foundation, Inc., void CDisabledMenu::Initialize_t(void) { - gm_mgTitle.mg_boxOnScreen = BoxTitle(); - gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); - gm_mgButton.mg_bfsFontSize = BFS_MEDIUM; - gm_mgButton.mg_boxOnScreen = BoxBigRow(0.0f); - gm_lhGadgets.AddTail(gm_mgButton.mg_lnNode); - gm_mgButton.mg_pActivatedFunction = NULL; + gm_mgButton.mg_bfsFontSize = BFS_MEDIUM; + gm_mgButton.mg_boxOnScreen = BoxBigRow(0.0f); + gm_lhGadgets.AddTail(gm_mgButton.mg_lnNode); + gm_mgButton.mg_pActivatedFunction = NULL; } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MHighScore.cpp b/Sources/SeriousSam/GUI/Menus/MHighScore.cpp index 67077a4..2cf53a9 100644 --- a/Sources/SeriousSam/GUI/Menus/MHighScore.cpp +++ b/Sources/SeriousSam/GUI/Menus/MHighScore.cpp @@ -20,16 +20,16 @@ with this program; if not, write to the Free Software Foundation, Inc., 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_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); + 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(); + gm_pgmParentMenu = pgmCurrentMenu; + CGameMenu::StartMenu(); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MInGame.cpp b/Sources/SeriousSam/GUI/Menus/MInGame.cpp index 3673783..0fcaeeb 100644 --- a/Sources/SeriousSam/GUI/Menus/MInGame.cpp +++ b/Sources/SeriousSam/GUI/Menus/MInGame.cpp @@ -20,154 +20,154 @@ with this program; if not, write to the Free Software Foundation, Inc., void CInGameMenu::Initialize_t(void) { - // intialize main menu - gm_mgTitle.mg_strText = TRANS("GAME"); - gm_mgTitle.mg_boxOnScreen = BoxTitle(); - gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + // intialize main menu + gm_mgTitle.mg_strText = TRANS("GAME"); + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); - gm_mgLabel1.mg_strText = ""; - gm_mgLabel1.mg_boxOnScreen = BoxMediumRow(-2.0); - gm_mgLabel1.mg_bfsFontSize = BFS_MEDIUM; - gm_mgLabel1.mg_iCenterI = -1; - gm_mgLabel1.mg_bEnabled = FALSE; - gm_mgLabel1.mg_bLabel = TRUE; - gm_lhGadgets.AddTail(gm_mgLabel1.mg_lnNode); + gm_mgLabel1.mg_strText = ""; + gm_mgLabel1.mg_boxOnScreen = BoxMediumRow(-2.0); + gm_mgLabel1.mg_bfsFontSize = BFS_MEDIUM; + gm_mgLabel1.mg_iCenterI = -1; + gm_mgLabel1.mg_bEnabled = FALSE; + gm_mgLabel1.mg_bLabel = TRUE; + gm_lhGadgets.AddTail(gm_mgLabel1.mg_lnNode); - gm_mgLabel2.mg_strText = ""; - gm_mgLabel2.mg_boxOnScreen = BoxMediumRow(-1.0); - gm_mgLabel2.mg_bfsFontSize = BFS_MEDIUM; - gm_mgLabel2.mg_iCenterI = -1; - gm_mgLabel2.mg_bEnabled = FALSE; - gm_mgLabel2.mg_bLabel = TRUE; - gm_lhGadgets.AddTail(gm_mgLabel2.mg_lnNode); + gm_mgLabel2.mg_strText = ""; + gm_mgLabel2.mg_boxOnScreen = BoxMediumRow(-1.0); + gm_mgLabel2.mg_bfsFontSize = BFS_MEDIUM; + gm_mgLabel2.mg_iCenterI = -1; + gm_mgLabel2.mg_bEnabled = FALSE; + gm_mgLabel2.mg_bLabel = TRUE; + gm_lhGadgets.AddTail(gm_mgLabel2.mg_lnNode); - gm_mgQuickLoad.mg_strText = TRANS("QUICK LOAD"); - gm_mgQuickLoad.mg_bfsFontSize = BFS_LARGE; - gm_mgQuickLoad.mg_boxOnScreen = BoxBigRow(0.0f); - gm_mgQuickLoad.mg_strTip = TRANS("load a quick-saved game (F9)"); - gm_lhGadgets.AddTail(gm_mgQuickLoad.mg_lnNode); - gm_mgQuickLoad.mg_pmgUp = &gm_mgQuit; - gm_mgQuickLoad.mg_pmgDown = &gm_mgQuickSave; - gm_mgQuickLoad.mg_pActivatedFunction = NULL; + gm_mgQuickLoad.mg_strText = TRANS("QUICK LOAD"); + gm_mgQuickLoad.mg_bfsFontSize = BFS_LARGE; + gm_mgQuickLoad.mg_boxOnScreen = BoxBigRow(0.0f); + gm_mgQuickLoad.mg_strTip = TRANS("load a quick-saved game (F9)"); + gm_lhGadgets.AddTail(gm_mgQuickLoad.mg_lnNode); + gm_mgQuickLoad.mg_pmgUp = &gm_mgQuit; + gm_mgQuickLoad.mg_pmgDown = &gm_mgQuickSave; + gm_mgQuickLoad.mg_pActivatedFunction = NULL; - gm_mgQuickSave.mg_strText = TRANS("QUICK SAVE"); - gm_mgQuickSave.mg_bfsFontSize = BFS_LARGE; - gm_mgQuickSave.mg_boxOnScreen = BoxBigRow(1.0f); - gm_mgQuickSave.mg_strTip = TRANS("quick-save current game (F6)"); - gm_lhGadgets.AddTail(gm_mgQuickSave.mg_lnNode); - gm_mgQuickSave.mg_pmgUp = &gm_mgQuickLoad; - gm_mgQuickSave.mg_pmgDown = &gm_mgLoad; - gm_mgQuickSave.mg_pActivatedFunction = NULL; + gm_mgQuickSave.mg_strText = TRANS("QUICK SAVE"); + gm_mgQuickSave.mg_bfsFontSize = BFS_LARGE; + gm_mgQuickSave.mg_boxOnScreen = BoxBigRow(1.0f); + gm_mgQuickSave.mg_strTip = TRANS("quick-save current game (F6)"); + gm_lhGadgets.AddTail(gm_mgQuickSave.mg_lnNode); + gm_mgQuickSave.mg_pmgUp = &gm_mgQuickLoad; + gm_mgQuickSave.mg_pmgDown = &gm_mgLoad; + gm_mgQuickSave.mg_pActivatedFunction = NULL; - gm_mgLoad.mg_strText = TRANS("LOAD"); - gm_mgLoad.mg_bfsFontSize = BFS_LARGE; - gm_mgLoad.mg_boxOnScreen = BoxBigRow(2.0f); - gm_mgLoad.mg_strTip = TRANS("load a saved game"); - gm_lhGadgets.AddTail(gm_mgLoad.mg_lnNode); - gm_mgLoad.mg_pmgUp = &gm_mgQuickSave; - gm_mgLoad.mg_pmgDown = &gm_mgSave; - gm_mgLoad.mg_pActivatedFunction = NULL; + gm_mgLoad.mg_strText = TRANS("LOAD"); + gm_mgLoad.mg_bfsFontSize = BFS_LARGE; + gm_mgLoad.mg_boxOnScreen = BoxBigRow(2.0f); + gm_mgLoad.mg_strTip = TRANS("load a saved game"); + gm_lhGadgets.AddTail(gm_mgLoad.mg_lnNode); + gm_mgLoad.mg_pmgUp = &gm_mgQuickSave; + gm_mgLoad.mg_pmgDown = &gm_mgSave; + gm_mgLoad.mg_pActivatedFunction = NULL; - gm_mgSave.mg_strText = TRANS("SAVE"); - gm_mgSave.mg_bfsFontSize = BFS_LARGE; - gm_mgSave.mg_boxOnScreen = BoxBigRow(3.0f); - gm_mgSave.mg_strTip = TRANS("save current game (each player has own slots!)"); - gm_lhGadgets.AddTail(gm_mgSave.mg_lnNode); - gm_mgSave.mg_pmgUp = &gm_mgLoad; - gm_mgSave.mg_pmgDown = &gm_mgDemoRec; - gm_mgSave.mg_pActivatedFunction = NULL; + gm_mgSave.mg_strText = TRANS("SAVE"); + gm_mgSave.mg_bfsFontSize = BFS_LARGE; + gm_mgSave.mg_boxOnScreen = BoxBigRow(3.0f); + gm_mgSave.mg_strTip = TRANS("save current game (each player has own slots!)"); + gm_lhGadgets.AddTail(gm_mgSave.mg_lnNode); + gm_mgSave.mg_pmgUp = &gm_mgLoad; + gm_mgSave.mg_pmgDown = &gm_mgDemoRec; + gm_mgSave.mg_pActivatedFunction = NULL; - gm_mgDemoRec.mg_boxOnScreen = BoxBigRow(4.0f); - gm_mgDemoRec.mg_bfsFontSize = BFS_LARGE; - gm_mgDemoRec.mg_pmgUp = &gm_mgSave; - gm_mgDemoRec.mg_pmgDown = &gm_mgHighScore; - gm_mgDemoRec.mg_strText = "Text not set"; - gm_lhGadgets.AddTail(gm_mgDemoRec.mg_lnNode); - gm_mgDemoRec.mg_pActivatedFunction = NULL; + gm_mgDemoRec.mg_boxOnScreen = BoxBigRow(4.0f); + gm_mgDemoRec.mg_bfsFontSize = BFS_LARGE; + gm_mgDemoRec.mg_pmgUp = &gm_mgSave; + gm_mgDemoRec.mg_pmgDown = &gm_mgHighScore; + gm_mgDemoRec.mg_strText = "Text not set"; + gm_lhGadgets.AddTail(gm_mgDemoRec.mg_lnNode); + gm_mgDemoRec.mg_pActivatedFunction = NULL; - gm_mgHighScore.mg_strText = TRANS("HIGH SCORES"); - gm_mgHighScore.mg_bfsFontSize = BFS_LARGE; - gm_mgHighScore.mg_boxOnScreen = BoxBigRow(5.0f); - gm_mgHighScore.mg_strTip = TRANS("view list of top ten best scores"); - gm_lhGadgets.AddTail(gm_mgHighScore.mg_lnNode); - gm_mgHighScore.mg_pmgUp = &gm_mgDemoRec; - gm_mgHighScore.mg_pmgDown = &gm_mgOptions; - gm_mgHighScore.mg_pActivatedFunction = NULL; + gm_mgHighScore.mg_strText = TRANS("HIGH SCORES"); + gm_mgHighScore.mg_bfsFontSize = BFS_LARGE; + gm_mgHighScore.mg_boxOnScreen = BoxBigRow(5.0f); + gm_mgHighScore.mg_strTip = TRANS("view list of top ten best scores"); + gm_lhGadgets.AddTail(gm_mgHighScore.mg_lnNode); + gm_mgHighScore.mg_pmgUp = &gm_mgDemoRec; + gm_mgHighScore.mg_pmgDown = &gm_mgOptions; + gm_mgHighScore.mg_pActivatedFunction = NULL; - gm_mgOptions.mg_strText = TRANS("OPTIONS"); - gm_mgOptions.mg_bfsFontSize = BFS_LARGE; - gm_mgOptions.mg_boxOnScreen = BoxBigRow(6.0f); - gm_mgOptions.mg_strTip = TRANS("adjust video, audio and input options"); - gm_lhGadgets.AddTail(gm_mgOptions.mg_lnNode); - gm_mgOptions.mg_pmgUp = &gm_mgHighScore; - gm_mgOptions.mg_pmgDown = &gm_mgStop; - gm_mgOptions.mg_pActivatedFunction = NULL; + gm_mgOptions.mg_strText = TRANS("OPTIONS"); + gm_mgOptions.mg_bfsFontSize = BFS_LARGE; + gm_mgOptions.mg_boxOnScreen = BoxBigRow(6.0f); + gm_mgOptions.mg_strTip = TRANS("adjust video, audio and input options"); + gm_lhGadgets.AddTail(gm_mgOptions.mg_lnNode); + gm_mgOptions.mg_pmgUp = &gm_mgHighScore; + gm_mgOptions.mg_pmgDown = &gm_mgStop; + gm_mgOptions.mg_pActivatedFunction = NULL; - gm_mgStop.mg_strText = TRANS("STOP GAME"); - gm_mgStop.mg_bfsFontSize = BFS_LARGE; - gm_mgStop.mg_boxOnScreen = BoxBigRow(7.0f); - gm_mgStop.mg_strTip = TRANS("stop currently running game"); - gm_lhGadgets.AddTail(gm_mgStop.mg_lnNode); - gm_mgStop.mg_pmgUp = &gm_mgOptions; - gm_mgStop.mg_pmgDown = &gm_mgQuit; - gm_mgStop.mg_pActivatedFunction = NULL; + gm_mgStop.mg_strText = TRANS("STOP GAME"); + gm_mgStop.mg_bfsFontSize = BFS_LARGE; + gm_mgStop.mg_boxOnScreen = BoxBigRow(7.0f); + gm_mgStop.mg_strTip = TRANS("stop currently running game"); + gm_lhGadgets.AddTail(gm_mgStop.mg_lnNode); + gm_mgStop.mg_pmgUp = &gm_mgOptions; + gm_mgStop.mg_pmgDown = &gm_mgQuit; + gm_mgStop.mg_pActivatedFunction = NULL; - gm_mgQuit.mg_strText = TRANS("QUIT"); - gm_mgQuit.mg_bfsFontSize = BFS_LARGE; - gm_mgQuit.mg_boxOnScreen = BoxBigRow(8.0f); - gm_mgQuit.mg_strTip = TRANS("exit game immediately"); - gm_lhGadgets.AddTail(gm_mgQuit.mg_lnNode); - gm_mgQuit.mg_pmgUp = &gm_mgStop; - gm_mgQuit.mg_pmgDown = &gm_mgQuickLoad; - gm_mgQuit.mg_pActivatedFunction = NULL; + gm_mgQuit.mg_strText = TRANS("QUIT"); + gm_mgQuit.mg_bfsFontSize = BFS_LARGE; + gm_mgQuit.mg_boxOnScreen = BoxBigRow(8.0f); + gm_mgQuit.mg_strTip = TRANS("exit game immediately"); + gm_lhGadgets.AddTail(gm_mgQuit.mg_lnNode); + gm_mgQuit.mg_pmgUp = &gm_mgStop; + gm_mgQuit.mg_pmgDown = &gm_mgQuickLoad; + gm_mgQuit.mg_pActivatedFunction = NULL; } void CInGameMenu::StartMenu(void) { - gm_mgQuickLoad.mg_bEnabled = _pNetwork->IsServer(); - gm_mgQuickSave.mg_bEnabled = _pNetwork->IsServer(); - gm_mgLoad.mg_bEnabled = _pNetwork->IsServer(); - gm_mgSave.mg_bEnabled = _pNetwork->IsServer(); - gm_mgDemoRec.mg_bEnabled = TRUE;//_pNetwork->IsServer(); - extern void SetDemoStartStopRecText(); - SetDemoStartStopRecText(); + gm_mgQuickLoad.mg_bEnabled = _pNetwork->IsServer(); + gm_mgQuickSave.mg_bEnabled = _pNetwork->IsServer(); + gm_mgLoad.mg_bEnabled = _pNetwork->IsServer(); + gm_mgSave.mg_bEnabled = _pNetwork->IsServer(); + gm_mgDemoRec.mg_bEnabled = TRUE;//_pNetwork->IsServer(); + extern void SetDemoStartStopRecText(); + SetDemoStartStopRecText(); - if (_gmRunningGameMode == GM_SINGLE_PLAYER) { - CPlayerCharacter &pc = _pGame->gm_apcPlayers[_pGame->gm_iSinglePlayer]; - gm_mgLabel1.mg_strText.PrintF(TRANS("Player: %s"), pc.GetNameForPrinting()); - gm_mgLabel2.mg_strText = ""; + if (_gmRunningGameMode == GM_SINGLE_PLAYER) { + CPlayerCharacter &pc = _pGame->gm_apcPlayers[_pGame->gm_iSinglePlayer]; + gm_mgLabel1.mg_strText.PrintF(TRANS("Player: %s"), pc.GetNameForPrinting()); + gm_mgLabel2.mg_strText = ""; - } else { - if (_pNetwork->IsServer()) { + } else { + if (_pNetwork->IsServer()) { - CTString strHost, strAddress; - CTString strHostName; - _pNetwork->GetHostName(strHost, strAddress); - if (strHost == "") { - strHostName = TRANS(""); - } - else { - strHostName = strHost + " (" + strAddress + ")"; - } + CTString strHost, strAddress; + CTString strHostName; + _pNetwork->GetHostName(strHost, strAddress); + if (strHost == "") { + strHostName = TRANS(""); + } + else { + strHostName = strHost + " (" + strAddress + ")"; + } - gm_mgLabel1.mg_strText = TRANS("Address: ") + strHostName; - gm_mgLabel2.mg_strText = ""; + gm_mgLabel1.mg_strText = TRANS("Address: ") + strHostName; + gm_mgLabel2.mg_strText = ""; - } else { + } else { - CTString strConfig; - strConfig = TRANS(""); - extern CTString sam_strNetworkSettings; - if (sam_strNetworkSettings != "") { - LoadStringVar(CTFileName(sam_strNetworkSettings).NoExt() + ".des", strConfig); - strConfig.OnlyFirstLine(); - } + CTString strConfig; + strConfig = TRANS(""); + extern CTString sam_strNetworkSettings; + if (sam_strNetworkSettings != "") { + LoadStringVar(CTFileName(sam_strNetworkSettings).NoExt() + ".des", strConfig); + strConfig.OnlyFirstLine(); + } - gm_mgLabel1.mg_strText = TRANS("Connected to: ") + _pGame->gam_strJoinAddress; - gm_mgLabel2.mg_strText = TRANS("Connection: ") + strConfig; - } - } + gm_mgLabel1.mg_strText = TRANS("Connected to: ") + _pGame->gam_strJoinAddress; + gm_mgLabel2.mg_strText = TRANS("Connection: ") + strConfig; + } + } - CGameMenu::StartMenu(); + CGameMenu::StartMenu(); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MLevels.cpp b/Sources/SeriousSam/GUI/Menus/MLevels.cpp index 141236f..efae5f1 100644 --- a/Sources/SeriousSam/GUI/Menus/MLevels.cpp +++ b/Sources/SeriousSam/GUI/Menus/MLevels.cpp @@ -21,91 +21,91 @@ with this program; if not, write to the Free Software Foundation, Inc., void CLevelsMenu::Initialize_t(void) { - gm_mgTitle.mg_boxOnScreen = BoxTitle(); - gm_mgTitle.mg_strText = TRANS("CHOOSE LEVEL"); - gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("CHOOSE LEVEL"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); - for (INDEX iLabel = 0; iLabel"); - gm_mgManualLevel[i].mg_iInList = -2; - } + // disable all items first + for (INDEX i = 0; i"); + gm_mgManualLevel[i].mg_iInList = -2; + } - BOOL bHasFirst = FALSE; - BOOL bHasLast = FALSE; - INDEX ctLabels = _lhFilteredLevels.Count(); - INDEX iLabel = 0; - FOREACHINLIST(CLevelInfo, li_lnNode, _lhFilteredLevels, itli) { - CLevelInfo &li = *itli; - INDEX iInMenu = iLabel - gm_iListOffset; - if ((iLabel >= gm_iListOffset) && - (iLabel<(gm_iListOffset + LEVELS_ON_SCREEN))) - { - bHasFirst |= (iLabel == 0); - bHasLast |= (iLabel == ctLabels - 1); - gm_mgManualLevel[iInMenu].mg_strText = li.li_strName; - gm_mgManualLevel[iInMenu].mg_fnmLevel = li.li_fnLevel; - gm_mgManualLevel[iInMenu].mg_bEnabled = TRUE; - gm_mgManualLevel[iInMenu].mg_iInList = iLabel; - } - iLabel++; - } + BOOL bHasFirst = FALSE; + BOOL bHasLast = FALSE; + INDEX ctLabels = _lhFilteredLevels.Count(); + INDEX iLabel = 0; + FOREACHINLIST(CLevelInfo, li_lnNode, _lhFilteredLevels, itli) { + CLevelInfo &li = *itli; + INDEX iInMenu = iLabel - gm_iListOffset; + if ((iLabel >= gm_iListOffset) && + (iLabel<(gm_iListOffset + LEVELS_ON_SCREEN))) + { + bHasFirst |= (iLabel == 0); + bHasLast |= (iLabel == ctLabels - 1); + gm_mgManualLevel[iInMenu].mg_strText = li.li_strName; + gm_mgManualLevel[iInMenu].mg_fnmLevel = li.li_fnLevel; + gm_mgManualLevel[iInMenu].mg_bEnabled = TRUE; + gm_mgManualLevel[iInMenu].mg_iInList = iLabel; + } + iLabel++; + } - // enable/disable up/down arrows - gm_mgArrowUp.mg_bEnabled = !bHasFirst && ctLabels>0; - gm_mgArrowDn.mg_bEnabled = !bHasLast && ctLabels>0; + // enable/disable up/down arrows + gm_mgArrowUp.mg_bEnabled = !bHasFirst && ctLabels>0; + gm_mgArrowDn.mg_bEnabled = !bHasLast && ctLabels>0; } void CLevelsMenu::StartMenu(void) { - // set default parameters for the list - gm_iListOffset = 0; - gm_ctListTotal = _lhFilteredLevels.Count(); - gm_iListWantedItem = 0; - // for each level - INDEX i = 0; - FOREACHINLIST(CLevelInfo, li_lnNode, _lhFilteredLevels, itlid) { - CLevelInfo &lid = *itlid; - // if it is the chosen one - if (lid.li_fnLevel == _pGame->gam_strCustomLevel) { - // demand focus on it - gm_iListWantedItem = i; - break; - } - i++; - } - CGameMenu::StartMenu(); + // set default parameters for the list + gm_iListOffset = 0; + gm_ctListTotal = _lhFilteredLevels.Count(); + gm_iListWantedItem = 0; + // for each level + INDEX i = 0; + FOREACHINLIST(CLevelInfo, li_lnNode, _lhFilteredLevels, itlid) { + CLevelInfo &lid = *itlid; + // if it is the chosen one + if (lid.li_fnLevel == _pGame->gam_strCustomLevel) { + // demand focus on it + gm_iListWantedItem = i; + break; + } + i++; + } + CGameMenu::StartMenu(); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MLoadSave.cpp b/Sources/SeriousSam/GUI/Menus/MLoadSave.cpp index 75951ed..87a3c87 100644 --- a/Sources/SeriousSam/GUI/Menus/MLoadSave.cpp +++ b/Sources/SeriousSam/GUI/Menus/MLoadSave.cpp @@ -21,215 +21,215 @@ with this program; if not, write to the Free Software Foundation, Inc., void CLoadSaveMenu::Initialize_t(void) { - gm_pgmNextMenu = NULL; + gm_pgmNextMenu = NULL; - gm_mgTitle.mg_boxOnScreen = BoxTitle(); - gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); - gm_mgNotes.mg_boxOnScreen = BoxMediumRow(10.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_boxOnScreen = BoxMediumRow(10.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); - for (INDEX iLabel = 0; iLabel afnmDir; - MakeDirList(afnmDir, gm_fnmDirectory, "", 0); - gm_iLastFile = -1; + // list the directory + CDynamicStackArray afnmDir; + MakeDirList(afnmDir, gm_fnmDirectory, "", 0); + gm_iLastFile = -1; - // for each file in the directory - for (INDEX i = 0; ifi_fnFile = fnm; - pfi->fi_strName = strName; - // add it to list - gm_lhFileInfos.AddTail(pfi->fi_lnNode); - } - } + // if it can be parsed + CTString strName; + if (ParseFile(fnm, strName)) { + // create new info for that file + CFileInfo *pfi = new CFileInfo; + pfi->fi_fnFile = fnm; + pfi->fi_strName = strName; + // add it to list + gm_lhFileInfos.AddTail(pfi->fi_lnNode); + } + } - // sort if needed - switch (gm_iSortType) { - default: ASSERT(FALSE); - case LSSORT_NONE: break; - case LSSORT_NAMEUP: - gm_lhFileInfos.Sort(qsort_CompareFileInfos_NameUp, offsetof(CFileInfo, fi_lnNode)); - break; - case LSSORT_NAMEDN: - gm_lhFileInfos.Sort(qsort_CompareFileInfos_NameDn, offsetof(CFileInfo, fi_lnNode)); - break; - case LSSORT_FILEUP: - gm_lhFileInfos.Sort(qsort_CompareFileInfos_FileUp, offsetof(CFileInfo, fi_lnNode)); - break; - case LSSORT_FILEDN: - gm_lhFileInfos.Sort(qsort_CompareFileInfos_FileDn, offsetof(CFileInfo, fi_lnNode)); - break; - } + // sort if needed + switch (gm_iSortType) { + default: ASSERT(FALSE); + case LSSORT_NONE: break; + case LSSORT_NAMEUP: + gm_lhFileInfos.Sort(qsort_CompareFileInfos_NameUp, offsetof(CFileInfo, fi_lnNode)); + break; + case LSSORT_NAMEDN: + gm_lhFileInfos.Sort(qsort_CompareFileInfos_NameDn, offsetof(CFileInfo, fi_lnNode)); + break; + case LSSORT_FILEUP: + gm_lhFileInfos.Sort(qsort_CompareFileInfos_FileUp, offsetof(CFileInfo, fi_lnNode)); + break; + case LSSORT_FILEDN: + gm_lhFileInfos.Sort(qsort_CompareFileInfos_FileDn, offsetof(CFileInfo, fi_lnNode)); + break; + } - // if saving - if (gm_bSave) { - // add one info as empty slot - CFileInfo *pfi = new CFileInfo; - CTString strNumber; - strNumber.PrintF("%04d", gm_iLastFile + 1); - pfi->fi_fnFile = gm_fnmDirectory + gm_fnmBaseName + strNumber + gm_fnmExt; - pfi->fi_strName = EMPTYSLOTSTRING; - // add it to beginning - gm_lhFileInfos.AddHead(pfi->fi_lnNode); - } + // if saving + if (gm_bSave) { + // add one info as empty slot + CFileInfo *pfi = new CFileInfo; + CTString strNumber; + strNumber.PrintF("%04d", gm_iLastFile + 1); + pfi->fi_fnFile = gm_fnmDirectory + gm_fnmBaseName + strNumber + gm_fnmExt; + pfi->fi_strName = EMPTYSLOTSTRING; + // add it to beginning + gm_lhFileInfos.AddHead(pfi->fi_lnNode); + } - // set default parameters for the list - gm_iListOffset = 0; - gm_ctListTotal = gm_lhFileInfos.Count(); + // set default parameters for the list + gm_iListOffset = 0; + gm_ctListTotal = gm_lhFileInfos.Count(); - // find which one should be selected - gm_iListWantedItem = 0; - if (gm_fnmSelected != "") { - INDEX i = 0; - FOREACHINLIST(CFileInfo, fi_lnNode, gm_lhFileInfos, itfi) { - CFileInfo &fi = *itfi; - if (fi.fi_fnFile == gm_fnmSelected) { - gm_iListWantedItem = i; - break; - } - i++; - } - } + // find which one should be selected + gm_iListWantedItem = 0; + if (gm_fnmSelected != "") { + INDEX i = 0; + FOREACHINLIST(CFileInfo, fi_lnNode, gm_lhFileInfos, itfi) { + CFileInfo &fi = *itfi; + if (fi.fi_fnFile == gm_fnmSelected) { + gm_iListWantedItem = i; + break; + } + i++; + } + } - CGameMenu::StartMenu(); + CGameMenu::StartMenu(); } void CLoadSaveMenu::EndMenu(void) { - // delete all file infos - FORDELETELIST(CFileInfo, fi_lnNode, gm_lhFileInfos, itfi) { - delete &itfi.Current(); - } - gm_pgmNextMenu = NULL; - CGameMenu::EndMenu(); + // delete all file infos + FORDELETELIST(CFileInfo, fi_lnNode, gm_lhFileInfos, itfi) { + delete &itfi.Current(); + } + gm_pgmNextMenu = NULL; + CGameMenu::EndMenu(); } void CLoadSaveMenu::FillListItems(void) { - // disable all items first - for (INDEX i = 0; i"); - gm_amgButton[i].mg_strTip = ""; - gm_amgButton[i].mg_iInList = -2; - } + // disable all items first + for (INDEX i = 0; i"); + gm_amgButton[i].mg_strTip = ""; + gm_amgButton[i].mg_iInList = -2; + } - BOOL bHasFirst = FALSE; - BOOL bHasLast = FALSE; - INDEX ctLabels = gm_lhFileInfos.Count(); - INDEX iLabel = 0; - FOREACHINLIST(CFileInfo, fi_lnNode, gm_lhFileInfos, itfi) { - CFileInfo &fi = *itfi; - INDEX iInMenu = iLabel - gm_iListOffset; - if ((iLabel >= gm_iListOffset) && - (iLabel<(gm_iListOffset + SAVELOAD_BUTTONS_CT))) - { - bHasFirst |= (iLabel == 0); - bHasLast |= (iLabel == ctLabels - 1); - gm_amgButton[iInMenu].mg_iInList = iLabel; - gm_amgButton[iInMenu].mg_strDes = fi.fi_strName; - gm_amgButton[iInMenu].mg_fnm = fi.fi_fnFile; - gm_amgButton[iInMenu].mg_bEnabled = TRUE; - gm_amgButton[iInMenu].RefreshText(); - if (gm_bSave) { - if (!FileExistsForWriting(gm_amgButton[iInMenu].mg_fnm)) { - gm_amgButton[iInMenu].mg_strTip = TRANS("Enter - save in new slot"); - } - else { - gm_amgButton[iInMenu].mg_strTip = TRANS("Enter - save here, F2 - rename, Del - delete"); - } - } - else if (gm_bManage) { - gm_amgButton[iInMenu].mg_strTip = TRANS("Enter - load this, F2 - rename, Del - delete"); - } - else { - gm_amgButton[iInMenu].mg_strTip = TRANS("Enter - load this"); - } - } - iLabel++; - } + BOOL bHasFirst = FALSE; + BOOL bHasLast = FALSE; + INDEX ctLabels = gm_lhFileInfos.Count(); + INDEX iLabel = 0; + FOREACHINLIST(CFileInfo, fi_lnNode, gm_lhFileInfos, itfi) { + CFileInfo &fi = *itfi; + INDEX iInMenu = iLabel - gm_iListOffset; + if ((iLabel >= gm_iListOffset) && + (iLabel<(gm_iListOffset + SAVELOAD_BUTTONS_CT))) + { + bHasFirst |= (iLabel == 0); + bHasLast |= (iLabel == ctLabels - 1); + gm_amgButton[iInMenu].mg_iInList = iLabel; + gm_amgButton[iInMenu].mg_strDes = fi.fi_strName; + gm_amgButton[iInMenu].mg_fnm = fi.fi_fnFile; + gm_amgButton[iInMenu].mg_bEnabled = TRUE; + gm_amgButton[iInMenu].RefreshText(); + if (gm_bSave) { + if (!FileExistsForWriting(gm_amgButton[iInMenu].mg_fnm)) { + gm_amgButton[iInMenu].mg_strTip = TRANS("Enter - save in new slot"); + } + else { + gm_amgButton[iInMenu].mg_strTip = TRANS("Enter - save here, F2 - rename, Del - delete"); + } + } + else if (gm_bManage) { + gm_amgButton[iInMenu].mg_strTip = TRANS("Enter - load this, F2 - rename, Del - delete"); + } + else { + gm_amgButton[iInMenu].mg_strTip = TRANS("Enter - load this"); + } + } + iLabel++; + } - // enable/disable up/down arrows - gm_mgArrowUp.mg_bEnabled = !bHasFirst && ctLabels>0; - gm_mgArrowDn.mg_bEnabled = !bHasLast && ctLabels>0; + // enable/disable up/down arrows + gm_mgArrowUp.mg_bEnabled = !bHasFirst && ctLabels>0; + gm_mgArrowDn.mg_bEnabled = !bHasLast && ctLabels>0; } // called to get info of a file from directory, or to skip it BOOL CLoadSaveMenu::ParseFile(const CTFileName &fnm, CTString &strName) { - if (fnm.FileExt() != gm_fnmExt) { - return FALSE; - } + if (fnm.FileExt() != gm_fnmExt) { + return FALSE; + } - CTFileName fnSaveGameDescription = fnm.NoExt() + ".des"; - try { - strName.Load_t(fnSaveGameDescription); - } catch (char *strError) { - (void)strError; - strName = fnm.FileName(); + CTFileName fnSaveGameDescription = fnm.NoExt() + ".des"; + try { + strName.Load_t(fnSaveGameDescription); + } catch (char *strError) { + (void)strError; + strName = fnm.FileName(); - if (fnm.FileExt() == ".ctl") { - INDEX iCtl = -1; - strName.ScanF("Controls%d", &iCtl); - if (iCtl >= 0 && iCtl <= 7) { - strName.PrintF(TRANS("From player: %s"), _pGame->gm_apcPlayers[iCtl].GetNameForPrinting()); - } - } - } + if (fnm.FileExt() == ".ctl") { + INDEX iCtl = -1; + strName.ScanF("Controls%d", &iCtl); + if (iCtl >= 0 && iCtl <= 7) { + strName.PrintF(TRANS("From player: %s"), _pGame->gm_apcPlayers[iCtl].GetNameForPrinting()); + } + } + } - INDEX iFile = -1; - fnm.FileName().ScanF((const char*)(gm_fnmBaseName + "%d"), &iFile); + INDEX iFile = -1; + fnm.FileName().ScanF((const char*)(gm_fnmBaseName + "%d"), &iFile); - gm_iLastFile = Max(gm_iLastFile, iFile); + gm_iLastFile = Max(gm_iLastFile, iFile); - return TRUE; + return TRUE; } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MMain.cpp b/Sources/SeriousSam/GUI/Menus/MMain.cpp index 6bc4ecc..ea4b475 100644 --- a/Sources/SeriousSam/GUI/Menus/MMain.cpp +++ b/Sources/SeriousSam/GUI/Menus/MMain.cpp @@ -21,109 +21,109 @@ with this program; if not, write to the Free Software Foundation, Inc., void CMainMenu::Initialize_t(void) { - // intialize main menu - /* - gm_mgTitle.mg_strText = "SERIOUS SAM - BETA"; // nothing to see here, kazuya - gm_mgTitle.mg_boxOnScreen = BoxTitle(); - gm_lhGadgets.AddTail( gm_mgTitle.mg_lnNode); - */ + // intialize main menu + /* + gm_mgTitle.mg_strText = "SERIOUS SAM - BETA"; // nothing to see here, kazuya + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_lhGadgets.AddTail( gm_mgTitle.mg_lnNode); + */ - extern CTString sam_strVersion; - gm_mgVersionLabel.mg_strText = sam_strVersion; - gm_mgVersionLabel.mg_boxOnScreen = BoxVersion(); - gm_mgVersionLabel.mg_bfsFontSize = BFS_MEDIUM; - gm_mgVersionLabel.mg_iCenterI = +1; - gm_mgVersionLabel.mg_bEnabled = FALSE; - gm_mgVersionLabel.mg_bLabel = TRUE; - gm_lhGadgets.AddTail(gm_mgVersionLabel.mg_lnNode); + extern CTString sam_strVersion; + gm_mgVersionLabel.mg_strText = sam_strVersion; + gm_mgVersionLabel.mg_boxOnScreen = BoxVersion(); + gm_mgVersionLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgVersionLabel.mg_iCenterI = +1; + gm_mgVersionLabel.mg_bEnabled = FALSE; + gm_mgVersionLabel.mg_bLabel = TRUE; + gm_lhGadgets.AddTail(gm_mgVersionLabel.mg_lnNode); - extern CTString sam_strModName; - gm_mgModLabel.mg_strText = sam_strModName; - gm_mgModLabel.mg_boxOnScreen = BoxMediumRow(-2.0f); - gm_mgModLabel.mg_bfsFontSize = BFS_MEDIUM; - gm_mgModLabel.mg_iCenterI = 0; - gm_mgModLabel.mg_bEnabled = FALSE; - gm_mgModLabel.mg_bLabel = TRUE; - gm_lhGadgets.AddTail(gm_mgModLabel.mg_lnNode); + extern CTString sam_strModName; + gm_mgModLabel.mg_strText = sam_strModName; + gm_mgModLabel.mg_boxOnScreen = BoxMediumRow(-2.0f); + gm_mgModLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgModLabel.mg_iCenterI = 0; + gm_mgModLabel.mg_bEnabled = FALSE; + gm_mgModLabel.mg_bLabel = TRUE; + gm_lhGadgets.AddTail(gm_mgModLabel.mg_lnNode); - gm_mgSingle.mg_strText = TRANS("SINGLE PLAYER"); - gm_mgSingle.mg_bfsFontSize = BFS_LARGE; - gm_mgSingle.mg_boxOnScreen = BoxBigRow(0.0f); - gm_mgSingle.mg_strTip = TRANS("single player game menus"); - gm_lhGadgets.AddTail(gm_mgSingle.mg_lnNode); - gm_mgSingle.mg_pmgUp = &gm_mgQuit; - gm_mgSingle.mg_pmgDown = &gm_mgNetwork; - gm_mgSingle.mg_pActivatedFunction = NULL; + gm_mgSingle.mg_strText = TRANS("SINGLE PLAYER"); + gm_mgSingle.mg_bfsFontSize = BFS_LARGE; + gm_mgSingle.mg_boxOnScreen = BoxBigRow(0.0f); + gm_mgSingle.mg_strTip = TRANS("single player game menus"); + gm_lhGadgets.AddTail(gm_mgSingle.mg_lnNode); + gm_mgSingle.mg_pmgUp = &gm_mgQuit; + gm_mgSingle.mg_pmgDown = &gm_mgNetwork; + gm_mgSingle.mg_pActivatedFunction = NULL; - gm_mgNetwork.mg_strText = TRANS("NETWORK"); - gm_mgNetwork.mg_bfsFontSize = BFS_LARGE; - gm_mgNetwork.mg_boxOnScreen = BoxBigRow(1.0f); - gm_mgNetwork.mg_strTip = TRANS("LAN/iNet multiplayer menus"); - gm_lhGadgets.AddTail(gm_mgNetwork.mg_lnNode); - gm_mgNetwork.mg_pmgUp = &gm_mgSingle; - gm_mgNetwork.mg_pmgDown = &gm_mgSplitScreen; - gm_mgNetwork.mg_pActivatedFunction = NULL; + gm_mgNetwork.mg_strText = TRANS("NETWORK"); + gm_mgNetwork.mg_bfsFontSize = BFS_LARGE; + gm_mgNetwork.mg_boxOnScreen = BoxBigRow(1.0f); + gm_mgNetwork.mg_strTip = TRANS("LAN/iNet multiplayer menus"); + gm_lhGadgets.AddTail(gm_mgNetwork.mg_lnNode); + gm_mgNetwork.mg_pmgUp = &gm_mgSingle; + gm_mgNetwork.mg_pmgDown = &gm_mgSplitScreen; + gm_mgNetwork.mg_pActivatedFunction = NULL; - gm_mgSplitScreen.mg_strText = TRANS("SPLIT SCREEN"); - gm_mgSplitScreen.mg_bfsFontSize = BFS_LARGE; - gm_mgSplitScreen.mg_boxOnScreen = BoxBigRow(2.0f); - gm_mgSplitScreen.mg_strTip = TRANS("play with multiple players on one computer"); - gm_lhGadgets.AddTail(gm_mgSplitScreen.mg_lnNode); - gm_mgSplitScreen.mg_pmgUp = &gm_mgNetwork; - gm_mgSplitScreen.mg_pmgDown = &gm_mgDemo; - gm_mgSplitScreen.mg_pActivatedFunction = NULL; + gm_mgSplitScreen.mg_strText = TRANS("SPLIT SCREEN"); + gm_mgSplitScreen.mg_bfsFontSize = BFS_LARGE; + gm_mgSplitScreen.mg_boxOnScreen = BoxBigRow(2.0f); + gm_mgSplitScreen.mg_strTip = TRANS("play with multiple players on one computer"); + gm_lhGadgets.AddTail(gm_mgSplitScreen.mg_lnNode); + gm_mgSplitScreen.mg_pmgUp = &gm_mgNetwork; + gm_mgSplitScreen.mg_pmgDown = &gm_mgDemo; + gm_mgSplitScreen.mg_pActivatedFunction = NULL; - gm_mgDemo.mg_strText = TRANS("DEMO"); - gm_mgDemo.mg_bfsFontSize = BFS_LARGE; - gm_mgDemo.mg_boxOnScreen = BoxBigRow(3.0f); - gm_mgDemo.mg_strTip = TRANS("play a game demo"); - gm_lhGadgets.AddTail(gm_mgDemo.mg_lnNode); - gm_mgDemo.mg_pmgUp = &gm_mgSplitScreen; - gm_mgDemo.mg_pmgDown = &gm_mgMods; - gm_mgDemo.mg_pActivatedFunction = NULL; + gm_mgDemo.mg_strText = TRANS("DEMO"); + gm_mgDemo.mg_bfsFontSize = BFS_LARGE; + gm_mgDemo.mg_boxOnScreen = BoxBigRow(3.0f); + gm_mgDemo.mg_strTip = TRANS("play a game demo"); + gm_lhGadgets.AddTail(gm_mgDemo.mg_lnNode); + gm_mgDemo.mg_pmgUp = &gm_mgSplitScreen; + gm_mgDemo.mg_pmgDown = &gm_mgMods; + gm_mgDemo.mg_pActivatedFunction = NULL; - gm_mgMods.mg_strText = TRANS("MODS"); - gm_mgMods.mg_bfsFontSize = BFS_LARGE; - gm_mgMods.mg_boxOnScreen = BoxBigRow(4.0f); - gm_mgMods.mg_strTip = TRANS("run one of installed game modifications"); - gm_lhGadgets.AddTail(gm_mgMods.mg_lnNode); - gm_mgMods.mg_pmgUp = &gm_mgDemo; - gm_mgMods.mg_pmgDown = &gm_mgHighScore; - gm_mgMods.mg_pActivatedFunction = NULL; + gm_mgMods.mg_strText = TRANS("MODS"); + gm_mgMods.mg_bfsFontSize = BFS_LARGE; + gm_mgMods.mg_boxOnScreen = BoxBigRow(4.0f); + gm_mgMods.mg_strTip = TRANS("run one of installed game modifications"); + gm_lhGadgets.AddTail(gm_mgMods.mg_lnNode); + gm_mgMods.mg_pmgUp = &gm_mgDemo; + gm_mgMods.mg_pmgDown = &gm_mgHighScore; + gm_mgMods.mg_pActivatedFunction = NULL; - gm_mgHighScore.mg_strText = TRANS("HIGH SCORES"); - gm_mgHighScore.mg_bfsFontSize = BFS_LARGE; - gm_mgHighScore.mg_boxOnScreen = BoxBigRow(5.0f); - gm_mgHighScore.mg_strTip = TRANS("view list of top ten best scores"); - gm_lhGadgets.AddTail(gm_mgHighScore.mg_lnNode); - gm_mgHighScore.mg_pmgUp = &gm_mgMods; - gm_mgHighScore.mg_pmgDown = &gm_mgOptions; - gm_mgHighScore.mg_pActivatedFunction = NULL; + gm_mgHighScore.mg_strText = TRANS("HIGH SCORES"); + gm_mgHighScore.mg_bfsFontSize = BFS_LARGE; + gm_mgHighScore.mg_boxOnScreen = BoxBigRow(5.0f); + gm_mgHighScore.mg_strTip = TRANS("view list of top ten best scores"); + gm_lhGadgets.AddTail(gm_mgHighScore.mg_lnNode); + gm_mgHighScore.mg_pmgUp = &gm_mgMods; + gm_mgHighScore.mg_pmgDown = &gm_mgOptions; + gm_mgHighScore.mg_pActivatedFunction = NULL; - gm_mgOptions.mg_strText = TRANS("OPTIONS"); - gm_mgOptions.mg_bfsFontSize = BFS_LARGE; - gm_mgOptions.mg_boxOnScreen = BoxBigRow(6.0f); - gm_mgOptions.mg_strTip = TRANS("adjust video, audio and input options"); - gm_lhGadgets.AddTail(gm_mgOptions.mg_lnNode); - gm_mgOptions.mg_pmgUp = &gm_mgHighScore; - gm_mgOptions.mg_pmgDown = &gm_mgQuit; - gm_mgOptions.mg_pActivatedFunction = NULL; + gm_mgOptions.mg_strText = TRANS("OPTIONS"); + gm_mgOptions.mg_bfsFontSize = BFS_LARGE; + gm_mgOptions.mg_boxOnScreen = BoxBigRow(6.0f); + gm_mgOptions.mg_strTip = TRANS("adjust video, audio and input options"); + gm_lhGadgets.AddTail(gm_mgOptions.mg_lnNode); + gm_mgOptions.mg_pmgUp = &gm_mgHighScore; + gm_mgOptions.mg_pmgDown = &gm_mgQuit; + gm_mgOptions.mg_pActivatedFunction = NULL; - gm_mgQuit.mg_strText = TRANS("QUIT"); - gm_mgQuit.mg_bfsFontSize = BFS_LARGE; - gm_mgQuit.mg_boxOnScreen = BoxBigRow(7.0f); - gm_mgQuit.mg_strTip = TRANS("exit game immediately"); - gm_lhGadgets.AddTail(gm_mgQuit.mg_lnNode); - gm_mgQuit.mg_pmgUp = &gm_mgOptions; - gm_mgQuit.mg_pmgDown = &gm_mgSingle; - gm_mgQuit.mg_pActivatedFunction = NULL; + gm_mgQuit.mg_strText = TRANS("QUIT"); + gm_mgQuit.mg_bfsFontSize = BFS_LARGE; + gm_mgQuit.mg_boxOnScreen = BoxBigRow(7.0f); + gm_mgQuit.mg_strTip = TRANS("exit game immediately"); + gm_lhGadgets.AddTail(gm_mgQuit.mg_lnNode); + gm_mgQuit.mg_pmgUp = &gm_mgOptions; + gm_mgQuit.mg_pmgDown = &gm_mgSingle; + gm_mgQuit.mg_pActivatedFunction = NULL; } void CMainMenu::StartMenu(void) { - gm_mgSingle.mg_bEnabled = IsMenuEnabled("Single Player"); - gm_mgNetwork.mg_bEnabled = IsMenuEnabled("Network"); - gm_mgSplitScreen.mg_bEnabled = IsMenuEnabled("Split Screen"); - gm_mgHighScore.mg_bEnabled = IsMenuEnabled("High Score"); - CGameMenu::StartMenu(); + gm_mgSingle.mg_bEnabled = IsMenuEnabled("Single Player"); + gm_mgNetwork.mg_bEnabled = IsMenuEnabled("Network"); + gm_mgSplitScreen.mg_bEnabled = IsMenuEnabled("Split Screen"); + gm_mgHighScore.mg_bEnabled = IsMenuEnabled("High Score"); + CGameMenu::StartMenu(); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MNetwork.cpp b/Sources/SeriousSam/GUI/Menus/MNetwork.cpp index bd20de2..05f8596 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetwork.cpp +++ b/Sources/SeriousSam/GUI/Menus/MNetwork.cpp @@ -20,49 +20,49 @@ with this program; if not, write to the Free Software Foundation, Inc., 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); + // 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_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_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_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; + 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(); + CGameMenu::StartMenu(); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MNetworkJoin.cpp b/Sources/SeriousSam/GUI/Menus/MNetworkJoin.cpp index 61430dc..1ecdde0 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetworkJoin.cpp +++ b/Sources/SeriousSam/GUI/Menus/MNetworkJoin.cpp @@ -21,35 +21,35 @@ with this program; if not, write to the Free Software Foundation, Inc., void CNetworkJoinMenu::Initialize_t(void) { - // title - gm_mgTitle.mg_boxOnScreen = BoxTitle(); - gm_mgTitle.mg_strText = TRANS("JOIN GAME"); - gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + // title + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("JOIN GAME"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); - gm_mgLAN.mg_bfsFontSize = BFS_LARGE; - gm_mgLAN.mg_boxOnScreen = BoxBigRow(1.0f); - gm_mgLAN.mg_pmgUp = &gm_mgOpen; - gm_mgLAN.mg_pmgDown = &gm_mgNET; - gm_mgLAN.mg_strText = TRANS("SEARCH LAN"); - gm_mgLAN.mg_strTip = TRANS("search local network for servers"); - gm_lhGadgets.AddTail(gm_mgLAN.mg_lnNode); - gm_mgLAN.mg_pActivatedFunction = NULL; + gm_mgLAN.mg_bfsFontSize = BFS_LARGE; + gm_mgLAN.mg_boxOnScreen = BoxBigRow(1.0f); + gm_mgLAN.mg_pmgUp = &gm_mgOpen; + gm_mgLAN.mg_pmgDown = &gm_mgNET; + gm_mgLAN.mg_strText = TRANS("SEARCH LAN"); + gm_mgLAN.mg_strTip = TRANS("search local network for servers"); + gm_lhGadgets.AddTail(gm_mgLAN.mg_lnNode); + gm_mgLAN.mg_pActivatedFunction = NULL; - gm_mgNET.mg_bfsFontSize = BFS_LARGE; - gm_mgNET.mg_boxOnScreen = BoxBigRow(2.0f); - gm_mgNET.mg_pmgUp = &gm_mgLAN; - gm_mgNET.mg_pmgDown = &gm_mgOpen; - gm_mgNET.mg_strText = TRANS("SEARCH INTERNET"); - gm_mgNET.mg_strTip = TRANS("search internet for servers"); - gm_lhGadgets.AddTail(gm_mgNET.mg_lnNode); - gm_mgNET.mg_pActivatedFunction = NULL; + gm_mgNET.mg_bfsFontSize = BFS_LARGE; + gm_mgNET.mg_boxOnScreen = BoxBigRow(2.0f); + gm_mgNET.mg_pmgUp = &gm_mgLAN; + gm_mgNET.mg_pmgDown = &gm_mgOpen; + gm_mgNET.mg_strText = TRANS("SEARCH INTERNET"); + gm_mgNET.mg_strTip = TRANS("search internet for servers"); + gm_lhGadgets.AddTail(gm_mgNET.mg_lnNode); + gm_mgNET.mg_pActivatedFunction = NULL; - gm_mgOpen.mg_bfsFontSize = BFS_LARGE; - gm_mgOpen.mg_boxOnScreen = BoxBigRow(3.0f); - gm_mgOpen.mg_pmgUp = &gm_mgNET; - gm_mgOpen.mg_pmgDown = &gm_mgLAN; - gm_mgOpen.mg_strText = TRANS("SPECIFY SERVER"); - gm_mgOpen.mg_strTip = TRANS("type in server address to connect to"); - gm_lhGadgets.AddTail(gm_mgOpen.mg_lnNode); - gm_mgOpen.mg_pActivatedFunction = NULL; + gm_mgOpen.mg_bfsFontSize = BFS_LARGE; + gm_mgOpen.mg_boxOnScreen = BoxBigRow(3.0f); + gm_mgOpen.mg_pmgUp = &gm_mgNET; + gm_mgOpen.mg_pmgDown = &gm_mgLAN; + gm_mgOpen.mg_strText = TRANS("SPECIFY SERVER"); + gm_mgOpen.mg_strTip = TRANS("type in server address to connect to"); + gm_lhGadgets.AddTail(gm_mgOpen.mg_lnNode); + gm_mgOpen.mg_pActivatedFunction = NULL; } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MNetworkOpen.cpp b/Sources/SeriousSam/GUI/Menus/MNetworkOpen.cpp index 895b00a..fe2fe53 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetworkOpen.cpp +++ b/Sources/SeriousSam/GUI/Menus/MNetworkOpen.cpp @@ -21,58 +21,58 @@ with this program; if not, write to the Free Software Foundation, Inc., void CNetworkOpenMenu::Initialize_t(void) { - // intialize network join menu - gm_mgTitle.mg_boxOnScreen = BoxTitle(); - gm_mgTitle.mg_strText = TRANS("JOIN"); - gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + // intialize network join menu + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("JOIN"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); - gm_mgAddressLabel.mg_strText = TRANS("Address:"); - gm_mgAddressLabel.mg_boxOnScreen = BoxMediumLeft(1); - gm_mgAddressLabel.mg_iCenterI = -1; - gm_lhGadgets.AddTail(gm_mgAddressLabel.mg_lnNode); + gm_mgAddressLabel.mg_strText = TRANS("Address:"); + gm_mgAddressLabel.mg_boxOnScreen = BoxMediumLeft(1); + gm_mgAddressLabel.mg_iCenterI = -1; + gm_lhGadgets.AddTail(gm_mgAddressLabel.mg_lnNode); - gm_mgAddress.mg_strText = _pGame->gam_strJoinAddress; - gm_mgAddress.mg_ctMaxStringLen = 20; - gm_mgAddress.mg_pstrToChange = &_pGame->gam_strJoinAddress; - gm_mgAddress.mg_boxOnScreen = BoxMediumMiddle(1); - gm_mgAddress.mg_bfsFontSize = BFS_MEDIUM; - gm_mgAddress.mg_iCenterI = -1; - gm_mgAddress.mg_pmgUp = &gm_mgJoin; - gm_mgAddress.mg_pmgDown = &gm_mgPort; - gm_mgAddress.mg_strTip = TRANS("specify server address"); - gm_lhGadgets.AddTail(gm_mgAddress.mg_lnNode); + gm_mgAddress.mg_strText = _pGame->gam_strJoinAddress; + gm_mgAddress.mg_ctMaxStringLen = 20; + gm_mgAddress.mg_pstrToChange = &_pGame->gam_strJoinAddress; + gm_mgAddress.mg_boxOnScreen = BoxMediumMiddle(1); + gm_mgAddress.mg_bfsFontSize = BFS_MEDIUM; + gm_mgAddress.mg_iCenterI = -1; + gm_mgAddress.mg_pmgUp = &gm_mgJoin; + gm_mgAddress.mg_pmgDown = &gm_mgPort; + gm_mgAddress.mg_strTip = TRANS("specify server address"); + gm_lhGadgets.AddTail(gm_mgAddress.mg_lnNode); - gm_mgPortLabel.mg_strText = TRANS("Port:"); - gm_mgPortLabel.mg_boxOnScreen = BoxMediumLeft(2); - gm_mgPortLabel.mg_iCenterI = -1; - gm_lhGadgets.AddTail(gm_mgPortLabel.mg_lnNode); + gm_mgPortLabel.mg_strText = TRANS("Port:"); + gm_mgPortLabel.mg_boxOnScreen = BoxMediumLeft(2); + gm_mgPortLabel.mg_iCenterI = -1; + gm_lhGadgets.AddTail(gm_mgPortLabel.mg_lnNode); - gm_mgPort.mg_strText = ""; - gm_mgPort.mg_ctMaxStringLen = 10; - gm_mgPort.mg_pstrToChange = &gm_strPort; - gm_mgPort.mg_boxOnScreen = BoxMediumMiddle(2); - gm_mgPort.mg_bfsFontSize = BFS_MEDIUM; - gm_mgPort.mg_iCenterI = -1; - gm_mgPort.mg_pmgUp = &gm_mgAddress; - gm_mgPort.mg_pmgDown = &gm_mgJoin; - gm_mgPort.mg_strTip = TRANS("specify server address"); - gm_lhGadgets.AddTail(gm_mgPort.mg_lnNode); + gm_mgPort.mg_strText = ""; + gm_mgPort.mg_ctMaxStringLen = 10; + gm_mgPort.mg_pstrToChange = &gm_strPort; + gm_mgPort.mg_boxOnScreen = BoxMediumMiddle(2); + gm_mgPort.mg_bfsFontSize = BFS_MEDIUM; + gm_mgPort.mg_iCenterI = -1; + gm_mgPort.mg_pmgUp = &gm_mgAddress; + gm_mgPort.mg_pmgDown = &gm_mgJoin; + gm_mgPort.mg_strTip = TRANS("specify server address"); + gm_lhGadgets.AddTail(gm_mgPort.mg_lnNode); - gm_mgJoin.mg_boxOnScreen = BoxMediumMiddle(3); - gm_mgJoin.mg_pmgUp = &gm_mgPort; - gm_mgJoin.mg_pmgDown = &gm_mgAddress; - gm_mgJoin.mg_strText = TRANS("Join"); - gm_lhGadgets.AddTail(gm_mgJoin.mg_lnNode); - gm_mgJoin.mg_pActivatedFunction = NULL; + gm_mgJoin.mg_boxOnScreen = BoxMediumMiddle(3); + gm_mgJoin.mg_pmgUp = &gm_mgPort; + gm_mgJoin.mg_pmgDown = &gm_mgAddress; + gm_mgJoin.mg_strText = TRANS("Join"); + gm_lhGadgets.AddTail(gm_mgJoin.mg_lnNode); + gm_mgJoin.mg_pActivatedFunction = NULL; } void CNetworkOpenMenu::StartMenu(void) { - gm_strPort = _pShell->GetValue("net_iPort"); - gm_mgPort.mg_strText = gm_strPort; + gm_strPort = _pShell->GetValue("net_iPort"); + gm_mgPort.mg_strText = gm_strPort; } void CNetworkOpenMenu::EndMenu(void) { - _pShell->SetValue("net_iPort", gm_strPort); + _pShell->SetValue("net_iPort", gm_strPort); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MNetworkStart.cpp b/Sources/SeriousSam/GUI/Menus/MNetworkStart.cpp index 9e24308..c967829 100644 --- a/Sources/SeriousSam/GUI/Menus/MNetworkStart.cpp +++ b/Sources/SeriousSam/GUI/Menus/MNetworkStart.cpp @@ -24,123 +24,123 @@ extern void UpdateNetworkLevel(INDEX iDummy); 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); + // 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); + // 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; + // 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"); + // 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); + // 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"); + // 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"); + // 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"); + // 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); + // 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; + // 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; + 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(); + 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); + _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); - } + 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_mgMaxPlayers.mg_iSelected = ctMaxPlayers - 2; + gm_mgMaxPlayers.ApplyCurrentSelection(); - gm_mgWaitAllPlayers.mg_iSelected = Clamp(_pShell->GetINDEX("gam_bWaitAllPlayers"), 0L, 1L); - gm_mgWaitAllPlayers.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(); + gm_mgVisible.mg_iSelected = _pShell->GetINDEX("ser_bEnumeration"); + gm_mgVisible.ApplyCurrentSelection(); - UpdateNetworkLevel(0); + UpdateNetworkLevel(0); - CGameMenu::StartMenu(); + 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); + _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(); + CGameMenu::EndMenu(); } diff --git a/Sources/SeriousSam/GUI/Menus/MOptions.cpp b/Sources/SeriousSam/GUI/Menus/MOptions.cpp index a038463..b33ad1a 100644 --- a/Sources/SeriousSam/GUI/Menus/MOptions.cpp +++ b/Sources/SeriousSam/GUI/Menus/MOptions.cpp @@ -20,62 +20,62 @@ with this program; if not, write to the Free Software Foundation, Inc., 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); + // 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_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_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_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_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_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; + 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/GUI/Menus/MPlayerProfile.cpp b/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp index 3478a8f..7c558d3 100644 --- a/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp +++ b/Sources/SeriousSam/GUI/Menus/MPlayerProfile.cpp @@ -20,18 +20,18 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "GUI/Menus/MenuManager.h" #define ADD_SELECT_PLAYER_MG( index, mg, mgprev, mgnext, me)\ - mg.mg_iIndex = index; \ - mg.mg_bfsFontSize = BFS_MEDIUM; \ - mg.mg_boxOnScreen = BoxNoUp(index); \ - mg.mg_bRectangle = TRUE; \ - mg.mg_pmgLeft = &mgprev; \ - mg.mg_pmgRight = &mgnext; \ - mg.mg_pmgUp = &gm_mgCustomizeControls; \ - mg.mg_pmgDown = &gm_mgNameField; \ - mg.mg_pActivatedFunction = &PPOnPlayerSelect; \ - mg.mg_strText = #index; \ - mg.mg_strTip = TRANS("select new currently active player"); \ - gm_lhGadgets.AddTail(mg.mg_lnNode); + mg.mg_iIndex = index; \ + mg.mg_bfsFontSize = BFS_MEDIUM; \ + mg.mg_boxOnScreen = BoxNoUp(index); \ + mg.mg_bRectangle = TRUE; \ + mg.mg_pmgLeft = &mgprev; \ + mg.mg_pmgRight = &mgnext; \ + mg.mg_pmgUp = &gm_mgCustomizeControls; \ + mg.mg_pmgDown = &gm_mgNameField; \ + mg.mg_pActivatedFunction = &PPOnPlayerSelect; \ + mg.mg_strText = #index; \ + mg.mg_strTip = TRANS("select new currently active player"); \ + gm_lhGadgets.AddTail(mg.mg_lnNode); extern BOOL _bPlayerMenuFromSinglePlayer; extern CTString _strLastPlayerAppearance; @@ -40,267 +40,267 @@ extern void PPOnPlayerSelect(void); void CPlayerProfileMenu::Initialize_t(void) { - // intialize player and controls menu - _bPlayerMenuFromSinglePlayer = FALSE; - gm_mgProfileTitle.mg_boxOnScreen = BoxTitle(); - gm_mgProfileTitle.mg_strText = TRANS("PLAYER PROFILE"); - gm_lhGadgets.AddTail(gm_mgProfileTitle.mg_lnNode); + // intialize player and controls menu + _bPlayerMenuFromSinglePlayer = FALSE; + gm_mgProfileTitle.mg_boxOnScreen = BoxTitle(); + gm_mgProfileTitle.mg_strText = TRANS("PLAYER PROFILE"); + gm_lhGadgets.AddTail(gm_mgProfileTitle.mg_lnNode); - gm_mgNoLabel.mg_strText = TRANS("PROFILE:"); - gm_mgNoLabel.mg_boxOnScreen = BoxMediumLeft(0.0f); - gm_mgNoLabel.mg_bfsFontSize = BFS_MEDIUM; - gm_mgNoLabel.mg_iCenterI = -1; - gm_lhGadgets.AddTail(gm_mgNoLabel.mg_lnNode); + gm_mgNoLabel.mg_strText = TRANS("PROFILE:"); + gm_mgNoLabel.mg_boxOnScreen = BoxMediumLeft(0.0f); + gm_mgNoLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgNoLabel.mg_iCenterI = -1; + gm_lhGadgets.AddTail(gm_mgNoLabel.mg_lnNode); - ADD_SELECT_PLAYER_MG(0, gm_mgNumber[0], gm_mgNumber[7], gm_mgNumber[1], gm_mgNumber[0]); - ADD_SELECT_PLAYER_MG(1, gm_mgNumber[1], gm_mgNumber[0], gm_mgNumber[2], gm_mgNumber[1]); - ADD_SELECT_PLAYER_MG(2, gm_mgNumber[2], gm_mgNumber[1], gm_mgNumber[3], gm_mgNumber[2]); - ADD_SELECT_PLAYER_MG(3, gm_mgNumber[3], gm_mgNumber[2], gm_mgNumber[4], gm_mgNumber[3]); - ADD_SELECT_PLAYER_MG(4, gm_mgNumber[4], gm_mgNumber[3], gm_mgNumber[5], gm_mgNumber[4]); - ADD_SELECT_PLAYER_MG(5, gm_mgNumber[5], gm_mgNumber[4], gm_mgNumber[6], gm_mgNumber[5]); - ADD_SELECT_PLAYER_MG(6, gm_mgNumber[6], gm_mgNumber[5], gm_mgNumber[7], gm_mgNumber[6]); - ADD_SELECT_PLAYER_MG(7, gm_mgNumber[7], gm_mgNumber[6], gm_mgNumber[0], gm_mgNumber[7]); - gm_mgNumber[7].mg_pmgRight = &gm_mgModel; + ADD_SELECT_PLAYER_MG(0, gm_mgNumber[0], gm_mgNumber[7], gm_mgNumber[1], gm_mgNumber[0]); + ADD_SELECT_PLAYER_MG(1, gm_mgNumber[1], gm_mgNumber[0], gm_mgNumber[2], gm_mgNumber[1]); + ADD_SELECT_PLAYER_MG(2, gm_mgNumber[2], gm_mgNumber[1], gm_mgNumber[3], gm_mgNumber[2]); + ADD_SELECT_PLAYER_MG(3, gm_mgNumber[3], gm_mgNumber[2], gm_mgNumber[4], gm_mgNumber[3]); + ADD_SELECT_PLAYER_MG(4, gm_mgNumber[4], gm_mgNumber[3], gm_mgNumber[5], gm_mgNumber[4]); + ADD_SELECT_PLAYER_MG(5, gm_mgNumber[5], gm_mgNumber[4], gm_mgNumber[6], gm_mgNumber[5]); + ADD_SELECT_PLAYER_MG(6, gm_mgNumber[6], gm_mgNumber[5], gm_mgNumber[7], gm_mgNumber[6]); + ADD_SELECT_PLAYER_MG(7, gm_mgNumber[7], gm_mgNumber[6], gm_mgNumber[0], gm_mgNumber[7]); + gm_mgNumber[7].mg_pmgRight = &gm_mgModel; - gm_mgNameLabel.mg_strText = TRANS("NAME:"); - gm_mgNameLabel.mg_boxOnScreen = BoxMediumLeft(1.25f); - gm_mgNameLabel.mg_bfsFontSize = BFS_MEDIUM; - gm_mgNameLabel.mg_iCenterI = -1; - gm_lhGadgets.AddTail(gm_mgNameLabel.mg_lnNode); + gm_mgNameLabel.mg_strText = TRANS("NAME:"); + gm_mgNameLabel.mg_boxOnScreen = BoxMediumLeft(1.25f); + gm_mgNameLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgNameLabel.mg_iCenterI = -1; + gm_lhGadgets.AddTail(gm_mgNameLabel.mg_lnNode); - // setup of player name button is done on start menu - gm_mgNameField.mg_strText = ""; - gm_mgNameField.mg_ctMaxStringLen = 25; - gm_mgNameField.mg_boxOnScreen = BoxPlayerEdit(1.25); - gm_mgNameField.mg_bfsFontSize = BFS_MEDIUM; - gm_mgNameField.mg_iCenterI = -1; - gm_mgNameField.mg_pmgUp = &gm_mgNumber[0]; - gm_mgNameField.mg_pmgDown = &gm_mgTeam; - gm_mgNameField.mg_pmgRight = &gm_mgModel; - gm_mgNameField.mg_strTip = TRANS("rename currently active player"); - gm_lhGadgets.AddTail(gm_mgNameField.mg_lnNode); + // setup of player name button is done on start menu + gm_mgNameField.mg_strText = ""; + gm_mgNameField.mg_ctMaxStringLen = 25; + gm_mgNameField.mg_boxOnScreen = BoxPlayerEdit(1.25); + gm_mgNameField.mg_bfsFontSize = BFS_MEDIUM; + gm_mgNameField.mg_iCenterI = -1; + gm_mgNameField.mg_pmgUp = &gm_mgNumber[0]; + gm_mgNameField.mg_pmgDown = &gm_mgTeam; + gm_mgNameField.mg_pmgRight = &gm_mgModel; + gm_mgNameField.mg_strTip = TRANS("rename currently active player"); + gm_lhGadgets.AddTail(gm_mgNameField.mg_lnNode); - gm_mgTeamLabel.mg_strText = TRANS("TEAM:"); - gm_mgTeamLabel.mg_boxOnScreen = BoxMediumLeft(2.25f); - gm_mgTeamLabel.mg_bfsFontSize = BFS_MEDIUM; - gm_mgTeamLabel.mg_iCenterI = -1; - gm_lhGadgets.AddTail(gm_mgTeamLabel.mg_lnNode); + gm_mgTeamLabel.mg_strText = TRANS("TEAM:"); + gm_mgTeamLabel.mg_boxOnScreen = BoxMediumLeft(2.25f); + gm_mgTeamLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgTeamLabel.mg_iCenterI = -1; + gm_lhGadgets.AddTail(gm_mgTeamLabel.mg_lnNode); - // setup of player name button is done on start menu - gm_mgTeam.mg_strText = ""; - gm_mgTeam.mg_ctMaxStringLen = 25; - gm_mgTeam.mg_boxOnScreen = BoxPlayerEdit(2.25f); - gm_mgTeam.mg_bfsFontSize = BFS_MEDIUM; - gm_mgTeam.mg_iCenterI = -1; - gm_mgTeam.mg_pmgUp = gm_mgNameField.mg_pmgUp = &gm_mgNumber[0]; + // setup of player name button is done on start menu + gm_mgTeam.mg_strText = ""; + gm_mgTeam.mg_ctMaxStringLen = 25; + gm_mgTeam.mg_boxOnScreen = BoxPlayerEdit(2.25f); + gm_mgTeam.mg_bfsFontSize = BFS_MEDIUM; + gm_mgTeam.mg_iCenterI = -1; + gm_mgTeam.mg_pmgUp = gm_mgNameField.mg_pmgUp = &gm_mgNumber[0]; - gm_mgTeam.mg_pmgDown = &gm_mgCrosshair; - gm_mgTeam.mg_pmgRight = &gm_mgModel; - //gm_mgTeam.mg_strTip = TRANS("teamplay is disabled in this version"); - gm_mgTeam.mg_strTip = TRANS("enter team name, if playing in team"); - gm_lhGadgets.AddTail(gm_mgTeam.mg_lnNode); + gm_mgTeam.mg_pmgDown = &gm_mgCrosshair; + gm_mgTeam.mg_pmgRight = &gm_mgModel; + //gm_mgTeam.mg_strTip = TRANS("teamplay is disabled in this version"); + gm_mgTeam.mg_strTip = TRANS("enter team name, if playing in team"); + gm_lhGadgets.AddTail(gm_mgTeam.mg_lnNode); - TRIGGER_MG(gm_mgCrosshair, 4.0, gm_mgTeam, gm_mgWeaponSelect, TRANS("CROSSHAIR"), astrCrosshair); - gm_mgCrosshair.mg_bVisual = TRUE; - gm_mgCrosshair.mg_boxOnScreen = BoxPlayerSwitch(5.0f); - gm_mgCrosshair.mg_iCenterI = -1; - gm_mgCrosshair.mg_pOnTriggerChange = NULL; + TRIGGER_MG(gm_mgCrosshair, 4.0, gm_mgTeam, gm_mgWeaponSelect, TRANS("CROSSHAIR"), astrCrosshair); + gm_mgCrosshair.mg_bVisual = TRUE; + gm_mgCrosshair.mg_boxOnScreen = BoxPlayerSwitch(5.0f); + gm_mgCrosshair.mg_iCenterI = -1; + gm_mgCrosshair.mg_pOnTriggerChange = NULL; - TRIGGER_MG(gm_mgWeaponSelect, 4.0, gm_mgCrosshair, gm_mgWeaponHide, TRANS("AUTO SELECT WEAPON"), astrWeapon); - gm_mgWeaponSelect.mg_boxOnScreen = BoxPlayerSwitch(6.0f); - gm_mgWeaponSelect.mg_iCenterI = -1; - gm_mgWeaponSelect.mg_pOnTriggerChange = NULL; + TRIGGER_MG(gm_mgWeaponSelect, 4.0, gm_mgCrosshair, gm_mgWeaponHide, TRANS("AUTO SELECT WEAPON"), astrWeapon); + gm_mgWeaponSelect.mg_boxOnScreen = BoxPlayerSwitch(6.0f); + gm_mgWeaponSelect.mg_iCenterI = -1; + gm_mgWeaponSelect.mg_pOnTriggerChange = NULL; - TRIGGER_MG(gm_mgWeaponHide, 4.0, gm_mgWeaponSelect, gm_mg3rdPerson, TRANS("HIDE WEAPON MODEL"), astrNoYes); - gm_mgWeaponHide.mg_boxOnScreen = BoxPlayerSwitch(7.0f); - gm_mgWeaponHide.mg_iCenterI = -1; - gm_mgWeaponHide.mg_pOnTriggerChange = NULL; + TRIGGER_MG(gm_mgWeaponHide, 4.0, gm_mgWeaponSelect, gm_mg3rdPerson, TRANS("HIDE WEAPON MODEL"), astrNoYes); + gm_mgWeaponHide.mg_boxOnScreen = BoxPlayerSwitch(7.0f); + gm_mgWeaponHide.mg_iCenterI = -1; + gm_mgWeaponHide.mg_pOnTriggerChange = NULL; - TRIGGER_MG(gm_mg3rdPerson, 4.0, gm_mgWeaponHide, gm_mgQuotes, TRANS("PREFER 3RD PERSON VIEW"), astrNoYes); - gm_mg3rdPerson.mg_boxOnScreen = BoxPlayerSwitch(8.0f); - gm_mg3rdPerson.mg_iCenterI = -1; - gm_mg3rdPerson.mg_pOnTriggerChange = NULL; + TRIGGER_MG(gm_mg3rdPerson, 4.0, gm_mgWeaponHide, gm_mgQuotes, TRANS("PREFER 3RD PERSON VIEW"), astrNoYes); + gm_mg3rdPerson.mg_boxOnScreen = BoxPlayerSwitch(8.0f); + gm_mg3rdPerson.mg_iCenterI = -1; + gm_mg3rdPerson.mg_pOnTriggerChange = NULL; - TRIGGER_MG(gm_mgQuotes, 4.0, gm_mg3rdPerson, gm_mgAutoSave, TRANS("VOICE QUOTES"), astrNoYes); - gm_mgQuotes.mg_boxOnScreen = BoxPlayerSwitch(9.0f); - gm_mgQuotes.mg_iCenterI = -1; - gm_mgQuotes.mg_pOnTriggerChange = NULL; + TRIGGER_MG(gm_mgQuotes, 4.0, gm_mg3rdPerson, gm_mgAutoSave, TRANS("VOICE QUOTES"), astrNoYes); + gm_mgQuotes.mg_boxOnScreen = BoxPlayerSwitch(9.0f); + gm_mgQuotes.mg_iCenterI = -1; + gm_mgQuotes.mg_pOnTriggerChange = NULL; - TRIGGER_MG(gm_mgAutoSave, 4.0, gm_mgQuotes, gm_mgCompDoubleClick, TRANS("AUTO SAVE"), astrNoYes); - gm_mgAutoSave.mg_boxOnScreen = BoxPlayerSwitch(10.0f); - gm_mgAutoSave.mg_iCenterI = -1; - gm_mgAutoSave.mg_pOnTriggerChange = NULL; + TRIGGER_MG(gm_mgAutoSave, 4.0, gm_mgQuotes, gm_mgCompDoubleClick, TRANS("AUTO SAVE"), astrNoYes); + gm_mgAutoSave.mg_boxOnScreen = BoxPlayerSwitch(10.0f); + gm_mgAutoSave.mg_iCenterI = -1; + gm_mgAutoSave.mg_pOnTriggerChange = NULL; - TRIGGER_MG(gm_mgCompDoubleClick, 4.0, gm_mgAutoSave, gm_mgSharpTurning, TRANS("INVOKE COMPUTER"), astrComputerInvoke); - gm_mgCompDoubleClick.mg_boxOnScreen = BoxPlayerSwitch(11.0f); - gm_mgCompDoubleClick.mg_iCenterI = -1; - gm_mgCompDoubleClick.mg_pOnTriggerChange = NULL; + TRIGGER_MG(gm_mgCompDoubleClick, 4.0, gm_mgAutoSave, gm_mgSharpTurning, TRANS("INVOKE COMPUTER"), astrComputerInvoke); + gm_mgCompDoubleClick.mg_boxOnScreen = BoxPlayerSwitch(11.0f); + gm_mgCompDoubleClick.mg_iCenterI = -1; + gm_mgCompDoubleClick.mg_pOnTriggerChange = NULL; - TRIGGER_MG(gm_mgSharpTurning, 4.0, gm_mgCompDoubleClick, gm_mgViewBobbing, TRANS("SHARP TURNING"), astrNoYes); - gm_mgSharpTurning.mg_boxOnScreen = BoxPlayerSwitch(12.0f); - gm_mgSharpTurning.mg_iCenterI = -1; - gm_mgSharpTurning.mg_pOnTriggerChange = NULL; + TRIGGER_MG(gm_mgSharpTurning, 4.0, gm_mgCompDoubleClick, gm_mgViewBobbing, TRANS("SHARP TURNING"), astrNoYes); + gm_mgSharpTurning.mg_boxOnScreen = BoxPlayerSwitch(12.0f); + gm_mgSharpTurning.mg_iCenterI = -1; + gm_mgSharpTurning.mg_pOnTriggerChange = NULL; - TRIGGER_MG(gm_mgViewBobbing, 4.0, gm_mgSharpTurning, gm_mgCustomizeControls, TRANS("VIEW BOBBING"), astrNoYes); - gm_mgViewBobbing.mg_boxOnScreen = BoxPlayerSwitch(13.0f); - gm_mgViewBobbing.mg_iCenterI = -1; - gm_mgViewBobbing.mg_pOnTriggerChange = NULL; + TRIGGER_MG(gm_mgViewBobbing, 4.0, gm_mgSharpTurning, gm_mgCustomizeControls, TRANS("VIEW BOBBING"), astrNoYes); + gm_mgViewBobbing.mg_boxOnScreen = BoxPlayerSwitch(13.0f); + gm_mgViewBobbing.mg_iCenterI = -1; + gm_mgViewBobbing.mg_pOnTriggerChange = NULL; - gm_mgCustomizeControls.mg_strText = TRANS("CUSTOMIZE CONTROLS"); - gm_mgCustomizeControls.mg_boxOnScreen = BoxMediumLeft(14.5f); - gm_mgCustomizeControls.mg_bfsFontSize = BFS_MEDIUM; - gm_mgCustomizeControls.mg_iCenterI = -1; - gm_mgCustomizeControls.mg_pmgUp = &gm_mgViewBobbing; - gm_mgCustomizeControls.mg_pActivatedFunction = NULL; - gm_mgCustomizeControls.mg_pmgDown = &gm_mgNumber[0]; - gm_mgCustomizeControls.mg_pmgRight = &gm_mgModel; - gm_mgCustomizeControls.mg_strTip = TRANS("customize controls for this player"); - gm_lhGadgets.AddTail(gm_mgCustomizeControls.mg_lnNode); + gm_mgCustomizeControls.mg_strText = TRANS("CUSTOMIZE CONTROLS"); + gm_mgCustomizeControls.mg_boxOnScreen = BoxMediumLeft(14.5f); + gm_mgCustomizeControls.mg_bfsFontSize = BFS_MEDIUM; + gm_mgCustomizeControls.mg_iCenterI = -1; + gm_mgCustomizeControls.mg_pmgUp = &gm_mgViewBobbing; + gm_mgCustomizeControls.mg_pActivatedFunction = NULL; + gm_mgCustomizeControls.mg_pmgDown = &gm_mgNumber[0]; + gm_mgCustomizeControls.mg_pmgRight = &gm_mgModel; + gm_mgCustomizeControls.mg_strTip = TRANS("customize controls for this player"); + gm_lhGadgets.AddTail(gm_mgCustomizeControls.mg_lnNode); - gm_mgModel.mg_boxOnScreen = BoxPlayerModel(); - gm_mgModel.mg_pmgLeft = &gm_mgNameField; - gm_mgModel.mg_pActivatedFunction = NULL; - gm_mgModel.mg_pmgDown = &gm_mgNameField; - gm_mgModel.mg_pmgLeft = &gm_mgNameField; - gm_mgModel.mg_strTip = TRANS("change model for this player"); - gm_lhGadgets.AddTail(gm_mgModel.mg_lnNode); + gm_mgModel.mg_boxOnScreen = BoxPlayerModel(); + gm_mgModel.mg_pmgLeft = &gm_mgNameField; + gm_mgModel.mg_pActivatedFunction = NULL; + gm_mgModel.mg_pmgDown = &gm_mgNameField; + gm_mgModel.mg_pmgLeft = &gm_mgNameField; + gm_mgModel.mg_strTip = TRANS("change model for this player"); + gm_lhGadgets.AddTail(gm_mgModel.mg_lnNode); } INDEX CPlayerProfileMenu::ComboFromPlayer(INDEX iPlayer) { - return iPlayer; + return iPlayer; } INDEX CPlayerProfileMenu::PlayerFromCombo(INDEX iCombo) { - return iCombo; + return iCombo; } void CPlayerProfileMenu::SelectPlayer(INDEX iPlayer) { - CPlayerCharacter &pc = _pGame->gm_apcPlayers[iPlayer]; + CPlayerCharacter &pc = _pGame->gm_apcPlayers[iPlayer]; - for (INDEX iPl = 0; iPl<8; iPl++) - { - gm_mgNumber[iPl].mg_bHighlighted = FALSE; - } + for (INDEX iPl = 0; iPl<8; iPl++) + { + gm_mgNumber[iPl].mg_bHighlighted = FALSE; + } - gm_mgNumber[iPlayer].mg_bHighlighted = TRUE; + gm_mgNumber[iPlayer].mg_bHighlighted = TRUE; - iPlayer = Clamp(iPlayer, INDEX(0), INDEX(7)); + iPlayer = Clamp(iPlayer, INDEX(0), INDEX(7)); - if (_iLocalPlayer >= 0 && _iLocalPlayer<4) { - _pGame->gm_aiMenuLocalPlayers[_iLocalPlayer] = iPlayer; - } else { - _pGame->gm_iSinglePlayer = iPlayer; - } - gm_mgNameField.mg_pstrToChange = &pc.pc_strName; - gm_mgNameField.SetText(*gm_mgNameField.mg_pstrToChange); - gm_mgTeam.mg_pstrToChange = &pc.pc_strTeam; - gm_mgTeam.SetText(*gm_mgTeam.mg_pstrToChange); + if (_iLocalPlayer >= 0 && _iLocalPlayer<4) { + _pGame->gm_aiMenuLocalPlayers[_iLocalPlayer] = iPlayer; + } else { + _pGame->gm_iSinglePlayer = iPlayer; + } + gm_mgNameField.mg_pstrToChange = &pc.pc_strName; + gm_mgNameField.SetText(*gm_mgNameField.mg_pstrToChange); + gm_mgTeam.mg_pstrToChange = &pc.pc_strTeam; + gm_mgTeam.SetText(*gm_mgTeam.mg_pstrToChange); - CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; + CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; - gm_mgCrosshair.mg_iSelected = pps->ps_iCrossHairType + 1; - gm_mgCrosshair.ApplyCurrentSelection(); + gm_mgCrosshair.mg_iSelected = pps->ps_iCrossHairType + 1; + gm_mgCrosshair.ApplyCurrentSelection(); - gm_mgWeaponSelect.mg_iSelected = pps->ps_iWeaponAutoSelect; - gm_mgWeaponSelect.ApplyCurrentSelection(); + gm_mgWeaponSelect.mg_iSelected = pps->ps_iWeaponAutoSelect; + gm_mgWeaponSelect.ApplyCurrentSelection(); - gm_mgWeaponHide.mg_iSelected = (pps->ps_ulFlags&PSF_HIDEWEAPON) ? 1 : 0; - gm_mgWeaponHide.ApplyCurrentSelection(); + gm_mgWeaponHide.mg_iSelected = (pps->ps_ulFlags&PSF_HIDEWEAPON) ? 1 : 0; + gm_mgWeaponHide.ApplyCurrentSelection(); - gm_mg3rdPerson.mg_iSelected = (pps->ps_ulFlags&PSF_PREFER3RDPERSON) ? 1 : 0; - gm_mg3rdPerson.ApplyCurrentSelection(); + gm_mg3rdPerson.mg_iSelected = (pps->ps_ulFlags&PSF_PREFER3RDPERSON) ? 1 : 0; + gm_mg3rdPerson.ApplyCurrentSelection(); - gm_mgQuotes.mg_iSelected = (pps->ps_ulFlags&PSF_NOQUOTES) ? 0 : 1; - gm_mgQuotes.ApplyCurrentSelection(); + gm_mgQuotes.mg_iSelected = (pps->ps_ulFlags&PSF_NOQUOTES) ? 0 : 1; + gm_mgQuotes.ApplyCurrentSelection(); - gm_mgAutoSave.mg_iSelected = (pps->ps_ulFlags&PSF_AUTOSAVE) ? 1 : 0; - gm_mgAutoSave.ApplyCurrentSelection(); + gm_mgAutoSave.mg_iSelected = (pps->ps_ulFlags&PSF_AUTOSAVE) ? 1 : 0; + gm_mgAutoSave.ApplyCurrentSelection(); - gm_mgCompDoubleClick.mg_iSelected = (pps->ps_ulFlags&PSF_COMPSINGLECLICK) ? 0 : 1; - gm_mgCompDoubleClick.ApplyCurrentSelection(); + gm_mgCompDoubleClick.mg_iSelected = (pps->ps_ulFlags&PSF_COMPSINGLECLICK) ? 0 : 1; + gm_mgCompDoubleClick.ApplyCurrentSelection(); - gm_mgViewBobbing.mg_iSelected = (pps->ps_ulFlags&PSF_NOBOBBING) ? 0 : 1; - gm_mgViewBobbing.ApplyCurrentSelection(); + gm_mgViewBobbing.mg_iSelected = (pps->ps_ulFlags&PSF_NOBOBBING) ? 0 : 1; + gm_mgViewBobbing.ApplyCurrentSelection(); - gm_mgSharpTurning.mg_iSelected = (pps->ps_ulFlags&PSF_SHARPTURNING) ? 1 : 0; - gm_mgSharpTurning.ApplyCurrentSelection(); + gm_mgSharpTurning.mg_iSelected = (pps->ps_ulFlags&PSF_SHARPTURNING) ? 1 : 0; + gm_mgSharpTurning.ApplyCurrentSelection(); - // get function that will set player appearance - CShellSymbol *pss = _pShell->GetSymbol("SetPlayerAppearance", /*bDeclaredOnly=*/ TRUE); - // if none - if (pss == NULL) { - // no model - gm_mgModel.mg_moModel.SetData(NULL); - // if there is some - } else { - // set the model - BOOL(*pFunc)(CModelObject *, CPlayerCharacter *, CTString &, BOOL) = - (BOOL(*)(CModelObject *, CPlayerCharacter *, CTString &, BOOL))pss->ss_pvValue; - CTString strName; - BOOL bSet; - if (_gmRunningGameMode != GM_SINGLE_PLAYER && !_bPlayerMenuFromSinglePlayer) { - bSet = pFunc(&gm_mgModel.mg_moModel, &pc, strName, TRUE); - gm_mgModel.mg_strTip = TRANS("change model for this player"); - gm_mgModel.mg_bEnabled = TRUE; - } - else { - // cannot change player appearance in single player mode - bSet = pFunc(&gm_mgModel.mg_moModel, NULL, strName, TRUE); - gm_mgModel.mg_strTip = TRANS("cannot change model for single-player game"); - gm_mgModel.mg_bEnabled = FALSE; - } - // ignore gender flags, if any - strName.RemovePrefix("#female#"); - strName.RemovePrefix("#male#"); - gm_mgModel.mg_plModel = CPlacement3D(FLOAT3D(0.1f, -1.0f, -3.5f), ANGLE3D(150, 0, 0)); - gm_mgModel.mg_strText = strName; - CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; - _strLastPlayerAppearance = pps->GetModelFilename(); - try { - gm_mgModel.mg_moFloor.SetData_t(CTFILENAME("Models\\Computer\\Floor.mdl")); - gm_mgModel.mg_moFloor.mo_toTexture.SetData_t(CTFILENAME("Models\\Computer\\Floor.tex")); - } - catch (char *strError) { - (void)strError; - } - } + // get function that will set player appearance + CShellSymbol *pss = _pShell->GetSymbol("SetPlayerAppearance", /*bDeclaredOnly=*/ TRUE); + // if none + if (pss == NULL) { + // no model + gm_mgModel.mg_moModel.SetData(NULL); + // if there is some + } else { + // set the model + BOOL(*pFunc)(CModelObject *, CPlayerCharacter *, CTString &, BOOL) = + (BOOL(*)(CModelObject *, CPlayerCharacter *, CTString &, BOOL))pss->ss_pvValue; + CTString strName; + BOOL bSet; + if (_gmRunningGameMode != GM_SINGLE_PLAYER && !_bPlayerMenuFromSinglePlayer) { + bSet = pFunc(&gm_mgModel.mg_moModel, &pc, strName, TRUE); + gm_mgModel.mg_strTip = TRANS("change model for this player"); + gm_mgModel.mg_bEnabled = TRUE; + } + else { + // cannot change player appearance in single player mode + bSet = pFunc(&gm_mgModel.mg_moModel, NULL, strName, TRUE); + gm_mgModel.mg_strTip = TRANS("cannot change model for single-player game"); + gm_mgModel.mg_bEnabled = FALSE; + } + // ignore gender flags, if any + strName.RemovePrefix("#female#"); + strName.RemovePrefix("#male#"); + gm_mgModel.mg_plModel = CPlacement3D(FLOAT3D(0.1f, -1.0f, -3.5f), ANGLE3D(150, 0, 0)); + gm_mgModel.mg_strText = strName; + CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; + _strLastPlayerAppearance = pps->GetModelFilename(); + try { + gm_mgModel.mg_moFloor.SetData_t(CTFILENAME("Models\\Computer\\Floor.mdl")); + gm_mgModel.mg_moFloor.mo_toTexture.SetData_t(CTFILENAME("Models\\Computer\\Floor.tex")); + } + catch (char *strError) { + (void)strError; + } + } } void CPlayerProfileMenu::StartMenu(void) { - _pGUIM->gmPlayerProfile.gm_pmgSelectedByDefault = &gm_mgNameField; + _pGUIM->gmPlayerProfile.gm_pmgSelectedByDefault = &gm_mgNameField; - if (_gmRunningGameMode == GM_NONE || _gmRunningGameMode == GM_DEMO) { - for (INDEX i = 0; i<8; i++) { - gm_mgNumber[i].mg_bEnabled = TRUE; - } - } else { - for (INDEX i = 0; i<8; i++) { - gm_mgNumber[i].mg_bEnabled = FALSE; - } - INDEX iFirstEnabled = 0; - {for (INDEX ilp = 0; ilp<4; ilp++) { - CLocalPlayer &lp = _pGame->gm_lpLocalPlayers[ilp]; - if (lp.lp_bActive) { - gm_mgNumber[lp.lp_iPlayer].mg_bEnabled = TRUE; - if (iFirstEnabled == 0) { - iFirstEnabled = lp.lp_iPlayer; - } - } - }} - // backup to first player in case current player is disabled - if (!gm_mgNumber[*gm_piCurrentPlayer].mg_bEnabled) *gm_piCurrentPlayer = iFirstEnabled; - } - // done - SelectPlayer(*gm_piCurrentPlayer); - CGameMenu::StartMenu(); + if (_gmRunningGameMode == GM_NONE || _gmRunningGameMode == GM_DEMO) { + for (INDEX i = 0; i<8; i++) { + gm_mgNumber[i].mg_bEnabled = TRUE; + } + } else { + for (INDEX i = 0; i<8; i++) { + gm_mgNumber[i].mg_bEnabled = FALSE; + } + INDEX iFirstEnabled = 0; + {for (INDEX ilp = 0; ilp<4; ilp++) { + CLocalPlayer &lp = _pGame->gm_lpLocalPlayers[ilp]; + if (lp.lp_bActive) { + gm_mgNumber[lp.lp_iPlayer].mg_bEnabled = TRUE; + if (iFirstEnabled == 0) { + iFirstEnabled = lp.lp_iPlayer; + } + } + }} + // backup to first player in case current player is disabled + if (!gm_mgNumber[*gm_piCurrentPlayer].mg_bEnabled) *gm_piCurrentPlayer = iFirstEnabled; + } + // done + SelectPlayer(*gm_piCurrentPlayer); + CGameMenu::StartMenu(); } void CPlayerProfileMenu::EndMenu(void) { - _pGame->SavePlayersAndControls(); - CGameMenu::EndMenu(); + _pGame->SavePlayersAndControls(); + CGameMenu::EndMenu(); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MSelectPlayers.cpp b/Sources/SeriousSam/GUI/Menus/MSelectPlayers.cpp index 4e0d306..787f04d 100644 --- a/Sources/SeriousSam/GUI/Menus/MSelectPlayers.cpp +++ b/Sources/SeriousSam/GUI/Menus/MSelectPlayers.cpp @@ -19,13 +19,13 @@ with this program; if not, write to the Free Software Foundation, Inc., #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); + 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); extern CTString astrNoYes[2]; extern CTString astrSplitScreenRadioTexts[4]; @@ -34,84 +34,84 @@ 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); + // 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_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; + 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; + // 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_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 = ""; + 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);*/ + /* // 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; - */ + /* // 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; + 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(); + CGameMenu::StartMenu(); + SelectPlayersFillMenu(); + SelectPlayersApplyMenu(); } void CSelectPlayersMenu::EndMenu(void) { - SelectPlayersApplyMenu(); - CGameMenu::EndMenu(); + SelectPlayersApplyMenu(); + CGameMenu::EndMenu(); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MServers.cpp b/Sources/SeriousSam/GUI/Menus/MServers.cpp index 943f8de..8a50230 100644 --- a/Sources/SeriousSam/GUI/Menus/MServers.cpp +++ b/Sources/SeriousSam/GUI/Menus/MServers.cpp @@ -23,87 +23,87 @@ CMGEdit mgServerFilter[7]; void CServersMenu::Initialize_t(void) { - gm_mgTitle.mg_boxOnScreen = BoxTitle(); - gm_mgTitle.mg_strText = TRANS("CHOOSE SERVER"); - gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("CHOOSE SERVER"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); - gm_mgList.mg_boxOnScreen = FLOATaabbox2D(FLOAT2D(0, 0), FLOAT2D(1, 1)); - gm_mgList.mg_pmgLeft = &gm_mgList; // make sure it can get focus - gm_mgList.mg_bEnabled = TRUE; - gm_lhGadgets.AddTail(gm_mgList.mg_lnNode); + gm_mgList.mg_boxOnScreen = FLOATaabbox2D(FLOAT2D(0, 0), FLOAT2D(1, 1)); + gm_mgList.mg_pmgLeft = &gm_mgList; // make sure it can get focus + gm_mgList.mg_bEnabled = TRUE; + gm_lhGadgets.AddTail(gm_mgList.mg_lnNode); - ASSERT(ARRAYCOUNT(mgServerColumn) == ARRAYCOUNT(mgServerFilter)); - for (INDEX i = 0; i=2)"); - mgServerFilter[4].mg_strTip = TRANS("filter by game (ie. coop)"); - mgServerFilter[5].mg_strTip = TRANS("filter by mod"); - mgServerFilter[6].mg_strTip = TRANS("filter by version"); + CTString astrColumns[7]; + mgServerColumn[0].mg_strText = TRANS("Server"); + mgServerColumn[1].mg_strText = TRANS("Map"); + mgServerColumn[2].mg_strText = TRANS("Ping"); + mgServerColumn[3].mg_strText = TRANS("Players"); + mgServerColumn[4].mg_strText = TRANS("Game"); + mgServerColumn[5].mg_strText = TRANS("Mod"); + mgServerColumn[6].mg_strText = TRANS("Ver"); + mgServerColumn[0].mg_pActivatedFunction = NULL; + mgServerColumn[1].mg_pActivatedFunction = NULL; + mgServerColumn[2].mg_pActivatedFunction = NULL; + mgServerColumn[3].mg_pActivatedFunction = NULL; + mgServerColumn[4].mg_pActivatedFunction = NULL; + mgServerColumn[5].mg_pActivatedFunction = NULL; + mgServerColumn[6].mg_pActivatedFunction = NULL; + mgServerColumn[0].mg_strTip = TRANS("sort by server"); + mgServerColumn[1].mg_strTip = TRANS("sort by map"); + mgServerColumn[2].mg_strTip = TRANS("sort by ping"); + mgServerColumn[3].mg_strTip = TRANS("sort by players"); + mgServerColumn[4].mg_strTip = TRANS("sort by game"); + mgServerColumn[5].mg_strTip = TRANS("sort by mod"); + mgServerColumn[6].mg_strTip = TRANS("sort by version"); + mgServerFilter[0].mg_strTip = TRANS("filter by server"); + mgServerFilter[1].mg_strTip = TRANS("filter by map"); + mgServerFilter[2].mg_strTip = TRANS("filter by ping (ie. <200)"); + mgServerFilter[3].mg_strTip = TRANS("filter by players (ie. >=2)"); + mgServerFilter[4].mg_strTip = TRANS("filter by game (ie. coop)"); + mgServerFilter[5].mg_strTip = TRANS("filter by mod"); + mgServerFilter[6].mg_strTip = TRANS("filter by version"); } void CServersMenu::StartMenu(void) { - extern void RefreshServerList(void); - RefreshServerList(); + extern void RefreshServerList(void); + RefreshServerList(); - CGameMenu::StartMenu(); + CGameMenu::StartMenu(); } void CServersMenu::Think(void) { - if (!_pNetwork->ga_bEnumerationChange) { - return; - } - _pNetwork->ga_bEnumerationChange = FALSE; + if (!_pNetwork->ga_bEnumerationChange) { + return; + } + _pNetwork->ga_bEnumerationChange = FALSE; } diff --git a/Sources/SeriousSam/GUI/Menus/MSinglePlayer.cpp b/Sources/SeriousSam/GUI/Menus/MSinglePlayer.cpp index a8c3522..a4cc27f 100644 --- a/Sources/SeriousSam/GUI/Menus/MSinglePlayer.cpp +++ b/Sources/SeriousSam/GUI/Menus/MSinglePlayer.cpp @@ -21,135 +21,135 @@ with this program; if not, write to the Free Software Foundation, Inc., void CSinglePlayerMenu::Initialize_t(void) { - // intialize single player menu - gm_mgTitle.mg_strText = TRANS("SINGLE PLAYER"); - gm_mgTitle.mg_boxOnScreen = BoxTitle(); - gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + // intialize single player menu + gm_mgTitle.mg_strText = TRANS("SINGLE PLAYER"); + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); - gm_mgPlayerLabel.mg_boxOnScreen = BoxBigRow(-1.0f); - gm_mgPlayerLabel.mg_bfsFontSize = BFS_MEDIUM; - gm_mgPlayerLabel.mg_iCenterI = -1; - gm_mgPlayerLabel.mg_bEnabled = FALSE; - gm_mgPlayerLabel.mg_bLabel = TRUE; - gm_lhGadgets.AddTail(gm_mgPlayerLabel.mg_lnNode); + gm_mgPlayerLabel.mg_boxOnScreen = BoxBigRow(-1.0f); + gm_mgPlayerLabel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgPlayerLabel.mg_iCenterI = -1; + gm_mgPlayerLabel.mg_bEnabled = FALSE; + gm_mgPlayerLabel.mg_bLabel = TRUE; + gm_lhGadgets.AddTail(gm_mgPlayerLabel.mg_lnNode); - gm_mgNewGame.mg_strText = TRANS("NEW GAME"); - gm_mgNewGame.mg_bfsFontSize = BFS_LARGE; - gm_mgNewGame.mg_boxOnScreen = BoxBigRow(0.0f); - gm_mgNewGame.mg_strTip = TRANS("start new game with current player"); - gm_lhGadgets.AddTail(gm_mgNewGame.mg_lnNode); - gm_mgNewGame.mg_pmgUp = &gm_mgOptions; - gm_mgNewGame.mg_pmgDown = &gm_mgCustom; - gm_mgNewGame.mg_pActivatedFunction = NULL; + gm_mgNewGame.mg_strText = TRANS("NEW GAME"); + gm_mgNewGame.mg_bfsFontSize = BFS_LARGE; + gm_mgNewGame.mg_boxOnScreen = BoxBigRow(0.0f); + gm_mgNewGame.mg_strTip = TRANS("start new game with current player"); + gm_lhGadgets.AddTail(gm_mgNewGame.mg_lnNode); + gm_mgNewGame.mg_pmgUp = &gm_mgOptions; + gm_mgNewGame.mg_pmgDown = &gm_mgCustom; + gm_mgNewGame.mg_pActivatedFunction = NULL; - gm_mgCustom.mg_strText = TRANS("CUSTOM LEVEL"); - gm_mgCustom.mg_bfsFontSize = BFS_LARGE; - gm_mgCustom.mg_boxOnScreen = BoxBigRow(1.0f); - gm_mgCustom.mg_strTip = TRANS("start new game on a custom level"); - gm_lhGadgets.AddTail(gm_mgCustom.mg_lnNode); - gm_mgCustom.mg_pmgUp = &gm_mgNewGame; - gm_mgCustom.mg_pmgDown = &gm_mgQuickLoad; - gm_mgCustom.mg_pActivatedFunction = NULL; + gm_mgCustom.mg_strText = TRANS("CUSTOM LEVEL"); + gm_mgCustom.mg_bfsFontSize = BFS_LARGE; + gm_mgCustom.mg_boxOnScreen = BoxBigRow(1.0f); + gm_mgCustom.mg_strTip = TRANS("start new game on a custom level"); + gm_lhGadgets.AddTail(gm_mgCustom.mg_lnNode); + gm_mgCustom.mg_pmgUp = &gm_mgNewGame; + gm_mgCustom.mg_pmgDown = &gm_mgQuickLoad; + gm_mgCustom.mg_pActivatedFunction = NULL; - gm_mgQuickLoad.mg_strText = TRANS("QUICK LOAD"); - gm_mgQuickLoad.mg_bfsFontSize = BFS_LARGE; - gm_mgQuickLoad.mg_boxOnScreen = BoxBigRow(2.0f); - gm_mgQuickLoad.mg_strTip = TRANS("load a quick-saved game (F9)"); - gm_lhGadgets.AddTail(gm_mgQuickLoad.mg_lnNode); - gm_mgQuickLoad.mg_pmgUp = &gm_mgCustom; - gm_mgQuickLoad.mg_pmgDown = &gm_mgLoad; - gm_mgQuickLoad.mg_pActivatedFunction = NULL; + gm_mgQuickLoad.mg_strText = TRANS("QUICK LOAD"); + gm_mgQuickLoad.mg_bfsFontSize = BFS_LARGE; + gm_mgQuickLoad.mg_boxOnScreen = BoxBigRow(2.0f); + gm_mgQuickLoad.mg_strTip = TRANS("load a quick-saved game (F9)"); + gm_lhGadgets.AddTail(gm_mgQuickLoad.mg_lnNode); + gm_mgQuickLoad.mg_pmgUp = &gm_mgCustom; + gm_mgQuickLoad.mg_pmgDown = &gm_mgLoad; + gm_mgQuickLoad.mg_pActivatedFunction = NULL; - gm_mgLoad.mg_strText = TRANS("LOAD"); - gm_mgLoad.mg_bfsFontSize = BFS_LARGE; - gm_mgLoad.mg_boxOnScreen = BoxBigRow(3.0f); - gm_mgLoad.mg_strTip = TRANS("load a saved game of current player"); - gm_lhGadgets.AddTail(gm_mgLoad.mg_lnNode); - gm_mgLoad.mg_pmgUp = &gm_mgQuickLoad; - gm_mgLoad.mg_pmgDown = &gm_mgTraining; - gm_mgLoad.mg_pActivatedFunction = NULL; + gm_mgLoad.mg_strText = TRANS("LOAD"); + gm_mgLoad.mg_bfsFontSize = BFS_LARGE; + gm_mgLoad.mg_boxOnScreen = BoxBigRow(3.0f); + gm_mgLoad.mg_strTip = TRANS("load a saved game of current player"); + gm_lhGadgets.AddTail(gm_mgLoad.mg_lnNode); + gm_mgLoad.mg_pmgUp = &gm_mgQuickLoad; + gm_mgLoad.mg_pmgDown = &gm_mgTraining; + gm_mgLoad.mg_pActivatedFunction = NULL; - gm_mgTraining.mg_strText = TRANS("TRAINING"); - gm_mgTraining.mg_bfsFontSize = BFS_LARGE; - gm_mgTraining.mg_boxOnScreen = BoxBigRow(4.0f); - gm_mgTraining.mg_strTip = TRANS("start training level - KarnakDemo"); - gm_lhGadgets.AddTail(gm_mgTraining.mg_lnNode); - gm_mgTraining.mg_pmgUp = &gm_mgLoad; - gm_mgTraining.mg_pmgDown = &gm_mgTechTest; - gm_mgTraining.mg_pActivatedFunction = NULL; + gm_mgTraining.mg_strText = TRANS("TRAINING"); + gm_mgTraining.mg_bfsFontSize = BFS_LARGE; + gm_mgTraining.mg_boxOnScreen = BoxBigRow(4.0f); + gm_mgTraining.mg_strTip = TRANS("start training level - KarnakDemo"); + gm_lhGadgets.AddTail(gm_mgTraining.mg_lnNode); + gm_mgTraining.mg_pmgUp = &gm_mgLoad; + gm_mgTraining.mg_pmgDown = &gm_mgTechTest; + gm_mgTraining.mg_pActivatedFunction = NULL; - gm_mgTechTest.mg_strText = TRANS("TECHNOLOGY TEST"); - gm_mgTechTest.mg_bfsFontSize = BFS_LARGE; - gm_mgTechTest.mg_boxOnScreen = BoxBigRow(5.0f); - gm_mgTechTest.mg_strTip = TRANS("start technology testing level"); - gm_lhGadgets.AddTail(gm_mgTechTest.mg_lnNode); - gm_mgTechTest.mg_pmgUp = &gm_mgTraining; - gm_mgTechTest.mg_pmgDown = &gm_mgPlayersAndControls; - gm_mgTechTest.mg_pActivatedFunction = NULL; + gm_mgTechTest.mg_strText = TRANS("TECHNOLOGY TEST"); + gm_mgTechTest.mg_bfsFontSize = BFS_LARGE; + gm_mgTechTest.mg_boxOnScreen = BoxBigRow(5.0f); + gm_mgTechTest.mg_strTip = TRANS("start technology testing level"); + gm_lhGadgets.AddTail(gm_mgTechTest.mg_lnNode); + gm_mgTechTest.mg_pmgUp = &gm_mgTraining; + gm_mgTechTest.mg_pmgDown = &gm_mgPlayersAndControls; + gm_mgTechTest.mg_pActivatedFunction = NULL; - gm_mgPlayersAndControls.mg_bfsFontSize = BFS_LARGE; - gm_mgPlayersAndControls.mg_boxOnScreen = BoxBigRow(6.0f); - gm_mgPlayersAndControls.mg_pmgUp = &gm_mgTechTest; - gm_mgPlayersAndControls.mg_pmgDown = &gm_mgOptions; - gm_mgPlayersAndControls.mg_strText = TRANS("PLAYERS AND CONTROLS"); - gm_mgPlayersAndControls.mg_strTip = TRANS("change currently active player or adjust controls"); - gm_lhGadgets.AddTail(gm_mgPlayersAndControls.mg_lnNode); - gm_mgPlayersAndControls.mg_pActivatedFunction = NULL; + gm_mgPlayersAndControls.mg_bfsFontSize = BFS_LARGE; + gm_mgPlayersAndControls.mg_boxOnScreen = BoxBigRow(6.0f); + gm_mgPlayersAndControls.mg_pmgUp = &gm_mgTechTest; + gm_mgPlayersAndControls.mg_pmgDown = &gm_mgOptions; + gm_mgPlayersAndControls.mg_strText = TRANS("PLAYERS AND CONTROLS"); + gm_mgPlayersAndControls.mg_strTip = TRANS("change currently active player or adjust controls"); + gm_lhGadgets.AddTail(gm_mgPlayersAndControls.mg_lnNode); + gm_mgPlayersAndControls.mg_pActivatedFunction = NULL; - gm_mgOptions.mg_strText = TRANS("GAME OPTIONS"); - gm_mgOptions.mg_bfsFontSize = BFS_LARGE; - gm_mgOptions.mg_boxOnScreen = BoxBigRow(7.0f); - gm_mgOptions.mg_strTip = TRANS("adjust miscellaneous game options"); - gm_lhGadgets.AddTail(gm_mgOptions.mg_lnNode); - gm_mgOptions.mg_pmgUp = &gm_mgPlayersAndControls; - gm_mgOptions.mg_pmgDown = &gm_mgNewGame; - gm_mgOptions.mg_pActivatedFunction = NULL; + gm_mgOptions.mg_strText = TRANS("GAME OPTIONS"); + gm_mgOptions.mg_bfsFontSize = BFS_LARGE; + gm_mgOptions.mg_boxOnScreen = BoxBigRow(7.0f); + gm_mgOptions.mg_strTip = TRANS("adjust miscellaneous game options"); + gm_lhGadgets.AddTail(gm_mgOptions.mg_lnNode); + gm_mgOptions.mg_pmgUp = &gm_mgPlayersAndControls; + gm_mgOptions.mg_pmgDown = &gm_mgNewGame; + gm_mgOptions.mg_pActivatedFunction = NULL; } void CSinglePlayerMenu::StartMenu(void) { - gm_mgTraining.mg_bEnabled = IsMenuEnabled("Training"); - gm_mgTechTest.mg_bEnabled = IsMenuEnabled("Technology Test"); + gm_mgTraining.mg_bEnabled = IsMenuEnabled("Training"); + gm_mgTechTest.mg_bEnabled = IsMenuEnabled("Technology Test"); - if (gm_mgTraining.mg_bEnabled) { - if (!gm_mgTraining.mg_lnNode.IsLinked()) { - gm_lhGadgets.AddTail(gm_mgTraining.mg_lnNode); - } + if (gm_mgTraining.mg_bEnabled) { + if (!gm_mgTraining.mg_lnNode.IsLinked()) { + gm_lhGadgets.AddTail(gm_mgTraining.mg_lnNode); + } - gm_mgLoad.mg_boxOnScreen = BoxBigRow(3.0f); - gm_mgLoad.mg_pmgUp = &gm_mgQuickLoad; - gm_mgLoad.mg_pmgDown = &gm_mgTraining; + gm_mgLoad.mg_boxOnScreen = BoxBigRow(3.0f); + gm_mgLoad.mg_pmgUp = &gm_mgQuickLoad; + gm_mgLoad.mg_pmgDown = &gm_mgTraining; - gm_mgTraining.mg_boxOnScreen = BoxBigRow(4.0f); - gm_mgTraining.mg_pmgUp = &gm_mgLoad; - gm_mgTraining.mg_pmgDown = &gm_mgTechTest; + gm_mgTraining.mg_boxOnScreen = BoxBigRow(4.0f); + gm_mgTraining.mg_pmgUp = &gm_mgLoad; + gm_mgTraining.mg_pmgDown = &gm_mgTechTest; - gm_mgTechTest.mg_boxOnScreen = BoxBigRow(5.0f); - gm_mgTechTest.mg_pmgUp = &gm_mgTraining; - gm_mgTechTest.mg_pmgDown = &gm_mgPlayersAndControls; + gm_mgTechTest.mg_boxOnScreen = BoxBigRow(5.0f); + gm_mgTechTest.mg_pmgUp = &gm_mgTraining; + gm_mgTechTest.mg_pmgDown = &gm_mgPlayersAndControls; - gm_mgPlayersAndControls.mg_boxOnScreen = BoxBigRow(6.0f); - gm_mgOptions.mg_boxOnScreen = BoxBigRow(7.0f); + gm_mgPlayersAndControls.mg_boxOnScreen = BoxBigRow(6.0f); + gm_mgOptions.mg_boxOnScreen = BoxBigRow(7.0f); - } else { - if (gm_mgTraining.mg_lnNode.IsLinked()) { - gm_mgTraining.mg_lnNode.Remove(); - } + } else { + if (gm_mgTraining.mg_lnNode.IsLinked()) { + gm_mgTraining.mg_lnNode.Remove(); + } - gm_mgLoad.mg_boxOnScreen = BoxBigRow(3.0f); - gm_mgLoad.mg_pmgUp = &gm_mgQuickLoad; - gm_mgLoad.mg_pmgDown = &gm_mgTechTest; + gm_mgLoad.mg_boxOnScreen = BoxBigRow(3.0f); + gm_mgLoad.mg_pmgUp = &gm_mgQuickLoad; + gm_mgLoad.mg_pmgDown = &gm_mgTechTest; - gm_mgTechTest.mg_boxOnScreen = BoxBigRow(4.0f); - gm_mgTechTest.mg_pmgUp = &gm_mgLoad; - gm_mgTechTest.mg_pmgDown = &gm_mgPlayersAndControls; + gm_mgTechTest.mg_boxOnScreen = BoxBigRow(4.0f); + gm_mgTechTest.mg_pmgUp = &gm_mgLoad; + gm_mgTechTest.mg_pmgDown = &gm_mgPlayersAndControls; - gm_mgPlayersAndControls.mg_boxOnScreen = BoxBigRow(5.0f); - gm_mgOptions.mg_boxOnScreen = BoxBigRow(6.0f); - } + gm_mgPlayersAndControls.mg_boxOnScreen = BoxBigRow(5.0f); + gm_mgOptions.mg_boxOnScreen = BoxBigRow(6.0f); + } - CGameMenu::StartMenu(); + CGameMenu::StartMenu(); - CPlayerCharacter &pc = _pGame->gm_apcPlayers[_pGame->gm_iSinglePlayer]; - gm_mgPlayerLabel.mg_strText.PrintF(TRANS("Player: %s\n"), pc.GetNameForPrinting()); + CPlayerCharacter &pc = _pGame->gm_apcPlayers[_pGame->gm_iSinglePlayer]; + gm_mgPlayerLabel.mg_strText.PrintF(TRANS("Player: %s\n"), pc.GetNameForPrinting()); } diff --git a/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.cpp b/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.cpp index d4ad48b..300547f 100644 --- a/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.cpp +++ b/Sources/SeriousSam/GUI/Menus/MSinglePlayerNew.cpp @@ -21,79 +21,79 @@ with this program; if not, write to the Free Software Foundation, Inc., void CSinglePlayerNewMenu::Initialize_t(void) { - // intialize single player new menu - gm_mgTitle.mg_strText = TRANS("NEW GAME"); - gm_mgTitle.mg_boxOnScreen = BoxTitle(); - gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + // intialize single player new menu + gm_mgTitle.mg_strText = TRANS("NEW GAME"); + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); - gm_mgTourist.mg_strText = TRANS("TOURIST"); - gm_mgTourist.mg_bfsFontSize = BFS_LARGE; - gm_mgTourist.mg_boxOnScreen = BoxBigRow(0.0f); - gm_mgTourist.mg_strTip = TRANS("for non-FPS players"); - gm_lhGadgets.AddTail(gm_mgTourist.mg_lnNode); - gm_mgTourist.mg_pmgUp = &gm_mgSerious; - gm_mgTourist.mg_pmgDown = &gm_mgEasy; - gm_mgTourist.mg_pActivatedFunction = NULL; + gm_mgTourist.mg_strText = TRANS("TOURIST"); + gm_mgTourist.mg_bfsFontSize = BFS_LARGE; + gm_mgTourist.mg_boxOnScreen = BoxBigRow(0.0f); + gm_mgTourist.mg_strTip = TRANS("for non-FPS players"); + gm_lhGadgets.AddTail(gm_mgTourist.mg_lnNode); + gm_mgTourist.mg_pmgUp = &gm_mgSerious; + gm_mgTourist.mg_pmgDown = &gm_mgEasy; + gm_mgTourist.mg_pActivatedFunction = NULL; - gm_mgEasy.mg_strText = TRANS("EASY"); - gm_mgEasy.mg_bfsFontSize = BFS_LARGE; - gm_mgEasy.mg_boxOnScreen = BoxBigRow(1.0f); - gm_mgEasy.mg_strTip = TRANS("for unexperienced FPS players"); - gm_lhGadgets.AddTail(gm_mgEasy.mg_lnNode); - gm_mgEasy.mg_pmgUp = &gm_mgTourist; - gm_mgEasy.mg_pmgDown = &gm_mgMedium; - gm_mgEasy.mg_pActivatedFunction = NULL; + gm_mgEasy.mg_strText = TRANS("EASY"); + gm_mgEasy.mg_bfsFontSize = BFS_LARGE; + gm_mgEasy.mg_boxOnScreen = BoxBigRow(1.0f); + gm_mgEasy.mg_strTip = TRANS("for unexperienced FPS players"); + gm_lhGadgets.AddTail(gm_mgEasy.mg_lnNode); + gm_mgEasy.mg_pmgUp = &gm_mgTourist; + gm_mgEasy.mg_pmgDown = &gm_mgMedium; + gm_mgEasy.mg_pActivatedFunction = NULL; - gm_mgMedium.mg_strText = TRANS("NORMAL"); - gm_mgMedium.mg_bfsFontSize = BFS_LARGE; - gm_mgMedium.mg_boxOnScreen = BoxBigRow(2.0f); - gm_mgMedium.mg_strTip = TRANS("for experienced FPS players"); - gm_lhGadgets.AddTail(gm_mgMedium.mg_lnNode); - gm_mgMedium.mg_pmgUp = &gm_mgEasy; - gm_mgMedium.mg_pmgDown = &gm_mgHard; - gm_mgMedium.mg_pActivatedFunction = NULL; + gm_mgMedium.mg_strText = TRANS("NORMAL"); + gm_mgMedium.mg_bfsFontSize = BFS_LARGE; + gm_mgMedium.mg_boxOnScreen = BoxBigRow(2.0f); + gm_mgMedium.mg_strTip = TRANS("for experienced FPS players"); + gm_lhGadgets.AddTail(gm_mgMedium.mg_lnNode); + gm_mgMedium.mg_pmgUp = &gm_mgEasy; + gm_mgMedium.mg_pmgDown = &gm_mgHard; + gm_mgMedium.mg_pActivatedFunction = NULL; - gm_mgHard.mg_strText = TRANS("HARD"); - gm_mgHard.mg_bfsFontSize = BFS_LARGE; - gm_mgHard.mg_boxOnScreen = BoxBigRow(3.0f); - gm_mgHard.mg_strTip = TRANS("for experienced Serious Sam players"); - gm_lhGadgets.AddTail(gm_mgHard.mg_lnNode); - gm_mgHard.mg_pmgUp = &gm_mgMedium; - gm_mgHard.mg_pmgDown = &gm_mgSerious; - gm_mgHard.mg_pActivatedFunction = NULL; + gm_mgHard.mg_strText = TRANS("HARD"); + gm_mgHard.mg_bfsFontSize = BFS_LARGE; + gm_mgHard.mg_boxOnScreen = BoxBigRow(3.0f); + gm_mgHard.mg_strTip = TRANS("for experienced Serious Sam players"); + gm_lhGadgets.AddTail(gm_mgHard.mg_lnNode); + gm_mgHard.mg_pmgUp = &gm_mgMedium; + gm_mgHard.mg_pmgDown = &gm_mgSerious; + gm_mgHard.mg_pActivatedFunction = NULL; - gm_mgSerious.mg_strText = TRANS("SERIOUS"); - gm_mgSerious.mg_bfsFontSize = BFS_LARGE; - gm_mgSerious.mg_boxOnScreen = BoxBigRow(4.0f); - gm_mgSerious.mg_strTip = TRANS("are you serious?"); - gm_lhGadgets.AddTail(gm_mgSerious.mg_lnNode); - gm_mgSerious.mg_pmgUp = &gm_mgHard; - gm_mgSerious.mg_pmgDown = &gm_mgTourist; - gm_mgSerious.mg_pActivatedFunction = NULL; + gm_mgSerious.mg_strText = TRANS("SERIOUS"); + gm_mgSerious.mg_bfsFontSize = BFS_LARGE; + gm_mgSerious.mg_boxOnScreen = BoxBigRow(4.0f); + gm_mgSerious.mg_strTip = TRANS("are you serious?"); + gm_lhGadgets.AddTail(gm_mgSerious.mg_lnNode); + gm_mgSerious.mg_pmgUp = &gm_mgHard; + gm_mgSerious.mg_pmgDown = &gm_mgTourist; + gm_mgSerious.mg_pActivatedFunction = NULL; - gm_mgMental.mg_strText = TRANS("MENTAL"); - gm_mgMental.mg_bfsFontSize = BFS_LARGE; - gm_mgMental.mg_boxOnScreen = BoxBigRow(5.0f); - gm_mgMental.mg_strTip = TRANS("you are not serious!"); - gm_lhGadgets.AddTail(gm_mgMental.mg_lnNode); - gm_mgMental.mg_pmgUp = &gm_mgSerious; - gm_mgMental.mg_pmgDown = &gm_mgTourist; - gm_mgMental.mg_pActivatedFunction = NULL; - gm_mgMental.mg_bMental = TRUE; + gm_mgMental.mg_strText = TRANS("MENTAL"); + gm_mgMental.mg_bfsFontSize = BFS_LARGE; + gm_mgMental.mg_boxOnScreen = BoxBigRow(5.0f); + gm_mgMental.mg_strTip = TRANS("you are not serious!"); + gm_lhGadgets.AddTail(gm_mgMental.mg_lnNode); + gm_mgMental.mg_pmgUp = &gm_mgSerious; + gm_mgMental.mg_pmgDown = &gm_mgTourist; + gm_mgMental.mg_pActivatedFunction = NULL; + gm_mgMental.mg_bMental = TRUE; } void CSinglePlayerNewMenu::StartMenu(void) { - CGameMenu::StartMenu(); - extern INDEX sam_bMentalActivated; - if (sam_bMentalActivated) { - gm_mgMental.Appear(); - gm_mgSerious.mg_pmgDown = &gm_mgMental; - gm_mgTourist.mg_pmgUp = &gm_mgMental; - } else { - gm_mgMental.Disappear(); - gm_mgSerious.mg_pmgDown = &gm_mgTourist; - gm_mgTourist.mg_pmgUp = &gm_mgSerious; - } + CGameMenu::StartMenu(); + extern INDEX sam_bMentalActivated; + if (sam_bMentalActivated) { + gm_mgMental.Appear(); + gm_mgSerious.mg_pmgDown = &gm_mgMental; + gm_mgTourist.mg_pmgUp = &gm_mgMental; + } else { + gm_mgMental.Disappear(); + gm_mgSerious.mg_pmgDown = &gm_mgTourist; + gm_mgTourist.mg_pmgUp = &gm_mgSerious; + } } diff --git a/Sources/SeriousSam/GUI/Menus/MSplitScreen.cpp b/Sources/SeriousSam/GUI/Menus/MSplitScreen.cpp index 3144d80..160ccac 100644 --- a/Sources/SeriousSam/GUI/Menus/MSplitScreen.cpp +++ b/Sources/SeriousSam/GUI/Menus/MSplitScreen.cpp @@ -20,40 +20,40 @@ with this program; if not, write to the Free Software Foundation, Inc., void CSplitScreenMenu::Initialize_t(void) { - // intialize split screen menu - gm_mgTitle.mg_boxOnScreen = BoxTitle(); - gm_mgTitle.mg_strText = TRANS("SPLIT SCREEN"); - gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + // intialize split screen menu + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("SPLIT SCREEN"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); - gm_mgStart.mg_bfsFontSize = BFS_LARGE; - gm_mgStart.mg_boxOnScreen = BoxBigRow(0); - gm_mgStart.mg_pmgUp = &gm_mgLoad; - gm_mgStart.mg_pmgDown = &gm_mgQuickLoad; - gm_mgStart.mg_strText = TRANS("NEW GAME"); - gm_mgStart.mg_strTip = TRANS("start new split-screen game"); - gm_lhGadgets.AddTail(gm_mgStart.mg_lnNode); - gm_mgStart.mg_pActivatedFunction = NULL; + gm_mgStart.mg_bfsFontSize = BFS_LARGE; + gm_mgStart.mg_boxOnScreen = BoxBigRow(0); + gm_mgStart.mg_pmgUp = &gm_mgLoad; + gm_mgStart.mg_pmgDown = &gm_mgQuickLoad; + gm_mgStart.mg_strText = TRANS("NEW GAME"); + gm_mgStart.mg_strTip = TRANS("start new split-screen game"); + gm_lhGadgets.AddTail(gm_mgStart.mg_lnNode); + gm_mgStart.mg_pActivatedFunction = NULL; - gm_mgQuickLoad.mg_bfsFontSize = BFS_LARGE; - gm_mgQuickLoad.mg_boxOnScreen = BoxBigRow(1); - 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_mgQuickLoad.mg_bfsFontSize = BFS_LARGE; + gm_mgQuickLoad.mg_boxOnScreen = BoxBigRow(1); + 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(2); - gm_mgLoad.mg_pmgUp = &gm_mgQuickLoad; - gm_mgLoad.mg_pmgDown = &gm_mgStart; - gm_mgLoad.mg_strText = TRANS("LOAD"); - gm_mgLoad.mg_strTip = TRANS("load a saved split-screen game"); - gm_lhGadgets.AddTail(gm_mgLoad.mg_lnNode); - gm_mgLoad.mg_pActivatedFunction = NULL; + gm_mgLoad.mg_bfsFontSize = BFS_LARGE; + gm_mgLoad.mg_boxOnScreen = BoxBigRow(2); + gm_mgLoad.mg_pmgUp = &gm_mgQuickLoad; + gm_mgLoad.mg_pmgDown = &gm_mgStart; + gm_mgLoad.mg_strText = TRANS("LOAD"); + gm_mgLoad.mg_strTip = TRANS("load a saved split-screen game"); + gm_lhGadgets.AddTail(gm_mgLoad.mg_lnNode); + gm_mgLoad.mg_pActivatedFunction = NULL; } void CSplitScreenMenu::StartMenu(void) { - CGameMenu::StartMenu(); + CGameMenu::StartMenu(); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MSplitStart.cpp b/Sources/SeriousSam/GUI/Menus/MSplitStart.cpp index 058e872..9cdc09f 100644 --- a/Sources/SeriousSam/GUI/Menus/MSplitStart.cpp +++ b/Sources/SeriousSam/GUI/Menus/MSplitStart.cpp @@ -24,77 +24,77 @@ extern void UpdateSplitLevel(INDEX iDummy); void CSplitStartMenu::Initialize_t(void) { - // intialize split screen menu - gm_mgTitle.mg_boxOnScreen = BoxTitle(); - gm_mgTitle.mg_strText = TRANS("START SPLIT SCREEN"); - gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + // intialize split screen menu + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = TRANS("START SPLIT SCREEN"); + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); - // game type trigger - TRIGGER_MG(gm_mgGameType, 0, - gm_mgStart, 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 = &UpdateSplitLevel; + // game type trigger + TRIGGER_MG(gm_mgGameType, 0, + gm_mgStart, 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 = &UpdateSplitLevel; - // difficulty trigger - TRIGGER_MG(gm_mgDifficulty, 1, - gm_mgGameType, gm_mgLevel, TRANS("Difficulty:"), astrDifficultyRadioTexts); - gm_mgDifficulty.mg_strTip = TRANS("choose difficulty level"); + // difficulty trigger + TRIGGER_MG(gm_mgDifficulty, 1, + 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(2); - gm_mgLevel.mg_bfsFontSize = BFS_MEDIUM; - gm_mgLevel.mg_iCenterI = -1; - gm_mgLevel.mg_pmgUp = &gm_mgDifficulty; - gm_mgLevel.mg_pmgDown = &gm_mgOptions; - gm_mgLevel.mg_strTip = TRANS("choose the level to start"); - gm_mgLevel.mg_pActivatedFunction = NULL; - gm_lhGadgets.AddTail(gm_mgLevel.mg_lnNode); + // level name + gm_mgLevel.mg_strText = ""; + gm_mgLevel.mg_strLabel = TRANS("Level:"); + gm_mgLevel.mg_boxOnScreen = BoxMediumRow(2); + gm_mgLevel.mg_bfsFontSize = BFS_MEDIUM; + gm_mgLevel.mg_iCenterI = -1; + gm_mgLevel.mg_pmgUp = &gm_mgDifficulty; + gm_mgLevel.mg_pmgDown = &gm_mgOptions; + gm_mgLevel.mg_strTip = TRANS("choose the level to start"); + gm_mgLevel.mg_pActivatedFunction = NULL; + gm_lhGadgets.AddTail(gm_mgLevel.mg_lnNode); - // options button - gm_mgOptions.mg_strText = TRANS("Game options"); - gm_mgOptions.mg_boxOnScreen = BoxMediumRow(3); - gm_mgOptions.mg_bfsFontSize = BFS_MEDIUM; - gm_mgOptions.mg_iCenterI = 0; - gm_mgOptions.mg_pmgUp = &gm_mgLevel; - gm_mgOptions.mg_pmgDown = &gm_mgStart; - gm_mgOptions.mg_strTip = TRANS("adjust game rules"); - gm_mgOptions.mg_pActivatedFunction = NULL; - gm_lhGadgets.AddTail(gm_mgOptions.mg_lnNode); + // options button + gm_mgOptions.mg_strText = TRANS("Game options"); + gm_mgOptions.mg_boxOnScreen = BoxMediumRow(3); + gm_mgOptions.mg_bfsFontSize = BFS_MEDIUM; + gm_mgOptions.mg_iCenterI = 0; + gm_mgOptions.mg_pmgUp = &gm_mgLevel; + gm_mgOptions.mg_pmgDown = &gm_mgStart; + gm_mgOptions.mg_strTip = TRANS("adjust game rules"); + gm_mgOptions.mg_pActivatedFunction = NULL; + gm_lhGadgets.AddTail(gm_mgOptions.mg_lnNode); - // start button - gm_mgStart.mg_bfsFontSize = BFS_LARGE; - gm_mgStart.mg_boxOnScreen = BoxBigRow(4); - gm_mgStart.mg_pmgUp = &gm_mgOptions; - gm_mgStart.mg_pmgDown = &gm_mgGameType; - gm_mgStart.mg_strText = TRANS("START"); - gm_lhGadgets.AddTail(gm_mgStart.mg_lnNode); - gm_mgStart.mg_pActivatedFunction = NULL; + // start button + gm_mgStart.mg_bfsFontSize = BFS_LARGE; + gm_mgStart.mg_boxOnScreen = BoxBigRow(4); + gm_mgStart.mg_pmgUp = &gm_mgOptions; + gm_mgStart.mg_pmgDown = &gm_mgGameType; + gm_mgStart.mg_strText = TRANS("START"); + gm_lhGadgets.AddTail(gm_mgStart.mg_lnNode); + gm_mgStart.mg_pActivatedFunction = NULL; } void CSplitStartMenu::StartMenu(void) { - extern INDEX sam_bMentalActivated; - gm_mgDifficulty.mg_ctTexts = sam_bMentalActivated ? 6 : 5; + 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(); + 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(); - // clamp maximum number of players to at least 4 - _pShell->SetINDEX("gam_ctMaxPlayers", ClampDn(_pShell->GetINDEX("gam_ctMaxPlayers"), 4L)); + // clamp maximum number of players to at least 4 + _pShell->SetINDEX("gam_ctMaxPlayers", ClampDn(_pShell->GetINDEX("gam_ctMaxPlayers"), 4L)); - UpdateSplitLevel(0); - CGameMenu::StartMenu(); + UpdateSplitLevel(0); + CGameMenu::StartMenu(); } void CSplitStartMenu::EndMenu(void) { - _pShell->SetINDEX("gam_iStartDifficulty", gm_mgDifficulty.mg_iSelected - 1); - _pShell->SetINDEX("gam_iStartMode", gm_mgGameType.mg_iSelected); + _pShell->SetINDEX("gam_iStartDifficulty", gm_mgDifficulty.mg_iSelected - 1); + _pShell->SetINDEX("gam_iStartMode", gm_mgGameType.mg_iSelected); - CGameMenu::EndMenu(); + CGameMenu::EndMenu(); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MVar.cpp b/Sources/SeriousSam/GUI/Menus/MVar.cpp index b012341..44490b5 100644 --- a/Sources/SeriousSam/GUI/Menus/MVar.cpp +++ b/Sources/SeriousSam/GUI/Menus/MVar.cpp @@ -23,111 +23,111 @@ extern BOOL _bVarChanged; void CVarMenu::Initialize_t(void) { - gm_mgTitle.mg_boxOnScreen = BoxTitle(); - gm_mgTitle.mg_strText = ""; - gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); + gm_mgTitle.mg_boxOnScreen = BoxTitle(); + gm_mgTitle.mg_strText = ""; + gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); - for (INDEX iLabel = 0; iLabel= gm_iListOffset) && - (iLabel<(gm_iListOffset + VARS_ON_SCREEN))) - { - bHasFirst |= (iLabel == 0); - bHasLast |= (iLabel == ctLabels - 1); - gm_mgVar[iInMenu].mg_pvsVar = &vs; - gm_mgVar[iInMenu].mg_strTip = vs.vs_strTip; - gm_mgVar[iInMenu].mg_bEnabled = gm_mgVar[iInMenu].IsEnabled(); - gm_mgVar[iInMenu].mg_iInList = iLabel; - } - iLabel++; - } - // enable/disable up/down arrows - gm_mgArrowUp.mg_bEnabled = !bHasFirst && ctLabels>0; - gm_mgArrowDn.mg_bEnabled = !bHasLast && ctLabels>0; + FOREACHINLIST(CVarSetting, vs_lnNode, _lhVarSettings, itvs) { + CVarSetting &vs = *itvs; + INDEX iInMenu = iLabel - gm_iListOffset; + if ((iLabel >= gm_iListOffset) && + (iLabel<(gm_iListOffset + VARS_ON_SCREEN))) + { + bHasFirst |= (iLabel == 0); + bHasLast |= (iLabel == ctLabels - 1); + gm_mgVar[iInMenu].mg_pvsVar = &vs; + gm_mgVar[iInMenu].mg_strTip = vs.vs_strTip; + gm_mgVar[iInMenu].mg_bEnabled = gm_mgVar[iInMenu].IsEnabled(); + gm_mgVar[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 CVarMenu::StartMenu(void) { - LoadVarSettings(gm_fnmMenuCFG); - // set default parameters for the list - gm_iListOffset = 0; - gm_ctListTotal = _lhVarSettings.Count(); - gm_iListWantedItem = 0; - CGameMenu::StartMenu(); + LoadVarSettings(gm_fnmMenuCFG); + // set default parameters for the list + gm_iListOffset = 0; + gm_ctListTotal = _lhVarSettings.Count(); + gm_iListWantedItem = 0; + CGameMenu::StartMenu(); } void CVarMenu::EndMenu(void) { - // disable all items first - for (INDEX i = 0; igmMainMenu || pgmCurrentMenu == &_pGUIM->gmInGameMenu) { if (_gmRunningGameMode==GM_NONE) { - pgmCurrentMenu = &_pGUIM->gmMainMenu; + pgmCurrentMenu = &_pGUIM->gmMainMenu; } else { - pgmCurrentMenu = &_pGUIM->gmInGameMenu; + pgmCurrentMenu = &_pGUIM->gmInGameMenu; } } @@ -180,29 +180,29 @@ void StartMenus(char *str) } if (CTString(str)=="load") { StartCurrentLoadMenu(); - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = NULL; + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = NULL; } if (CTString(str)=="save") { StartCurrentSaveMenu(); - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = NULL; - FixupBackButton(&_pGUIM->gmLoadSaveMenu); + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = NULL; + FixupBackButton(&_pGUIM->gmLoadSaveMenu); } if (CTString(str)=="controls") { void StartControlsMenuFromOptions(void); StartControlsMenuFromOptions(); - _pGUIM->gmControls.gm_pgmParentMenu = NULL; - FixupBackButton(&_pGUIM->gmControls); + _pGUIM->gmControls.gm_pgmParentMenu = NULL; + FixupBackButton(&_pGUIM->gmControls); } if (CTString(str)=="join") { void StartSelectPlayersMenuFromOpen(void); StartSelectPlayersMenuFromOpen(); - _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; - FixupBackButton(&_pGUIM->gmSelectPlayersMenu); + _pGUIM->gmSelectPlayersMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; + FixupBackButton(&_pGUIM->gmSelectPlayersMenu); } if (CTString(str)=="hiscore") { - ChangeToMenu(&_pGUIM->gmHighScoreMenu); - _pGUIM->gmHighScoreMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; - FixupBackButton(&_pGUIM->gmHighScoreMenu); + ChangeToMenu(&_pGUIM->gmHighScoreMenu); + _pGUIM->gmHighScoreMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; + FixupBackButton(&_pGUIM->gmHighScoreMenu); } bMenuActive = TRUE; bMenuRendering = TRUE; @@ -218,9 +218,9 @@ void StopMenus( BOOL bGoToRoot /*=TRUE*/) bMenuActive = FALSE; if (bGoToRoot) { if (_gmRunningGameMode==GM_NONE) { - pgmCurrentMenu = &_pGUIM->gmMainMenu; + pgmCurrentMenu = &_pGUIM->gmMainMenu; } else { - pgmCurrentMenu = &_pGUIM->gmInGameMenu; + pgmCurrentMenu = &_pGUIM->gmInGameMenu; } } } @@ -290,149 +290,149 @@ void InitializeMenus(void) InitGameTypes(); // ------------------- Initialize menus - _pGUIM->gmConfirmMenu.Initialize_t(); - _pGUIM->gmConfirmMenu.gm_strName = "Confirm"; - _pGUIM->gmConfirmMenu.gm_pmgSelectedByDefault = &_pGUIM->gmConfirmMenu.gm_mgConfirmYes; - _pGUIM->gmConfirmMenu.gm_pgmParentMenu = NULL; - InitActionsForConfirmMenu(); + _pGUIM->gmConfirmMenu.Initialize_t(); + _pGUIM->gmConfirmMenu.gm_strName = "Confirm"; + _pGUIM->gmConfirmMenu.gm_pmgSelectedByDefault = &_pGUIM->gmConfirmMenu.gm_mgConfirmYes; + _pGUIM->gmConfirmMenu.gm_pgmParentMenu = NULL; + InitActionsForConfirmMenu(); - _pGUIM->gmMainMenu.Initialize_t(); - _pGUIM->gmMainMenu.gm_strName = "Main"; - _pGUIM->gmMainMenu.gm_pmgSelectedByDefault = &_pGUIM->gmMainMenu.gm_mgSingle; - _pGUIM->gmMainMenu.gm_pgmParentMenu = NULL; - InitActionsForMainMenu(); + _pGUIM->gmMainMenu.Initialize_t(); + _pGUIM->gmMainMenu.gm_strName = "Main"; + _pGUIM->gmMainMenu.gm_pmgSelectedByDefault = &_pGUIM->gmMainMenu.gm_mgSingle; + _pGUIM->gmMainMenu.gm_pgmParentMenu = NULL; + InitActionsForMainMenu(); - _pGUIM->gmInGameMenu.Initialize_t(); - _pGUIM->gmInGameMenu.gm_strName = "InGame"; - _pGUIM->gmInGameMenu.gm_pmgSelectedByDefault = &_pGUIM->gmInGameMenu.gm_mgQuickLoad; - _pGUIM->gmInGameMenu.gm_pgmParentMenu = NULL; - InitActionsForInGameMenu(); + _pGUIM->gmInGameMenu.Initialize_t(); + _pGUIM->gmInGameMenu.gm_strName = "InGame"; + _pGUIM->gmInGameMenu.gm_pmgSelectedByDefault = &_pGUIM->gmInGameMenu.gm_mgQuickLoad; + _pGUIM->gmInGameMenu.gm_pgmParentMenu = NULL; + InitActionsForInGameMenu(); - _pGUIM->gmSinglePlayerMenu.Initialize_t(); - _pGUIM->gmSinglePlayerMenu.gm_strName = "SinglePlayer"; - _pGUIM->gmSinglePlayerMenu.gm_pmgSelectedByDefault = &_pGUIM->gmSinglePlayerMenu.gm_mgNewGame; - _pGUIM->gmSinglePlayerMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; - InitActionsForSinglePlayerMenu(); + _pGUIM->gmSinglePlayerMenu.Initialize_t(); + _pGUIM->gmSinglePlayerMenu.gm_strName = "SinglePlayer"; + _pGUIM->gmSinglePlayerMenu.gm_pmgSelectedByDefault = &_pGUIM->gmSinglePlayerMenu.gm_mgNewGame; + _pGUIM->gmSinglePlayerMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; + InitActionsForSinglePlayerMenu(); - _pGUIM->gmSinglePlayerNewMenu.Initialize_t(); - _pGUIM->gmSinglePlayerNewMenu.gm_strName = "SinglePlayerNew"; - _pGUIM->gmSinglePlayerNewMenu.gm_pmgSelectedByDefault = &_pGUIM->gmSinglePlayerNewMenu.gm_mgMedium; - _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; - InitActionsForSinglePlayerNewMenu(); + _pGUIM->gmSinglePlayerNewMenu.Initialize_t(); + _pGUIM->gmSinglePlayerNewMenu.gm_strName = "SinglePlayerNew"; + _pGUIM->gmSinglePlayerNewMenu.gm_pmgSelectedByDefault = &_pGUIM->gmSinglePlayerNewMenu.gm_mgMedium; + _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + InitActionsForSinglePlayerNewMenu(); - _pGUIM->gmDisabledFunction.Initialize_t(); - _pGUIM->gmDisabledFunction.gm_strName = "DisabledFunction"; - _pGUIM->gmDisabledFunction.gm_pmgSelectedByDefault = &_pGUIM->gmDisabledFunction.gm_mgButton; - _pGUIM->gmDisabledFunction.gm_pgmParentMenu = NULL; + _pGUIM->gmDisabledFunction.Initialize_t(); + _pGUIM->gmDisabledFunction.gm_strName = "DisabledFunction"; + _pGUIM->gmDisabledFunction.gm_pmgSelectedByDefault = &_pGUIM->gmDisabledFunction.gm_mgButton; + _pGUIM->gmDisabledFunction.gm_pgmParentMenu = NULL; - _pGUIM->gmPlayerProfile.Initialize_t(); - _pGUIM->gmPlayerProfile.gm_strName = "PlayerProfile"; - _pGUIM->gmPlayerProfile.gm_pmgSelectedByDefault = &_pGUIM->gmPlayerProfile.gm_mgNameField; - InitActionsForPlayerProfileMenu(); + _pGUIM->gmPlayerProfile.Initialize_t(); + _pGUIM->gmPlayerProfile.gm_strName = "PlayerProfile"; + _pGUIM->gmPlayerProfile.gm_pmgSelectedByDefault = &_pGUIM->gmPlayerProfile.gm_mgNameField; + InitActionsForPlayerProfileMenu(); - _pGUIM->gmControls.Initialize_t(); - _pGUIM->gmControls.gm_strName = "Controls"; - _pGUIM->gmControls.gm_pmgSelectedByDefault = &_pGUIM->gmControls.gm_mgButtons; - InitActionsForControlsMenu(); + _pGUIM->gmControls.Initialize_t(); + _pGUIM->gmControls.gm_strName = "Controls"; + _pGUIM->gmControls.gm_pmgSelectedByDefault = &_pGUIM->gmControls.gm_mgButtons; + InitActionsForControlsMenu(); // warning! parent menu has to be set inside button activate function from where // Load/Save menu is called - _pGUIM->gmLoadSaveMenu.Initialize_t(); - _pGUIM->gmLoadSaveMenu.gm_strName = "LoadSave"; - _pGUIM->gmLoadSaveMenu.gm_pmgSelectedByDefault = &_pGUIM->gmLoadSaveMenu.gm_amgButton[0]; + _pGUIM->gmLoadSaveMenu.Initialize_t(); + _pGUIM->gmLoadSaveMenu.gm_strName = "LoadSave"; + _pGUIM->gmLoadSaveMenu.gm_pmgSelectedByDefault = &_pGUIM->gmLoadSaveMenu.gm_amgButton[0]; - _pGUIM->gmHighScoreMenu.Initialize_t(); - _pGUIM->gmHighScoreMenu.gm_strName = "HighScore"; - _pGUIM->gmHighScoreMenu.gm_pmgSelectedByDefault = &mgBack; + _pGUIM->gmHighScoreMenu.Initialize_t(); + _pGUIM->gmHighScoreMenu.gm_strName = "HighScore"; + _pGUIM->gmHighScoreMenu.gm_pmgSelectedByDefault = &mgBack; - _pGUIM->gmCustomizeKeyboardMenu.Initialize_t(); - _pGUIM->gmCustomizeKeyboardMenu.gm_strName = "CustomizeKeyboard"; - _pGUIM->gmCustomizeKeyboardMenu.gm_pmgSelectedByDefault = &_pGUIM->gmCustomizeKeyboardMenu.gm_mgKey[0]; - _pGUIM->gmCustomizeKeyboardMenu.gm_pgmParentMenu = &_pGUIM->gmControls; + _pGUIM->gmCustomizeKeyboardMenu.Initialize_t(); + _pGUIM->gmCustomizeKeyboardMenu.gm_strName = "CustomizeKeyboard"; + _pGUIM->gmCustomizeKeyboardMenu.gm_pmgSelectedByDefault = &_pGUIM->gmCustomizeKeyboardMenu.gm_mgKey[0]; + _pGUIM->gmCustomizeKeyboardMenu.gm_pgmParentMenu = &_pGUIM->gmControls; - _pGUIM->gmCustomizeAxisMenu.Initialize_t(); - _pGUIM->gmCustomizeAxisMenu.gm_strName = "CustomizeAxis"; - _pGUIM->gmCustomizeAxisMenu.gm_pmgSelectedByDefault = &_pGUIM->gmCustomizeAxisMenu.gm_mgActionTrigger; - _pGUIM->gmCustomizeAxisMenu.gm_pgmParentMenu = &_pGUIM->gmControls; - InitActionsForCustomizeAxisMenu(); + _pGUIM->gmCustomizeAxisMenu.Initialize_t(); + _pGUIM->gmCustomizeAxisMenu.gm_strName = "CustomizeAxis"; + _pGUIM->gmCustomizeAxisMenu.gm_pmgSelectedByDefault = &_pGUIM->gmCustomizeAxisMenu.gm_mgActionTrigger; + _pGUIM->gmCustomizeAxisMenu.gm_pgmParentMenu = &_pGUIM->gmControls; + InitActionsForCustomizeAxisMenu(); - _pGUIM->gmOptionsMenu.Initialize_t(); - _pGUIM->gmOptionsMenu.gm_strName = "Options"; - _pGUIM->gmOptionsMenu.gm_pmgSelectedByDefault = &_pGUIM->gmOptionsMenu.gm_mgVideoOptions; - _pGUIM->gmOptionsMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; - InitActionsForOptionsMenu(); + _pGUIM->gmOptionsMenu.Initialize_t(); + _pGUIM->gmOptionsMenu.gm_strName = "Options"; + _pGUIM->gmOptionsMenu.gm_pmgSelectedByDefault = &_pGUIM->gmOptionsMenu.gm_mgVideoOptions; + _pGUIM->gmOptionsMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; + InitActionsForOptionsMenu(); - _pGUIM->gmVideoOptionsMenu.Initialize_t(); - _pGUIM->gmVideoOptionsMenu.gm_strName = "VideoOptions"; - _pGUIM->gmVideoOptionsMenu.gm_pmgSelectedByDefault = &_pGUIM->gmVideoOptionsMenu.gm_mgDisplayAPITrigger; - _pGUIM->gmVideoOptionsMenu.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - InitActionsForVideoOptionsMenu(); + _pGUIM->gmVideoOptionsMenu.Initialize_t(); + _pGUIM->gmVideoOptionsMenu.gm_strName = "VideoOptions"; + _pGUIM->gmVideoOptionsMenu.gm_pmgSelectedByDefault = &_pGUIM->gmVideoOptionsMenu.gm_mgDisplayAPITrigger; + _pGUIM->gmVideoOptionsMenu.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + InitActionsForVideoOptionsMenu(); - _pGUIM->gmAudioOptionsMenu.Initialize_t(); - _pGUIM->gmAudioOptionsMenu.gm_strName = "AudioOptions"; - _pGUIM->gmAudioOptionsMenu.gm_pmgSelectedByDefault = &_pGUIM->gmAudioOptionsMenu.gm_mgFrequencyTrigger; - _pGUIM->gmAudioOptionsMenu.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - InitActionsForAudioOptionsMenu(); + _pGUIM->gmAudioOptionsMenu.Initialize_t(); + _pGUIM->gmAudioOptionsMenu.gm_strName = "AudioOptions"; + _pGUIM->gmAudioOptionsMenu.gm_pmgSelectedByDefault = &_pGUIM->gmAudioOptionsMenu.gm_mgFrequencyTrigger; + _pGUIM->gmAudioOptionsMenu.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + InitActionsForAudioOptionsMenu(); - _pGUIM->gmLevelsMenu.Initialize_t(); - _pGUIM->gmLevelsMenu.gm_strName = "Levels"; - _pGUIM->gmLevelsMenu.gm_pmgSelectedByDefault = &_pGUIM->gmLevelsMenu.gm_mgManualLevel[0]; - _pGUIM->gmLevelsMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + _pGUIM->gmLevelsMenu.Initialize_t(); + _pGUIM->gmLevelsMenu.gm_strName = "Levels"; + _pGUIM->gmLevelsMenu.gm_pmgSelectedByDefault = &_pGUIM->gmLevelsMenu.gm_mgManualLevel[0]; + _pGUIM->gmLevelsMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; - _pGUIM->gmVarMenu.Initialize_t(); - _pGUIM->gmVarMenu.gm_strName = "Var"; - _pGUIM->gmVarMenu.gm_pmgSelectedByDefault = &_pGUIM->gmVarMenu.gm_mgVar[0]; - _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; - InitActionsForVarMenu(); + _pGUIM->gmVarMenu.Initialize_t(); + _pGUIM->gmVarMenu.gm_strName = "Var"; + _pGUIM->gmVarMenu.gm_pmgSelectedByDefault = &_pGUIM->gmVarMenu.gm_mgVar[0]; + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; + InitActionsForVarMenu(); - _pGUIM->gmServersMenu.Initialize_t(); - _pGUIM->gmServersMenu.gm_strName = "Servers"; - _pGUIM->gmServersMenu.gm_pmgSelectedByDefault = &_pGUIM->gmServersMenu.gm_mgList; - _pGUIM->gmServersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; - InitActionsForServersMenu(); + _pGUIM->gmServersMenu.Initialize_t(); + _pGUIM->gmServersMenu.gm_strName = "Servers"; + _pGUIM->gmServersMenu.gm_pmgSelectedByDefault = &_pGUIM->gmServersMenu.gm_mgList; + _pGUIM->gmServersMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; + InitActionsForServersMenu(); - _pGUIM->gmNetworkMenu.Initialize_t(); - _pGUIM->gmNetworkMenu.gm_strName = "Network"; - _pGUIM->gmNetworkMenu.gm_pmgSelectedByDefault = &_pGUIM->gmNetworkMenu.gm_mgJoin; - _pGUIM->gmNetworkMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; - InitActionsForNetworkMenu(); + _pGUIM->gmNetworkMenu.Initialize_t(); + _pGUIM->gmNetworkMenu.gm_strName = "Network"; + _pGUIM->gmNetworkMenu.gm_pmgSelectedByDefault = &_pGUIM->gmNetworkMenu.gm_mgJoin; + _pGUIM->gmNetworkMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; + InitActionsForNetworkMenu(); - _pGUIM->gmNetworkStartMenu.Initialize_t(); - _pGUIM->gmNetworkStartMenu.gm_strName = "NetworkStart"; - _pGUIM->gmNetworkStartMenu.gm_pmgSelectedByDefault = &_pGUIM->gmNetworkStartMenu.gm_mgStart; - _pGUIM->gmNetworkStartMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkMenu; - InitActionsForNetworkStartMenu(); + _pGUIM->gmNetworkStartMenu.Initialize_t(); + _pGUIM->gmNetworkStartMenu.gm_strName = "NetworkStart"; + _pGUIM->gmNetworkStartMenu.gm_pmgSelectedByDefault = &_pGUIM->gmNetworkStartMenu.gm_mgStart; + _pGUIM->gmNetworkStartMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkMenu; + InitActionsForNetworkStartMenu(); - _pGUIM->gmNetworkJoinMenu.Initialize_t(); - _pGUIM->gmNetworkJoinMenu.gm_strName = "NetworkJoin"; - _pGUIM->gmNetworkJoinMenu.gm_pmgSelectedByDefault = &_pGUIM->gmNetworkJoinMenu.gm_mgLAN; - _pGUIM->gmNetworkJoinMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkMenu; - InitActionsForNetworkJoinMenu(); + _pGUIM->gmNetworkJoinMenu.Initialize_t(); + _pGUIM->gmNetworkJoinMenu.gm_strName = "NetworkJoin"; + _pGUIM->gmNetworkJoinMenu.gm_pmgSelectedByDefault = &_pGUIM->gmNetworkJoinMenu.gm_mgLAN; + _pGUIM->gmNetworkJoinMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkMenu; + InitActionsForNetworkJoinMenu(); - _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; - _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = FALSE; - _pGUIM->gmSelectPlayersMenu.Initialize_t(); - _pGUIM->gmSelectPlayersMenu.gm_strName = "SelectPlayers"; - _pGUIM->gmSelectPlayersMenu.gm_pmgSelectedByDefault = &_pGUIM->gmSelectPlayersMenu.gm_mgStart; - InitActionsForSelectPlayersMenu(); + _pGUIM->gmSelectPlayersMenu.gm_bAllowDedicated = FALSE; + _pGUIM->gmSelectPlayersMenu.gm_bAllowObserving = FALSE; + _pGUIM->gmSelectPlayersMenu.Initialize_t(); + _pGUIM->gmSelectPlayersMenu.gm_strName = "SelectPlayers"; + _pGUIM->gmSelectPlayersMenu.gm_pmgSelectedByDefault = &_pGUIM->gmSelectPlayersMenu.gm_mgStart; + InitActionsForSelectPlayersMenu(); - _pGUIM->gmNetworkOpenMenu.Initialize_t(); - _pGUIM->gmNetworkOpenMenu.gm_strName = "NetworkOpen"; - _pGUIM->gmNetworkOpenMenu.gm_pmgSelectedByDefault = &_pGUIM->gmNetworkOpenMenu.gm_mgJoin; - _pGUIM->gmNetworkOpenMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; - InitActionsForNetworkOpenMenu(); + _pGUIM->gmNetworkOpenMenu.Initialize_t(); + _pGUIM->gmNetworkOpenMenu.gm_strName = "NetworkOpen"; + _pGUIM->gmNetworkOpenMenu.gm_pmgSelectedByDefault = &_pGUIM->gmNetworkOpenMenu.gm_mgJoin; + _pGUIM->gmNetworkOpenMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; + InitActionsForNetworkOpenMenu(); - _pGUIM->gmSplitScreenMenu.Initialize_t(); - _pGUIM->gmSplitScreenMenu.gm_strName = "SplitScreen"; - _pGUIM->gmSplitScreenMenu.gm_pmgSelectedByDefault = &_pGUIM->gmSplitScreenMenu.gm_mgStart; - _pGUIM->gmSplitScreenMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; - InitActionsForSplitScreenMenu(); + _pGUIM->gmSplitScreenMenu.Initialize_t(); + _pGUIM->gmSplitScreenMenu.gm_strName = "SplitScreen"; + _pGUIM->gmSplitScreenMenu.gm_pmgSelectedByDefault = &_pGUIM->gmSplitScreenMenu.gm_mgStart; + _pGUIM->gmSplitScreenMenu.gm_pgmParentMenu = &_pGUIM->gmMainMenu; + InitActionsForSplitScreenMenu(); - _pGUIM->gmSplitStartMenu.Initialize_t(); - _pGUIM->gmSplitStartMenu.gm_strName = "SplitStart"; - _pGUIM->gmSplitStartMenu.gm_pmgSelectedByDefault = &_pGUIM->gmSplitStartMenu.gm_mgStart; - _pGUIM->gmSplitStartMenu.gm_pgmParentMenu = &_pGUIM->gmSplitScreenMenu; - InitActionsForSplitStartMenu(); + _pGUIM->gmSplitStartMenu.Initialize_t(); + _pGUIM->gmSplitStartMenu.gm_strName = "SplitStart"; + _pGUIM->gmSplitStartMenu.gm_pmgSelectedByDefault = &_pGUIM->gmSplitStartMenu.gm_mgStart; + _pGUIM->gmSplitStartMenu.gm_pgmParentMenu = &_pGUIM->gmSplitScreenMenu; + InitActionsForSplitStartMenu(); } catch( char *strError) { @@ -706,7 +706,7 @@ BOOL DoMenu( CDrawPort *pdp) FLOAT fScaleH = (FLOAT)pixH / 480.0f; PIX pixI0, pixJ0, pixI1, pixJ1; // put logo(s) to main menu (if logos exist) - if (pgmCurrentMenu == &_pGUIM->gmMainMenu) + if (pgmCurrentMenu == &_pGUIM->gmMainMenu) { if( _ptoLogoODI!=NULL) { CTextureData &td = (CTextureData&)*_ptoLogoODI->GetData(); @@ -744,7 +744,7 @@ BOOL DoMenu( CDrawPort *pdp) dpMenu.PutTexture(&_toLogoMenuB, PIXaabbox2D( PIX2D( pixCenterI, pixHeightJ),PIX2D( pixCenterI+pixSizeI, pixHeightJ+pixSizeJ))); } - } else if (pgmCurrentMenu == &_pGUIM->gmAudioOptionsMenu) { + } else if (pgmCurrentMenu == &_pGUIM->gmAudioOptionsMenu) { if( _ptoLogoEAX!=NULL) { CTextureData &td = (CTextureData&)*_ptoLogoEAX->GetData(); const INDEX iSize = 95; diff --git a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp index 54d09a1..b5c8ab9 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuActions.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuActions.cpp @@ -40,59 +40,59 @@ static CDisplayMode *_admResolutionModes = NULL; // make description for a given resolution static CTString GetResolutionDescription(CDisplayMode &dm) { - CTString str; - // if dual head - if (dm.IsDualHead()) { - str.PrintF(TRANS("%dx%d double"), dm.dm_pixSizeI / 2, dm.dm_pixSizeJ); - // if widescreen - } else if (dm.IsWideScreen()) { - str.PrintF(TRANS("%dx%d wide"), dm.dm_pixSizeI, dm.dm_pixSizeJ); - // otherwise it is normal - } else { - str.PrintF("%dx%d", dm.dm_pixSizeI, dm.dm_pixSizeJ); - } - return str; + CTString str; + // if dual head + if (dm.IsDualHead()) { + str.PrintF(TRANS("%dx%d double"), dm.dm_pixSizeI / 2, dm.dm_pixSizeJ); + // if widescreen + } else if (dm.IsWideScreen()) { + str.PrintF(TRANS("%dx%d wide"), dm.dm_pixSizeI, dm.dm_pixSizeJ); + // otherwise it is normal + } else { + str.PrintF("%dx%d", dm.dm_pixSizeI, dm.dm_pixSizeJ); + } + return str; } // make description for a given resolution static void SetResolutionInList(INDEX iRes, PIX pixSizeI, PIX pixSizeJ) { - ASSERT(iRes >= 0 && iRes<_ctResolutions); + ASSERT(iRes >= 0 && iRes<_ctResolutions); - CTString &str = _astrResolutionTexts[iRes]; - CDisplayMode &dm = _admResolutionModes[iRes]; - dm.dm_pixSizeI = pixSizeI; - dm.dm_pixSizeJ = pixSizeJ; - str = GetResolutionDescription(dm); + CTString &str = _astrResolutionTexts[iRes]; + CDisplayMode &dm = _admResolutionModes[iRes]; + dm.dm_pixSizeI = pixSizeI; + dm.dm_pixSizeJ = pixSizeJ; + str = GetResolutionDescription(dm); } static void ResolutionToSize(INDEX iRes, PIX &pixSizeI, PIX &pixSizeJ) { - ASSERT(iRes >= 0 && iRes<_ctResolutions); - CDisplayMode &dm = _admResolutionModes[iRes]; - pixSizeI = dm.dm_pixSizeI; - pixSizeJ = dm.dm_pixSizeJ; + ASSERT(iRes >= 0 && iRes<_ctResolutions); + CDisplayMode &dm = _admResolutionModes[iRes]; + pixSizeI = dm.dm_pixSizeI; + pixSizeJ = dm.dm_pixSizeJ; } static void SizeToResolution(PIX pixSizeI, PIX pixSizeJ, INDEX &iRes) { - for (iRes = 0; iRes<_ctResolutions; iRes++) { - CDisplayMode &dm = _admResolutionModes[iRes]; - if (dm.dm_pixSizeI == pixSizeI && dm.dm_pixSizeJ == pixSizeJ) { - return; - } - } - // if none was found, search for default - for (iRes = 0; iRes<_ctResolutions; iRes++) { - CDisplayMode &dm = _admResolutionModes[iRes]; - if (dm.dm_pixSizeI == 640 && dm.dm_pixSizeJ == 480) { - return; - } - } - // if still none found - ASSERT(FALSE); // this should never happen - // return first one - iRes = 0; + for (iRes = 0; iRes<_ctResolutions; iRes++) { + CDisplayMode &dm = _admResolutionModes[iRes]; + if (dm.dm_pixSizeI == pixSizeI && dm.dm_pixSizeJ == pixSizeJ) { + return; + } + } + // if none was found, search for default + for (iRes = 0; iRes<_ctResolutions; iRes++) { + CDisplayMode &dm = _admResolutionModes[iRes]; + if (dm.dm_pixSizeI == 640 && dm.dm_pixSizeJ == 480) { + return; + } + } + // if still none found + ASSERT(FALSE); // this should never happen + // return first one + iRes = 0; } // ------------------------ CConfirmMenu implementation @@ -105,232 +105,232 @@ CTString _strModServerSelected; static void ExitGame(void) { - _bRunning = FALSE; - _bQuitScreen = TRUE; + _bRunning = FALSE; + _bQuitScreen = TRUE; } static void ExitConfirm(void) { - CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; - gmCurrent._pConfimedYes = &ExitGame; - gmCurrent._pConfimedNo = NULL; - gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - gmCurrent.BeLarge(); - ChangeToMenu(&gmCurrent); + gmCurrent._pConfimedYes = &ExitGame; + gmCurrent._pConfimedNo = NULL; + gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + gmCurrent.BeLarge(); + ChangeToMenu(&gmCurrent); } static void StopCurrentGame(void) { - _pGame->StopGame(); - _gmRunningGameMode = GM_NONE; - StopMenus(TRUE); - StartMenus(""); + _pGame->StopGame(); + _gmRunningGameMode = GM_NONE; + StopMenus(TRUE); + StartMenus(""); } static void StopConfirm(void) { - CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; - gmCurrent._pConfimedYes = &StopCurrentGame; - gmCurrent._pConfimedNo = NULL; - gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - gmCurrent.BeLarge(); - ChangeToMenu(&gmCurrent); + gmCurrent._pConfimedYes = &StopCurrentGame; + gmCurrent._pConfimedNo = NULL; + gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("ARE YOU SERIOUS?"); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + gmCurrent.BeLarge(); + ChangeToMenu(&gmCurrent); } static void ModLoadYes(void) { - _fnmModToLoad = _fnmModSelected; + _fnmModToLoad = _fnmModSelected; } static void ModConnect(void) { - _fnmModToLoad = _fnmModSelected; - _strModServerJoin = _strModServerSelected; + _fnmModToLoad = _fnmModSelected; + _strModServerJoin = _strModServerSelected; } extern void ModConnectConfirm(void) { - CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; - if (_fnmModSelected == " ") { - _fnmModSelected = CTString("SeriousSam"); - } + if (_fnmModSelected == " ") { + _fnmModSelected = CTString("SeriousSam"); + } - CTFileName fnmModPath = "Mods\\" + _fnmModSelected + "\\"; - if (!FileExists(fnmModPath + "BaseWriteInclude.lst") - && !FileExists(fnmModPath + "BaseWriteExclude.lst") - && !FileExists(fnmModPath + "BaseBrowseInclude.lst") - && !FileExists(fnmModPath + "BaseBrowseExclude.lst")) { - extern void ModNotInstalled(void); - ModNotInstalled(); - return; - } + CTFileName fnmModPath = "Mods\\" + _fnmModSelected + "\\"; + if (!FileExists(fnmModPath + "BaseWriteInclude.lst") + && !FileExists(fnmModPath + "BaseWriteExclude.lst") + && !FileExists(fnmModPath + "BaseBrowseInclude.lst") + && !FileExists(fnmModPath + "BaseBrowseExclude.lst")) { + extern void ModNotInstalled(void); + ModNotInstalled(); + return; + } - CPrintF(TRANS("Server is running a different MOD (%s).\nYou need to reload to connect.\n"), _fnmModSelected); - gmCurrent._pConfimedYes = &ModConnect; - gmCurrent._pConfimedNo = NULL; - gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("CHANGE THE MOD?"); - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - gmCurrent.BeLarge(); - ChangeToMenu(&gmCurrent); + CPrintF(TRANS("Server is running a different MOD (%s).\nYou need to reload to connect.\n"), _fnmModSelected); + gmCurrent._pConfimedYes = &ModConnect; + gmCurrent._pConfimedNo = NULL; + gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("CHANGE THE MOD?"); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + gmCurrent.BeLarge(); + ChangeToMenu(&gmCurrent); } void SaveConfirm(void) { - CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; - extern void OnFileSaveOK(void); - gmCurrent._pConfimedYes = &OnFileSaveOK; - gmCurrent._pConfimedNo = NULL; - gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("OVERWRITE?"); - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - gmCurrent.BeLarge(); - ChangeToMenu(&gmCurrent); + extern void OnFileSaveOK(void); + gmCurrent._pConfimedYes = &OnFileSaveOK; + gmCurrent._pConfimedNo = NULL; + gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("OVERWRITE?"); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + gmCurrent.BeLarge(); + ChangeToMenu(&gmCurrent); } void ExitAndSpawnExplorer(void) { - _bRunning = FALSE; - _bQuitScreen = FALSE; - extern CTString _strURLToVisit; - _strURLToVisit = _strModURLSelected; + _bRunning = FALSE; + _bQuitScreen = FALSE; + extern CTString _strURLToVisit; + _strURLToVisit = _strModURLSelected; } void ModNotInstalled(void) { - CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; - gmCurrent._pConfimedYes = &ExitAndSpawnExplorer; - gmCurrent._pConfimedNo = NULL; - gmCurrent.gm_mgConfirmLabel.mg_strText.PrintF( - TRANS("You don't have MOD '%s' installed.\nDo you want to visit its web site?"), (const char*)_fnmModSelected); - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - gmCurrent.BeSmall(); - ChangeToMenu(&gmCurrent); + gmCurrent._pConfimedYes = &ExitAndSpawnExplorer; + gmCurrent._pConfimedNo = NULL; + gmCurrent.gm_mgConfirmLabel.mg_strText.PrintF( + TRANS("You don't have MOD '%s' installed.\nDo you want to visit its web site?"), (const char*)_fnmModSelected); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + gmCurrent.BeSmall(); + ChangeToMenu(&gmCurrent); } extern void ModConfirm(void) { - CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; - gmCurrent._pConfimedYes = &ModLoadYes; - gmCurrent._pConfimedNo = NULL; - gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("LOAD THIS MOD?"); - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; - gmCurrent.BeLarge(); - ChangeToMenu(&gmCurrent); + gmCurrent._pConfimedYes = &ModLoadYes; + gmCurrent._pConfimedNo = NULL; + gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("LOAD THIS MOD?"); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + gmCurrent.BeLarge(); + ChangeToMenu(&gmCurrent); } static void RevertVideoSettings(void); void VideoConfirm(void) { - CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; - // FIXUP: keyboard focus lost when going from full screen to window mode - // due to WM_MOUSEMOVE being sent - _bMouseUsedLast = FALSE; - _pmgUnderCursor = gmCurrent.gm_pmgSelectedByDefault; + // FIXUP: keyboard focus lost when going from full screen to window mode + // due to WM_MOUSEMOVE being sent + _bMouseUsedLast = FALSE; + _pmgUnderCursor = gmCurrent.gm_pmgSelectedByDefault; - gmCurrent._pConfimedYes = NULL; - gmCurrent._pConfimedNo = RevertVideoSettings; + gmCurrent._pConfimedYes = NULL; + gmCurrent._pConfimedNo = RevertVideoSettings; - gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("KEEP THIS SETTING?"); - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - gmCurrent.BeLarge(); - ChangeToMenu(&gmCurrent); + gmCurrent.gm_mgConfirmLabel.mg_strText = TRANS("KEEP THIS SETTING?"); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + gmCurrent.BeLarge(); + ChangeToMenu(&gmCurrent); } static void ConfirmYes(void) { - CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; - if (gmCurrent._pConfimedYes != NULL) { - gmCurrent._pConfimedYes(); - } - void MenuGoToParent(void); - MenuGoToParent(); + if (gmCurrent._pConfimedYes != NULL) { + gmCurrent._pConfimedYes(); + } + void MenuGoToParent(void); + MenuGoToParent(); } static void ConfirmNo(void) { - CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; - if (gmCurrent._pConfimedNo != NULL) { - gmCurrent._pConfimedNo(); - } - void MenuGoToParent(void); - MenuGoToParent(); + if (gmCurrent._pConfimedNo != NULL) { + gmCurrent._pConfimedNo(); + } + void MenuGoToParent(void); + MenuGoToParent(); } void InitActionsForConfirmMenu() { - CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; + CConfirmMenu &gmCurrent = _pGUIM->gmConfirmMenu; - gmCurrent.gm_mgConfirmYes.mg_pActivatedFunction = &ConfirmYes; - gmCurrent.gm_mgConfirmNo.mg_pActivatedFunction = &ConfirmNo; + gmCurrent.gm_mgConfirmYes.mg_pActivatedFunction = &ConfirmYes; + gmCurrent.gm_mgConfirmNo.mg_pActivatedFunction = &ConfirmNo; } // ------------------------ CMainMenu implementation void InitActionsForMainMenu() { - CMainMenu &gmCurrent = _pGUIM->gmMainMenu; + CMainMenu &gmCurrent = _pGUIM->gmMainMenu; - gmCurrent.gm_mgSingle.mg_pActivatedFunction = &StartSinglePlayerMenu; - gmCurrent.gm_mgNetwork.mg_pActivatedFunction = StartNetworkMenu; - gmCurrent.gm_mgSplitScreen.mg_pActivatedFunction = &StartSplitScreenMenu; - gmCurrent.gm_mgDemo.mg_pActivatedFunction = &StartDemoLoadMenu; - gmCurrent.gm_mgMods.mg_pActivatedFunction = &StartModsLoadMenu; - gmCurrent.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; - gmCurrent.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; - gmCurrent.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; + gmCurrent.gm_mgSingle.mg_pActivatedFunction = &StartSinglePlayerMenu; + gmCurrent.gm_mgNetwork.mg_pActivatedFunction = StartNetworkMenu; + gmCurrent.gm_mgSplitScreen.mg_pActivatedFunction = &StartSplitScreenMenu; + gmCurrent.gm_mgDemo.mg_pActivatedFunction = &StartDemoLoadMenu; + gmCurrent.gm_mgMods.mg_pActivatedFunction = &StartModsLoadMenu; + gmCurrent.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; + gmCurrent.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; + gmCurrent.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; } // ------------------------ CInGameMenu implementation // start load/save menus depending on type of game running static void QuickSaveFromMenu() { - _pShell->SetINDEX("gam_bQuickSave", 2); // force save with reporting - StopMenus(TRUE); + _pShell->SetINDEX("gam_bQuickSave", 2); // force save with reporting + StopMenus(TRUE); } static void StopRecordingDemo(void) { - _pNetwork->StopDemoRec(); - void SetDemoStartStopRecText(void); - SetDemoStartStopRecText(); + _pNetwork->StopDemoRec(); + void SetDemoStartStopRecText(void); + SetDemoStartStopRecText(); } void InitActionsForInGameMenu() { - CInGameMenu &gmCurrent = _pGUIM->gmInGameMenu; + CInGameMenu &gmCurrent = _pGUIM->gmInGameMenu; - gmCurrent.gm_mgQuickLoad.mg_pActivatedFunction = &StartCurrentQuickLoadMenu; - gmCurrent.gm_mgQuickSave.mg_pActivatedFunction = &QuickSaveFromMenu; - gmCurrent.gm_mgLoad.mg_pActivatedFunction = &StartCurrentLoadMenu; - gmCurrent.gm_mgSave.mg_pActivatedFunction = &StartCurrentSaveMenu; - gmCurrent.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; - gmCurrent.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; - gmCurrent.gm_mgStop.mg_pActivatedFunction = &StopConfirm; - gmCurrent.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; + gmCurrent.gm_mgQuickLoad.mg_pActivatedFunction = &StartCurrentQuickLoadMenu; + gmCurrent.gm_mgQuickSave.mg_pActivatedFunction = &QuickSaveFromMenu; + gmCurrent.gm_mgLoad.mg_pActivatedFunction = &StartCurrentLoadMenu; + gmCurrent.gm_mgSave.mg_pActivatedFunction = &StartCurrentSaveMenu; + gmCurrent.gm_mgHighScore.mg_pActivatedFunction = &StartHighScoreMenu; + gmCurrent.gm_mgOptions.mg_pActivatedFunction = &StartOptionsMenu; + gmCurrent.gm_mgStop.mg_pActivatedFunction = &StopConfirm; + gmCurrent.gm_mgQuit.mg_pActivatedFunction = &ExitConfirm; } extern void SetDemoStartStopRecText(void) { - CInGameMenu &gmCurrent = _pGUIM->gmInGameMenu; + CInGameMenu &gmCurrent = _pGUIM->gmInGameMenu; - if (_pNetwork->IsRecordingDemo()) - { - gmCurrent.gm_mgDemoRec.SetText(TRANS("STOP RECORDING")); - gmCurrent.gm_mgDemoRec.mg_strTip = TRANS("stop current recording"); - gmCurrent.gm_mgDemoRec.mg_pActivatedFunction = &StopRecordingDemo; - } else { - gmCurrent.gm_mgDemoRec.SetText(TRANS("RECORD DEMO")); - gmCurrent.gm_mgDemoRec.mg_strTip = TRANS("start recording current game"); - gmCurrent.gm_mgDemoRec.mg_pActivatedFunction = &StartDemoSaveMenu; - } + if (_pNetwork->IsRecordingDemo()) + { + gmCurrent.gm_mgDemoRec.SetText(TRANS("STOP RECORDING")); + gmCurrent.gm_mgDemoRec.mg_strTip = TRANS("stop current recording"); + gmCurrent.gm_mgDemoRec.mg_pActivatedFunction = &StopRecordingDemo; + } else { + gmCurrent.gm_mgDemoRec.SetText(TRANS("RECORD DEMO")); + gmCurrent.gm_mgDemoRec.mg_strTip = TRANS("start recording current game"); + gmCurrent.gm_mgDemoRec.mg_pActivatedFunction = &StartDemoSaveMenu; + } } // ------------------------ CSinglePlayerMenu implementation @@ -340,265 +340,265 @@ extern CTString sam_strTrainingLevel; static void StartSinglePlayerGame_Normal(void); static void StartTechTest(void) { - _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; - _pGame->gam_strCustomLevel = sam_strTechTestLevel; - StartSinglePlayerGame_Normal(); + _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + _pGame->gam_strCustomLevel = sam_strTechTestLevel; + StartSinglePlayerGame_Normal(); } static void StartTraining(void) { - _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; - _pGame->gam_strCustomLevel = sam_strTrainingLevel; - ChangeToMenu(&_pGUIM->gmSinglePlayerNewMenu); + _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + _pGame->gam_strCustomLevel = sam_strTrainingLevel; + ChangeToMenu(&_pGUIM->gmSinglePlayerNewMenu); } void InitActionsForSinglePlayerMenu() { - CSinglePlayerMenu &gmCurrent = _pGUIM->gmSinglePlayerMenu; + CSinglePlayerMenu &gmCurrent = _pGUIM->gmSinglePlayerMenu; - gmCurrent.gm_mgNewGame.mg_pActivatedFunction = &StartSinglePlayerNewMenu; - gmCurrent.gm_mgCustom.mg_pActivatedFunction = &StartSelectLevelFromSingle; - gmCurrent.gm_mgQuickLoad.mg_pActivatedFunction = &StartSinglePlayerQuickLoadMenu; - gmCurrent.gm_mgLoad.mg_pActivatedFunction = &StartSinglePlayerLoadMenu; - gmCurrent.gm_mgTraining.mg_pActivatedFunction = &StartTraining; - gmCurrent.gm_mgTechTest.mg_pActivatedFunction = &StartTechTest; - gmCurrent.gm_mgPlayersAndControls.mg_pActivatedFunction = &StartChangePlayerMenuFromSinglePlayer; - gmCurrent.gm_mgOptions.mg_pActivatedFunction = &StartSinglePlayerGameOptions; + gmCurrent.gm_mgNewGame.mg_pActivatedFunction = &StartSinglePlayerNewMenu; + gmCurrent.gm_mgCustom.mg_pActivatedFunction = &StartSelectLevelFromSingle; + gmCurrent.gm_mgQuickLoad.mg_pActivatedFunction = &StartSinglePlayerQuickLoadMenu; + gmCurrent.gm_mgLoad.mg_pActivatedFunction = &StartSinglePlayerLoadMenu; + gmCurrent.gm_mgTraining.mg_pActivatedFunction = &StartTraining; + gmCurrent.gm_mgTechTest.mg_pActivatedFunction = &StartTechTest; + gmCurrent.gm_mgPlayersAndControls.mg_pActivatedFunction = &StartChangePlayerMenuFromSinglePlayer; + gmCurrent.gm_mgOptions.mg_pActivatedFunction = &StartSinglePlayerGameOptions; } // ------------------------ CSinglePlayerNewMenu implementation void StartSinglePlayerGame(void) { - _pGame->gm_StartSplitScreenCfg = CGame::SSC_PLAY1; + _pGame->gm_StartSplitScreenCfg = CGame::SSC_PLAY1; - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_iSinglePlayer; - _pGame->gm_aiStartLocalPlayers[1] = -1; - _pGame->gm_aiStartLocalPlayers[2] = -1; - _pGame->gm_aiStartLocalPlayers[3] = -1; + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_iSinglePlayer; + _pGame->gm_aiStartLocalPlayers[1] = -1; + _pGame->gm_aiStartLocalPlayers[2] = -1; + _pGame->gm_aiStartLocalPlayers[3] = -1; - _pGame->gm_strNetworkProvider = "Local"; - CUniversalSessionProperties sp; - _pGame->SetSinglePlayerSession(sp); + _pGame->gm_strNetworkProvider = "Local"; + CUniversalSessionProperties sp; + _pGame->SetSinglePlayerSession(sp); - if (_pGame->NewGame(_pGame->gam_strCustomLevel, _pGame->gam_strCustomLevel, sp)) - { - StopMenus(); - _gmRunningGameMode = GM_SINGLE_PLAYER; - } else { - _gmRunningGameMode = GM_NONE; - } + if (_pGame->NewGame(_pGame->gam_strCustomLevel, _pGame->gam_strCustomLevel, sp)) + { + StopMenus(); + _gmRunningGameMode = GM_SINGLE_PLAYER; + } else { + _gmRunningGameMode = GM_NONE; + } } static void StartSinglePlayerGame_Tourist(void) { - _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_TOURIST); - _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); - StartSinglePlayerGame(); + _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_TOURIST); + _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); + StartSinglePlayerGame(); } static void StartSinglePlayerGame_Easy(void) { - _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EASY); - _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); - StartSinglePlayerGame(); + _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EASY); + _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); + StartSinglePlayerGame(); } static void StartSinglePlayerGame_Normal(void) { - _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_NORMAL); - _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); - StartSinglePlayerGame(); + _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_NORMAL); + _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); + StartSinglePlayerGame(); } static void StartSinglePlayerGame_Hard(void) { - _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_HARD); - _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); - StartSinglePlayerGame(); + _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_HARD); + _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); + StartSinglePlayerGame(); } static void StartSinglePlayerGame_Serious(void) { - _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EXTREME); - _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); - StartSinglePlayerGame(); + _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EXTREME); + _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); + StartSinglePlayerGame(); } static void StartSinglePlayerGame_Mental(void) { - _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EXTREME + 1); - _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); - StartSinglePlayerGame(); + _pShell->SetINDEX("gam_iStartDifficulty", CSessionProperties::GD_EXTREME + 1); + _pShell->SetINDEX("gam_iStartMode", CSessionProperties::GM_COOPERATIVE); + StartSinglePlayerGame(); } void InitActionsForSinglePlayerNewMenu() { - CSinglePlayerNewMenu &gmCurrent = _pGUIM->gmSinglePlayerNewMenu; + CSinglePlayerNewMenu &gmCurrent = _pGUIM->gmSinglePlayerNewMenu; - gmCurrent.gm_mgTourist.mg_pActivatedFunction = &StartSinglePlayerGame_Tourist; - gmCurrent.gm_mgEasy.mg_pActivatedFunction = &StartSinglePlayerGame_Easy; - gmCurrent.gm_mgMedium.mg_pActivatedFunction = &StartSinglePlayerGame_Normal; - gmCurrent.gm_mgHard.mg_pActivatedFunction = &StartSinglePlayerGame_Hard; - gmCurrent.gm_mgSerious.mg_pActivatedFunction = &StartSinglePlayerGame_Serious; - gmCurrent.gm_mgMental.mg_pActivatedFunction = &StartSinglePlayerGame_Mental; + gmCurrent.gm_mgTourist.mg_pActivatedFunction = &StartSinglePlayerGame_Tourist; + gmCurrent.gm_mgEasy.mg_pActivatedFunction = &StartSinglePlayerGame_Easy; + gmCurrent.gm_mgMedium.mg_pActivatedFunction = &StartSinglePlayerGame_Normal; + gmCurrent.gm_mgHard.mg_pActivatedFunction = &StartSinglePlayerGame_Hard; + gmCurrent.gm_mgSerious.mg_pActivatedFunction = &StartSinglePlayerGame_Serious; + gmCurrent.gm_mgMental.mg_pActivatedFunction = &StartSinglePlayerGame_Mental; } // ------------------------ CPlayerProfileMenu implementation static void ChangeCrosshair(INDEX iNew) { - INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - pps->ps_iCrossHairType = iNew - 1; + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + pps->ps_iCrossHairType = iNew - 1; } static void ChangeWeaponSelect(INDEX iNew) { - INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - pps->ps_iWeaponAutoSelect = iNew; + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + pps->ps_iWeaponAutoSelect = iNew; } static void ChangeWeaponHide(INDEX iNew) { - INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - if (iNew) { - pps->ps_ulFlags |= PSF_HIDEWEAPON; - } else { - pps->ps_ulFlags &= ~PSF_HIDEWEAPON; - } + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + if (iNew) { + pps->ps_ulFlags |= PSF_HIDEWEAPON; + } else { + pps->ps_ulFlags &= ~PSF_HIDEWEAPON; + } } static void Change3rdPerson(INDEX iNew) { - INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - if (iNew) { - pps->ps_ulFlags |= PSF_PREFER3RDPERSON; - } else { - pps->ps_ulFlags &= ~PSF_PREFER3RDPERSON; - } + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + if (iNew) { + pps->ps_ulFlags |= PSF_PREFER3RDPERSON; + } else { + pps->ps_ulFlags &= ~PSF_PREFER3RDPERSON; + } } static void ChangeQuotes(INDEX iNew) { - INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - if (iNew) { - pps->ps_ulFlags &= ~PSF_NOQUOTES; - } else { - pps->ps_ulFlags |= PSF_NOQUOTES; - } + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + if (iNew) { + pps->ps_ulFlags &= ~PSF_NOQUOTES; + } else { + pps->ps_ulFlags |= PSF_NOQUOTES; + } } static void ChangeAutoSave(INDEX iNew) { - INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - if (iNew) { - pps->ps_ulFlags |= PSF_AUTOSAVE; - } else { - pps->ps_ulFlags &= ~PSF_AUTOSAVE; - } + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + if (iNew) { + pps->ps_ulFlags |= PSF_AUTOSAVE; + } else { + pps->ps_ulFlags &= ~PSF_AUTOSAVE; + } } static void ChangeCompDoubleClick(INDEX iNew) { - INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - if (iNew) { - pps->ps_ulFlags &= ~PSF_COMPSINGLECLICK; - } else { - pps->ps_ulFlags |= PSF_COMPSINGLECLICK; - } + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + if (iNew) { + pps->ps_ulFlags &= ~PSF_COMPSINGLECLICK; + } else { + pps->ps_ulFlags |= PSF_COMPSINGLECLICK; + } } static void ChangeViewBobbing(INDEX iNew) { - INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - if (iNew) { - pps->ps_ulFlags &= ~PSF_NOBOBBING; - } else { - pps->ps_ulFlags |= PSF_NOBOBBING; - } + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + if (iNew) { + pps->ps_ulFlags &= ~PSF_NOBOBBING; + } else { + pps->ps_ulFlags |= PSF_NOBOBBING; + } } static void ChangeSharpTurning(INDEX iNew) { - INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; - CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; - if (iNew) { - pps->ps_ulFlags |= PSF_SHARPTURNING; - } else { - pps->ps_ulFlags &= ~PSF_SHARPTURNING; - } + INDEX iPlayer = *_pGUIM->gmPlayerProfile.gm_piCurrentPlayer; + CPlayerSettings *pps = (CPlayerSettings *)_pGame->gm_apcPlayers[iPlayer].pc_aubAppearance; + if (iNew) { + pps->ps_ulFlags |= PSF_SHARPTURNING; + } else { + pps->ps_ulFlags &= ~PSF_SHARPTURNING; + } } extern void PPOnPlayerSelect(void) { - ASSERT(_pmgLastActivatedGadget != NULL); - if (_pmgLastActivatedGadget->mg_bEnabled) { - _pGUIM->gmPlayerProfile.SelectPlayer(((CMGButton *)_pmgLastActivatedGadget)->mg_iIndex); - } + ASSERT(_pmgLastActivatedGadget != NULL); + if (_pmgLastActivatedGadget->mg_bEnabled) { + _pGUIM->gmPlayerProfile.SelectPlayer(((CMGButton *)_pmgLastActivatedGadget)->mg_iIndex); + } } void InitActionsForPlayerProfileMenu() { - CPlayerProfileMenu &gmCurrent = _pGUIM->gmPlayerProfile; + CPlayerProfileMenu &gmCurrent = _pGUIM->gmPlayerProfile; - gmCurrent.gm_mgCrosshair.mg_pOnTriggerChange = ChangeCrosshair; - gmCurrent.gm_mgWeaponSelect.mg_pOnTriggerChange = ChangeWeaponSelect; - gmCurrent.gm_mgWeaponHide.mg_pOnTriggerChange = ChangeWeaponHide; - gmCurrent.gm_mg3rdPerson.mg_pOnTriggerChange = Change3rdPerson; - gmCurrent.gm_mgQuotes.mg_pOnTriggerChange = ChangeQuotes; - gmCurrent.gm_mgAutoSave.mg_pOnTriggerChange = ChangeAutoSave; - gmCurrent.gm_mgCompDoubleClick.mg_pOnTriggerChange = ChangeCompDoubleClick; - gmCurrent.gm_mgSharpTurning.mg_pOnTriggerChange = ChangeSharpTurning; - gmCurrent.gm_mgViewBobbing.mg_pOnTriggerChange = ChangeViewBobbing; - gmCurrent.gm_mgCustomizeControls.mg_pActivatedFunction = &StartControlsMenuFromPlayer; - gmCurrent.gm_mgModel.mg_pActivatedFunction = &StartPlayerModelLoadMenu; + gmCurrent.gm_mgCrosshair.mg_pOnTriggerChange = ChangeCrosshair; + gmCurrent.gm_mgWeaponSelect.mg_pOnTriggerChange = ChangeWeaponSelect; + gmCurrent.gm_mgWeaponHide.mg_pOnTriggerChange = ChangeWeaponHide; + gmCurrent.gm_mg3rdPerson.mg_pOnTriggerChange = Change3rdPerson; + gmCurrent.gm_mgQuotes.mg_pOnTriggerChange = ChangeQuotes; + gmCurrent.gm_mgAutoSave.mg_pOnTriggerChange = ChangeAutoSave; + gmCurrent.gm_mgCompDoubleClick.mg_pOnTriggerChange = ChangeCompDoubleClick; + gmCurrent.gm_mgSharpTurning.mg_pOnTriggerChange = ChangeSharpTurning; + gmCurrent.gm_mgViewBobbing.mg_pOnTriggerChange = ChangeViewBobbing; + gmCurrent.gm_mgCustomizeControls.mg_pActivatedFunction = &StartControlsMenuFromPlayer; + gmCurrent.gm_mgModel.mg_pActivatedFunction = &StartPlayerModelLoadMenu; } // ------------------------ CControlsMenu implementation void InitActionsForControlsMenu() { - CControlsMenu &gmCurrent = _pGUIM->gmControls; + CControlsMenu &gmCurrent = _pGUIM->gmControls; - gmCurrent.gm_mgButtons.mg_pActivatedFunction = &StartCustomizeKeyboardMenu; - gmCurrent.gm_mgAdvanced.mg_pActivatedFunction = &StartCustomizeAxisMenu; - gmCurrent.gm_mgPredefined.mg_pActivatedFunction = &StartControlsLoadMenu; + gmCurrent.gm_mgButtons.mg_pActivatedFunction = &StartCustomizeKeyboardMenu; + gmCurrent.gm_mgAdvanced.mg_pActivatedFunction = &StartCustomizeAxisMenu; + gmCurrent.gm_mgPredefined.mg_pActivatedFunction = &StartControlsLoadMenu; } // ------------------------ CCustomizeAxisMenu implementation void PreChangeAxis(INDEX iDummy) { - _pGUIM->gmCustomizeAxisMenu.ApplyActionSettings(); + _pGUIM->gmCustomizeAxisMenu.ApplyActionSettings(); } void PostChangeAxis(INDEX iDummy) { - _pGUIM->gmCustomizeAxisMenu.ObtainActionSettings(); + _pGUIM->gmCustomizeAxisMenu.ObtainActionSettings(); } void InitActionsForCustomizeAxisMenu() { - CCustomizeAxisMenu &gmCurrent = _pGUIM->gmCustomizeAxisMenu; + CCustomizeAxisMenu &gmCurrent = _pGUIM->gmCustomizeAxisMenu; - gmCurrent.gm_mgActionTrigger.mg_pPreTriggerChange = PreChangeAxis; - gmCurrent.gm_mgActionTrigger.mg_pOnTriggerChange = PostChangeAxis; + gmCurrent.gm_mgActionTrigger.mg_pPreTriggerChange = PreChangeAxis; + gmCurrent.gm_mgActionTrigger.mg_pOnTriggerChange = PostChangeAxis; } // ------------------------ COptionsMenu implementation void InitActionsForOptionsMenu() { - COptionsMenu &gmCurrent = _pGUIM->gmOptionsMenu; + COptionsMenu &gmCurrent = _pGUIM->gmOptionsMenu; - gmCurrent.gm_mgVideoOptions.mg_pActivatedFunction = &StartVideoOptionsMenu; - gmCurrent.gm_mgAudioOptions.mg_pActivatedFunction = &StartAudioOptionsMenu; - gmCurrent.gm_mgPlayerProfileOptions.mg_pActivatedFunction = &StartChangePlayerMenuFromOptions; - gmCurrent.gm_mgNetworkOptions.mg_pActivatedFunction = &StartNetworkSettingsMenu; - gmCurrent.gm_mgCustomOptions.mg_pActivatedFunction = &StartCustomLoadMenu; - gmCurrent.gm_mgAddonOptions.mg_pActivatedFunction = &StartAddonsLoadMenu; + gmCurrent.gm_mgVideoOptions.mg_pActivatedFunction = &StartVideoOptionsMenu; + gmCurrent.gm_mgAudioOptions.mg_pActivatedFunction = &StartAudioOptionsMenu; + gmCurrent.gm_mgPlayerProfileOptions.mg_pActivatedFunction = &StartChangePlayerMenuFromOptions; + gmCurrent.gm_mgNetworkOptions.mg_pActivatedFunction = &StartNetworkSettingsMenu; + gmCurrent.gm_mgCustomOptions.mg_pActivatedFunction = &StartCustomLoadMenu; + gmCurrent.gm_mgAddonOptions.mg_pActivatedFunction = &StartAddonsLoadMenu; } // ------------------------ CVideoOptionsMenu implementation @@ -612,355 +612,355 @@ static INDEX sam_old_iVideoSetup; // 0==speed, 1==normal, 2==quality, 3==custom static void FillResolutionsList(void) { - CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; + CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; - // free resolutions - if (_astrResolutionTexts != NULL) { - delete[] _astrResolutionTexts; - } - if (_admResolutionModes != NULL) { - delete[] _admResolutionModes; - } - _ctResolutions = 0; + // free resolutions + if (_astrResolutionTexts != NULL) { + delete[] _astrResolutionTexts; + } + if (_admResolutionModes != NULL) { + delete[] _admResolutionModes; + } + _ctResolutions = 0; - // if window - if (gmCurrent.gm_mgFullScreenTrigger.mg_iSelected == 0) { - // always has fixed resolutions, but not greater than desktop + // if window + if (gmCurrent.gm_mgFullScreenTrigger.mg_iSelected == 0) { + // always has fixed resolutions, but not greater than desktop - _ctResolutions = ARRAYCOUNT(apixWidths); - _astrResolutionTexts = new CTString[_ctResolutions]; - _admResolutionModes = new CDisplayMode[_ctResolutions]; - extern PIX _pixDesktopWidth; - INDEX iRes = 0; - for (; iRes<_ctResolutions; iRes++) { - if (apixWidths[iRes][0]>_pixDesktopWidth) break; - SetResolutionInList(iRes, apixWidths[iRes][0], apixWidths[iRes][1]); - } - _ctResolutions = iRes; + _ctResolutions = ARRAYCOUNT(apixWidths); + _astrResolutionTexts = new CTString[_ctResolutions]; + _admResolutionModes = new CDisplayMode[_ctResolutions]; + extern PIX _pixDesktopWidth; + INDEX iRes = 0; + for (; iRes<_ctResolutions; iRes++) { + if (apixWidths[iRes][0]>_pixDesktopWidth) break; + SetResolutionInList(iRes, apixWidths[iRes][0], apixWidths[iRes][1]); + } + _ctResolutions = iRes; - // if fullscreen - } else { - // get resolutions list from engine - CDisplayMode *pdm = _pGfx->EnumDisplayModes(_ctResolutions, - SwitchToAPI(gmCurrent.gm_mgDisplayAPITrigger.mg_iSelected), gmCurrent.gm_mgDisplayAdaptersTrigger.mg_iSelected); - // allocate that much - _astrResolutionTexts = new CTString[_ctResolutions]; - _admResolutionModes = new CDisplayMode[_ctResolutions]; - // for each resolution - for (INDEX iRes = 0; iRes<_ctResolutions; iRes++) { - // add it to list - SetResolutionInList(iRes, pdm[iRes].dm_pixSizeI, pdm[iRes].dm_pixSizeJ); - } - } + // if fullscreen + } else { + // get resolutions list from engine + CDisplayMode *pdm = _pGfx->EnumDisplayModes(_ctResolutions, + SwitchToAPI(gmCurrent.gm_mgDisplayAPITrigger.mg_iSelected), gmCurrent.gm_mgDisplayAdaptersTrigger.mg_iSelected); + // allocate that much + _astrResolutionTexts = new CTString[_ctResolutions]; + _admResolutionModes = new CDisplayMode[_ctResolutions]; + // for each resolution + for (INDEX iRes = 0; iRes<_ctResolutions; iRes++) { + // add it to list + SetResolutionInList(iRes, pdm[iRes].dm_pixSizeI, pdm[iRes].dm_pixSizeJ); + } + } - gmCurrent.gm_mgResolutionsTrigger.mg_astrTexts = _astrResolutionTexts; - gmCurrent.gm_mgResolutionsTrigger.mg_ctTexts = _ctResolutions; + gmCurrent.gm_mgResolutionsTrigger.mg_astrTexts = _astrResolutionTexts; + gmCurrent.gm_mgResolutionsTrigger.mg_ctTexts = _ctResolutions; } static void FillAdaptersList(void) { - CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; + CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; - if (_astrAdapterTexts != NULL) { - delete[] _astrAdapterTexts; - } + if (_astrAdapterTexts != NULL) { + delete[] _astrAdapterTexts; + } - _ctAdapters = 0; + _ctAdapters = 0; - INDEX iApi = SwitchToAPI(gmCurrent.gm_mgDisplayAPITrigger.mg_iSelected); - _ctAdapters = _pGfx->gl_gaAPI[iApi].ga_ctAdapters; - _astrAdapterTexts = new CTString[_ctAdapters]; - for (INDEX iAdapter = 0; iAdapter<_ctAdapters; iAdapter++) { - _astrAdapterTexts[iAdapter] = _pGfx->gl_gaAPI[iApi].ga_adaAdapter[iAdapter].da_strRenderer; - } + INDEX iApi = SwitchToAPI(gmCurrent.gm_mgDisplayAPITrigger.mg_iSelected); + _ctAdapters = _pGfx->gl_gaAPI[iApi].ga_ctAdapters; + _astrAdapterTexts = new CTString[_ctAdapters]; + for (INDEX iAdapter = 0; iAdapter<_ctAdapters; iAdapter++) { + _astrAdapterTexts[iAdapter] = _pGfx->gl_gaAPI[iApi].ga_adaAdapter[iAdapter].da_strRenderer; + } - gmCurrent.gm_mgDisplayAdaptersTrigger.mg_astrTexts = _astrAdapterTexts; - gmCurrent.gm_mgDisplayAdaptersTrigger.mg_ctTexts = _ctAdapters; + gmCurrent.gm_mgDisplayAdaptersTrigger.mg_astrTexts = _astrAdapterTexts; + gmCurrent.gm_mgDisplayAdaptersTrigger.mg_ctTexts = _ctAdapters; } extern void UpdateVideoOptionsButtons(INDEX iSelected) { - CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; + CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; - const BOOL _bVideoOptionsChanged = (iSelected != -1); + const BOOL _bVideoOptionsChanged = (iSelected != -1); - const BOOL bOGLEnabled = _pGfx->HasAPI(GAT_OGL); + const BOOL bOGLEnabled = _pGfx->HasAPI(GAT_OGL); #ifdef SE1_D3D - const BOOL bD3DEnabled = _pGfx->HasAPI(GAT_D3D); - ASSERT(bOGLEnabled || bD3DEnabled); + const BOOL bD3DEnabled = _pGfx->HasAPI(GAT_D3D); + ASSERT(bOGLEnabled || bD3DEnabled); #else // - ASSERT(bOGLEnabled); + ASSERT(bOGLEnabled); #endif // SE1_D3D - CDisplayAdapter &da = _pGfx->gl_gaAPI[SwitchToAPI(gmCurrent.gm_mgDisplayAPITrigger.mg_iSelected)] - .ga_adaAdapter[gmCurrent.gm_mgDisplayAdaptersTrigger.mg_iSelected]; + CDisplayAdapter &da = _pGfx->gl_gaAPI[SwitchToAPI(gmCurrent.gm_mgDisplayAPITrigger.mg_iSelected)] + .ga_adaAdapter[gmCurrent.gm_mgDisplayAdaptersTrigger.mg_iSelected]; - // number of available preferences is higher if video setup is custom - gmCurrent.gm_mgDisplayPrefsTrigger.mg_ctTexts = 3; - if (sam_iVideoSetup == 3) gmCurrent.gm_mgDisplayPrefsTrigger.mg_ctTexts++; + // number of available preferences is higher if video setup is custom + gmCurrent.gm_mgDisplayPrefsTrigger.mg_ctTexts = 3; + if (sam_iVideoSetup == 3) gmCurrent.gm_mgDisplayPrefsTrigger.mg_ctTexts++; - // enumerate adapters - FillAdaptersList(); + // enumerate adapters + FillAdaptersList(); - // show or hide buttons - gmCurrent.gm_mgDisplayAPITrigger.mg_bEnabled = bOGLEnabled + // show or hide buttons + gmCurrent.gm_mgDisplayAPITrigger.mg_bEnabled = bOGLEnabled #ifdef SE1_D3D - && bD3DEnabled + && bD3DEnabled #endif // SE1_D3D - ; - gmCurrent.gm_mgDisplayAdaptersTrigger.mg_bEnabled = _ctAdapters>1; - gmCurrent.gm_mgApply.mg_bEnabled = _bVideoOptionsChanged; - // determine which should be visible + ; + gmCurrent.gm_mgDisplayAdaptersTrigger.mg_bEnabled = _ctAdapters>1; + gmCurrent.gm_mgApply.mg_bEnabled = _bVideoOptionsChanged; + // determine which should be visible - gmCurrent.gm_mgFullScreenTrigger.mg_bEnabled = TRUE; - if (da.da_ulFlags&DAF_FULLSCREENONLY) { - gmCurrent.gm_mgFullScreenTrigger.mg_bEnabled = FALSE; - gmCurrent.gm_mgFullScreenTrigger.mg_iSelected = 1; - gmCurrent.gm_mgFullScreenTrigger.ApplyCurrentSelection(); - } + gmCurrent.gm_mgFullScreenTrigger.mg_bEnabled = TRUE; + if (da.da_ulFlags&DAF_FULLSCREENONLY) { + gmCurrent.gm_mgFullScreenTrigger.mg_bEnabled = FALSE; + gmCurrent.gm_mgFullScreenTrigger.mg_iSelected = 1; + gmCurrent.gm_mgFullScreenTrigger.ApplyCurrentSelection(); + } - gmCurrent.gm_mgBitsPerPixelTrigger.mg_bEnabled = TRUE; - if (gmCurrent.gm_mgFullScreenTrigger.mg_iSelected == 0) { - gmCurrent.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; - gmCurrent.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_DEFAULT); - gmCurrent.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); - } else if (da.da_ulFlags&DAF_16BITONLY) { - gmCurrent.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; - gmCurrent.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_16BIT); - gmCurrent.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); - } + gmCurrent.gm_mgBitsPerPixelTrigger.mg_bEnabled = TRUE; + if (gmCurrent.gm_mgFullScreenTrigger.mg_iSelected == 0) { + gmCurrent.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; + gmCurrent.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_DEFAULT); + gmCurrent.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); + } else if (da.da_ulFlags&DAF_16BITONLY) { + gmCurrent.gm_mgBitsPerPixelTrigger.mg_bEnabled = FALSE; + gmCurrent.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch(DD_16BIT); + gmCurrent.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); + } - // remember current selected resolution - PIX pixSizeI, pixSizeJ; - ResolutionToSize(gmCurrent.gm_mgResolutionsTrigger.mg_iSelected, pixSizeI, pixSizeJ); + // remember current selected resolution + PIX pixSizeI, pixSizeJ; + ResolutionToSize(gmCurrent.gm_mgResolutionsTrigger.mg_iSelected, pixSizeI, pixSizeJ); - // select same resolution again if possible - FillResolutionsList(); - SizeToResolution(pixSizeI, pixSizeJ, gmCurrent.gm_mgResolutionsTrigger.mg_iSelected); + // select same resolution again if possible + FillResolutionsList(); + SizeToResolution(pixSizeI, pixSizeJ, gmCurrent.gm_mgResolutionsTrigger.mg_iSelected); - // apply adapter and resolutions - gmCurrent.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); - gmCurrent.gm_mgResolutionsTrigger.ApplyCurrentSelection(); + // apply adapter and resolutions + gmCurrent.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgResolutionsTrigger.ApplyCurrentSelection(); } extern void InitVideoOptionsButtons(void) { - CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; + CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; - if (sam_bFullScreenActive) { - gmCurrent.gm_mgFullScreenTrigger.mg_iSelected = 1; - } else { - gmCurrent.gm_mgFullScreenTrigger.mg_iSelected = 0; - } + if (sam_bFullScreenActive) { + gmCurrent.gm_mgFullScreenTrigger.mg_iSelected = 1; + } else { + gmCurrent.gm_mgFullScreenTrigger.mg_iSelected = 0; + } - gmCurrent.gm_mgDisplayAPITrigger.mg_iSelected = APIToSwitch((GfxAPIType)(INDEX)sam_iGfxAPI); - gmCurrent.gm_mgDisplayAdaptersTrigger.mg_iSelected = sam_iDisplayAdapter; - gmCurrent.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch((enum DisplayDepth)(INDEX)sam_iDisplayDepth); + gmCurrent.gm_mgDisplayAPITrigger.mg_iSelected = APIToSwitch((GfxAPIType)(INDEX)sam_iGfxAPI); + gmCurrent.gm_mgDisplayAdaptersTrigger.mg_iSelected = sam_iDisplayAdapter; + gmCurrent.gm_mgBitsPerPixelTrigger.mg_iSelected = DepthToSwitch((enum DisplayDepth)(INDEX)sam_iDisplayDepth); - FillResolutionsList(); - SizeToResolution(sam_iScreenSizeI, sam_iScreenSizeJ, gmCurrent.gm_mgResolutionsTrigger.mg_iSelected); - gmCurrent.gm_mgDisplayPrefsTrigger.mg_iSelected = Clamp(int(sam_iVideoSetup), 0, 3); + FillResolutionsList(); + SizeToResolution(sam_iScreenSizeI, sam_iScreenSizeJ, gmCurrent.gm_mgResolutionsTrigger.mg_iSelected); + gmCurrent.gm_mgDisplayPrefsTrigger.mg_iSelected = Clamp(int(sam_iVideoSetup), 0, 3); - gmCurrent.gm_mgFullScreenTrigger.ApplyCurrentSelection(); - gmCurrent.gm_mgDisplayPrefsTrigger.ApplyCurrentSelection(); - gmCurrent.gm_mgDisplayAPITrigger.ApplyCurrentSelection(); - gmCurrent.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); - gmCurrent.gm_mgResolutionsTrigger.ApplyCurrentSelection(); - gmCurrent.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgFullScreenTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgDisplayPrefsTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgDisplayAPITrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgDisplayAdaptersTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgResolutionsTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgBitsPerPixelTrigger.ApplyCurrentSelection(); } static void ApplyVideoOptions(void) { - CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; + CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; - // Remember old video settings - sam_old_bFullScreenActive = sam_bFullScreenActive; - sam_old_iScreenSizeI = sam_iScreenSizeI; - sam_old_iScreenSizeJ = sam_iScreenSizeJ; - sam_old_iDisplayDepth = sam_iDisplayDepth; - sam_old_iDisplayAdapter = sam_iDisplayAdapter; - sam_old_iGfxAPI = sam_iGfxAPI; - sam_old_iVideoSetup = sam_iVideoSetup; + // Remember old video settings + sam_old_bFullScreenActive = sam_bFullScreenActive; + sam_old_iScreenSizeI = sam_iScreenSizeI; + sam_old_iScreenSizeJ = sam_iScreenSizeJ; + sam_old_iDisplayDepth = sam_iDisplayDepth; + sam_old_iDisplayAdapter = sam_iDisplayAdapter; + sam_old_iGfxAPI = sam_iGfxAPI; + sam_old_iVideoSetup = sam_iVideoSetup; - BOOL bFullScreenMode = gmCurrent.gm_mgFullScreenTrigger.mg_iSelected == 1; - PIX pixWindowSizeI, pixWindowSizeJ; - ResolutionToSize(gmCurrent.gm_mgResolutionsTrigger.mg_iSelected, pixWindowSizeI, pixWindowSizeJ); - enum GfxAPIType gat = SwitchToAPI(gmCurrent.gm_mgDisplayAPITrigger.mg_iSelected); - enum DisplayDepth dd = SwitchToDepth(gmCurrent.gm_mgBitsPerPixelTrigger.mg_iSelected); - const INDEX iAdapter = gmCurrent.gm_mgDisplayAdaptersTrigger.mg_iSelected; + BOOL bFullScreenMode = gmCurrent.gm_mgFullScreenTrigger.mg_iSelected == 1; + PIX pixWindowSizeI, pixWindowSizeJ; + ResolutionToSize(gmCurrent.gm_mgResolutionsTrigger.mg_iSelected, pixWindowSizeI, pixWindowSizeJ); + enum GfxAPIType gat = SwitchToAPI(gmCurrent.gm_mgDisplayAPITrigger.mg_iSelected); + enum DisplayDepth dd = SwitchToDepth(gmCurrent.gm_mgBitsPerPixelTrigger.mg_iSelected); + const INDEX iAdapter = gmCurrent.gm_mgDisplayAdaptersTrigger.mg_iSelected; - // setup preferences - extern INDEX _iLastPreferences; - if (sam_iVideoSetup == 3) _iLastPreferences = 3; - sam_iVideoSetup = gmCurrent.gm_mgDisplayPrefsTrigger.mg_iSelected; + // setup preferences + extern INDEX _iLastPreferences; + if (sam_iVideoSetup == 3) _iLastPreferences = 3; + sam_iVideoSetup = gmCurrent.gm_mgDisplayPrefsTrigger.mg_iSelected; - // force fullscreen mode if needed - CDisplayAdapter &da = _pGfx->gl_gaAPI[gat].ga_adaAdapter[iAdapter]; - if (da.da_ulFlags & DAF_FULLSCREENONLY) bFullScreenMode = TRUE; - if (da.da_ulFlags & DAF_16BITONLY) dd = DD_16BIT; - // force window to always be in default colors - if (!bFullScreenMode) dd = DD_DEFAULT; + // force fullscreen mode if needed + CDisplayAdapter &da = _pGfx->gl_gaAPI[gat].ga_adaAdapter[iAdapter]; + if (da.da_ulFlags & DAF_FULLSCREENONLY) bFullScreenMode = TRUE; + if (da.da_ulFlags & DAF_16BITONLY) dd = DD_16BIT; + // force window to always be in default colors + if (!bFullScreenMode) dd = DD_DEFAULT; - // (try to) set mode - StartNewMode(gat, iAdapter, pixWindowSizeI, pixWindowSizeJ, dd, bFullScreenMode); + // (try to) set mode + StartNewMode(gat, iAdapter, pixWindowSizeI, pixWindowSizeJ, dd, bFullScreenMode); - // refresh buttons - InitVideoOptionsButtons(); - UpdateVideoOptionsButtons(-1); + // refresh buttons + InitVideoOptionsButtons(); + UpdateVideoOptionsButtons(-1); - // ask user to keep or restore - if (bFullScreenMode) VideoConfirm(); + // ask user to keep or restore + if (bFullScreenMode) VideoConfirm(); } static void RevertVideoSettings(void) { - // restore previous variables - sam_bFullScreenActive = sam_old_bFullScreenActive; - sam_iScreenSizeI = sam_old_iScreenSizeI; - sam_iScreenSizeJ = sam_old_iScreenSizeJ; - sam_iDisplayDepth = sam_old_iDisplayDepth; - sam_iDisplayAdapter = sam_old_iDisplayAdapter; - sam_iGfxAPI = sam_old_iGfxAPI; - sam_iVideoSetup = sam_old_iVideoSetup; + // restore previous variables + sam_bFullScreenActive = sam_old_bFullScreenActive; + sam_iScreenSizeI = sam_old_iScreenSizeI; + sam_iScreenSizeJ = sam_old_iScreenSizeJ; + sam_iDisplayDepth = sam_old_iDisplayDepth; + sam_iDisplayAdapter = sam_old_iDisplayAdapter; + sam_iGfxAPI = sam_old_iGfxAPI; + sam_iVideoSetup = sam_old_iVideoSetup; - // update the video mode - extern void ApplyVideoMode(void); - ApplyVideoMode(); + // update the video mode + extern void ApplyVideoMode(void); + ApplyVideoMode(); - // refresh buttons - InitVideoOptionsButtons(); - UpdateVideoOptionsButtons(-1); + // refresh buttons + InitVideoOptionsButtons(); + UpdateVideoOptionsButtons(-1); } void InitActionsForVideoOptionsMenu() { - CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; + CVideoOptionsMenu &gmCurrent = _pGUIM->gmVideoOptionsMenu; - gmCurrent.gm_mgDisplayPrefsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - gmCurrent.gm_mgDisplayAPITrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - gmCurrent.gm_mgDisplayAdaptersTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - gmCurrent.gm_mgFullScreenTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - gmCurrent.gm_mgResolutionsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - gmCurrent.gm_mgBitsPerPixelTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; - gmCurrent.gm_mgVideoRendering.mg_pActivatedFunction = &StartRenderingOptionsMenu; - gmCurrent.gm_mgApply.mg_pActivatedFunction = &ApplyVideoOptions; + gmCurrent.gm_mgDisplayPrefsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmCurrent.gm_mgDisplayAPITrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmCurrent.gm_mgDisplayAdaptersTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmCurrent.gm_mgFullScreenTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmCurrent.gm_mgResolutionsTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmCurrent.gm_mgBitsPerPixelTrigger.mg_pOnTriggerChange = &UpdateVideoOptionsButtons; + gmCurrent.gm_mgVideoRendering.mg_pActivatedFunction = &StartRenderingOptionsMenu; + gmCurrent.gm_mgApply.mg_pActivatedFunction = &ApplyVideoOptions; } // ------------------------ CAudioOptionsMenu implementation extern void RefreshSoundFormat(void) { - CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; + CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; - switch (_pSound->GetFormat()) - { - case CSoundLibrary::SF_NONE: {gmCurrent.gm_mgFrequencyTrigger.mg_iSelected = 0; break; } - case CSoundLibrary::SF_11025_16: {gmCurrent.gm_mgFrequencyTrigger.mg_iSelected = 1; break; } - case CSoundLibrary::SF_22050_16: {gmCurrent.gm_mgFrequencyTrigger.mg_iSelected = 2; break; } - case CSoundLibrary::SF_44100_16: {gmCurrent.gm_mgFrequencyTrigger.mg_iSelected = 3; break; } - default: gmCurrent.gm_mgFrequencyTrigger.mg_iSelected = 0; - } + switch (_pSound->GetFormat()) + { + case CSoundLibrary::SF_NONE: {gmCurrent.gm_mgFrequencyTrigger.mg_iSelected = 0; break; } + case CSoundLibrary::SF_11025_16: {gmCurrent.gm_mgFrequencyTrigger.mg_iSelected = 1; break; } + case CSoundLibrary::SF_22050_16: {gmCurrent.gm_mgFrequencyTrigger.mg_iSelected = 2; break; } + case CSoundLibrary::SF_44100_16: {gmCurrent.gm_mgFrequencyTrigger.mg_iSelected = 3; break; } + default: gmCurrent.gm_mgFrequencyTrigger.mg_iSelected = 0; + } - gmCurrent.gm_mgAudioAutoTrigger.mg_iSelected = Clamp(sam_bAutoAdjustAudio, 0, 1); - gmCurrent.gm_mgAudioAPITrigger.mg_iSelected = Clamp(_pShell->GetINDEX("snd_iInterface"), 0L, 2L); + gmCurrent.gm_mgAudioAutoTrigger.mg_iSelected = Clamp(sam_bAutoAdjustAudio, 0, 1); + gmCurrent.gm_mgAudioAPITrigger.mg_iSelected = Clamp(_pShell->GetINDEX("snd_iInterface"), 0L, 2L); - gmCurrent.gm_mgWaveVolume.mg_iMinPos = 0; - gmCurrent.gm_mgWaveVolume.mg_iMaxPos = VOLUME_STEPS; - gmCurrent.gm_mgWaveVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fSoundVolume")*VOLUME_STEPS + 0.5f); - gmCurrent.gm_mgWaveVolume.ApplyCurrentPosition(); + gmCurrent.gm_mgWaveVolume.mg_iMinPos = 0; + gmCurrent.gm_mgWaveVolume.mg_iMaxPos = VOLUME_STEPS; + gmCurrent.gm_mgWaveVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fSoundVolume")*VOLUME_STEPS + 0.5f); + gmCurrent.gm_mgWaveVolume.ApplyCurrentPosition(); - gmCurrent.gm_mgMPEGVolume.mg_iMinPos = 0; - gmCurrent.gm_mgMPEGVolume.mg_iMaxPos = VOLUME_STEPS; - gmCurrent.gm_mgMPEGVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fMusicVolume")*VOLUME_STEPS + 0.5f); - gmCurrent.gm_mgMPEGVolume.ApplyCurrentPosition(); + gmCurrent.gm_mgMPEGVolume.mg_iMinPos = 0; + gmCurrent.gm_mgMPEGVolume.mg_iMaxPos = VOLUME_STEPS; + gmCurrent.gm_mgMPEGVolume.mg_iCurPos = (INDEX)(_pShell->GetFLOAT("snd_fMusicVolume")*VOLUME_STEPS + 0.5f); + gmCurrent.gm_mgMPEGVolume.ApplyCurrentPosition(); - gmCurrent.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); - gmCurrent.gm_mgAudioAPITrigger.ApplyCurrentSelection(); - gmCurrent.gm_mgFrequencyTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgAudioAPITrigger.ApplyCurrentSelection(); + gmCurrent.gm_mgFrequencyTrigger.ApplyCurrentSelection(); } static void ApplyAudioOptions(void) { - CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; + CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; - sam_bAutoAdjustAudio = gmCurrent.gm_mgAudioAutoTrigger.mg_iSelected; - if (sam_bAutoAdjustAudio) { - _pShell->Execute("include \"Scripts\\Addons\\SFX-AutoAdjust.ini\""); - } else { - _pShell->SetINDEX("snd_iInterface", gmCurrent.gm_mgAudioAPITrigger.mg_iSelected); + sam_bAutoAdjustAudio = gmCurrent.gm_mgAudioAutoTrigger.mg_iSelected; + if (sam_bAutoAdjustAudio) { + _pShell->Execute("include \"Scripts\\Addons\\SFX-AutoAdjust.ini\""); + } else { + _pShell->SetINDEX("snd_iInterface", gmCurrent.gm_mgAudioAPITrigger.mg_iSelected); - switch (gmCurrent.gm_mgFrequencyTrigger.mg_iSelected) - { - case 0: {_pSound->SetFormat(CSoundLibrary::SF_NONE); break; } - case 1: {_pSound->SetFormat(CSoundLibrary::SF_11025_16); break; } - case 2: {_pSound->SetFormat(CSoundLibrary::SF_22050_16); break; } - case 3: {_pSound->SetFormat(CSoundLibrary::SF_44100_16); break; } - default: _pSound->SetFormat(CSoundLibrary::SF_NONE); - } - } + switch (gmCurrent.gm_mgFrequencyTrigger.mg_iSelected) + { + case 0: {_pSound->SetFormat(CSoundLibrary::SF_NONE); break; } + case 1: {_pSound->SetFormat(CSoundLibrary::SF_11025_16); break; } + case 2: {_pSound->SetFormat(CSoundLibrary::SF_22050_16); break; } + case 3: {_pSound->SetFormat(CSoundLibrary::SF_44100_16); break; } + default: _pSound->SetFormat(CSoundLibrary::SF_NONE); + } + } - RefreshSoundFormat(); - snd_iFormat = _pSound->GetFormat(); + RefreshSoundFormat(); + snd_iFormat = _pSound->GetFormat(); } static void OnWaveVolumeChange(INDEX iCurPos) { - _pShell->SetFLOAT("snd_fSoundVolume", iCurPos / FLOAT(VOLUME_STEPS)); + _pShell->SetFLOAT("snd_fSoundVolume", iCurPos / FLOAT(VOLUME_STEPS)); } static void WaveSliderChange(void) { - CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; + CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; - gmCurrent.gm_mgWaveVolume.mg_iCurPos -= 5; - gmCurrent.gm_mgWaveVolume.ApplyCurrentPosition(); + gmCurrent.gm_mgWaveVolume.mg_iCurPos -= 5; + gmCurrent.gm_mgWaveVolume.ApplyCurrentPosition(); } static void FrequencyTriggerChange(INDEX iDummy) { - CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; + CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; - sam_bAutoAdjustAudio = 0; - gmCurrent.gm_mgAudioAutoTrigger.mg_iSelected = 0; - gmCurrent.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); + sam_bAutoAdjustAudio = 0; + gmCurrent.gm_mgAudioAutoTrigger.mg_iSelected = 0; + gmCurrent.gm_mgAudioAutoTrigger.ApplyCurrentSelection(); } static void MPEGSliderChange(void) { - CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; + CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; - gmCurrent.gm_mgMPEGVolume.mg_iCurPos -= 5; - gmCurrent.gm_mgMPEGVolume.ApplyCurrentPosition(); + gmCurrent.gm_mgMPEGVolume.mg_iCurPos -= 5; + gmCurrent.gm_mgMPEGVolume.ApplyCurrentPosition(); } static void OnMPEGVolumeChange(INDEX iCurPos) { - _pShell->SetFLOAT("snd_fMusicVolume", iCurPos / FLOAT(VOLUME_STEPS)); + _pShell->SetFLOAT("snd_fMusicVolume", iCurPos / FLOAT(VOLUME_STEPS)); } void InitActionsForAudioOptionsMenu() { - CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; + CAudioOptionsMenu &gmCurrent = _pGUIM->gmAudioOptionsMenu; - gmCurrent.gm_mgFrequencyTrigger.mg_pOnTriggerChange = FrequencyTriggerChange; - gmCurrent.gm_mgWaveVolume.mg_pOnSliderChange = &OnWaveVolumeChange; - gmCurrent.gm_mgWaveVolume.mg_pActivatedFunction = WaveSliderChange; - gmCurrent.gm_mgMPEGVolume.mg_pOnSliderChange = &OnMPEGVolumeChange; - gmCurrent.gm_mgMPEGVolume.mg_pActivatedFunction = MPEGSliderChange; - gmCurrent.gm_mgApply.mg_pActivatedFunction = &ApplyAudioOptions; + gmCurrent.gm_mgFrequencyTrigger.mg_pOnTriggerChange = FrequencyTriggerChange; + gmCurrent.gm_mgWaveVolume.mg_pOnSliderChange = &OnWaveVolumeChange; + gmCurrent.gm_mgWaveVolume.mg_pActivatedFunction = WaveSliderChange; + gmCurrent.gm_mgMPEGVolume.mg_pOnSliderChange = &OnMPEGVolumeChange; + gmCurrent.gm_mgMPEGVolume.mg_pActivatedFunction = MPEGSliderChange; + gmCurrent.gm_mgApply.mg_pActivatedFunction = &ApplyAudioOptions; } // ------------------------ CVarMenu implementation static void VarApply(void) { - CVarMenu &gmCurrent = _pGUIM->gmVarMenu; + CVarMenu &gmCurrent = _pGUIM->gmVarMenu; - FlushVarSettings(TRUE); - gmCurrent.EndMenu(); - gmCurrent.StartMenu(); + FlushVarSettings(TRUE); + gmCurrent.EndMenu(); + gmCurrent.StartMenu(); } void InitActionsForVarMenu() { - _pGUIM->gmVarMenu.gm_mgApply.mg_pActivatedFunction = &VarApply; + _pGUIM->gmVarMenu.gm_mgApply.mg_pActivatedFunction = &VarApply; } // ------------------------ CServersMenu implementation @@ -970,14 +970,14 @@ extern CMGEdit mgServerFilter[7]; static void SortByColumn(int i) { - CServersMenu &gmCurrent = _pGUIM->gmServersMenu; + CServersMenu &gmCurrent = _pGUIM->gmServersMenu; - if (gmCurrent.gm_mgList.mg_iSort == i) { - gmCurrent.gm_mgList.mg_bSortDown = !gmCurrent.gm_mgList.mg_bSortDown; - } else { - gmCurrent.gm_mgList.mg_bSortDown = FALSE; - } - gmCurrent.gm_mgList.mg_iSort = i; + if (gmCurrent.gm_mgList.mg_iSort == i) { + gmCurrent.gm_mgList.mg_bSortDown = !gmCurrent.gm_mgList.mg_bSortDown; + } else { + gmCurrent.gm_mgList.mg_bSortDown = FALSE; + } + gmCurrent.gm_mgList.mg_iSort = i; } static void SortByServer(void) { SortByColumn(0); } @@ -990,282 +990,282 @@ static void SortByVer(void) { SortByColumn(6); } extern void RefreshServerList(void) { - _pNetwork->EnumSessions(_pGUIM->gmServersMenu.m_bInternet); + _pNetwork->EnumSessions(_pGUIM->gmServersMenu.m_bInternet); } void RefreshServerListManually(void) { - ChangeToMenu(&_pGUIM->gmServersMenu); // this refreshes the list and sets focuses + ChangeToMenu(&_pGUIM->gmServersMenu); // this refreshes the list and sets focuses } void InitActionsForServersMenu() { - _pGUIM->gmServersMenu.gm_mgRefresh.mg_pActivatedFunction = &RefreshServerList; + _pGUIM->gmServersMenu.gm_mgRefresh.mg_pActivatedFunction = &RefreshServerList; - mgServerColumn[0].mg_pActivatedFunction = SortByServer; - mgServerColumn[1].mg_pActivatedFunction = SortByMap; - mgServerColumn[2].mg_pActivatedFunction = SortByPing; - mgServerColumn[3].mg_pActivatedFunction = SortByPlayers; - mgServerColumn[4].mg_pActivatedFunction = SortByGame; - mgServerColumn[5].mg_pActivatedFunction = SortByMod; - mgServerColumn[6].mg_pActivatedFunction = SortByVer; + mgServerColumn[0].mg_pActivatedFunction = SortByServer; + mgServerColumn[1].mg_pActivatedFunction = SortByMap; + mgServerColumn[2].mg_pActivatedFunction = SortByPing; + mgServerColumn[3].mg_pActivatedFunction = SortByPlayers; + mgServerColumn[4].mg_pActivatedFunction = SortByGame; + mgServerColumn[5].mg_pActivatedFunction = SortByMod; + mgServerColumn[6].mg_pActivatedFunction = SortByVer; } // ------------------------ CNetworkMenu implementation void InitActionsForNetworkMenu() { - CNetworkMenu &gmCurrent = _pGUIM->gmNetworkMenu; + CNetworkMenu &gmCurrent = _pGUIM->gmNetworkMenu; - gmCurrent.gm_mgJoin.mg_pActivatedFunction = &StartNetworkJoinMenu; - gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartNetworkStartMenu; - gmCurrent.gm_mgQuickLoad.mg_pActivatedFunction = &StartNetworkQuickLoadMenu; - gmCurrent.gm_mgLoad.mg_pActivatedFunction = &StartNetworkLoadMenu; + gmCurrent.gm_mgJoin.mg_pActivatedFunction = &StartNetworkJoinMenu; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartNetworkStartMenu; + gmCurrent.gm_mgQuickLoad.mg_pActivatedFunction = &StartNetworkQuickLoadMenu; + gmCurrent.gm_mgLoad.mg_pActivatedFunction = &StartNetworkLoadMenu; } // ------------------------ CNetworkJoinMenu implementation void InitActionsForNetworkJoinMenu() { - CNetworkJoinMenu &gmCurrent = _pGUIM->gmNetworkJoinMenu; + CNetworkJoinMenu &gmCurrent = _pGUIM->gmNetworkJoinMenu; - gmCurrent.gm_mgLAN.mg_pActivatedFunction = &StartSelectServerLAN; - gmCurrent.gm_mgNET.mg_pActivatedFunction = &StartSelectServerNET; - gmCurrent.gm_mgOpen.mg_pActivatedFunction = &StartNetworkOpenMenu; + gmCurrent.gm_mgLAN.mg_pActivatedFunction = &StartSelectServerLAN; + gmCurrent.gm_mgNET.mg_pActivatedFunction = &StartSelectServerNET; + gmCurrent.gm_mgOpen.mg_pActivatedFunction = &StartNetworkOpenMenu; } // ------------------------ CNetworkStartMenu implementation extern void UpdateNetworkLevel(INDEX iDummy) { - ValidateLevelForFlags(_pGame->gam_strCustomLevel, - GetSpawnFlagsForGameType(_pGUIM->gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); - _pGUIM->gmNetworkStartMenu.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; + ValidateLevelForFlags(_pGame->gam_strCustomLevel, + GetSpawnFlagsForGameType(_pGUIM->gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); + _pGUIM->gmNetworkStartMenu.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; } void InitActionsForNetworkStartMenu() { - CNetworkStartMenu &gmCurrent = _pGUIM->gmNetworkStartMenu; + CNetworkStartMenu &gmCurrent = _pGUIM->gmNetworkStartMenu; - gmCurrent.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromNetwork; - gmCurrent.gm_mgGameOptions.mg_pActivatedFunction = &StartGameOptionsFromNetwork; - gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromNetwork; + gmCurrent.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromNetwork; + gmCurrent.gm_mgGameOptions.mg_pActivatedFunction = &StartGameOptionsFromNetwork; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromNetwork; } // ------------------------ CSelectPlayersMenu implementation static INDEX FindUnusedPlayer(void) { - INDEX *ai = _pGame->gm_aiMenuLocalPlayers; - INDEX iPlayer = 0; - for (; iPlayer<8; iPlayer++) { - BOOL bUsed = FALSE; - for (INDEX iLocal = 0; iLocal<4; iLocal++) { - if (ai[iLocal] == iPlayer) { - bUsed = TRUE; - break; - } - } - if (!bUsed) { - return iPlayer; - } - } - ASSERT(FALSE); - return iPlayer; + INDEX *ai = _pGame->gm_aiMenuLocalPlayers; + INDEX iPlayer = 0; + for (; iPlayer<8; iPlayer++) { + BOOL bUsed = FALSE; + for (INDEX iLocal = 0; iLocal<4; iLocal++) { + if (ai[iLocal] == iPlayer) { + bUsed = TRUE; + break; + } + } + if (!bUsed) { + return iPlayer; + } + } + ASSERT(FALSE); + return iPlayer; } extern void SelectPlayersFillMenu(void) { - CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; - INDEX *ai = _pGame->gm_aiMenuLocalPlayers; + INDEX *ai = _pGame->gm_aiMenuLocalPlayers; - gmCurrent.gm_mgPlayer0Change.mg_iLocalPlayer = 0; - gmCurrent.gm_mgPlayer1Change.mg_iLocalPlayer = 1; - gmCurrent.gm_mgPlayer2Change.mg_iLocalPlayer = 2; - gmCurrent.gm_mgPlayer3Change.mg_iLocalPlayer = 3; + gmCurrent.gm_mgPlayer0Change.mg_iLocalPlayer = 0; + gmCurrent.gm_mgPlayer1Change.mg_iLocalPlayer = 1; + gmCurrent.gm_mgPlayer2Change.mg_iLocalPlayer = 2; + gmCurrent.gm_mgPlayer3Change.mg_iLocalPlayer = 3; - if (gmCurrent.gm_bAllowDedicated && _pGame->gm_MenuSplitScreenCfg == CGame::SSC_DEDICATED) { - gmCurrent.gm_mgDedicated.mg_iSelected = 1; - } else { - gmCurrent.gm_mgDedicated.mg_iSelected = 0; - } + if (gmCurrent.gm_bAllowDedicated && _pGame->gm_MenuSplitScreenCfg == CGame::SSC_DEDICATED) { + gmCurrent.gm_mgDedicated.mg_iSelected = 1; + } else { + gmCurrent.gm_mgDedicated.mg_iSelected = 0; + } - gmCurrent.gm_mgDedicated.ApplyCurrentSelection(); + gmCurrent.gm_mgDedicated.ApplyCurrentSelection(); - if (gmCurrent.gm_bAllowObserving && _pGame->gm_MenuSplitScreenCfg == CGame::SSC_OBSERVER) { - gmCurrent.gm_mgObserver.mg_iSelected = 1; - } else { - gmCurrent.gm_mgObserver.mg_iSelected = 0; - } + if (gmCurrent.gm_bAllowObserving && _pGame->gm_MenuSplitScreenCfg == CGame::SSC_OBSERVER) { + gmCurrent.gm_mgObserver.mg_iSelected = 1; + } else { + gmCurrent.gm_mgObserver.mg_iSelected = 0; + } - gmCurrent.gm_mgObserver.ApplyCurrentSelection(); + gmCurrent.gm_mgObserver.ApplyCurrentSelection(); - if (_pGame->gm_MenuSplitScreenCfg >= CGame::SSC_PLAY1) { - gmCurrent.gm_mgSplitScreenCfg.mg_iSelected = _pGame->gm_MenuSplitScreenCfg; - gmCurrent.gm_mgSplitScreenCfg.ApplyCurrentSelection(); - } + if (_pGame->gm_MenuSplitScreenCfg >= CGame::SSC_PLAY1) { + gmCurrent.gm_mgSplitScreenCfg.mg_iSelected = _pGame->gm_MenuSplitScreenCfg; + gmCurrent.gm_mgSplitScreenCfg.ApplyCurrentSelection(); + } - BOOL bHasDedicated = gmCurrent.gm_bAllowDedicated; - BOOL bHasObserver = gmCurrent.gm_bAllowObserving; - BOOL bHasPlayers = TRUE; + BOOL bHasDedicated = gmCurrent.gm_bAllowDedicated; + BOOL bHasObserver = gmCurrent.gm_bAllowObserving; + BOOL bHasPlayers = TRUE; - if (bHasDedicated && gmCurrent.gm_mgDedicated.mg_iSelected) { - bHasObserver = FALSE; - bHasPlayers = FALSE; - } + if (bHasDedicated && gmCurrent.gm_mgDedicated.mg_iSelected) { + bHasObserver = FALSE; + bHasPlayers = FALSE; + } - if (bHasObserver && gmCurrent.gm_mgObserver.mg_iSelected) { - bHasPlayers = FALSE; - } + if (bHasObserver && gmCurrent.gm_mgObserver.mg_iSelected) { + bHasPlayers = FALSE; + } - CMenuGadget *apmg[8]; - memset(apmg, 0, sizeof(apmg)); - INDEX i = 0; + CMenuGadget *apmg[8]; + memset(apmg, 0, sizeof(apmg)); + INDEX i = 0; - if (bHasDedicated) { - gmCurrent.gm_mgDedicated.Appear(); - apmg[i++] = &gmCurrent.gm_mgDedicated; - } else { - gmCurrent.gm_mgDedicated.Disappear(); - } + if (bHasDedicated) { + gmCurrent.gm_mgDedicated.Appear(); + apmg[i++] = &gmCurrent.gm_mgDedicated; + } else { + gmCurrent.gm_mgDedicated.Disappear(); + } - if (bHasObserver) { - gmCurrent.gm_mgObserver.Appear(); - apmg[i++] = &gmCurrent.gm_mgObserver; - } else { - gmCurrent.gm_mgObserver.Disappear(); - } + if (bHasObserver) { + gmCurrent.gm_mgObserver.Appear(); + apmg[i++] = &gmCurrent.gm_mgObserver; + } else { + gmCurrent.gm_mgObserver.Disappear(); + } - for (INDEX iLocal = 0; iLocal<4; iLocal++) { - if (ai[iLocal]<0 || ai[iLocal]>7) { - ai[iLocal] = 0; - } - for (INDEX iCopy = 0; iCopy7) { + ai[iLocal] = 0; + } + for (INDEX iCopy = 0; iCopy= 1) { - gmCurrent.gm_mgPlayer1Change.Appear(); - apmg[i++] = &gmCurrent.gm_mgPlayer1Change; - } - if (gmCurrent.gm_mgSplitScreenCfg.mg_iSelected >= 2) { - gmCurrent.gm_mgPlayer2Change.Appear(); - apmg[i++] = &gmCurrent.gm_mgPlayer2Change; - } - if (gmCurrent.gm_mgSplitScreenCfg.mg_iSelected >= 3) { - gmCurrent.gm_mgPlayer3Change.Appear(); - apmg[i++] = &gmCurrent.gm_mgPlayer3Change; - } - } else { - gmCurrent.gm_mgSplitScreenCfg.Disappear(); - } - apmg[i++] = &gmCurrent.gm_mgStart; + if (bHasPlayers) { + gmCurrent.gm_mgSplitScreenCfg.Appear(); + apmg[i++] = &gmCurrent.gm_mgSplitScreenCfg; + gmCurrent.gm_mgPlayer0Change.Appear(); + apmg[i++] = &gmCurrent.gm_mgPlayer0Change; + if (gmCurrent.gm_mgSplitScreenCfg.mg_iSelected >= 1) { + gmCurrent.gm_mgPlayer1Change.Appear(); + apmg[i++] = &gmCurrent.gm_mgPlayer1Change; + } + if (gmCurrent.gm_mgSplitScreenCfg.mg_iSelected >= 2) { + gmCurrent.gm_mgPlayer2Change.Appear(); + apmg[i++] = &gmCurrent.gm_mgPlayer2Change; + } + if (gmCurrent.gm_mgSplitScreenCfg.mg_iSelected >= 3) { + gmCurrent.gm_mgPlayer3Change.Appear(); + apmg[i++] = &gmCurrent.gm_mgPlayer3Change; + } + } else { + gmCurrent.gm_mgSplitScreenCfg.Disappear(); + } + apmg[i++] = &gmCurrent.gm_mgStart; - // relink - for (INDEX img = 0; img<8; img++) { - if (apmg[img] == NULL) { - continue; - } - INDEX imgPred = (img + 8 - 1) % 8; - for (; imgPred != img; imgPred = (imgPred + 8 - 1) % 8) { - if (apmg[imgPred] != NULL) { - break; - } - } - INDEX imgSucc = (img + 1) % 8; - for (; imgSucc != img; imgSucc = (imgSucc + 1) % 8) { - if (apmg[imgSucc] != NULL) { - break; - } - } - apmg[img]->mg_pmgUp = apmg[imgPred]; - apmg[img]->mg_pmgDown = apmg[imgSucc]; - } + // relink + for (INDEX img = 0; img<8; img++) { + if (apmg[img] == NULL) { + continue; + } + INDEX imgPred = (img + 8 - 1) % 8; + for (; imgPred != img; imgPred = (imgPred + 8 - 1) % 8) { + if (apmg[imgPred] != NULL) { + break; + } + } + INDEX imgSucc = (img + 1) % 8; + for (; imgSucc != img; imgSucc = (imgSucc + 1) % 8) { + if (apmg[imgSucc] != NULL) { + break; + } + } + apmg[img]->mg_pmgUp = apmg[imgPred]; + apmg[img]->mg_pmgDown = apmg[imgSucc]; + } - gmCurrent.gm_mgPlayer0Change.SetPlayerText(); - gmCurrent.gm_mgPlayer1Change.SetPlayerText(); - gmCurrent.gm_mgPlayer2Change.SetPlayerText(); - gmCurrent.gm_mgPlayer3Change.SetPlayerText(); + gmCurrent.gm_mgPlayer0Change.SetPlayerText(); + gmCurrent.gm_mgPlayer1Change.SetPlayerText(); + gmCurrent.gm_mgPlayer2Change.SetPlayerText(); + gmCurrent.gm_mgPlayer3Change.SetPlayerText(); - if (bHasPlayers && gmCurrent.gm_mgSplitScreenCfg.mg_iSelected >= 1) { - gmCurrent.gm_mgNotes.mg_strText = TRANS("Make sure you set different controls for each player!"); - } else { - gmCurrent.gm_mgNotes.mg_strText = ""; - } + if (bHasPlayers && gmCurrent.gm_mgSplitScreenCfg.mg_iSelected >= 1) { + gmCurrent.gm_mgNotes.mg_strText = TRANS("Make sure you set different controls for each player!"); + } else { + gmCurrent.gm_mgNotes.mg_strText = ""; + } } extern void SelectPlayersApplyMenu(void) { - CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; - if (gmCurrent.gm_bAllowDedicated && gmCurrent.gm_mgDedicated.mg_iSelected) { - _pGame->gm_MenuSplitScreenCfg = CGame::SSC_DEDICATED; - return; - } + if (gmCurrent.gm_bAllowDedicated && gmCurrent.gm_mgDedicated.mg_iSelected) { + _pGame->gm_MenuSplitScreenCfg = CGame::SSC_DEDICATED; + return; + } - if (gmCurrent.gm_bAllowObserving && gmCurrent.gm_mgObserver.mg_iSelected) { - _pGame->gm_MenuSplitScreenCfg = CGame::SSC_OBSERVER; - return; - } + if (gmCurrent.gm_bAllowObserving && gmCurrent.gm_mgObserver.mg_iSelected) { + _pGame->gm_MenuSplitScreenCfg = CGame::SSC_OBSERVER; + return; + } - _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) gmCurrent.gm_mgSplitScreenCfg.mg_iSelected; + _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) gmCurrent.gm_mgSplitScreenCfg.mg_iSelected; } static void UpdateSelectPlayers(INDEX i) { - SelectPlayersApplyMenu(); - SelectPlayersFillMenu(); + SelectPlayersApplyMenu(); + SelectPlayersFillMenu(); } void InitActionsForSelectPlayersMenu() { - CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; - gmCurrent.gm_mgDedicated.mg_pOnTriggerChange = UpdateSelectPlayers; - gmCurrent.gm_mgObserver.mg_pOnTriggerChange = UpdateSelectPlayers; - gmCurrent.gm_mgSplitScreenCfg.mg_pOnTriggerChange = UpdateSelectPlayers; + gmCurrent.gm_mgDedicated.mg_pOnTriggerChange = UpdateSelectPlayers; + gmCurrent.gm_mgObserver.mg_pOnTriggerChange = UpdateSelectPlayers; + gmCurrent.gm_mgSplitScreenCfg.mg_pOnTriggerChange = UpdateSelectPlayers; } // ------------------------ CNetworkOpenMenu implementation void InitActionsForNetworkOpenMenu() { - _pGUIM->gmNetworkOpenMenu.gm_mgJoin.mg_pActivatedFunction = &StartSelectPlayersMenuFromOpen; + _pGUIM->gmNetworkOpenMenu.gm_mgJoin.mg_pActivatedFunction = &StartSelectPlayersMenuFromOpen; } // ------------------------ CSplitScreenMenu implementation void InitActionsForSplitScreenMenu() { - CSplitScreenMenu &gmCurrent = _pGUIM->gmSplitScreenMenu; + CSplitScreenMenu &gmCurrent = _pGUIM->gmSplitScreenMenu; - gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartSplitStartMenu; - gmCurrent.gm_mgQuickLoad.mg_pActivatedFunction = &StartSplitScreenQuickLoadMenu; - gmCurrent.gm_mgLoad.mg_pActivatedFunction = &StartSplitScreenLoadMenu; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartSplitStartMenu; + gmCurrent.gm_mgQuickLoad.mg_pActivatedFunction = &StartSplitScreenQuickLoadMenu; + gmCurrent.gm_mgLoad.mg_pActivatedFunction = &StartSplitScreenLoadMenu; } // ------------------------ CSplitStartMenu implementation void InitActionsForSplitStartMenu() { - CSplitStartMenu &gmCurrent = _pGUIM->gmSplitStartMenu; + CSplitStartMenu &gmCurrent = _pGUIM->gmSplitStartMenu; - gmCurrent.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromSplit; - gmCurrent.gm_mgOptions.mg_pActivatedFunction = &StartGameOptionsFromSplitScreen; - gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromSplit; + gmCurrent.gm_mgLevel.mg_pActivatedFunction = &StartSelectLevelFromSplit; + gmCurrent.gm_mgOptions.mg_pActivatedFunction = &StartGameOptionsFromSplitScreen; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromSplit; } extern void UpdateSplitLevel(INDEX iDummy) { - CSplitStartMenu &gmCurrent = _pGUIM->gmSplitStartMenu; + CSplitStartMenu &gmCurrent = _pGUIM->gmSplitStartMenu; - ValidateLevelForFlags(_pGame->gam_strCustomLevel, - GetSpawnFlagsForGameType(gmCurrent.gm_mgGameType.mg_iSelected)); - gmCurrent.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; + ValidateLevelForFlags(_pGame->gam_strCustomLevel, + GetSpawnFlagsForGameType(gmCurrent.gm_mgGameType.mg_iSelected)); + gmCurrent.gm_mgLevel.mg_strText = FindLevelByFileName(_pGame->gam_strCustomLevel).li_strName; } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp b/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp index d92c9e6..4312a61 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuStarters.cpp @@ -36,824 +36,824 @@ extern CTString _strModServerSelected; void StartVideoOptionsMenu(void) { - ChangeToMenu(&_pGUIM->gmVideoOptionsMenu); + ChangeToMenu(&_pGUIM->gmVideoOptionsMenu); } void StartAudioOptionsMenu(void) { - ChangeToMenu(&_pGUIM->gmAudioOptionsMenu); + ChangeToMenu(&_pGUIM->gmAudioOptionsMenu); } void StartSinglePlayerMenu(void) { - ChangeToMenu(&_pGUIM->gmSinglePlayerMenu); + ChangeToMenu(&_pGUIM->gmSinglePlayerMenu); } void StartNetworkMenu(void) { - ChangeToMenu(&_pGUIM->gmNetworkMenu); + ChangeToMenu(&_pGUIM->gmNetworkMenu); } void StartNetworkJoinMenu(void) { - ChangeToMenu(&_pGUIM->gmNetworkJoinMenu); + ChangeToMenu(&_pGUIM->gmNetworkJoinMenu); } void StartNetworkStartMenu(void) { - ChangeToMenu(&_pGUIM->gmNetworkStartMenu); + ChangeToMenu(&_pGUIM->gmNetworkStartMenu); } void StartNetworkOpenMenu(void) { - ChangeToMenu(&_pGUIM->gmNetworkOpenMenu); + ChangeToMenu(&_pGUIM->gmNetworkOpenMenu); } void StartSplitScreenMenu(void) { - ChangeToMenu(&_pGUIM->gmSplitScreenMenu); + ChangeToMenu(&_pGUIM->gmSplitScreenMenu); } void StartSplitStartMenu(void) { - ChangeToMenu(&_pGUIM->gmSplitStartMenu); + ChangeToMenu(&_pGUIM->gmSplitStartMenu); } void StartSinglePlayerNewMenuCustom(void) { - _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmLevelsMenu; - ChangeToMenu(&_pGUIM->gmSinglePlayerNewMenu); + _pGUIM->gmSinglePlayerNewMenu.gm_pgmParentMenu = &_pGUIM->gmLevelsMenu; + ChangeToMenu(&_pGUIM->gmSinglePlayerNewMenu); } static void SetQuickLoadNotes(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - if (_pShell->GetINDEX("gam_iQuickSaveSlots") <= 8) { - gmCurrent.gm_mgNotes.mg_strText = TRANS( - "In-game QuickSave shortcuts:\n" - "F6 - save a new QuickSave\n" - "F9 - load the last QuickSave\n"); - } else { - gmCurrent.gm_mgNotes.mg_strText = ""; - } + if (_pShell->GetINDEX("gam_iQuickSaveSlots") <= 8) { + gmCurrent.gm_mgNotes.mg_strText = TRANS( + "In-game QuickSave shortcuts:\n" + "F6 - save a new QuickSave\n" + "F9 - load the last QuickSave\n"); + } else { + gmCurrent.gm_mgNotes.mg_strText = ""; + } } extern CTString sam_strFirstLevel; void StartSinglePlayerNewMenu(void) { - CVarMenu &gmCurrent = _pGUIM->gmVarMenu; + CVarMenu &gmCurrent = _pGUIM->gmVarMenu; - _pGame->gam_strCustomLevel = sam_strFirstLevel; + _pGame->gam_strCustomLevel = sam_strFirstLevel; - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + ChangeToMenu(&gmCurrent); } // game options var settings void StartVarGameOptions(void) { - CVarMenu &gmCurrent = _pGUIM->gmVarMenu; + CVarMenu &gmCurrent = _pGUIM->gmVarMenu; - gmCurrent.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); - gmCurrent.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\GameOptions.cfg"); - ChangeToMenu(&gmCurrent); + gmCurrent.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); + gmCurrent.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\GameOptions.cfg"); + ChangeToMenu(&gmCurrent); } void StartSinglePlayerGameOptions(void) { - CVarMenu &gmCurrent = _pGUIM->gmVarMenu; + CVarMenu &gmCurrent = _pGUIM->gmVarMenu; - gmCurrent.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); - gmCurrent.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\SPOptions.cfg"); - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_mgTitle.mg_strText = TRANS("GAME OPTIONS"); + gmCurrent.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\SPOptions.cfg"); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + ChangeToMenu(&gmCurrent); } void StartGameOptionsFromNetwork(void) { - StartVarGameOptions(); - _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; + StartVarGameOptions(); + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; } void StartGameOptionsFromSplitScreen(void) { - StartVarGameOptions(); - _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; + StartVarGameOptions(); + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; } // rendering options var settings void StartRenderingOptionsMenu(void) { - CVarMenu &gmCurrent = _pGUIM->gmVarMenu; + CVarMenu &gmCurrent = _pGUIM->gmVarMenu; - gmCurrent.gm_mgTitle.mg_strText = TRANS("RENDERING OPTIONS"); - gmCurrent.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\RenderingOptions.cfg"); - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmVideoOptionsMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_mgTitle.mg_strText = TRANS("RENDERING OPTIONS"); + gmCurrent.gm_fnmMenuCFG = CTFILENAME("Scripts\\Menu\\RenderingOptions.cfg"); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmVideoOptionsMenu; + ChangeToMenu(&gmCurrent); } void StartCustomizeKeyboardMenu(void) { - ChangeToMenu(&_pGUIM->gmCustomizeKeyboardMenu); + ChangeToMenu(&_pGUIM->gmCustomizeKeyboardMenu); } void StartCustomizeAxisMenu(void) { - ChangeToMenu(&_pGUIM->gmCustomizeAxisMenu); + ChangeToMenu(&_pGUIM->gmCustomizeAxisMenu); } void StartOptionsMenu(void) { - _pGUIM->gmOptionsMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmOptionsMenu); + _pGUIM->gmOptionsMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmOptionsMenu); } void StartCurrentLoadMenu() { - if (_gmRunningGameMode == GM_NETWORK) { - void StartNetworkLoadMenu(void); - StartNetworkLoadMenu(); - } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { - void StartSplitScreenLoadMenu(void); - StartSplitScreenLoadMenu(); - } else { - void StartSinglePlayerLoadMenu(void); - StartSinglePlayerLoadMenu(); - } + if (_gmRunningGameMode == GM_NETWORK) { + void StartNetworkLoadMenu(void); + StartNetworkLoadMenu(); + } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { + void StartSplitScreenLoadMenu(void); + StartSplitScreenLoadMenu(); + } else { + void StartSinglePlayerLoadMenu(void); + StartSinglePlayerLoadMenu(); + } } void StartCurrentSaveMenu() { - if (_gmRunningGameMode == GM_NETWORK) { - void StartNetworkSaveMenu(void); - StartNetworkSaveMenu(); - } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { - void StartSplitScreenSaveMenu(void); - StartSplitScreenSaveMenu(); - } else { - void StartSinglePlayerSaveMenu(void); - StartSinglePlayerSaveMenu(); - } + if (_gmRunningGameMode == GM_NETWORK) { + void StartNetworkSaveMenu(void); + StartNetworkSaveMenu(); + } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { + void StartSplitScreenSaveMenu(void); + StartSplitScreenSaveMenu(); + } else { + void StartSinglePlayerSaveMenu(void); + StartSinglePlayerSaveMenu(); + } } void StartCurrentQuickLoadMenu() { - if (_gmRunningGameMode == GM_NETWORK) { - void StartNetworkQuickLoadMenu(void); - StartNetworkQuickLoadMenu(); - } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { - void StartSplitScreenQuickLoadMenu(void); - StartSplitScreenQuickLoadMenu(); - } else { - void StartSinglePlayerQuickLoadMenu(void); - StartSinglePlayerQuickLoadMenu(); - } + if (_gmRunningGameMode == GM_NETWORK) { + void StartNetworkQuickLoadMenu(void); + StartNetworkQuickLoadMenu(); + } else if (_gmRunningGameMode == GM_SPLIT_SCREEN) { + void StartSplitScreenQuickLoadMenu(void); + StartSplitScreenQuickLoadMenu(); + } else { + void StartSinglePlayerQuickLoadMenu(void); + StartSinglePlayerQuickLoadMenu(); + } } void StartChangePlayerMenuFromOptions(void) { - _bPlayerMenuFromSinglePlayer = FALSE; - _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; - _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&_pGUIM->gmPlayerProfile); + _bPlayerMenuFromSinglePlayer = FALSE; + _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; + _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&_pGUIM->gmPlayerProfile); } void StartChangePlayerMenuFromSinglePlayer(void) { - _iLocalPlayer = -1; - _bPlayerMenuFromSinglePlayer = TRUE; - _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; - _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; - ChangeToMenu(&_pGUIM->gmPlayerProfile); + _iLocalPlayer = -1; + _bPlayerMenuFromSinglePlayer = TRUE; + _pGUIM->gmPlayerProfile.gm_piCurrentPlayer = &_pGame->gm_iSinglePlayer; + _pGUIM->gmPlayerProfile.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + ChangeToMenu(&_pGUIM->gmPlayerProfile); } void StartControlsMenuFromPlayer(void) { - _pGUIM->gmControls.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; - ChangeToMenu(&_pGUIM->gmControls); + _pGUIM->gmControls.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; + ChangeToMenu(&_pGUIM->gmControls); } void StartControlsMenuFromOptions(void) { - _pGUIM->gmControls.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&_pGUIM->gmControls); + _pGUIM->gmControls.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&_pGUIM->gmControls); } void StartHighScoreMenu(void) { - _pGUIM->gmHighScoreMenu.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&_pGUIM->gmHighScoreMenu); + _pGUIM->gmHighScoreMenu.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&_pGUIM->gmHighScoreMenu); } void StartSplitScreenGame(void) { - // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - CTFileName fnWorld = _pGame->gam_strCustomLevel; + CTFileName fnWorld = _pGame->gam_strCustomLevel; - _pGame->gm_strNetworkProvider = "Local"; - CUniversalSessionProperties sp; - _pGame->SetMultiPlayerSession(sp); - if (_pGame->NewGame(fnWorld.FileName(), fnWorld, sp)) - { - StopMenus(); - _gmRunningGameMode = GM_SPLIT_SCREEN; - } else { - _gmRunningGameMode = GM_NONE; - } + _pGame->gm_strNetworkProvider = "Local"; + CUniversalSessionProperties sp; + _pGame->SetMultiPlayerSession(sp); + if (_pGame->NewGame(fnWorld.FileName(), fnWorld, sp)) + { + StopMenus(); + _gmRunningGameMode = GM_SPLIT_SCREEN; + } else { + _gmRunningGameMode = GM_NONE; + } } void StartNetworkGame(void) { - // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - CTFileName fnWorld = _pGame->gam_strCustomLevel; + CTFileName fnWorld = _pGame->gam_strCustomLevel; - _pGame->gm_strNetworkProvider = "TCP/IP Server"; - CUniversalSessionProperties sp; - _pGame->SetMultiPlayerSession(sp); - if (_pGame->NewGame(_pGame->gam_strSessionName, fnWorld, sp)) - { - StopMenus(); - _gmRunningGameMode = GM_NETWORK; - // if starting a dedicated server - if (_pGame->gm_MenuSplitScreenCfg == CGame::SSC_DEDICATED) { - // pull down the console - extern INDEX sam_bToggleConsole; - sam_bToggleConsole = TRUE; - } - } else { - _gmRunningGameMode = GM_NONE; - } + _pGame->gm_strNetworkProvider = "TCP/IP Server"; + CUniversalSessionProperties sp; + _pGame->SetMultiPlayerSession(sp); + if (_pGame->NewGame(_pGame->gam_strSessionName, fnWorld, sp)) + { + StopMenus(); + _gmRunningGameMode = GM_NETWORK; + // if starting a dedicated server + if (_pGame->gm_MenuSplitScreenCfg == CGame::SSC_DEDICATED) { + // pull down the console + extern INDEX sam_bToggleConsole; + sam_bToggleConsole = TRUE; + } + } else { + _gmRunningGameMode = GM_NONE; + } } void JoinNetworkGame(void) { - // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - _pGame->gm_strNetworkProvider = "TCP/IP Client"; - if (_pGame->JoinGame(CNetworkSession(_pGame->gam_strJoinAddress))) - { - StopMenus(); - _gmRunningGameMode = GM_NETWORK; - } else { - if (_pNetwork->ga_strRequiredMod != "") { - extern CTFileName _fnmModToLoad; - extern CTString _strModServerJoin; - char strModName[256] = { 0 }; - char strModURL[256] = { 0 }; - _pNetwork->ga_strRequiredMod.ScanF("%250[^\\]\\%s", &strModName, &strModURL); - _fnmModSelected = CTString(strModName); - _strModURLSelected = strModURL; - if (_strModURLSelected = "") { - _strModURLSelected = "http://www.croteam.com/mods/Old"; - } - _strModServerSelected.PrintF("%s:%s", _pGame->gam_strJoinAddress, _pShell->GetValue("net_iPort")); - extern void ModConnectConfirm(void); - ModConnectConfirm(); - } - _gmRunningGameMode = GM_NONE; - } + _pGame->gm_strNetworkProvider = "TCP/IP Client"; + if (_pGame->JoinGame(CNetworkSession(_pGame->gam_strJoinAddress))) + { + StopMenus(); + _gmRunningGameMode = GM_NETWORK; + } else { + if (_pNetwork->ga_strRequiredMod != "") { + extern CTFileName _fnmModToLoad; + extern CTString _strModServerJoin; + char strModName[256] = { 0 }; + char strModURL[256] = { 0 }; + _pNetwork->ga_strRequiredMod.ScanF("%250[^\\]\\%s", &strModName, &strModURL); + _fnmModSelected = CTString(strModName); + _strModURLSelected = strModURL; + if (_strModURLSelected = "") { + _strModURLSelected = "http://www.croteam.com/mods/Old"; + } + _strModServerSelected.PrintF("%s:%s", _pGame->gam_strJoinAddress, _pShell->GetValue("net_iPort")); + extern void ModConnectConfirm(void); + ModConnectConfirm(); + } + _gmRunningGameMode = GM_NONE; + } } // -------- Servers Menu Functions void StartSelectServerLAN(void) { - CServersMenu &gmCurrent = _pGUIM->gmServersMenu; + CServersMenu &gmCurrent = _pGUIM->gmServersMenu; - gmCurrent.m_bInternet = FALSE; - ChangeToMenu(&gmCurrent); - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; + gmCurrent.m_bInternet = FALSE; + ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; } void StartSelectServerNET(void) { - CServersMenu &gmCurrent = _pGUIM->gmServersMenu; + CServersMenu &gmCurrent = _pGUIM->gmServersMenu; - gmCurrent.m_bInternet = TRUE; - ChangeToMenu(&gmCurrent); - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; + gmCurrent.m_bInternet = TRUE; + ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmNetworkJoinMenu; } // -------- Levels Menu Functions void StartSelectLevelFromSingle(void) { - CLevelsMenu &gmCurrent = _pGUIM->gmLevelsMenu; + CLevelsMenu &gmCurrent = _pGUIM->gmLevelsMenu; - FilterLevels(GetSpawnFlagsForGameType(-1)); - _pAfterLevelChosen = StartSinglePlayerNewMenuCustom; - ChangeToMenu(&gmCurrent); - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; + FilterLevels(GetSpawnFlagsForGameType(-1)); + _pAfterLevelChosen = StartSinglePlayerNewMenuCustom; + ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmSinglePlayerMenu; } void StartSelectLevelFromSplit(void) { - CLevelsMenu &gmCurrent = _pGUIM->gmLevelsMenu; + CLevelsMenu &gmCurrent = _pGUIM->gmLevelsMenu; - FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmSplitStartMenu.gm_mgGameType.mg_iSelected)); - void StartSplitStartMenu(void); - _pAfterLevelChosen = StartSplitStartMenu; - ChangeToMenu(&gmCurrent); - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; + FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmSplitStartMenu.gm_mgGameType.mg_iSelected)); + void StartSplitStartMenu(void); + _pAfterLevelChosen = StartSplitStartMenu; + ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; } void StartSelectLevelFromNetwork(void) { - CLevelsMenu &gmCurrent = _pGUIM->gmLevelsMenu; + CLevelsMenu &gmCurrent = _pGUIM->gmLevelsMenu; - FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); - void StartNetworkStartMenu(void); - _pAfterLevelChosen = StartNetworkStartMenu; - ChangeToMenu(&gmCurrent); - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; + FilterLevels(GetSpawnFlagsForGameType(_pGUIM->gmNetworkStartMenu.gm_mgGameType.mg_iSelected)); + void StartNetworkStartMenu(void); + _pAfterLevelChosen = StartNetworkStartMenu; + ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; } // -------- Players Selection Menu Functions void StartSelectPlayersMenuFromSplit(void) { - CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; - gmCurrent.gm_bAllowDedicated = FALSE; - gmCurrent.gm_bAllowObserving = FALSE; - gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_bAllowDedicated = FALSE; + gmCurrent.gm_bAllowObserving = FALSE; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGame; + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmSplitStartMenu; + ChangeToMenu(&gmCurrent); } void StartSelectPlayersMenuFromNetwork(void) { - CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; - gmCurrent.gm_bAllowDedicated = TRUE; - gmCurrent.gm_bAllowObserving = TRUE; - gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartNetworkGame; - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_bAllowDedicated = TRUE; + gmCurrent.gm_bAllowObserving = TRUE; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartNetworkGame; + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmNetworkStartMenu; + ChangeToMenu(&gmCurrent); } void StartSelectPlayersMenuFromNetworkLoad(void) { - CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; - gmCurrent.gm_bAllowDedicated = FALSE; - gmCurrent.gm_bAllowObserving = TRUE; - gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartNetworkLoadGame; - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_bAllowDedicated = FALSE; + gmCurrent.gm_bAllowObserving = TRUE; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartNetworkLoadGame; + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + ChangeToMenu(&gmCurrent); } void StartSelectPlayersMenuFromSplitScreenLoad(void) { - CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; - gmCurrent.gm_bAllowDedicated = FALSE; - gmCurrent.gm_bAllowObserving = FALSE; - gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGameLoad; - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_bAllowDedicated = FALSE; + gmCurrent.gm_bAllowObserving = FALSE; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &StartSplitScreenGameLoad; + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + ChangeToMenu(&gmCurrent); } void StartSelectPlayersMenuFromOpen(void) { - CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; - gmCurrent.gm_bAllowDedicated = FALSE; - gmCurrent.gm_bAllowObserving = TRUE; - gmCurrent.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_bAllowDedicated = FALSE; + gmCurrent.gm_bAllowObserving = TRUE; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; + ChangeToMenu(&gmCurrent); - /*if (sam_strNetworkSettings=="")*/ { - void StartNetworkSettingsMenu(void); - StartNetworkSettingsMenu(); - _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; - _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &gmCurrent; - } + /*if (sam_strNetworkSettings=="")*/ { + void StartNetworkSettingsMenu(void); + StartNetworkSettingsMenu(); + _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmNetworkOpenMenu; + _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &gmCurrent; + } } void StartSelectPlayersMenuFromServers(void) { - CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; + CSelectPlayersMenu &gmCurrent = _pGUIM->gmSelectPlayersMenu; - gmCurrent.gm_bAllowDedicated = FALSE; - gmCurrent.gm_bAllowObserving = TRUE; - gmCurrent.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmServersMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_bAllowDedicated = FALSE; + gmCurrent.gm_bAllowObserving = TRUE; + gmCurrent.gm_mgStart.mg_pActivatedFunction = &JoinNetworkGame; + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmServersMenu; + ChangeToMenu(&gmCurrent); - /*if (sam_strNetworkSettings=="")*/ { - void StartNetworkSettingsMenu(void); - StartNetworkSettingsMenu(); - _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; - _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmServersMenu; - _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &gmCurrent; - } + /*if (sam_strNetworkSettings=="")*/ { + void StartNetworkSettingsMenu(void); + StartNetworkSettingsMenu(); + _pGUIM->gmLoadSaveMenu.gm_bNoEscape = TRUE; + _pGUIM->gmLoadSaveMenu.gm_pgmParentMenu = &_pGUIM->gmServersMenu; + _pGUIM->gmLoadSaveMenu.gm_pgmNextMenu = &gmCurrent; + } } // -------- Save/Load Menu Calling Functions void StartPlayerModelLoadMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - gmCurrent.gm_mgTitle.mg_strText = TRANS("CHOOSE MODEL"); - gmCurrent.gm_bAllowThumbnails = TRUE; - gmCurrent.gm_iSortType = LSSORT_FILEUP; - gmCurrent.gm_bSave = FALSE; - gmCurrent.gm_bManage = FALSE; - gmCurrent.gm_fnmDirectory = CTString("Models\\Player\\"); - gmCurrent.gm_fnmSelected = _strLastPlayerAppearance; - gmCurrent.gm_fnmExt = CTString(".amc"); - gmCurrent.gm_pAfterFileChosen = &LSLoadPlayerModel; - gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_mgTitle.mg_strText = TRANS("CHOOSE MODEL"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEUP; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = FALSE; + gmCurrent.gm_fnmDirectory = CTString("Models\\Player\\"); + gmCurrent.gm_fnmSelected = _strLastPlayerAppearance; + gmCurrent.gm_fnmExt = CTString(".amc"); + gmCurrent.gm_pAfterFileChosen = &LSLoadPlayerModel; + gmCurrent.gm_mgNotes.mg_strText = ""; - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmPlayerProfile; + ChangeToMenu(&gmCurrent); } void StartControlsLoadMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - gmCurrent.gm_mgTitle.mg_strText = TRANS("LOAD CONTROLS"); - gmCurrent.gm_bAllowThumbnails = FALSE; - gmCurrent.gm_iSortType = LSSORT_FILEUP; - gmCurrent.gm_bSave = FALSE; - gmCurrent.gm_bManage = FALSE; - gmCurrent.gm_fnmDirectory = CTString("Controls\\"); - gmCurrent.gm_fnmSelected = CTString(""); - gmCurrent.gm_fnmExt = CTString(".ctl"); - gmCurrent.gm_pAfterFileChosen = &LSLoadControls; - gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_mgTitle.mg_strText = TRANS("LOAD CONTROLS"); + gmCurrent.gm_bAllowThumbnails = FALSE; + gmCurrent.gm_iSortType = LSSORT_FILEUP; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = FALSE; + gmCurrent.gm_fnmDirectory = CTString("Controls\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".ctl"); + gmCurrent.gm_pAfterFileChosen = &LSLoadControls; + gmCurrent.gm_mgNotes.mg_strText = ""; - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmControls; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmControls; + ChangeToMenu(&gmCurrent); } void StartCustomLoadMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - gmCurrent.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); - gmCurrent.gm_bAllowThumbnails = FALSE; - gmCurrent.gm_iSortType = LSSORT_NAMEUP; - gmCurrent.gm_bSave = FALSE; - gmCurrent.gm_bManage = FALSE; - gmCurrent.gm_fnmDirectory = CTString("Scripts\\CustomOptions\\"); - gmCurrent.gm_fnmSelected = CTString(""); - gmCurrent.gm_fnmExt = CTString(".cfg"); - gmCurrent.gm_pAfterFileChosen = &LSLoadCustom; - gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); + gmCurrent.gm_bAllowThumbnails = FALSE; + gmCurrent.gm_iSortType = LSSORT_NAMEUP; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = FALSE; + gmCurrent.gm_fnmDirectory = CTString("Scripts\\CustomOptions\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".cfg"); + gmCurrent.gm_pAfterFileChosen = &LSLoadCustom; + gmCurrent.gm_mgNotes.mg_strText = ""; - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&gmCurrent); } void StartAddonsLoadMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - gmCurrent.gm_mgTitle.mg_strText = TRANS("EXECUTE ADDON"); - gmCurrent.gm_bAllowThumbnails = FALSE; - gmCurrent.gm_iSortType = LSSORT_NAMEUP; - gmCurrent.gm_bSave = FALSE; - gmCurrent.gm_bManage = FALSE; - gmCurrent.gm_fnmDirectory = CTString("Scripts\\Addons\\"); - gmCurrent.gm_fnmSelected = CTString(""); - gmCurrent.gm_fnmExt = CTString(".ini"); - gmCurrent.gm_pAfterFileChosen = &LSLoadAddon; - gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_mgTitle.mg_strText = TRANS("EXECUTE ADDON"); + gmCurrent.gm_bAllowThumbnails = FALSE; + gmCurrent.gm_iSortType = LSSORT_NAMEUP; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = FALSE; + gmCurrent.gm_fnmDirectory = CTString("Scripts\\Addons\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".ini"); + gmCurrent.gm_pAfterFileChosen = &LSLoadAddon; + gmCurrent.gm_mgNotes.mg_strText = ""; - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&gmCurrent); } void StartModsLoadMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - gmCurrent.gm_mgTitle.mg_strText = TRANS("CHOOSE MOD"); - gmCurrent.gm_bAllowThumbnails = TRUE; - gmCurrent.gm_iSortType = LSSORT_NAMEUP; - gmCurrent.gm_bSave = FALSE; - gmCurrent.gm_bManage = FALSE; - gmCurrent.gm_fnmDirectory = CTString("Mods\\"); - gmCurrent.gm_fnmSelected = CTString(""); - gmCurrent.gm_fnmExt = CTString(".des"); - gmCurrent.gm_pAfterFileChosen = &LSLoadMod; + gmCurrent.gm_mgTitle.mg_strText = TRANS("CHOOSE MOD"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_NAMEUP; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = FALSE; + gmCurrent.gm_fnmDirectory = CTString("Mods\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".des"); + gmCurrent.gm_pAfterFileChosen = &LSLoadMod; - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmMainMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmMainMenu; + ChangeToMenu(&gmCurrent); } void StartNetworkSettingsMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - gmCurrent.gm_mgTitle.mg_strText = TRANS("CONNECTION SETTINGS"); - gmCurrent.gm_bAllowThumbnails = FALSE; - gmCurrent.gm_iSortType = LSSORT_FILEUP; - gmCurrent.gm_bSave = FALSE; - gmCurrent.gm_bManage = FALSE; - gmCurrent.gm_fnmDirectory = CTString("Scripts\\NetSettings\\"); - gmCurrent.gm_fnmSelected = sam_strNetworkSettings; - gmCurrent.gm_fnmExt = CTString(".ini"); - gmCurrent.gm_pAfterFileChosen = &LSLoadNetSettings; + gmCurrent.gm_mgTitle.mg_strText = TRANS("CONNECTION SETTINGS"); + gmCurrent.gm_bAllowThumbnails = FALSE; + gmCurrent.gm_iSortType = LSSORT_FILEUP; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = FALSE; + gmCurrent.gm_fnmDirectory = CTString("Scripts\\NetSettings\\"); + gmCurrent.gm_fnmSelected = sam_strNetworkSettings; + gmCurrent.gm_fnmExt = CTString(".ini"); + gmCurrent.gm_pAfterFileChosen = &LSLoadNetSettings; - if (sam_strNetworkSettings == "") { - gmCurrent.gm_mgNotes.mg_strText = TRANS( - "Before joining a network game,\n" - "you have to adjust your connection parameters.\n" - "Choose one option from the list.\n" - "If you have problems with connection, you can adjust\n" - "these parameters again from the Options menu.\n" - ); - } else { - gmCurrent.gm_mgNotes.mg_strText = ""; - } + if (sam_strNetworkSettings == "") { + gmCurrent.gm_mgNotes.mg_strText = TRANS( + "Before joining a network game,\n" + "you have to adjust your connection parameters.\n" + "Choose one option from the list.\n" + "If you have problems with connection, you can adjust\n" + "these parameters again from the Options menu.\n" + ); + } else { + gmCurrent.gm_mgNotes.mg_strText = ""; + } - gmCurrent.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = &_pGUIM->gmOptionsMenu; + ChangeToMenu(&gmCurrent); } void StartSinglePlayerQuickLoadMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - _gmMenuGameMode = GM_SINGLE_PLAYER; + _gmMenuGameMode = GM_SINGLE_PLAYER; - gmCurrent.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); - gmCurrent.gm_bAllowThumbnails = TRUE; - gmCurrent.gm_iSortType = LSSORT_FILEDN; - gmCurrent.gm_bSave = FALSE; - gmCurrent.gm_bManage = TRUE; - gmCurrent.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\Quick\\", _pGame->gm_iSinglePlayer); - gmCurrent.gm_fnmSelected = CTString(""); - gmCurrent.gm_fnmExt = CTString(".sav"); - gmCurrent.gm_pAfterFileChosen = &LSLoadSinglePlayer; - SetQuickLoadNotes(); + gmCurrent.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\Quick\\", _pGame->gm_iSinglePlayer); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSLoadSinglePlayer; + SetQuickLoadNotes(); - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartSinglePlayerLoadMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - _gmMenuGameMode = GM_SINGLE_PLAYER; + _gmMenuGameMode = GM_SINGLE_PLAYER; - gmCurrent.gm_mgTitle.mg_strText = TRANS("LOAD"); - gmCurrent.gm_bAllowThumbnails = TRUE; - gmCurrent.gm_iSortType = LSSORT_FILEDN; - gmCurrent.gm_bSave = FALSE; - gmCurrent.gm_bManage = TRUE; - gmCurrent.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); - gmCurrent.gm_fnmSelected = CTString(""); - gmCurrent.gm_fnmExt = CTString(".sav"); - gmCurrent.gm_pAfterFileChosen = &LSLoadSinglePlayer; - gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_mgTitle.mg_strText = TRANS("LOAD"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSLoadSinglePlayer; + gmCurrent.gm_mgNotes.mg_strText = ""; - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartSinglePlayerSaveMenu(void) { - if (_gmRunningGameMode != GM_SINGLE_PLAYER) return; + if (_gmRunningGameMode != GM_SINGLE_PLAYER) return; - // if no live players - if (_pGame->GetPlayersCount()>0 && _pGame->GetLivePlayersCount() <= 0) { - // do nothing - return; - } + // if no live players + if (_pGame->GetPlayersCount()>0 && _pGame->GetLivePlayersCount() <= 0) { + // do nothing + return; + } - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - _gmMenuGameMode = GM_SINGLE_PLAYER; + _gmMenuGameMode = GM_SINGLE_PLAYER; - gmCurrent.gm_mgTitle.mg_strText = TRANS("SAVE"); - gmCurrent.gm_bAllowThumbnails = TRUE; - gmCurrent.gm_iSortType = LSSORT_FILEDN; - gmCurrent.gm_bSave = TRUE; - gmCurrent.gm_bManage = TRUE; - gmCurrent.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); - gmCurrent.gm_fnmSelected = CTString(""); - gmCurrent.gm_fnmBaseName = CTString("SaveGame"); - gmCurrent.gm_fnmExt = CTString(".sav"); - gmCurrent.gm_pAfterFileChosen = &LSSaveAnyGame; - gmCurrent.gm_mgNotes.mg_strText = ""; - gmCurrent.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); + gmCurrent.gm_mgTitle.mg_strText = TRANS("SAVE"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = TRUE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory.PrintF("SaveGame\\Player%d\\", _pGame->gm_iSinglePlayer); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmBaseName = CTString("SaveGame"); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSSaveAnyGame; + gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartDemoLoadMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - _gmMenuGameMode = GM_DEMO; + _gmMenuGameMode = GM_DEMO; - gmCurrent.gm_mgTitle.mg_strText = TRANS("PLAY DEMO"); - gmCurrent.gm_bAllowThumbnails = TRUE; - gmCurrent.gm_iSortType = LSSORT_FILEDN; - gmCurrent.gm_bSave = FALSE; - gmCurrent.gm_bManage = TRUE; - gmCurrent.gm_fnmDirectory = CTString("Demos\\"); - gmCurrent.gm_fnmSelected = CTString(""); - gmCurrent.gm_fnmExt = CTString(".dem"); - gmCurrent.gm_pAfterFileChosen = &LSLoadDemo; - gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_mgTitle.mg_strText = TRANS("PLAY DEMO"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("Demos\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".dem"); + gmCurrent.gm_pAfterFileChosen = &LSLoadDemo; + gmCurrent.gm_mgNotes.mg_strText = ""; - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartDemoSaveMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - if (_gmRunningGameMode == GM_NONE) return; - _gmMenuGameMode = GM_DEMO; + if (_gmRunningGameMode == GM_NONE) return; + _gmMenuGameMode = GM_DEMO; - gmCurrent.gm_mgTitle.mg_strText = TRANS("RECORD DEMO"); - gmCurrent.gm_bAllowThumbnails = TRUE; - gmCurrent.gm_iSortType = LSSORT_FILEUP; - gmCurrent.gm_bSave = TRUE; - gmCurrent.gm_bManage = TRUE; - gmCurrent.gm_fnmDirectory = CTString("Demos\\"); - gmCurrent.gm_fnmSelected = CTString(""); - gmCurrent.gm_fnmBaseName = CTString("Demo"); - gmCurrent.gm_fnmExt = CTString(".dem"); - gmCurrent.gm_pAfterFileChosen = &LSSaveDemo; - gmCurrent.gm_mgNotes.mg_strText = ""; - gmCurrent.gm_strSaveDes = _pGame->GetDefaultGameDescription(FALSE); + gmCurrent.gm_mgTitle.mg_strText = TRANS("RECORD DEMO"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEUP; + gmCurrent.gm_bSave = TRUE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("Demos\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmBaseName = CTString("Demo"); + gmCurrent.gm_fnmExt = CTString(".dem"); + gmCurrent.gm_pAfterFileChosen = &LSSaveDemo; + gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_strSaveDes = _pGame->GetDefaultGameDescription(FALSE); - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartNetworkQuickLoadMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - _gmMenuGameMode = GM_NETWORK; + _gmMenuGameMode = GM_NETWORK; - gmCurrent.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); - gmCurrent.gm_bAllowThumbnails = TRUE; - gmCurrent.gm_iSortType = LSSORT_FILEDN; - gmCurrent.gm_bSave = FALSE; - gmCurrent.gm_bManage = TRUE; - gmCurrent.gm_fnmDirectory = CTString("SaveGame\\Network\\Quick\\"); - gmCurrent.gm_fnmSelected = CTString(""); - gmCurrent.gm_fnmExt = CTString(".sav"); - gmCurrent.gm_pAfterFileChosen = &LSLoadNetwork; - SetQuickLoadNotes(); + gmCurrent.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("SaveGame\\Network\\Quick\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSLoadNetwork; + SetQuickLoadNotes(); - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartNetworkLoadMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - _gmMenuGameMode = GM_NETWORK; + _gmMenuGameMode = GM_NETWORK; - gmCurrent.gm_mgTitle.mg_strText = TRANS("LOAD"); - gmCurrent.gm_bAllowThumbnails = TRUE; - gmCurrent.gm_iSortType = LSSORT_FILEDN; - gmCurrent.gm_bSave = FALSE; - gmCurrent.gm_bManage = TRUE; - gmCurrent.gm_fnmDirectory = CTString("SaveGame\\Network\\"); - gmCurrent.gm_fnmSelected = CTString(""); - gmCurrent.gm_fnmExt = CTString(".sav"); - gmCurrent.gm_pAfterFileChosen = &LSLoadNetwork; - gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_mgTitle.mg_strText = TRANS("LOAD"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("SaveGame\\Network\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSLoadNetwork; + gmCurrent.gm_mgNotes.mg_strText = ""; - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartNetworkSaveMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - if (_gmRunningGameMode != GM_NETWORK) return; - _gmMenuGameMode = GM_NETWORK; + if (_gmRunningGameMode != GM_NETWORK) return; + _gmMenuGameMode = GM_NETWORK; - gmCurrent.gm_mgTitle.mg_strText = TRANS("SAVE"); - gmCurrent.gm_bAllowThumbnails = TRUE; - gmCurrent.gm_iSortType = LSSORT_FILEDN; - gmCurrent.gm_bSave = TRUE; - gmCurrent.gm_bManage = TRUE; - gmCurrent.gm_fnmDirectory = CTString("SaveGame\\Network\\"); - gmCurrent.gm_fnmSelected = CTString(""); - gmCurrent.gm_fnmBaseName = CTString("SaveGame"); - gmCurrent.gm_fnmExt = CTString(".sav"); - gmCurrent.gm_pAfterFileChosen = &LSSaveAnyGame; - gmCurrent.gm_mgNotes.mg_strText = ""; - gmCurrent.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); + gmCurrent.gm_mgTitle.mg_strText = TRANS("SAVE"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = TRUE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("SaveGame\\Network\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmBaseName = CTString("SaveGame"); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSSaveAnyGame; + gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartSplitScreenQuickLoadMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - _gmMenuGameMode = GM_SPLIT_SCREEN; + _gmMenuGameMode = GM_SPLIT_SCREEN; - gmCurrent.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); - gmCurrent.gm_bAllowThumbnails = TRUE; - gmCurrent.gm_iSortType = LSSORT_FILEDN; - gmCurrent.gm_bSave = FALSE; - gmCurrent.gm_bManage = TRUE; - gmCurrent.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\Quick\\"); - gmCurrent.gm_fnmSelected = CTString(""); - gmCurrent.gm_fnmExt = CTString(".sav"); - gmCurrent.gm_pAfterFileChosen = &LSLoadSplitScreen; - SetQuickLoadNotes(); + gmCurrent.gm_mgTitle.mg_strText = TRANS("QUICK LOAD"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\Quick\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSLoadSplitScreen; + SetQuickLoadNotes(); - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartSplitScreenLoadMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - _gmMenuGameMode = GM_SPLIT_SCREEN; + _gmMenuGameMode = GM_SPLIT_SCREEN; - gmCurrent.gm_mgTitle.mg_strText = TRANS("LOAD"); - gmCurrent.gm_bAllowThumbnails = TRUE; - gmCurrent.gm_iSortType = LSSORT_FILEDN; - gmCurrent.gm_bSave = FALSE; - gmCurrent.gm_bManage = TRUE; - gmCurrent.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); - gmCurrent.gm_fnmSelected = CTString(""); - gmCurrent.gm_fnmExt = CTString(".sav"); - gmCurrent.gm_pAfterFileChosen = &LSLoadSplitScreen; - gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_mgTitle.mg_strText = TRANS("LOAD"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = FALSE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSLoadSplitScreen; + gmCurrent.gm_mgNotes.mg_strText = ""; - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } void StartSplitScreenSaveMenu(void) { - CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; + CLoadSaveMenu &gmCurrent = _pGUIM->gmLoadSaveMenu; - if (_gmRunningGameMode != GM_SPLIT_SCREEN) return; - _gmMenuGameMode = GM_SPLIT_SCREEN; + if (_gmRunningGameMode != GM_SPLIT_SCREEN) return; + _gmMenuGameMode = GM_SPLIT_SCREEN; - gmCurrent.gm_mgTitle.mg_strText = TRANS("SAVE"); - gmCurrent.gm_bAllowThumbnails = TRUE; - gmCurrent.gm_iSortType = LSSORT_FILEDN; - gmCurrent.gm_bSave = TRUE; - gmCurrent.gm_bManage = TRUE; - gmCurrent.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); - gmCurrent.gm_fnmSelected = CTString(""); - gmCurrent.gm_fnmBaseName = CTString("SaveGame"); - gmCurrent.gm_fnmExt = CTString(".sav"); - gmCurrent.gm_pAfterFileChosen = &LSSaveAnyGame; - gmCurrent.gm_mgNotes.mg_strText = ""; - gmCurrent.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); + gmCurrent.gm_mgTitle.mg_strText = TRANS("SAVE"); + gmCurrent.gm_bAllowThumbnails = TRUE; + gmCurrent.gm_iSortType = LSSORT_FILEDN; + gmCurrent.gm_bSave = TRUE; + gmCurrent.gm_bManage = TRUE; + gmCurrent.gm_fnmDirectory = CTString("SaveGame\\SplitScreen\\"); + gmCurrent.gm_fnmSelected = CTString(""); + gmCurrent.gm_fnmBaseName = CTString("SaveGame"); + gmCurrent.gm_fnmExt = CTString(".sav"); + gmCurrent.gm_pAfterFileChosen = &LSSaveAnyGame; + gmCurrent.gm_mgNotes.mg_strText = ""; + gmCurrent.gm_strSaveDes = _pGame->GetDefaultGameDescription(TRUE); - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + ChangeToMenu(&gmCurrent); } // -------- Disabled Menu Calling Function void DisabledFunction(void) { - CDisabledMenu &gmCurrent = _pGUIM->gmDisabledFunction; + CDisabledMenu &gmCurrent = _pGUIM->gmDisabledFunction; - gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; - gmCurrent.gm_mgButton.mg_strText = TRANS("The feature is not available in this version!"); - gmCurrent.gm_mgTitle.mg_strText = TRANS("DISABLED"); - ChangeToMenu(&gmCurrent); + gmCurrent.gm_pgmParentMenu = pgmCurrentMenu; + gmCurrent.gm_mgButton.mg_strText = TRANS("The feature is not available in this version!"); + gmCurrent.gm_mgTitle.mg_strText = TRANS("DISABLED"); + ChangeToMenu(&gmCurrent); } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp b/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp index f0c6937..bb951c3 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuStartersAF.cpp @@ -34,196 +34,196 @@ extern CTString _strModServerSelected; BOOL LSLoadSinglePlayer(const CTFileName &fnm) { - _pGame->gm_StartSplitScreenCfg = CGame::SSC_PLAY1; + _pGame->gm_StartSplitScreenCfg = CGame::SSC_PLAY1; - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_iSinglePlayer; - _pGame->gm_aiStartLocalPlayers[1] = -1; - _pGame->gm_aiStartLocalPlayers[2] = -1; - _pGame->gm_aiStartLocalPlayers[3] = -1; - _pGame->gm_strNetworkProvider = "Local"; - if (_pGame->LoadGame(fnm)) { - StopMenus(); - _gmRunningGameMode = GM_SINGLE_PLAYER; - } - else { - _gmRunningGameMode = GM_NONE; - } - return TRUE; + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_iSinglePlayer; + _pGame->gm_aiStartLocalPlayers[1] = -1; + _pGame->gm_aiStartLocalPlayers[2] = -1; + _pGame->gm_aiStartLocalPlayers[3] = -1; + _pGame->gm_strNetworkProvider = "Local"; + if (_pGame->LoadGame(fnm)) { + StopMenus(); + _gmRunningGameMode = GM_SINGLE_PLAYER; + } + else { + _gmRunningGameMode = GM_NONE; + } + return TRUE; } BOOL LSLoadNetwork(const CTFileName &fnm) { - // call local players menu - _fnGameToLoad = fnm; - StartSelectPlayersMenuFromNetworkLoad(); - return TRUE; + // call local players menu + _fnGameToLoad = fnm; + StartSelectPlayersMenuFromNetworkLoad(); + return TRUE; } BOOL LSLoadSplitScreen(const CTFileName &fnm) { - // call local players menu - _fnGameToLoad = fnm; - StartSelectPlayersMenuFromSplitScreenLoad(); - return TRUE; + // call local players menu + _fnGameToLoad = fnm; + StartSelectPlayersMenuFromSplitScreenLoad(); + return TRUE; } void StartDemoPlay(void) { - _pGame->gm_StartSplitScreenCfg = CGame::SSC_OBSERVER; - // play the demo - _pGame->gm_strNetworkProvider = "Local"; - if (_pGame->StartDemoPlay(_fnDemoToPlay)) - { - // exit menu and pull up the console - StopMenus(); - if (_pGame->gm_csConsoleState != CS_OFF) _pGame->gm_csConsoleState = CS_TURNINGOFF; - _gmRunningGameMode = GM_DEMO; - } - else { - _gmRunningGameMode = GM_NONE; - } + _pGame->gm_StartSplitScreenCfg = CGame::SSC_OBSERVER; + // play the demo + _pGame->gm_strNetworkProvider = "Local"; + if (_pGame->StartDemoPlay(_fnDemoToPlay)) + { + // exit menu and pull up the console + StopMenus(); + if (_pGame->gm_csConsoleState != CS_OFF) _pGame->gm_csConsoleState = CS_TURNINGOFF; + _gmRunningGameMode = GM_DEMO; + } + else { + _gmRunningGameMode = GM_NONE; + } } extern BOOL LSLoadDemo(const CTFileName &fnm) { - // call local players menu - _fnDemoToPlay = fnm; - StartDemoPlay(); - return TRUE; + // call local players menu + _fnDemoToPlay = fnm; + StartDemoPlay(); + return TRUE; } BOOL LSLoadPlayerModel(const CTFileName &fnm) { - // get base filename - CTString strBaseName = fnm.FileName(); - // set it for current player - CPlayerCharacter &pc = _pGame->gm_apcPlayers[*_pGUIM->gmPlayerProfile.gm_piCurrentPlayer]; - CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; - memset(pps->ps_achModelFile, 0, sizeof(pps->ps_achModelFile)); - strncpy(pps->ps_achModelFile, strBaseName, sizeof(pps->ps_achModelFile)); + // get base filename + CTString strBaseName = fnm.FileName(); + // set it for current player + CPlayerCharacter &pc = _pGame->gm_apcPlayers[*_pGUIM->gmPlayerProfile.gm_piCurrentPlayer]; + CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; + memset(pps->ps_achModelFile, 0, sizeof(pps->ps_achModelFile)); + strncpy(pps->ps_achModelFile, strBaseName, sizeof(pps->ps_achModelFile)); - void MenuGoToParent(void); - MenuGoToParent(); - return TRUE; + void MenuGoToParent(void); + MenuGoToParent(); + return TRUE; } BOOL LSLoadControls(const CTFileName &fnm) { - try { - ControlsMenuOn(); - _pGame->gm_ctrlControlsExtra.Load_t(fnm); - ControlsMenuOff(); - } - catch (char *strError) { - CPrintF("%s", strError); - } + try { + ControlsMenuOn(); + _pGame->gm_ctrlControlsExtra.Load_t(fnm); + ControlsMenuOff(); + } + catch (char *strError) { + CPrintF("%s", strError); + } - void MenuGoToParent(void); - MenuGoToParent(); - return TRUE; + void MenuGoToParent(void); + MenuGoToParent(); + return TRUE; } BOOL LSLoadAddon(const CTFileName &fnm) { - extern INDEX _iAddonExecState; - extern CTFileName _fnmAddonToExec; - _iAddonExecState = 1; - _fnmAddonToExec = fnm; - return TRUE; + extern INDEX _iAddonExecState; + extern CTFileName _fnmAddonToExec; + _iAddonExecState = 1; + _fnmAddonToExec = fnm; + return TRUE; } BOOL LSLoadMod(const CTFileName &fnm) { - _fnmModSelected = fnm; - extern void ModConfirm(void); - ModConfirm(); - return TRUE; + _fnmModSelected = fnm; + extern void ModConfirm(void); + ModConfirm(); + return TRUE; } BOOL LSLoadCustom(const CTFileName &fnm) { - _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); - // LoadStringVar(fnm.NoExt()+".des", mgVarTitle.mg_strText); - // mgVarTitle.mg_strText.OnlyFirstLine(); - _pGUIM->gmVarMenu.gm_fnmMenuCFG = fnm; - _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; - ChangeToMenu(&_pGUIM->gmVarMenu); - return TRUE; + _pGUIM->gmVarMenu.gm_mgTitle.mg_strText = TRANS("ADVANCED OPTIONS"); + // LoadStringVar(fnm.NoExt()+".des", mgVarTitle.mg_strText); + // mgVarTitle.mg_strText.OnlyFirstLine(); + _pGUIM->gmVarMenu.gm_fnmMenuCFG = fnm; + _pGUIM->gmVarMenu.gm_pgmParentMenu = &_pGUIM->gmLoadSaveMenu; + ChangeToMenu(&_pGUIM->gmVarMenu); + return TRUE; } BOOL LSLoadNetSettings(const CTFileName &fnm) { - sam_strNetworkSettings = fnm; - CTString strCmd; - strCmd.PrintF("include \"%s\"", (const char*)sam_strNetworkSettings); - _pShell->Execute(strCmd); + sam_strNetworkSettings = fnm; + CTString strCmd; + strCmd.PrintF("include \"%s\"", (const char*)sam_strNetworkSettings); + _pShell->Execute(strCmd); - void MenuGoToParent(void); - MenuGoToParent(); - return TRUE; + void MenuGoToParent(void); + MenuGoToParent(); + return TRUE; } // same function for saving in singleplay, network and splitscreen BOOL LSSaveAnyGame(const CTFileName &fnm) { - if (_pGame->SaveGame(fnm)) { - StopMenus(); - return TRUE; - } - else { - return FALSE; - } + if (_pGame->SaveGame(fnm)) { + StopMenus(); + return TRUE; + } + else { + return FALSE; + } } BOOL LSSaveDemo(const CTFileName &fnm) { - // save the demo - if (_pGame->StartDemoRec(fnm)) { - StopMenus(); - return TRUE; - } - else { - return FALSE; - } + // save the demo + if (_pGame->StartDemoRec(fnm)) { + StopMenus(); + return TRUE; + } + else { + return FALSE; + } } void StartNetworkLoadGame(void) { - // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - _pGame->gm_strNetworkProvider = "TCP/IP Server"; - if (_pGame->LoadGame(_fnGameToLoad)) - { - StopMenus(); - _gmRunningGameMode = GM_NETWORK; - } - else { - _gmRunningGameMode = GM_NONE; - } + _pGame->gm_strNetworkProvider = "TCP/IP Server"; + if (_pGame->LoadGame(_fnGameToLoad)) + { + StopMenus(); + _gmRunningGameMode = GM_NETWORK; + } + else { + _gmRunningGameMode = GM_NONE; + } } void StartSplitScreenGameLoad(void) { - // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; - _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; + // _pGame->gm_MenuSplitScreenCfg = (enum CGame::SplitScreenCfg) mgSplitScreenCfg.mg_iSelected; + _pGame->gm_StartSplitScreenCfg = _pGame->gm_MenuSplitScreenCfg; - _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; - _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; - _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; - _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; + _pGame->gm_aiStartLocalPlayers[0] = _pGame->gm_aiMenuLocalPlayers[0]; + _pGame->gm_aiStartLocalPlayers[1] = _pGame->gm_aiMenuLocalPlayers[1]; + _pGame->gm_aiStartLocalPlayers[2] = _pGame->gm_aiMenuLocalPlayers[2]; + _pGame->gm_aiStartLocalPlayers[3] = _pGame->gm_aiMenuLocalPlayers[3]; - _pGame->gm_strNetworkProvider = "Local"; - if (_pGame->LoadGame(_fnGameToLoad)) { - StopMenus(); - _gmRunningGameMode = GM_SPLIT_SCREEN; - } - else { - _gmRunningGameMode = GM_NONE; - } + _pGame->gm_strNetworkProvider = "Local"; + if (_pGame->LoadGame(_fnGameToLoad)) { + StopMenus(); + _gmRunningGameMode = GM_SPLIT_SCREEN; + } + else { + _gmRunningGameMode = GM_NONE; + } } \ No newline at end of file diff --git a/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp b/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp index 375294b..4866a6d 100644 --- a/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp +++ b/Sources/SeriousSam/GUI/Menus/MenuStuff.cpp @@ -20,259 +20,259 @@ with this program; if not, write to the Free Software Foundation, Inc., #define RADIOTRANS(str) ("ETRS" str) extern CTString astrNoYes[] = { - RADIOTRANS("No"), - RADIOTRANS("Yes"), + RADIOTRANS("No"), + RADIOTRANS("Yes"), }; extern CTString astrComputerInvoke[] = { - RADIOTRANS("Use"), - RADIOTRANS("Double-click use"), + RADIOTRANS("Use"), + RADIOTRANS("Double-click use"), }; extern CTString astrWeapon[] = { - RADIOTRANS("Only if new"), - RADIOTRANS("Never"), - RADIOTRANS("Always"), - RADIOTRANS("Only if stronger"), + RADIOTRANS("Only if new"), + RADIOTRANS("Never"), + RADIOTRANS("Always"), + RADIOTRANS("Only if stronger"), }; extern PIX apixWidths[][2] = { - 320, 240, - 400, 300, - 512, 384, - 640, 240, - 640, 480, - 720, 540, - 800, 300, - 800, 600, - 960, 720, - 1024, 384, - 1024, 768, - 1152, 864, - 1280, 480, - 1280, 960, - 1600, 600, - 1600, 1200, - 1920, 720, - 1920, 1440, - 2048, 786, - 2048, 1536, + 320, 240, + 400, 300, + 512, 384, + 640, 240, + 640, 480, + 720, 540, + 800, 300, + 800, 600, + 960, 720, + 1024, 384, + 1024, 768, + 1152, 864, + 1280, 480, + 1280, 960, + 1600, 600, + 1600, 1200, + 1920, 720, + 1920, 1440, + 2048, 786, + 2048, 1536, }; extern CTString astrCrosshair[] = { - "", - "Textures\\Interface\\Crosshairs\\Crosshair1.tex", - "Textures\\Interface\\Crosshairs\\Crosshair2.tex", - "Textures\\Interface\\Crosshairs\\Crosshair3.tex", - "Textures\\Interface\\Crosshairs\\Crosshair4.tex", - "Textures\\Interface\\Crosshairs\\Crosshair5.tex", - "Textures\\Interface\\Crosshairs\\Crosshair6.tex", - "Textures\\Interface\\Crosshairs\\Crosshair7.tex", + "", + "Textures\\Interface\\Crosshairs\\Crosshair1.tex", + "Textures\\Interface\\Crosshairs\\Crosshair2.tex", + "Textures\\Interface\\Crosshairs\\Crosshair3.tex", + "Textures\\Interface\\Crosshairs\\Crosshair4.tex", + "Textures\\Interface\\Crosshairs\\Crosshair5.tex", + "Textures\\Interface\\Crosshairs\\Crosshair6.tex", + "Textures\\Interface\\Crosshairs\\Crosshair7.tex", }; extern CTString astrMaxPlayersRadioTexts[] = { - RADIOTRANS("2"), - RADIOTRANS("3"), - RADIOTRANS("4"), - RADIOTRANS("5"), - RADIOTRANS("6"), - RADIOTRANS("7"), - RADIOTRANS("8"), - RADIOTRANS("9"), - RADIOTRANS("10"), - RADIOTRANS("11"), - RADIOTRANS("12"), - RADIOTRANS("13"), - RADIOTRANS("14"), - RADIOTRANS("15"), - RADIOTRANS("16"), + RADIOTRANS("2"), + RADIOTRANS("3"), + RADIOTRANS("4"), + RADIOTRANS("5"), + RADIOTRANS("6"), + RADIOTRANS("7"), + RADIOTRANS("8"), + RADIOTRANS("9"), + RADIOTRANS("10"), + RADIOTRANS("11"), + RADIOTRANS("12"), + RADIOTRANS("13"), + RADIOTRANS("14"), + RADIOTRANS("15"), + RADIOTRANS("16"), }; // here, we just reserve space for up to 16 different game types // actual names are added later extern CTString astrGameTypeRadioTexts[] = { - "", "", "", "", "", - "", "", "", "", "", - "", "", "", "", "", - "", "", "", "", "", + "", "", "", "", "", + "", "", "", "", "", + "", "", "", "", "", + "", "", "", "", "", }; extern INDEX ctGameTypeRadioTexts = 1; extern CTString astrDifficultyRadioTexts[] = { - RADIOTRANS("Tourist"), - RADIOTRANS("Easy"), - RADIOTRANS("Normal"), - RADIOTRANS("Hard"), - RADIOTRANS("Serious"), - RADIOTRANS("Mental"), + RADIOTRANS("Tourist"), + RADIOTRANS("Easy"), + RADIOTRANS("Normal"), + RADIOTRANS("Hard"), + RADIOTRANS("Serious"), + RADIOTRANS("Mental"), }; extern CTString astrSplitScreenRadioTexts[] = { - RADIOTRANS("1"), - RADIOTRANS("2 - split screen"), - RADIOTRANS("3 - split screen"), - RADIOTRANS("4 - split screen"), + RADIOTRANS("1"), + RADIOTRANS("2 - split screen"), + RADIOTRANS("3 - split screen"), + RADIOTRANS("4 - split screen"), }; extern CTString astrDisplayPrefsRadioTexts[] = { - RADIOTRANS("Speed"), - RADIOTRANS("Normal"), - RADIOTRANS("Quality"), - RADIOTRANS("Custom"), + RADIOTRANS("Speed"), + RADIOTRANS("Normal"), + RADIOTRANS("Quality"), + RADIOTRANS("Custom"), }; extern CTString astrDisplayAPIRadioTexts[] = { - RADIOTRANS("OpenGL"), - RADIOTRANS("Direct3D"), + RADIOTRANS("OpenGL"), + RADIOTRANS("Direct3D"), }; extern CTString astrBitsPerPixelRadioTexts[] = { - RADIOTRANS("Desktop"), - RADIOTRANS("16 BPP"), - RADIOTRANS("32 BPP"), + RADIOTRANS("Desktop"), + RADIOTRANS("16 BPP"), + RADIOTRANS("32 BPP"), }; extern CTString astrFrequencyRadioTexts[] = { - RADIOTRANS("No sound"), - RADIOTRANS("11kHz"), - RADIOTRANS("22kHz"), - RADIOTRANS("44kHz"), + RADIOTRANS("No sound"), + RADIOTRANS("11kHz"), + RADIOTRANS("22kHz"), + RADIOTRANS("44kHz"), }; extern CTString astrSoundAPIRadioTexts[] = { - RADIOTRANS("WaveOut"), - RADIOTRANS("DirectSound"), - RADIOTRANS("EAX"), + RADIOTRANS("WaveOut"), + RADIOTRANS("DirectSound"), + RADIOTRANS("EAX"), }; ULONG GetSpawnFlagsForGameType(INDEX iGameType) { - if (iGameType == -1) return SPF_SINGLEPLAYER; + if (iGameType == -1) return SPF_SINGLEPLAYER; - // get function that will provide us the flags - CShellSymbol *pss = _pShell->GetSymbol("GetSpawnFlagsForGameTypeSS", /*bDeclaredOnly=*/ TRUE); - // if none - if (pss == NULL) { - // error - ASSERT(FALSE); - return 0; - } + // get function that will provide us the flags + CShellSymbol *pss = _pShell->GetSymbol("GetSpawnFlagsForGameTypeSS", /*bDeclaredOnly=*/ TRUE); + // if none + if (pss == NULL) { + // error + ASSERT(FALSE); + return 0; + } - ULONG(*pFunc)(INDEX) = (ULONG(*)(INDEX))pss->ss_pvValue; - return pFunc(iGameType); + ULONG(*pFunc)(INDEX) = (ULONG(*)(INDEX))pss->ss_pvValue; + return pFunc(iGameType); } BOOL IsMenuEnabled(const CTString &strMenuName) { - // get function that will provide us the flags - CShellSymbol *pss = _pShell->GetSymbol("IsMenuEnabledSS", /*bDeclaredOnly=*/ TRUE); - // if none - if (pss == NULL) { - // error - ASSERT(FALSE); - return TRUE; - } + // get function that will provide us the flags + CShellSymbol *pss = _pShell->GetSymbol("IsMenuEnabledSS", /*bDeclaredOnly=*/ TRUE); + // if none + if (pss == NULL) { + // error + ASSERT(FALSE); + return TRUE; + } - BOOL(*pFunc)(const CTString &) = (BOOL(*)(const CTString &))pss->ss_pvValue; - return pFunc(strMenuName); + BOOL(*pFunc)(const CTString &) = (BOOL(*)(const CTString &))pss->ss_pvValue; + return pFunc(strMenuName); } // initialize game type strings table void InitGameTypes(void) { - // get function that will provide us the info about gametype - CShellSymbol *pss = _pShell->GetSymbol("GetGameTypeNameSS", /*bDeclaredOnly=*/ TRUE); - // if none - if (pss == NULL) { - // error - astrGameTypeRadioTexts[0] = ""; - ctGameTypeRadioTexts = 1; - return; - } + // get function that will provide us the info about gametype + CShellSymbol *pss = _pShell->GetSymbol("GetGameTypeNameSS", /*bDeclaredOnly=*/ TRUE); + // if none + if (pss == NULL) { + // error + astrGameTypeRadioTexts[0] = ""; + ctGameTypeRadioTexts = 1; + return; + } - // for each mode - for (ctGameTypeRadioTexts = 0; ctGameTypeRadioTextsss_pvValue; - CTString strMode = pFunc(ctGameTypeRadioTexts); - // if no mode modes - if (strMode == "") { - // stop - break; - } - // add that mode - astrGameTypeRadioTexts[ctGameTypeRadioTexts] = strMode; - } + // for each mode + for (ctGameTypeRadioTexts = 0; ctGameTypeRadioTextsss_pvValue; + CTString strMode = pFunc(ctGameTypeRadioTexts); + // if no mode modes + if (strMode == "") { + // stop + break; + } + // add that mode + astrGameTypeRadioTexts[ctGameTypeRadioTexts] = strMode; + } } int qsort_CompareFileInfos_NameUp(const void *elem1, const void *elem2) { - const CFileInfo &fi1 = **(CFileInfo **)elem1; - const CFileInfo &fi2 = **(CFileInfo **)elem2; - return strcmp(fi1.fi_strName, fi2.fi_strName); + const CFileInfo &fi1 = **(CFileInfo **)elem1; + const CFileInfo &fi2 = **(CFileInfo **)elem2; + return strcmp(fi1.fi_strName, fi2.fi_strName); } int qsort_CompareFileInfos_NameDn(const void *elem1, const void *elem2) { - const CFileInfo &fi1 = **(CFileInfo **)elem1; - const CFileInfo &fi2 = **(CFileInfo **)elem2; - return -strcmp(fi1.fi_strName, fi2.fi_strName); + const CFileInfo &fi1 = **(CFileInfo **)elem1; + const CFileInfo &fi2 = **(CFileInfo **)elem2; + return -strcmp(fi1.fi_strName, fi2.fi_strName); } int qsort_CompareFileInfos_FileUp(const void *elem1, const void *elem2) { - const CFileInfo &fi1 = **(CFileInfo **)elem1; - const CFileInfo &fi2 = **(CFileInfo **)elem2; - return strcmp(fi1.fi_fnFile, fi2.fi_fnFile); + const CFileInfo &fi1 = **(CFileInfo **)elem1; + const CFileInfo &fi2 = **(CFileInfo **)elem2; + return strcmp(fi1.fi_fnFile, fi2.fi_fnFile); } int qsort_CompareFileInfos_FileDn(const void *elem1, const void *elem2) { - const CFileInfo &fi1 = **(CFileInfo **)elem1; - const CFileInfo &fi2 = **(CFileInfo **)elem2; - return -strcmp(fi1.fi_fnFile, fi2.fi_fnFile); + const CFileInfo &fi1 = **(CFileInfo **)elem1; + const CFileInfo &fi2 = **(CFileInfo **)elem2; + return -strcmp(fi1.fi_fnFile, fi2.fi_fnFile); } INDEX APIToSwitch(enum GfxAPIType gat) { - switch (gat) { - case GAT_OGL: return 0; + switch (gat) { + case GAT_OGL: return 0; #ifdef SE1_D3D - case GAT_D3D: return 1; + case GAT_D3D: return 1; #endif // SE1_D3D - default: ASSERT(FALSE); return 0; - } + default: ASSERT(FALSE); return 0; + } } enum GfxAPIType SwitchToAPI(INDEX i) { - switch (i) { - case 0: return GAT_OGL; + switch (i) { + case 0: return GAT_OGL; #ifdef SE1_D3D - case 1: return GAT_D3D; + case 1: return GAT_D3D; #endif // SE1_D3D - default: ASSERT(FALSE); return GAT_OGL; - } + default: ASSERT(FALSE); return GAT_OGL; + } } INDEX DepthToSwitch(enum DisplayDepth dd) { - switch (dd) { - case DD_DEFAULT: return 0; - case DD_16BIT: return 1; - case DD_32BIT: return 2; - default: ASSERT(FALSE); return 0; - } + switch (dd) { + case DD_DEFAULT: return 0; + case DD_16BIT: return 1; + case DD_32BIT: return 2; + default: ASSERT(FALSE); return 0; + } } enum DisplayDepth SwitchToDepth(INDEX i) { - switch (i) { - case 0: return DD_DEFAULT; - case 1: return DD_16BIT; - case 2: return DD_32BIT; - default: ASSERT(FALSE); return DD_DEFAULT; - } + switch (i) { + case 0: return DD_DEFAULT; + case 1: return DD_16BIT; + case 2: return DD_32BIT; + default: ASSERT(FALSE); return DD_DEFAULT; + } } // controls that are currently customized @@ -280,27 +280,27 @@ CTFileName _fnmControlsToCustomize = CTString(""); void ControlsMenuOn() { - _pGame->SavePlayersAndControls(); - try { - _pGame->gm_ctrlControlsExtra.Load_t(_fnmControlsToCustomize); - } - catch (char *strError) { - WarningMessage(strError); - } + _pGame->SavePlayersAndControls(); + try { + _pGame->gm_ctrlControlsExtra.Load_t(_fnmControlsToCustomize); + } + catch (char *strError) { + WarningMessage(strError); + } } void ControlsMenuOff() { - try { - if (_pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions.Count()>0) { - _pGame->gm_ctrlControlsExtra.Save_t(_fnmControlsToCustomize); - } - } - catch (char *strError) { - FatalError(strError); - } - FORDELETELIST(CButtonAction, ba_lnNode, _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions, itAct) { - delete &itAct.Current(); - } - _pGame->LoadPlayersAndControls(); + try { + if (_pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions.Count()>0) { + _pGame->gm_ctrlControlsExtra.Save_t(_fnmControlsToCustomize); + } + } + catch (char *strError) { + FatalError(strError); + } + FORDELETELIST(CButtonAction, ba_lnNode, _pGame->gm_ctrlControlsExtra.ctrl_lhButtonActions, itAct) { + delete &itAct.Current(); + } + _pGame->LoadPlayersAndControls(); } \ No newline at end of file diff --git a/Sources/SeriousSam/MainWindow.cpp b/Sources/SeriousSam/MainWindow.cpp index a4b2de2..1030d5a 100644 --- a/Sources/SeriousSam/MainWindow.cpp +++ b/Sources/SeriousSam/MainWindow.cpp @@ -29,7 +29,7 @@ static PIX _pixLastSizeI, _pixLastSizeJ; // window procedure active while window changes are occuring LRESULT WindowProc_WindowChanging( HWND hWnd, UINT message, - WPARAM wParam, LPARAM lParam ) + WPARAM wParam, LPARAM lParam ) { switch( message ) { case WM_PAINT: { @@ -65,7 +65,7 @@ LRESULT WindowProc_WindowChanging( HWND hWnd, UINT message, // window procedure active normally LRESULT WindowProc_Normal( HWND hWnd, UINT message, - WPARAM wParam, LPARAM lParam ) + WPARAM wParam, LPARAM lParam ) { switch( message ) { @@ -77,7 +77,7 @@ LRESULT WindowProc_Normal( HWND hWnd, UINT message, case SC_RESTORE: case SC_MAXIMIZE: // relay to application - PostMessage(NULL, message, wParam & ~0x0F, lParam); + PostMessage(NULL, message, wParam & ~0x0F, lParam); // do not allow automatic resizing return 0; break; @@ -90,7 +90,7 @@ LRESULT WindowProc_Normal( HWND hWnd, UINT message, // when close box is clicked case WM_CLOSE: // relay to application - PostMessage(NULL, message, wParam, lParam); + PostMessage(NULL, message, wParam, lParam); // do not pass to default wndproc return 0; @@ -102,7 +102,7 @@ LRESULT WindowProc_Normal( HWND hWnd, UINT message, case WM_KILLFOCUS: case WM_ACTIVATEAPP: // relay to application - PostMessage(NULL, message, wParam, lParam); + PostMessage(NULL, message, wParam, lParam); // pass to default wndproc break; } @@ -113,7 +113,7 @@ LRESULT WindowProc_Normal( HWND hWnd, UINT message, // main window procedure LRESULT CALLBACK WindowProc( HWND hWnd, UINT message, - WPARAM wParam, LPARAM lParam ) + WPARAM wParam, LPARAM lParam ) { // dispatch to proper window procedure if(_bWindowChanging) { @@ -141,6 +141,7 @@ void MainWindow_Init(void) wc.lpszMenuName = APPLICATION_NAME; wc.lpszClassName = APPLICATION_NAME; wc.hIconSm = NULL; + if (0 == RegisterClassExA(&wc)) { DWORD dwError = GetLastError(); CTString strErrorMessage(TRANS("Cannot open main window!")); @@ -199,16 +200,16 @@ void OpenMainWindowNormal( PIX pixSizeI, PIX pixSizeJ) // create a window, invisible initially _hwndMain = CreateWindowExA( - WS_EX_APPWINDOW, - APPLICATION_NAME, - "", // title + WS_EX_APPWINDOW, + APPLICATION_NAME, + "", // title WS_OVERLAPPED|WS_CAPTION|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_SYSMENU, - 10,10, - 100,100, // window size - NULL, - NULL, - _hInstance, - NULL); + 10,10, + 100,100, // window size + NULL, + NULL, + _hInstance, + NULL); // didn't make it? if( _hwndMain==NULL) FatalError(TRANS("Cannot open main window!")); SE_UpdateWindowHandle( _hwndMain); @@ -255,16 +256,16 @@ void OpenMainWindowInvisible(void) ASSERT(_hwndMain==NULL); // create a window, invisible initially _hwndMain = CreateWindowExA( - WS_EX_APPWINDOW, - APPLICATION_NAME, - "", // title + WS_EX_APPWINDOW, + APPLICATION_NAME, + "", // title WS_POPUP, - 0,0, - 10, 10, // window size - NULL, - NULL, - _hInstance, - NULL); + 0,0, + 10, 10, // window size + NULL, + NULL, + _hInstance, + NULL); // didn't make it? if( _hwndMain==NULL) { DWORD dwError = GetLastError(); @@ -273,6 +274,7 @@ void OpenMainWindowInvisible(void) strError.PrintF("%s Error %d", strErrorMessage, dwError); FatalError(strError); } + SE_UpdateWindowHandle( _hwndMain); // set window title diff --git a/Sources/SeriousSam/SeriousSam.cpp b/Sources/SeriousSam/SeriousSam.cpp index 5459745..6ab323d 100644 --- a/Sources/SeriousSam/SeriousSam.cpp +++ b/Sources/SeriousSam/SeriousSam.cpp @@ -600,7 +600,7 @@ void End(void) // destroy the main window and its canvas if (pvpViewPort!=NULL) { - _pGfx->DestroyWindowCanvas( pvpViewPort); + _pGfx->DestroyWindowCanvas( pvpViewPort); pvpViewPort = NULL; pdpNormal = NULL; } @@ -1109,7 +1109,7 @@ int SubMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int // teleport player TeleportPlayer(msg.lParam); // restore - PostMessage(NULL, WM_SYSCOMMAND, SC_RESTORE, 0); + PostMessage(NULL, WM_SYSCOMMAND, SC_RESTORE, 0); } } @@ -1240,7 +1240,7 @@ void CheckBrowser(void) int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, - LPSTR lpCmdLine, int nCmdShow) + LPSTR lpCmdLine, int nCmdShow) { int iResult; CTSTREAM_BEGIN { @@ -1273,7 +1273,7 @@ BOOL TryToSetDisplayMode( enum GfxAPIType eGfxAPI, INDEX iAdapter, PIX pixSizeI, // destroy canvas if existing _pGame->DisableLoadingHook(); if( pvpViewPort!=NULL) { - _pGfx->DestroyWindowCanvas( pvpViewPort); + _pGfx->DestroyWindowCanvas( pvpViewPort); pvpViewPort = NULL; pdpNormal = NULL; } @@ -1305,7 +1305,7 @@ BOOL TryToSetDisplayMode( enum GfxAPIType eGfxAPI, INDEX iAdapter, PIX pixSizeI, // create canvas ASSERT( pvpViewPort==NULL); ASSERT( pdpNormal==NULL); - _pGfx->CreateWindowCanvas( _hwndMain, &pvpViewPort, &pdpNormal); + _pGfx->CreateWindowCanvas( _hwndMain, &pvpViewPort, &pdpNormal); // erase context of both buffers (for the sake of wide-screen) pdp = pdpNormal; @@ -1344,7 +1344,7 @@ BOOL TryToSetDisplayMode( enum GfxAPIType eGfxAPI, INDEX iAdapter, PIX pixSizeI, // destroy canvas if existing if( pvpViewPort!=NULL) { _pGame->DisableLoadingHook(); - _pGfx->DestroyWindowCanvas( pvpViewPort); + _pGfx->DestroyWindowCanvas( pvpViewPort); pvpViewPort = NULL; pdpNormal = NULL; } @@ -1355,7 +1355,7 @@ BOOL TryToSetDisplayMode( enum GfxAPIType eGfxAPI, INDEX iAdapter, PIX pixSizeI, } // remember new settings - sam_bFullScreenActive = bFullScreenMode; + sam_bFullScreenActive = bFullScreenMode; sam_iScreenSizeI = pixSizeI; sam_iScreenSizeJ = pixSizeJ; sam_iDisplayDepth = eColorDepth; diff --git a/Sources/SeriousSam/SplashScreen.cpp b/Sources/SeriousSam/SplashScreen.cpp index da8cebe..88e7f46 100644 --- a/Sources/SeriousSam/SplashScreen.cpp +++ b/Sources/SeriousSam/SplashScreen.cpp @@ -24,7 +24,7 @@ static BITMAP _bmSplashMask; static HWND hwnd = NULL; static long FAR PASCAL SplashWindowProc( HWND hWnd, UINT message, - WPARAM wParam, LPARAM lParam ) + WPARAM wParam, LPARAM lParam ) { switch( message ) { case WM_PAINT: { @@ -68,8 +68,8 @@ void ShowSplashScreen(HINSTANCE hInstance) return; } - int iScreenX = ::GetSystemMetrics(SM_CXSCREEN); // screen size - int iScreenY = ::GetSystemMetrics(SM_CYSCREEN); + int iScreenX = ::GetSystemMetrics(SM_CXSCREEN); // screen size + int iScreenY = ::GetSystemMetrics(SM_CYSCREEN); WNDCLASSA wc; wc.style = CS_HREDRAW | CS_VREDRAW; @@ -88,20 +88,20 @@ void ShowSplashScreen(HINSTANCE hInstance) * create a window */ hwnd = CreateWindowExA( - WS_EX_TRANSPARENT|WS_EX_TOOLWINDOW, - NAME, - "SeriousSam loading...", // title + WS_EX_TRANSPARENT|WS_EX_TOOLWINDOW, + NAME, + "SeriousSam loading...", // title WS_POPUP, - iScreenX/2-_bmSplash.bmWidth/2, - iScreenY/2-_bmSplash.bmHeight/2, - _bmSplash.bmWidth,_bmSplash.bmHeight, // window size - NULL, - NULL, - hInstance, - NULL); + iScreenX/2-_bmSplash.bmWidth/2, + iScreenY/2-_bmSplash.bmHeight/2, + _bmSplash.bmWidth,_bmSplash.bmHeight, // window size + NULL, + NULL, + hInstance, + NULL); if(!hwnd) { - return; + return; } ShowWindow( hwnd, SW_SHOW);