Menu Options

This commit is contained in:
Simon 2019-12-22 10:51:01 +00:00
parent ec228f855e
commit 5ce1078d61
2 changed files with 72 additions and 61 deletions

View file

@ -33,6 +33,7 @@
#include "../header/client.h" #include "../header/client.h"
#include "../sound/header/local.h" #include "../sound/header/local.h"
#include "header/qmenu.h" #include "header/qmenu.h"
#include "../../../../Quake2VR/VrCvars.h"
static int m_main_cursor; static int m_main_cursor;
@ -1053,10 +1054,10 @@ static menuframework_s s_options_menu;
static menuaction_s s_options_defaults_action; static menuaction_s s_options_defaults_action;
static menuaction_s s_options_customize_options_action; static menuaction_s s_options_customize_options_action;
static menuslider_s s_options_sensitivity_slider; static menuslider_s s_options_sensitivity_slider;
static menulist_s s_options_freelook_box; static menuslider_s s_options_vr_height_adjust_box;
static menulist_s s_options_alwaysrun_box; static menulist_s s_options_alwaysrun_box;
static menulist_s s_options_invertmouse_box; static menulist_s s_options_handedness_box;
static menulist_s s_options_lookstrafe_box; static menulist_s s_options_vr_walkdirection_box;
static menulist_s s_options_crosshair_box; static menulist_s s_options_crosshair_box;
static menuslider_s s_options_sfxvolume_slider; static menuslider_s s_options_sfxvolume_slider;
static menuslider_s s_options_haptic_slider; static menuslider_s s_options_haptic_slider;
@ -1091,9 +1092,9 @@ AlwaysRunFunc(void *unused)
} }
static void static void
FreeLookFunc(void *unused) HeightAdjustFunc(void *unused)
{ {
Cvar_SetValue("freelook", (float)s_options_freelook_box.curvalue); Cvar_SetValue("vr_height_adjust", (float)(s_options_vr_height_adjust_box.curvalue / 10.0f));
} }
static void static void
@ -1128,9 +1129,9 @@ ControlsSetMenuItemValues(void)
s_options_quality_list.curvalue = (Cvar_VariableValue("s_loadas8bit") == 0); s_options_quality_list.curvalue = (Cvar_VariableValue("s_loadas8bit") == 0);
s_options_sensitivity_slider.curvalue = sensitivity->value * 2; s_options_sensitivity_slider.curvalue = sensitivity->value * 2;
s_options_alwaysrun_box.curvalue = (cl_run->value != 0); s_options_alwaysrun_box.curvalue = (cl_run->value != 0);
s_options_invertmouse_box.curvalue = (m_pitch->value < 0); s_options_handedness_box.curvalue = (vr_control_scheme->value == 0) ? 0 : 1;
s_options_lookstrafe_box.curvalue = (lookstrafe->value != 0); s_options_vr_walkdirection_box.curvalue = (int)vr_walkdirection->value;
s_options_freelook_box.curvalue = (freelook->value != 0); s_options_vr_height_adjust_box.curvalue = vr_height_adjust->value * 10.0f;
s_options_crosshair_box.curvalue = ClampCvar(0, 3, crosshair->value); s_options_crosshair_box.curvalue = ClampCvar(0, 3, crosshair->value);
s_options_haptic_slider.curvalue = Cvar_VariableValue("joy_haptic_magnitude") * 10.0F; s_options_haptic_slider.curvalue = Cvar_VariableValue("joy_haptic_magnitude") * 10.0F;
} }
@ -1146,15 +1147,15 @@ ControlsResetDefaultsFunc(void *unused)
} }
static void static void
InvertMouseFunc(void *unused) HandednessFunc(void *unused)
{ {
Cvar_SetValue("m_pitch", -m_pitch->value); Cvar_SetValue("vr_control_scheme", s_options_handedness_box.curvalue == 0 ? 0 : 10);
} }
static void static void
LookstrafeFunc(void *unused) LookstrafeFunc(void *unused)
{ {
Cvar_SetValue("lookstrafe", (float)!lookstrafe->value); Cvar_SetValue("vr_walkdirection", (float)(1.0f - vr_walkdirection->value));
} }
static void static void
@ -1362,26 +1363,39 @@ Options_MenuInit(void)
s_options_alwaysrun_box.generic.callback = AlwaysRunFunc; s_options_alwaysrun_box.generic.callback = AlwaysRunFunc;
s_options_alwaysrun_box.itemnames = yesno_names; s_options_alwaysrun_box.itemnames = yesno_names;
s_options_invertmouse_box.generic.type = MTYPE_SPINCONTROL; static const char *handedness[] = {
s_options_invertmouse_box.generic.x = 0; "Right-Handed",
s_options_invertmouse_box.generic.y = 80; "Left-Handed",
s_options_invertmouse_box.generic.name = "invert mouse"; 0
s_options_invertmouse_box.generic.callback = InvertMouseFunc; };
s_options_invertmouse_box.itemnames = yesno_names;
s_options_lookstrafe_box.generic.type = MTYPE_SPINCONTROL; s_options_handedness_box.generic.type = MTYPE_SPINCONTROL;
s_options_lookstrafe_box.generic.x = 0; s_options_handedness_box.generic.x = 0;
s_options_lookstrafe_box.generic.y = 90; s_options_handedness_box.generic.y = 80;
s_options_lookstrafe_box.generic.name = "lookstrafe"; s_options_handedness_box.generic.name = "Handedness";
s_options_lookstrafe_box.generic.callback = LookstrafeFunc; s_options_handedness_box.generic.callback = HandednessFunc;
s_options_lookstrafe_box.itemnames = yesno_names; s_options_handedness_box.itemnames = handedness;
s_options_freelook_box.generic.type = MTYPE_SPINCONTROL; static const char *movedirections[] = {
s_options_freelook_box.generic.x = 0; "Off-hand Controller",
s_options_freelook_box.generic.y = 100; "Gaze Direction",
s_options_freelook_box.generic.name = "free look"; 0
s_options_freelook_box.generic.callback = FreeLookFunc; };
s_options_freelook_box.itemnames = yesno_names;
s_options_vr_walkdirection_box.generic.type = MTYPE_SPINCONTROL;
s_options_vr_walkdirection_box.generic.x = 0;
s_options_vr_walkdirection_box.generic.y = 90;
s_options_vr_walkdirection_box.generic.name = "VR Move Direction";
s_options_vr_walkdirection_box.generic.callback = LookstrafeFunc;
s_options_vr_walkdirection_box.itemnames = movedirections;
s_options_vr_height_adjust_box.generic.type = MTYPE_SLIDER;
s_options_vr_height_adjust_box.generic.x = 0;
s_options_vr_height_adjust_box.generic.y = 100;
s_options_vr_height_adjust_box.generic.name = "VR Height Adjust";
s_options_vr_height_adjust_box.generic.callback = HeightAdjustFunc;
s_options_vr_height_adjust_box.minvalue = 0;
s_options_vr_height_adjust_box.maxvalue = 10;
s_options_crosshair_box.generic.type = MTYPE_SPINCONTROL; s_options_crosshair_box.generic.type = MTYPE_SPINCONTROL;
s_options_crosshair_box.generic.x = 0; s_options_crosshair_box.generic.x = 0;
@ -1424,17 +1438,17 @@ Options_MenuInit(void)
Menu_AddItem(&s_options_menu, (void *)&s_options_oggenable_box); Menu_AddItem(&s_options_menu, (void *)&s_options_oggenable_box);
Menu_AddItem(&s_options_menu, (void *)&s_options_oggshuffle_box); Menu_AddItem(&s_options_menu, (void *)&s_options_oggshuffle_box);
Menu_AddItem(&s_options_menu, (void *)&s_options_quality_list); Menu_AddItem(&s_options_menu, (void *)&s_options_quality_list);
Menu_AddItem(&s_options_menu, (void *)&s_options_sensitivity_slider); // Menu_AddItem(&s_options_menu, (void *)&s_options_sensitivity_slider);
Menu_AddItem(&s_options_menu, (void *)&s_options_alwaysrun_box); Menu_AddItem(&s_options_menu, (void *)&s_options_alwaysrun_box);
Menu_AddItem(&s_options_menu, (void *)&s_options_invertmouse_box); Menu_AddItem(&s_options_menu, (void *)&s_options_handedness_box);
Menu_AddItem(&s_options_menu, (void *)&s_options_lookstrafe_box); Menu_AddItem(&s_options_menu, (void *)&s_options_vr_walkdirection_box);
Menu_AddItem(&s_options_menu, (void *)&s_options_freelook_box); Menu_AddItem(&s_options_menu, (void *)&s_options_vr_height_adjust_box);
Menu_AddItem(&s_options_menu, (void *)&s_options_crosshair_box); // Menu_AddItem(&s_options_menu, (void *)&s_options_crosshair_box);
// if (show_haptic) // if (show_haptic)
// Menu_AddItem(&s_options_menu, (void *)&s_options_haptic_slider); // Menu_AddItem(&s_options_menu, (void *)&s_options_haptic_slider);
Menu_AddItem(&s_options_menu, (void *)&s_options_customize_options_action); // Menu_AddItem(&s_options_menu, (void *)&s_options_customize_options_action);
Menu_AddItem(&s_options_menu, (void *)&s_options_defaults_action); Menu_AddItem(&s_options_menu, (void *)&s_options_defaults_action);
Menu_AddItem(&s_options_menu, (void *)&s_options_console_action); Menu_AddItem(&s_options_menu, (void *)&s_options_console_action);
} }

View file

@ -28,6 +28,7 @@
#include "../../client/header/client.h" #include "../../client/header/client.h"
#include "../../client/menu/header/qmenu.h" #include "../../client/menu/header/qmenu.h"
#include "header/qmenu.h" #include "header/qmenu.h"
#include "../../../../Quake2VR/VrCvars.h"
extern void M_ForceMenuOff(void); extern void M_ForceMenuOff(void);
@ -47,11 +48,11 @@ static cvar_t *gl_msaa_samples;
static menuframework_s s_opengl_menu; static menuframework_s s_opengl_menu;
static menulist_s s_renderer_list; //static menulist_s s_renderer_list;
static menulist_s s_mode_list; //static menulist_s s_mode_list;
static menulist_s s_uiscale_list; static menulist_s s_uiscale_list;
static menuslider_s s_brightness_slider; static menuslider_s s_brightness_slider;
static menuslider_s s_fov_slider; static menuslider_s s_comfort_slider;
static menulist_s s_fs_box; static menulist_s s_fs_box;
static menulist_s s_vsync_list; static menulist_s s_vsync_list;
static menulist_s s_af_list; static menulist_s s_af_list;
@ -127,9 +128,9 @@ BrightnessCallback(void *s)
} }
static void static void
FOVCallback(void *s) { ComfortCallback(void *s) {
menuslider_s *slider = (menuslider_s *)s; menuslider_s *slider = (menuslider_s *)s;
Cvar_SetValue("fov", slider->curvalue); Cvar_SetValue("vr_comfort_mask", slider->curvalue / 10.0f);
} }
static void static void
@ -161,12 +162,9 @@ ApplyChanges(void *unused)
{ {
qboolean restart = false; qboolean restart = false;
/* Renderer */ /*
if (s_renderer_list.curvalue != GetRenderer()) if (s_renderer_list.curvalue != GetRenderer())
{ {
/* First element in array is 'OpenGL 1.4' aka gl1.
Second element in array is 'OpenGL 3.2' aka gl3.
Third element in array is unknown renderer. */
if (s_renderer_list.curvalue == 0) if (s_renderer_list.curvalue == 0)
{ {
Cvar_Set("vid_renderer", "gl1"); Cvar_Set("vid_renderer", "gl1");
@ -184,24 +182,21 @@ ApplyChanges(void *unused)
} }
} }
/* auto mode */
if (!strcmp(s_mode_list.itemnames[s_mode_list.curvalue], if (!strcmp(s_mode_list.itemnames[s_mode_list.curvalue],
AUTO_MODE_NAME)) AUTO_MODE_NAME))
{ {
/* Restarts automatically */
Cvar_SetValue("r_mode", -2); Cvar_SetValue("r_mode", -2);
} }
else if (!strcmp(s_mode_list.itemnames[s_mode_list.curvalue], else if (!strcmp(s_mode_list.itemnames[s_mode_list.curvalue],
CUSTOM_MODE_NAME)) CUSTOM_MODE_NAME))
{ {
/* Restarts automatically */
Cvar_SetValue("r_mode", -1); Cvar_SetValue("r_mode", -1);
} }
else else
{ {
/* Restarts automatically */
Cvar_SetValue("r_mode", s_mode_list.curvalue); Cvar_SetValue("r_mode", s_mode_list.curvalue);
} }
*/
/* UI scaling */ /* UI scaling */
if (s_uiscale_list.curvalue == 0) if (s_uiscale_list.curvalue == 0)
@ -399,7 +394,7 @@ VID_MenuInit(void)
s_opengl_menu.x = viddef.width * 0.50; s_opengl_menu.x = viddef.width * 0.50;
s_opengl_menu.nitems = 0; s_opengl_menu.nitems = 0;
s_renderer_list.generic.type = MTYPE_SPINCONTROL; /* s_renderer_list.generic.type = MTYPE_SPINCONTROL;
s_renderer_list.generic.name = "renderer"; s_renderer_list.generic.name = "renderer";
s_renderer_list.generic.x = 0; s_renderer_list.generic.x = 0;
s_renderer_list.generic.y = (y = 0); s_renderer_list.generic.y = (y = 0);
@ -412,6 +407,7 @@ VID_MenuInit(void)
s_mode_list.generic.y = (y += 10); s_mode_list.generic.y = (y += 10);
s_mode_list.itemnames = resolutions; s_mode_list.itemnames = resolutions;
if (r_mode->value >= 0) if (r_mode->value >= 0)
{ {
s_mode_list.curvalue = r_mode->value; s_mode_list.curvalue = r_mode->value;
@ -426,11 +422,12 @@ VID_MenuInit(void)
// 'custom' // 'custom'
s_mode_list.curvalue = GetCustomValue(&s_mode_list); s_mode_list.curvalue = GetCustomValue(&s_mode_list);
} }
*/
s_brightness_slider.generic.type = MTYPE_SLIDER; s_brightness_slider.generic.type = MTYPE_SLIDER;
s_brightness_slider.generic.name = "brightness"; s_brightness_slider.generic.name = "brightness";
s_brightness_slider.generic.x = 0; s_brightness_slider.generic.x = 0;
s_brightness_slider.generic.y = (y += 20); s_brightness_slider.generic.y = (y = 0);
s_brightness_slider.generic.callback = BrightnessCallback; s_brightness_slider.generic.callback = BrightnessCallback;
s_brightness_slider.minvalue = 1; s_brightness_slider.minvalue = 1;
s_brightness_slider.maxvalue = 20; s_brightness_slider.maxvalue = 20;
@ -448,14 +445,14 @@ VID_MenuInit(void)
s_brightness_slider.curvalue = vid_gamma->value * 10; s_brightness_slider.curvalue = vid_gamma->value * 10;
#endif #endif
s_fov_slider.generic.type = MTYPE_SLIDER; s_comfort_slider.generic.type = MTYPE_SLIDER;
s_fov_slider.generic.x = 0; s_comfort_slider.generic.x = 0;
s_fov_slider.generic.y = (y += 10); s_comfort_slider.generic.y = (y += 10);
s_fov_slider.generic.name = "field of view"; s_comfort_slider.generic.name = "Comfort Mask";
s_fov_slider.generic.callback = FOVCallback; s_comfort_slider.generic.callback = ComfortCallback;
s_fov_slider.minvalue = 60; s_comfort_slider.minvalue = 0;
s_fov_slider.maxvalue = 120; s_comfort_slider.maxvalue = 9;
s_fov_slider.curvalue = fov->value; s_comfort_slider.curvalue = vr_comfort_mask->value * 10.0f;
s_uiscale_list.generic.type = MTYPE_SPINCONTROL; s_uiscale_list.generic.type = MTYPE_SPINCONTROL;
s_uiscale_list.generic.name = "ui scale"; s_uiscale_list.generic.name = "ui scale";
@ -542,10 +539,10 @@ VID_MenuInit(void)
s_apply_action.generic.y = (y += 10); s_apply_action.generic.y = (y += 10);
s_apply_action.generic.callback = ApplyChanges; s_apply_action.generic.callback = ApplyChanges;
Menu_AddItem(&s_opengl_menu, (void *)&s_renderer_list); // Menu_AddItem(&s_opengl_menu, (void *)&s_renderer_list);
Menu_AddItem(&s_opengl_menu, (void *)&s_mode_list); // Menu_AddItem(&s_opengl_menu, (void *)&s_mode_list);
Menu_AddItem(&s_opengl_menu, (void *)&s_brightness_slider); Menu_AddItem(&s_opengl_menu, (void *)&s_brightness_slider);
Menu_AddItem(&s_opengl_menu, (void *)&s_fov_slider); Menu_AddItem(&s_opengl_menu, (void *)&s_comfort_slider);
Menu_AddItem(&s_opengl_menu, (void *)&s_uiscale_list); Menu_AddItem(&s_opengl_menu, (void *)&s_uiscale_list);
Menu_AddItem(&s_opengl_menu, (void *)&s_fs_box); Menu_AddItem(&s_opengl_menu, (void *)&s_fs_box);
Menu_AddItem(&s_opengl_menu, (void *)&s_vsync_list); Menu_AddItem(&s_opengl_menu, (void *)&s_vsync_list);