void CMenuCharacterFiles::InitFileList(char *lpszPath) { // Sanity checks... if(!lpszPath) return; if(lpszPath[0] == '\0') return; // Change to the given direcotry... if(chdir(lpszPath) != 0) return; // Enumerate the available .b2c files and add them to the list box... long hFile; struct _finddata_t fd; hFile = _findfirst("*.b2c", &fd); if (hFile == -1) { chdir(".."); return; } AddTextItemOption(fd.name, MENU_CMD_B2C_FILE, m_pMainMenus->GetSmallFont()); BOOL bContinue = TRUE; while (bContinue) { if (_findnext(hFile, &fd) != 0) bContinue = FALSE; else AddTextItemOption(fd.name, MENU_CMD_B2C_FILE, m_pMainMenus->GetSmallFont()); } // Restore the directory... chdir (".."); }
// Build the axis menus void CMenuJoystick::BuildAxisMenus() { // Add the menu options AddOnOffOption(IDS_MENU_JOYSTICK_USE, m_pMainMenus->GetSmallFont(), 100, &m_bUseJoystick); CLTGUITextItemCtrl *pTitleCtrl=DNULL; // Turn menu options pTitleCtrl=AddTextItemOption(IDS_MENU_JOYSTICK_TURNLEFTRIGHTAXIS, 0, m_pMainMenus->GetSmallFont()); pTitleCtrl->SetColor(SETRGB(220,190,170), SETRGB(125,30,0), SETRGB(0,255,255)); if (pTitleCtrl) pTitleCtrl->Enable(DFALSE); m_pAxisTurn->Build(m_pClientDE, this); // Look menu options pTitleCtrl=AddTextItemOption(IDS_MENU_JOYSTICK_LOOKUPDOWNAXIS, 0, m_pMainMenus->GetSmallFont()); pTitleCtrl->SetColor(SETRGB(220,190,170), SETRGB(125,30,0), SETRGB(0,255,255)); if (pTitleCtrl) pTitleCtrl->Enable(DFALSE); m_pAxisLook->Build(m_pClientDE, this); // Move menu options pTitleCtrl=AddTextItemOption(IDS_MENU_JOYSTICK_MOVEFORWARDBACKWARDAXIS, 0, m_pMainMenus->GetSmallFont()); pTitleCtrl->SetColor(SETRGB(220,190,170), SETRGB(125,30,0), SETRGB(0,255,255)); if (pTitleCtrl) pTitleCtrl->Enable(DFALSE); m_pAxisMove->Build(m_pClientDE, this); // Strafe menu options pTitleCtrl=AddTextItemOption(IDS_MENU_JOYSTICK_STRAFELEFTRIGHTAXIS, 0, m_pMainMenus->GetSmallFont()); pTitleCtrl->SetColor(SETRGB(220,190,170), SETRGB(125,30,0), SETRGB(0,255,255)); if (pTitleCtrl) pTitleCtrl->Enable(DFALSE); m_pAxisStrafe->Build(m_pClientDE, this); m_pUsePovHat = AddOnOffOption(IDS_MENU_JOYSTICK_HATONOFF, m_pMainMenus->GetSmallFont(), 100, &m_bUsePovHat); }
// Just a wrapper for adding fading text options with large fonts CLTGUITextItemCtrl *CMenuBase::AddLargeTextItemOption(HSTRING hText, DWORD dwCommandID) { CLTGUITextItemCtrl *pCtrl=DNULL; if (m_pMainMenus->IsLowResolution()) { pCtrl=AddTextItemOption(hText, dwCommandID, m_pMainMenus->GetSmallFont()); } else { // If we are using engine fonts (instead of bitmap fonts) then use // the large font instead of the font array. if (!m_pMainMenus->IsEnglish()) { pCtrl=AddTextItemOption(hText, dwCommandID, m_pMainMenus->GetLargeFont()); } else { pCtrl=AddTextItemOption(hText, dwCommandID, m_pMainMenus->GetLargeFadeFonts(), m_pMainMenus->GetNumLargeFadeFonts(), DFALSE); } } m_largeFontItemArray.Add(pCtrl); return pCtrl; }
// Wrapper for adding a control with a string ID instead of an HSTRING CLTGUITextItemCtrl *CMenuBase::AddTextItemOption(int messageCode, DWORD dwCommandID, CLTGUIFont *pFontArray, int nNumFonts, DBOOL bDrawSolid, int *pnValue) { // Load the string HSTRING hString=DNULL; if (messageCode) { hString=m_pClientDE->FormatString(messageCode); } // Create the control CLTGUITextItemCtrl *pCtrl=AddTextItemOption(hString, dwCommandID, pFontArray, nNumFonts, bDrawSolid, pnValue); // Free the string if (hString) { m_pClientDE->FreeString(hString); } return pCtrl; }
// Build the menu void CMenuDisplay::Build() { // Make sure to call the base class CMenuBase::Build(); CreateTitle("interface\\mainmenus\\options.pcx", IDS_MENU_TITLE_OPTIONS, m_pMainMenus->GetTitlePos()); SetOptionPos(m_pMainMenus->GetOptionsPos()); SetItemSpacing(0); SetScrollWrap(DFALSE); // Show the please wait message m_pMainMenus->ShowSyncMessage(IDS_MENU_MESSAGE_PLEASEWAIT); // Build the array of renderers BuildRendererArray(); // Add the "renderer" option m_pRendererCtrl=AddTextItemOption(DNULL, 0, m_pMainMenus->GetSmallFont()); if (!m_pRendererCtrl) { return; } unsigned int i; for (i=0; i < m_rendererArray.GetSize(); i++) { // Load the renderer formating text. This is "Renderer: [%s - %s]" in English HSTRING hRendererFormat=m_pClientDE->FormatString(IDS_MENU_DISPLAY_RENDERER, m_rendererArray[i].m_renderDll, m_rendererArray[i].m_description); m_pRendererCtrl->AddString(hRendererFormat); m_pClientDE->FreeString(hRendererFormat); } // Add the "resolution" control m_pResolutionCtrl=AddTextItemOption(DNULL, 0, m_pMainMenus->GetSmallFont()); if (!m_pResolutionCtrl) { return; } // Setup the resolution control based on the currently selected renderer SetupResolutionCtrl(); // Add the detail option CLTGUITextItemCtrl *pCtrl=AddTextItemOption(DNULL, 0, m_pMainMenus->GetSmallFont(), 1, DTRUE, &m_nDetailLevel); pCtrl->AddString(IDS_MENU_DISPLAY_DETAIL_LOW); pCtrl->AddString(IDS_MENU_DISPLAY_DETAIL_MEDIUM); pCtrl->AddString(IDS_MENU_DISPLAY_DETAIL_HIGH); // Load the detail setting HCONSOLEVAR hVar=m_pClientDE->GetConsoleVar("GlobalDetail"); if (hVar) { switch ((int)m_pClientDE->GetVarValueFloat(hVar)) { case DETAIL_LOW: { m_nDetailLevel=0; break; } case DETAIL_MEDIUM: { m_nDetailLevel=1; break; } case DETAIL_HIGH: { m_nDetailLevel=2; break; } } } else { m_nDetailLevel=2; } UpdateData(DFALSE); }