// Build the menu void CMenuMouse::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(5); SetScrollWrap(DFALSE); // Load the mouse settings LoadMouseSettings(); // Add the controls CLTGUISliderCtrl *pCtrl=AddSliderOption(IDS_MENU_MOUSE_SENSITIVITY, m_pMainMenus->GetSmallFont(), 100, m_pMainMenus->GetSurfaceSliderBar(), m_pMainMenus->GetSurfaceSliderTab(), &m_nMouseSensitivity); pCtrl->SetSliderRange(100, 1500); pCtrl->SetSliderIncrement(20); m_pInputRateCtrl=AddSliderOption(IDS_MENU_MOUSE_INPUTRATE, m_pMainMenus->GetSmallFont(), 100, m_pMainMenus->GetSurfaceSliderBar(), m_pMainMenus->GetSurfaceSliderTab(), &m_nInputRate); m_pInputRateCtrl->SetSliderIncrement(2); m_pInputRateCtrl->SetSliderRange(0, 40); AddOnOffOption(IDS_MENU_MOUSE_INVERT_YAXIS, m_pMainMenus->GetSmallFont(), 100, &m_bInvertYAxis); AddOnOffOption(IDS_MENU_MOUSE_MOUSELOOK, m_pMainMenus->GetSmallFont(), 100, &m_bMouseLook); AddOnOffOption(IDS_MENU_MOUSE_LOOKSPRING, m_pMainMenus->GetSmallFont(), 100, &m_bLookSpring); AddOnOffOption(IDS_MENU_MOUSE_USEWHEEL, m_pMainMenus->GetSmallFont(), 100, &m_bUseWheel); UpdateData(DFALSE); SetInputRateText(); }
// Build the menu void CMenuKeyboard::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(5); SetScrollWrap(DFALSE); m_nKeyboardTurnRate=(int)(g_pBloodClientShell->GetKeyboardTurnRate()*100.0f); // Add the controls CLTGUISliderCtrl *pCtrl=AddSliderOption(IDS_MENU_KEYBOARD_TURNSPEED, m_pMainMenus->GetSmallFont(), 100, m_pMainMenus->GetSurfaceSliderBar(), m_pMainMenus->GetSurfaceSliderTab(), &m_nKeyboardTurnRate); pCtrl->SetSliderRange(15, 400); pCtrl->SetSliderIncrement(15); UpdateData(DFALSE); }
// Wrapper for adding a control with a string ID instead of an HSTRING CLTGUISliderCtrl *CMenuBase::AddSliderOption(int messageCode, CLTGUIFont *pFont, int nSliderOffset, HSURFACE hBarSurf, HSURFACE hTabSurf, int *pnValue) { // Load the string HSTRING hString=DNULL; if (messageCode) { hString=m_pClientDE->FormatString(messageCode); } // Create the control CLTGUISliderCtrl *pCtrl=AddSliderOption(hString, pFont, nSliderOffset, hBarSurf, hTabSurf, pnValue); // Free the string if (hString) { m_pClientDE->FreeString(hString); } return pCtrl; }
PauseWindow::PauseWindow() { w = 0, h = 0; //Set up Self position = Rect(0, 20, 800, 580); color = vec4(0.33f, 0.33f, 0.33f, 0.75f); SetVisible(true); //Set up Main Menu menuRect.position = Rect(0, 0, 320, 420); menuRect.vPin = menuRect.hPin = Control::CENTER; menuRect.SetTitle("Menu"); menuRect.color = vec4(1.0f, 1.0f, 1.0f, 1.0f); //Set up Main Menu Children menuSave.vPin = menuLoad.vPin = menuOptions.vPin = menuSaveAndQuit.vPin = menuExit.vPin = Control::MIN; menuSave.hPin = menuLoad.hPin = menuOptions.hPin = menuSaveAndQuit.hPin = menuExit.hPin = Control::CENTER; menuSave.position = Rect(0, 50 + 50 * 0, 300, 40); menuLoad.position = Rect(0, 50 + 50 * 1, 300, 40); menuOptions.position = Rect(0, 50 + 50 * 2, 300, 40); menuSaveAndQuit.position = Rect(0, 50 + 50 * 3, 300, 40); menuExit.position = Rect(0, 370, 300, 40); menuSave.SetText("Save"); menuLoad.SetText("Load"); menuOptions.SetText("Options"); menuSaveAndQuit.SetText("Save & Quit"); menuExit.SetText("Back to Game"); //Add Controls AddChild(&menuRect); menuRect.AddControl(&menuSave); menuRect.AddControl(&menuLoad); menuRect.AddControl(&menuOptions); menuRect.AddControl(&menuSaveAndQuit); menuRect.AddControl(&menuExit); menuRect.SetVisible(true); //Subscribe Main Menu Buttons to Actions Subscribe<void(Button*)>(&menuSave.EventClicked, [this](Button * b) { VoxEngine::SetAsyncTask(new AsyncTask([](){Game()->Save();})); Frames::SetSystem(Frames::FRAME_GAME); }); Subscribe<void(Button*)>(&menuLoad.EventClicked, [this](Button * b) { VoxEngine::SetAsyncTask(new AsyncTask([](){Game()->Load("Default_Save");})); Frames::SetSystem(Frames::FRAME_GAME); }); Subscribe<void(Button*)>(&menuOptions.EventClicked, [this](Button * b) { this->showOptsMenu(); }); Subscribe<void(Button*)>(&menuSaveAndQuit.EventClicked, [this](Button * b) { cout << "\'Save & Quit\' Button Clicked" << endl; VoxEngine::SetAsyncTask(new AsyncTask([](){Game()->Save();})); Frames::SetSystem(Frames::FRAME_MAINMENU); }); Subscribe<void(Button*)>(&menuExit.EventClicked, [this](Button * b) { Frames::SetSystem(Frames::FRAME_GAME); }); //Set up Options Menu optsRect.position = Rect(0, 0, 320, 420); optsRect.vPin = optsRect.hPin = Control::CENTER; optsRect.SetTitle("Options"); optsRect.color = vec4(1.0f, 1.0f, 1.0f, 1.0f); optsRect.SetVisible(false); AddChild(&optsRect); //Options Back Button optsClose.vPin = Control::MIN; optsClose.hPin = Control::CENTER; optsClose.position = Rect(0, 370, 300, 40); optsClose.SetText("Back"); optsRect.AddControl(&optsClose); Subscribe<void(Button*)>(&optsClose.EventClicked, [this](Button * b) { this->hideOptsMenu(); }); //Option HUD Transparency floatOption HUDTransOpts[] = { floatOption("0%", .0f), floatOption("10%", .1f), floatOption("20%", .2f), floatOption("30%", .3f), floatOption("40%", .4f), floatOption("50%", .5f), floatOption("60%", .6f), floatOption("70%", .7f), floatOption("80%", .8f), floatOption("90%", .9f), floatOption("100%", 1.0f) }; vector<floatOption> HUDTrans(HUDTransOpts, HUDTransOpts + sizeof(HUDTransOpts) / sizeof(HUDTransOpts[0])); AddSliderOption(0,"HUD Transparency",HUDTrans,&VoxEngine::SavedDeviceData.GameOptions.HUDTransparency); // View distance options floatOption viewDistanceOptions[] = { floatOption("TI-84", 0.00f), floatOption("Mobile", 0.25f), floatOption("Laptop", 0.5f), floatOption("Desktop", 0.75f), floatOption("$oopah Us3r", 1.0f), }; vector<floatOption> viewDistance(viewDistanceOptions, viewDistanceOptions + (sizeof(viewDistanceOptions) / sizeof(viewDistanceOptions[0]))); AddSliderOption(1,"View Distance",viewDistance,&VoxEngine::SavedDeviceData.GameOptions.ViewDistance); // Physics floatOption basicOptions[] = { floatOption("Very Low", 0.00f), floatOption("Low", 0.25f), floatOption("Medium", 0.5f), floatOption("High", 0.75f), floatOption("VeryHigh", 1.0f), }; vector<floatOption> basicOptionsVector(basicOptions, basicOptions + (sizeof(basicOptions) / sizeof(basicOptions[0]))); AddSliderOption(2,"Physics",basicOptionsVector,&VoxEngine::SavedDeviceData.GameOptions.PhysicsAccuracy); //Particles AddSliderOption(3,"Particles",basicOptionsVector,&VoxEngine::SavedDeviceData.GameOptions.ParticleQuality); #ifndef __MOBILE__ // jumping floatOption jumpOptions[] = { floatOption("Off", 0.00), floatOption("On", 2.00), }; vector<floatOption> jumpOptionsVector(jumpOptions, jumpOptions + (sizeof(jumpOptions) / sizeof(jumpOptions[0]))); AddSliderOption(4,"Jumping",jumpOptionsVector,&VoxEngine::SavedDeviceData.GameOptions.Autojump); #endif }