void onUpdate() { FOVyNormal = (float)(FOVyBar.barpos + 1); mousemove = (mmsBar.barpos / 2 + 1) / 40.0f; viewdistance = (viewdistBar.barpos + 1) / 4 + 2; if (rdstbtn.clicked) Renderoptions(); if (gistbtn.clicked) GUIoptions(); if (backbtn.clicked) GUI::PopPage(); if (savebtn.clicked) saveOptions(); if (langbtn.clicked) { languagemenu(); title.text = GetStrbyKey("NEWorld.options.caption"); rdstbtn.text = GetStrbyKey("NEWorld.options.rendermenu"); gistbtn.text = GetStrbyKey("NEWorld.options.guimenu"); langbtn.text = GetStrbyKey("NEWorld.options.languagemenu"); backbtn.text = GetStrbyKey("NEWorld.options.back"); savebtn.text = GetStrbyKey("NEWorld.options.save"); } if (sounbtn.clicked)Soundmenu(); AudioSystem::SpeedOfSound = AudioSystem::Air_SpeedOfSound; EFX::EAXprop = Generic; EFX::UpdateEAXprop(); float Pos[] = { 0.0f,0.0f,0.0f }; AudioSystem::Update(Pos, false, false, Pos, false, false); FOVyBar.text = strWithVar(GetStrbyKey("NEWorld.options.fov"), FOVyNormal); mmsBar.text = strWithVar(GetStrbyKey("NEWorld.options.sensitivity"), mousemove); viewdistBar.text = strWithVar(GetStrbyKey("NEWorld.options.distance"), viewdistance); }
void options(){ //设置菜单 gui::Form MainForm; int leftp = windowwidth / 2 - 250; int rightp = windowwidth / 2 + 250; int midp = windowwidth / 2; int upp = 60; int downp = windowheight - 20; int lspc = 36; bool f = false; MainForm.Init(); TextRenderer::setFontColor(1.0, 1.0, 1.0, 1.0); gui::label* title = MainForm.createlabel("=================< 选 项 >================="); gui::trackbar* FOVyBar = MainForm.createtrackbar(strWithVar("视野角度:", FOVyNormal), 120, (int)(FOVyNormal - 1)); gui::trackbar* mmsBar = MainForm.createtrackbar(strWithVar("鼠标灵敏度:", mousemove), 120, (int)(mousemove * 40 * 2 - 1)); gui::trackbar* viewdistBar = MainForm.createtrackbar(strWithVar("渲染距离:", viewdistance), 120, (viewdistance - 1) * 8 - 1); //gui::button* ciArrayBtn = MainForm.createbutton("使用区块索引数组:" + boolstr(UseCIArray)) gui::button* rdstbtn = MainForm.createbutton(">> 渲染选项..."); gui::button* gistbtn = MainForm.createbutton(">> 图形界面选项..."); gui::button* backbtn = MainForm.createbutton("<< 返回主菜单"); //gui::button* savebtn = MainForm.createbutton("保存设置") //ciArrayBtn->enabled = false //savebtn->enabled = false do{ leftp = windowwidth / 2 - 250; rightp = windowwidth / 2 + 250; midp = windowwidth / 2; downp = windowheight - 20; title->resize(midp - 225, midp + 225, 20, 36); FOVyBar->resize(leftp, midp - 10, upp + lspc * 0, upp + lspc * 0 + 24); mmsBar->resize(midp + 10, rightp, upp + lspc * 0, upp + lspc * 0 + 24); viewdistBar->resize(leftp, midp - 10, upp + lspc * 1, upp + lspc * 1 + 24); //ciArrayBtn->resize(midp + 10, rightp, upp + lspc * 1, upp + lspc * 1 + 24) rdstbtn->resize(leftp, midp - 10, upp + lspc * 4, upp + lspc * 4 + 24); gistbtn->resize(midp + 10, rightp, upp + lspc * 4, upp + lspc * 4 + 24); backbtn->resize(leftp, midp - 10, downp - 24, downp); //savebtn->resize(midp + 10, rightp, downp - 24, downp) mb = glfwGetMouseButton(MainWindow, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS ? 1 : 0; //更新GUI glfwGetCursorPos(MainWindow, &mx, &my); MainForm.mousedata((int)mx, (int)my, mw, mb); MainForm.update(); FOVyNormal = static_cast<float>(FOVyBar->barpos + 1); mousemove = (mmsBar->barpos / 2 + 1) / 40.0f; viewdistance = viewdistBar->barpos / 8 + 2; FOVyBar->text = strWithVar("视野角度:", FOVyNormal); mmsBar->text = strWithVar("鼠标灵敏度:", mousemove); viewdistBar->text = strWithVar("渲染距离:", viewdistance); //ciArrayBtn->text = strWithVar("使用区块索引数组, ", boolstr(UseCIArray)) //if (ciArrayBtn->clicked) UseCIArray = !UseCIArray if (rdstbtn->clicked) Renderoptions(); if (gistbtn->clicked) GUIoptions(); if (backbtn->clicked) f = true; MainForm.render(); glfwSwapBuffers(MainWindow); glfwPollEvents(); if (glfwWindowShouldClose(MainWindow)) exit(0); } while (!f); MainForm.cleanup(); }