📄 menu.java
字号:
}; static String Keys_MenuKey_f(int key) { menuaction_s item = (menuaction_s) Menu_ItemAtCursor(s_keys_menu); if (bind_grab) { if (key != K_ESCAPE && key != '`') { //char cmd[1024]; String cmd; //Com_sprintf(cmd, sizeof(cmd), "bind \"%s\" \"%s\"\n", // Key_KeynumToString(key), bindnames[item.localdata[0]][0]); cmd = "bind \"" + Key.KeynumToString(key) + "\" \"" + bindnames[item.localdata[0]][0] + "\""; Cbuf.InsertText(cmd); } Menu_SetStatusBar(s_keys_menu, "enter to change, backspace to clear"); bind_grab = false; return menu_out_sound; } switch (key) { case K_KP_ENTER: case K_ENTER: KeyBindingFunc(item); return menu_in_sound; case K_BACKSPACE: // delete bindings case K_DEL: // delete bindings case K_KP_DEL: UnbindCommand(bindnames[item.localdata[0]][0]); return menu_out_sound; default: return Default_MenuKey(s_keys_menu, key); } } static xcommand_t Menu_Keys = new xcommand_t() { public void execute() { Menu_Keys_f(); } }; static void Menu_Keys_f() { Keys_MenuInit(); PushMenu(new xcommand_t() { public void execute() { Keys_MenuDraw_f(); } }, new keyfunc_t() { public String execute(int key) { return Keys_MenuKey_f(key); } }); } /* * ======================================================================= * * CONTROLS MENU * * ======================================================================= */ static cvar_t win_noalttab; static menuframework_s s_options_menu = new menuframework_s(); static menuaction_s s_options_defaults_action = new menuaction_s(); static menuaction_s s_options_customize_options_action = new menuaction_s(); static menuslider_s s_options_sensitivity_slider = new menuslider_s(); static menulist_s s_options_freelook_box = new menulist_s(); static menulist_s s_options_noalttab_box = new menulist_s(); static menulist_s s_options_alwaysrun_box = new menulist_s(); static menulist_s s_options_invertmouse_box = new menulist_s(); static menulist_s s_options_lookspring_box = new menulist_s(); static menulist_s s_options_lookstrafe_box = new menulist_s(); static menulist_s s_options_crosshair_box = new menulist_s(); static menuslider_s s_options_sfxvolume_slider = new menuslider_s(); static menulist_s s_options_joystick_box = new menulist_s(); static menulist_s s_options_cdvolume_box = new menulist_s(); static menulist_s s_options_quality_list = new menulist_s(); //static menulist_s s_options_compatibility_list = new menulist_s(); static menuaction_s s_options_console_action = new menuaction_s(); static void CrosshairFunc(Object unused) { Cvar.SetValue("crosshair", s_options_crosshair_box.curvalue); } static void JoystickFunc(Object unused) { Cvar.SetValue("in_joystick", s_options_joystick_box.curvalue); } static void CustomizeControlsFunc(Object unused) { Menu_Keys_f(); } static void AlwaysRunFunc(Object unused) { Cvar.SetValue("cl_run", s_options_alwaysrun_box.curvalue); } static void FreeLookFunc(Object unused) { Cvar.SetValue("freelook", s_options_freelook_box.curvalue); } static void MouseSpeedFunc(Object unused) { Cvar.SetValue("sensitivity", s_options_sensitivity_slider.curvalue / 2.0F); } static void NoAltTabFunc(Object unused) { Cvar.SetValue("win_noalttab", s_options_noalttab_box.curvalue); } static float ClampCvar(float min, float max, float value) { if (value < min) return min; if (value > max) return max; return value; } static void ControlsSetMenuItemValues() { s_options_sfxvolume_slider.curvalue = Cvar.VariableValue("s_volume") * 10; s_options_cdvolume_box.curvalue = 1 - ((int) Cvar .VariableValue("cd_nocd")); //s_options_quality_list.curvalue = 1 - ((int) // Cvar.VariableValue("s_loadas8bit")); String s = Cvar.VariableString("s_impl"); for (int i = 0; i < s_drivers.length; i++) { if (s.equals(s_drivers[i])) { s_options_quality_list.curvalue = i; } } s_options_sensitivity_slider.curvalue = (sensitivity.value) * 2; Cvar.SetValue("cl_run", ClampCvar(0, 1, cl_run.value)); s_options_alwaysrun_box.curvalue = (int) cl_run.value; s_options_invertmouse_box.curvalue = m_pitch.value < 0 ? 1 : 0; Cvar.SetValue("lookspring", ClampCvar(0, 1, lookspring.value)); s_options_lookspring_box.curvalue = (int) lookspring.value; Cvar.SetValue("lookstrafe", ClampCvar(0, 1, lookstrafe.value)); s_options_lookstrafe_box.curvalue = (int) lookstrafe.value; Cvar.SetValue("freelook", ClampCvar(0, 1, freelook.value)); s_options_freelook_box.curvalue = (int) freelook.value; Cvar.SetValue("crosshair", ClampCvar(0, 3, Globals.crosshair.value)); s_options_crosshair_box.curvalue = (int) Globals.crosshair.value; Cvar.SetValue("in_joystick", ClampCvar(0, 1, in_joystick.value)); s_options_joystick_box.curvalue = (int) in_joystick.value; s_options_noalttab_box.curvalue = (int) win_noalttab.value; } static void ControlsResetDefaultsFunc(Object unused) { Cbuf.AddText("exec default.cfg\n"); Cbuf.Execute(); ControlsSetMenuItemValues(); } static void InvertMouseFunc(Object unused) { Cvar.SetValue("m_pitch", -m_pitch.value); } static void LookspringFunc(Object unused) { Cvar.SetValue("lookspring", 1 - lookspring.value); } static void LookstrafeFunc(Object unused) { Cvar.SetValue("lookstrafe", 1 - lookstrafe.value); } static void UpdateVolumeFunc(Object unused) { Cvar.SetValue("s_volume", s_options_sfxvolume_slider.curvalue / 10); } static void UpdateCDVolumeFunc(Object unused) { Cvar.SetValue("cd_nocd", 1 - s_options_cdvolume_box.curvalue); } static void ConsoleFunc(Object unused) { /* * * the proper way to do this is probably to have ToggleConsole_f * accept a parameter */ if (cl.attractloop) { Cbuf.AddText("killserver\n"); return; } Key.ClearTyping(); Console.ClearNotify(); ForceMenuOff(); cls.key_dest = key_console; } static void UpdateSoundQualityFunc(Object unused) { boolean driverNotChanged = false; String current = s_drivers[s_options_quality_list.curvalue]; driverNotChanged = S.getDriverName().equals(current);// if (s_options_quality_list.curvalue != 0) {// // Cvar.SetValue("s_khz", 22);// // Cvar.SetValue("s_loadas8bit", 0);// driverNotChanged = S.getDriverName().equals("dummy");// Cvar.Set("s_impl", "dummy");// } else {// // Cvar.SetValue("s_khz", 11);// // Cvar.SetValue("s_loadas8bit", 1);// driverNotChanged = S.getDriverName().equals("joal");// Cvar.Set("s_impl", "joal");// } //Cvar.SetValue("s_primary", s_options_compatibility_list.curvalue); if (driverNotChanged) { re.EndFrame(); return; } else { Cvar.Set("s_impl", current); DrawTextBox(8, 120 - 48, 36, 3); Print(16 + 16, 120 - 48 + 8, "Restarting the sound system. This"); Print(16 + 16, 120 - 48 + 16, "could take up to a minute, so"); Print(16 + 16, 120 - 48 + 24, "please be patient."); // the text box won't show up unless we do a buffer swap re.EndFrame(); CL.Snd_Restart_f.execute(); } } static String cd_music_items[] = { "disabled", "enabled" }; static String compatibility_items[] = { "max compatibility", "max performance" }; static String yesno_names[] = { "no", "yes" }; static String crosshair_names[] = { "none", "cross", "dot", "angle" }; static String[] s_labels; static String[] s_drivers; static void Options_MenuInit() { s_drivers = S.getDriverNames(); s_labels = new String[s_drivers.length]; for (int i = 0; i < s_drivers.length; i++) { if ("dummy".equals(s_drivers[i])) { s_labels[i] = "off"; } else { s_labels[i] = s_drivers[i]; } } win_noalttab = Cvar.Get("win_noalttab", "0", CVAR_ARCHIVE); /* * * configure controls menu and menu items */ s_options_menu.x = viddef.width / 2; s_options_menu.y = viddef.height / 2 - 58; s_options_menu.nitems = 0; s_options_sfxvolume_slider.type = MTYPE_SLIDER; s_options_sfxvolume_slider.x = 0; s_options_sfxvolume_slider.y = 0; s_options_sfxvolume_slider.name = "effects volume"; s_options_sfxvolume_slider.callback = new mcallback() { public void execute(Object o) { UpdateVolumeFunc(o); } }; s_options_sfxvolume_slider.minvalue = 0; s_options_sfxvolume_slider.maxvalue = 10; s_options_sfxvolume_slider.curvalue = Cvar.VariableValue("s_volume") * 10; s_options_cdvolume_box.type = MTYPE_SPINCONTROL; s_options_cdvolume_box.x = 0; s_options_cdvolume_box.y = 10; s_options_cdvolume_box.name = "CD music"; s_options_cdvolume_box.callback = new mcallback() { public void execute(Object o) { UpdateCDVolumeFunc(o); } }; s_options_cdvolume_box.itemnames = cd_music_items; s_options_cdvolume_box.curvalue = 1 - (int) Cvar .VariableValue("cd_nocd"); s_options_quality_list.type = MTYPE_SPINCONTROL; s_options_quality_list.x = 0; s_options_quality_list.y = 20; ; s_options_quality_list.name = "sound"; s_options_quality_list.callback = new mcallback() { public void execute(Object o) { UpdateSoundQualityFunc(o); } }; s_options_quality_list.itemnames = s_labels; s_options_sensitivity_slider.type = MTYPE_SLIDER; s_options_sensitivity_slider.x = 0; s_options_sensitivity_slider.y = 50; s_options_sensitivity_slider.name = "mouse speed"; s_options_sensitivity_slider.callback = new mcallback() { public void execute(Object o) { MouseSpeedFunc(o); } }; s_options_sensitivity_slider.minvalue = 2; s_options_sensitivity_slider.maxvalue = 22; s_options_alwaysrun_box.type = MTYPE_SPINCONTROL; s_options_alwaysrun_box.x = 0; s_options_alwaysrun_box.y = 60; s_options_alwaysrun_box.name = "always run"; s_options_alwaysrun_box.callback = new mcallback() { public void execute(Object o) { AlwaysRunFunc(o); } }; s_options_alwaysrun_box.itemnames = yesno_names; s_options_invertmouse_box.type = MTYPE_SPINCONTROL; s_options_invertmouse_box.x = 0; s_options_invertmouse_box.y = 70; s_options_invertmouse_box.name = "invert mouse"; s_options_invertmouse_box.callback = new mcallback() { public void execute(Object o) { InvertMouseFunc(o); } }; s_options_invertmouse_box.itemnames = yesno_names; s_options_lookspring_box.type = MTYPE_SPINCONTROL; s_options_lookspring_box.x = 0; s_options_lookspring_box.y = 80; s_options_lookspring_box.name = "lookspring"; s_options_lookspring_box.callback = new mcallback() { public void execute(Object o) { LookspringFunc(o); } }; s_options_lookspring_box.itemnames = yesno_names; s_options_lookstrafe_box.type = MTYPE_SPINCONTROL; s_options_lookstrafe_box.x = 0; s_options_lookstrafe_box.y = 90; s_options_lookstrafe_box.name = "lookstrafe"; s_options_lookstrafe_box.callback = new mcallback() { public void execute(Object o) { LookstrafeFunc(o); } }; s_options_lookstrafe_box.itemnames = yesno_names; s_options_freelook_box.type = MTYPE_SPINCONTROL; s_options_freelook_box.x = 0; s_options_freelook_box.y = 100; s_options_freelook_box.name = "free look"; s_options_freelook_box.callback = new mcallback() { public void execute(Object o) { FreeLookFunc(o); } };
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -