From 0e6ee663beb6e3c0cc722f6c072bc5c781a92fcd Mon Sep 17 00:00:00 2001 From: Petr Bartos Date: Thu, 17 Mar 2022 18:18:51 +0100 Subject: [PATCH] Switchable thumbsticks and menu update --- android/app/src/main/assets/pakQ3Q.pk3 | Bin 325043 -> 325127 bytes .../app/src/main/cpp/code/cgame/cg_weapons.c | 9 +++-- .../src/main/cpp/code/q3_ui/ui_controls3.c | 31 +++++++++++---- .../src/main/cpp/code/q3_ui/ui_preferences.c | 4 +- .../app/src/main/cpp/code/q3_ui/ui_video.c | 2 +- android/app/src/main/cpp/code/vr/vr_base.c | 2 + android/app/src/main/cpp/code/vr/vr_input.c | 3 +- android/app/src/main/pakQ3Q/ui/controls3.menu | 23 +++++++++-- .../src/main/pakQ3Q/ui/ingame_controls.menu | 37 ++++++++++++------ .../src/main/pakQ3Q/ui/ingame_options.menu | 10 ++--- .../app/src/main/pakQ3Q/ui/ingame_system.menu | 4 +- android/app/src/main/pakQ3Q/ui/options.menu | 4 +- android/app/src/main/pakQ3Q/ui/system.menu | 2 +- 13 files changed, 92 insertions(+), 39 deletions(-) diff --git a/android/app/src/main/assets/pakQ3Q.pk3 b/android/app/src/main/assets/pakQ3Q.pk3 index 318acbcd89da01d3f8e12c5e09f0d96cbae99a40..7ebed7d463a250a214f2ce70e573722f83983089 100644 GIT binary patch delta 9607 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 C)X+-+ delta 9454 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 a`Nt@RNnJN!l0TfAH(*j2((Tt%4)kA!D0eIX diff --git a/android/app/src/main/cpp/code/cgame/cg_weapons.c b/android/app/src/main/cpp/code/cgame/cg_weapons.c index d66a4385..a4bbef9e 100644 --- a/android/app/src/main/cpp/code/cgame/cg_weapons.c +++ b/android/app/src/main/cpp/code/cgame/cg_weapons.c @@ -2095,10 +2095,13 @@ void CG_DrawWeaponSelector( void ) VectorMA(holsterOrigin, ((DEPTH*2.0f)*((selectorMode == WS_CONTROLLER) ? frac : 1.0f)), holsterForward, holsterOrigin); VectorCopy(holsterOrigin, selectorOrigin); + const int switchThumbsticks = (int)trap_Cvar_VariableValue("vr_switchThumbsticks"); + const int thumb = switchThumbsticks !=0 ? THUMB_LEFT : THUMB_RIGHT; + float thumbstickAxisX = 0.0f; float thumbstickAxisY = 0.0f; - float a = atan2(vr->thumbstick_location[THUMB_RIGHT][0], vr->thumbstick_location[THUMB_RIGHT][1]); - if (length(vr->thumbstick_location[THUMB_RIGHT][0], vr->thumbstick_location[THUMB_RIGHT][1]) > 0.95f) + float a = atan2(vr->thumbstick_location[thumb][0], vr->thumbstick_location[thumb][1]); + if (length(vr->thumbstick_location[thumb][0], vr->thumbstick_location[thumb][1]) > 0.95f) { thumbstickAxisX = sinf(a) * 0.95f; thumbstickAxisY = cosf(a) * 0.95f; @@ -2216,7 +2219,7 @@ void CG_DrawWeaponSelector( void ) float high = ((iconAngles[w]+iconAngles[w+1])/2.0f); if (((angle > low && angle <= high) || (angle360 > low && angle360 <= high)) && - (length(vr->thumbstick_location[THUMB_RIGHT][0], vr->thumbstick_location[THUMB_RIGHT][1]) > 0.5f) && + (length(vr->thumbstick_location[thumb][0], vr->thumbstick_location[thumb][1]) > 0.5f) && selectable) { if (cg.weaponSelectorSelection != w) diff --git a/android/app/src/main/cpp/code/q3_ui/ui_controls3.c b/android/app/src/main/cpp/code/q3_ui/ui_controls3.c index 8d019c57..00f587e4 100644 --- a/android/app/src/main/cpp/code/q3_ui/ui_controls3.c +++ b/android/app/src/main/cpp/code/q3_ui/ui_controls3.c @@ -37,7 +37,7 @@ CONTROLS OPTIONS MENU #define ART_BACK0 "menu/art/back_0" #define ART_BACK1 "menu/art/back_1" -#define VR_X_POS 260 +#define VR_X_POS 330 #define ID_AUTOSWITCH 127 #define ID_SCOPE 128 @@ -49,8 +49,9 @@ CONTROLS OPTIONS MENU #define ID_WEAPONSELECTORMODE 134 #define ID_UTURN 135 #define ID_CONTROLSCHEMA 136 +#define ID_SWITCHTHUMBSTICKS 137 -#define ID_BACK 137 +#define ID_BACK 138 #define NUM_DIRECTIONMODE 2 @@ -72,6 +73,7 @@ typedef struct { menuslider_s weaponpitch; menulist_s weaponselectormode; menulist_s controlschema; + menuradiobutton_s switchthumbsticks; menubitmap_s back; } controls3_t; @@ -90,6 +92,7 @@ static void Controls3_SetMenuItems( void ) { s_controls3.weaponpitch.curvalue = trap_Cvar_VariableValue( "vr_weaponPitch" ) + 25; s_controls3.weaponselectormode.curvalue = (int)trap_Cvar_VariableValue( "vr_weaponSelectorMode" ) % 2; s_controls3.controlschema.curvalue = (int)trap_Cvar_VariableValue( "vr_controlSchema" ) % 2; + s_controls3.switchthumbsticks.curvalue = trap_Cvar_VariableValue( "vr_switchThumbsticks" ) != 0; } @@ -208,6 +211,10 @@ static void Controls3_MenuEvent( void* ptr, int notification ) { trap_Cvar_SetValue( "vr_controlSchema", s_controls3.controlschema.curvalue ); break; + case ID_SWITCHTHUMBSTICKS: + trap_Cvar_SetValue( "vr_switchThumbsticks", s_controls3.switchthumbsticks.curvalue ); + break; + case ID_BACK: UI_PopMenu(); break; @@ -234,15 +241,15 @@ static void Controls3_MenuInit( void ) { static const char *s_weaponselectormode[] = { - "Controller Weapon Selector", - "HMD Weapon Wheel", + "Controller Based", + "HMD/Thumbstick Based", NULL }; static const char *s_controlschema[] = { - "Default (Weapon Selector on Right Grip)", - "Alternative (Weapon Selector on Right Thumbstick)", + "Weapon Wheel on Grip", + "Weapon Wheel on Thumbstick", NULL }; @@ -343,6 +350,15 @@ static void Controls3_MenuInit( void ) { s_controls3.righthanded.generic.x = VR_X_POS; s_controls3.righthanded.generic.y = y; + y += BIGCHAR_HEIGHT+2; + s_controls3.switchthumbsticks.generic.type = MTYPE_RADIOBUTTON; + s_controls3.switchthumbsticks.generic.name = "Switch Thumbsticks:"; + s_controls3.switchthumbsticks.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; + s_controls3.switchthumbsticks.generic.callback = Controls3_MenuEvent; + s_controls3.switchthumbsticks.generic.id = ID_SWITCHTHUMBSTICKS; + s_controls3.switchthumbsticks.generic.x = VR_X_POS; + s_controls3.switchthumbsticks.generic.y = y; + y += BIGCHAR_HEIGHT+2; s_controls3.weaponpitch.generic.type = MTYPE_SLIDER; s_controls3.weaponpitch.generic.x = VR_X_POS; @@ -359,7 +375,7 @@ static void Controls3_MenuInit( void ) { s_controls3.weaponselectormode.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_controls3.weaponselectormode.generic.x = VR_X_POS; s_controls3.weaponselectormode.generic.y = y; - s_controls3.weaponselectormode.generic.name = "Weapon Selector Mode:"; + s_controls3.weaponselectormode.generic.name = "Weapon Wheel Mode:"; s_controls3.weaponselectormode.generic.callback = Controls3_MenuEvent; s_controls3.weaponselectormode.generic.id = ID_WEAPONSELECTORMODE; s_controls3.weaponselectormode.itemnames = s_weaponselectormode; @@ -401,6 +417,7 @@ static void Controls3_MenuInit( void ) { Menu_AddItem( &s_controls3.menu, &s_controls3.weaponpitch ); Menu_AddItem( &s_controls3.menu, &s_controls3.weaponselectormode ); Menu_AddItem( &s_controls3.menu, &s_controls3.controlschema ); + Menu_AddItem( &s_controls3.menu, &s_controls3.switchthumbsticks ); Menu_AddItem( &s_controls3.menu, &s_controls3.back ); diff --git a/android/app/src/main/cpp/code/q3_ui/ui_preferences.c b/android/app/src/main/cpp/code/q3_ui/ui_preferences.c index 92e2c88a..f9af6927 100644 --- a/android/app/src/main/cpp/code/q3_ui/ui_preferences.c +++ b/android/app/src/main/cpp/code/q3_ui/ui_preferences.c @@ -363,7 +363,7 @@ static void Preferences_MenuInit( void ) { y += BIGCHAR_HEIGHT+2; s_preferences.holster2d.generic.type = MTYPE_RADIOBUTTON; - s_preferences.holster2d.generic.name = "Simple Items (Holster):"; + s_preferences.holster2d.generic.name = "Simple Items (Weapon Wheel):"; s_preferences.holster2d.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_preferences.holster2d.generic.callback = Preferences_Event; s_preferences.holster2d.generic.id = ID_HOLSTER2D; @@ -463,7 +463,7 @@ static void Preferences_MenuInit( void ) { y += BIGCHAR_HEIGHT+2; s_preferences.selectorwithhud.generic.type = MTYPE_RADIOBUTTON; - s_preferences.selectorwithhud.generic.name = "Draw HUD On Weapon Selector:"; + s_preferences.selectorwithhud.generic.name = "Draw HUD On Weapon Wheel:"; s_preferences.selectorwithhud.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_preferences.selectorwithhud.generic.callback = Preferences_Event; s_preferences.selectorwithhud.generic.id = ID_SELECTORWITHHUD; diff --git a/android/app/src/main/cpp/code/q3_ui/ui_video.c b/android/app/src/main/cpp/code/q3_ui/ui_video.c index 01b7acf5..01ada37c 100644 --- a/android/app/src/main/cpp/code/q3_ui/ui_video.c +++ b/android/app/src/main/cpp/code/q3_ui/ui_video.c @@ -1090,7 +1090,7 @@ void GraphicsOptions_MenuInit( void ) static const char *s_refreshrate[] = { "60", - "72 (Default)", + "72 (Recommended)", "80", "90", NULL diff --git a/android/app/src/main/cpp/code/vr/vr_base.c b/android/app/src/main/cpp/code/vr/vr_base.c index 8245073f..8421a145 100644 --- a/android/app/src/main/cpp/code/vr/vr_base.c +++ b/android/app/src/main/cpp/code/vr/vr_base.c @@ -21,6 +21,7 @@ static engine_t vr_engine; cvar_t *vr_worldscale = NULL; cvar_t *vr_hudDepth = NULL; cvar_t *vr_righthanded = NULL; +cvar_t *vr_switchThumbsticks = NULL; cvar_t *vr_snapturn = NULL; cvar_t *vr_heightAdjust = NULL; cvar_t *vr_extralatencymode = NULL; @@ -60,6 +61,7 @@ void VR_InitCvars( void ) vr_worldscale = Cvar_Get ("vr_worldscale", "32.0", CVAR_ARCHIVE); vr_hudDepth = Cvar_Get ("vr_hudDepth", "3", CVAR_ARCHIVE); vr_righthanded = Cvar_Get ("vr_righthanded", "1", CVAR_ARCHIVE); + vr_switchThumbsticks = Cvar_Get ("vr_switchThumbsticks", "0", CVAR_ARCHIVE); vr_snapturn = Cvar_Get ("vr_snapturn", "45", CVAR_ARCHIVE); vr_extralatencymode = Cvar_Get ("vr_extralatencymode", "1", CVAR_ARCHIVE); vr_directionMode = Cvar_Get ("vr_directionMode", "0", CVAR_ARCHIVE); // 0 = HMD, 1 = Off-hand diff --git a/android/app/src/main/cpp/code/vr/vr_input.c b/android/app/src/main/cpp/code/vr/vr_input.c index e9517d28..7af1a657 100644 --- a/android/app/src/main/cpp/code/vr/vr_input.c +++ b/android/app/src/main/cpp/code/vr/vr_input.c @@ -67,6 +67,7 @@ float degrees(float rad) { #endif extern cvar_t *vr_righthanded; +extern cvar_t *vr_switchThumbsticks; extern cvar_t *vr_snapturn; extern cvar_t *vr_extralatencymode; extern cvar_t *vr_directionMode; @@ -505,7 +506,7 @@ static void IN_VRJoystick( qboolean isRightController, float joystickX, float jo Com_QueueEvent(in_vrEventTime, SE_MOUSE, x, y, 0, NULL); } else { - if (isRightController == qfalse) { + if (isRightController == (vr_switchThumbsticks->integer != 0)) { vec3_t positional; VectorClear(positional); diff --git a/android/app/src/main/pakQ3Q/ui/controls3.menu b/android/app/src/main/pakQ3Q/ui/controls3.menu index d3b51e91..329a4c44 100755 --- a/android/app/src/main/pakQ3Q/ui/controls3.menu +++ b/android/app/src/main/pakQ3Q/ui/controls3.menu @@ -128,13 +128,28 @@ itemDef { visible 1 } + itemDef { + name controls3 + group grpControls3 + type ITEM_TYPE_YESNO + text "Switch Thumbsticks:" + cvar "vr_switchThumbsticks" + rect 99 275 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + } + itemDef { name controls3 group grpControls3 type ITEM_TYPE_SLIDER text "Weapon Pitch:" cvarfloat "vr_weaponPitch" 5 -25 5 - rect 99 275 256 20 + rect 99 300 256 20 textalign ITEM_ALIGN_RIGHT textalignx 128 textaligny 20 @@ -147,10 +162,10 @@ itemDef { name controls3 group grpControls3 type ITEM_TYPE_MULTI - text "Weapon Selector Mode:" + text "Weapon Wheel Mode:" cvar "vr_weaponSelectorMode" - cvarFloatList { "Controller Weapon Selector" 0 "HMD Weapon Wheel" 1 } - rect 99 300 256 20 + cvarFloatList { "Controller Based" 0 "HMD/Thumbstick Based" 1 } + rect 99 325 256 20 textalign ITEM_ALIGN_RIGHT textalignx 128 textaligny 20 diff --git a/android/app/src/main/pakQ3Q/ui/ingame_controls.menu b/android/app/src/main/pakQ3Q/ui/ingame_controls.menu index 6c18e60c..95698d8e 100755 --- a/android/app/src/main/pakQ3Q/ui/ingame_controls.menu +++ b/android/app/src/main/pakQ3Q/ui/ingame_controls.menu @@ -249,13 +249,28 @@ itemDef { visible 1 } + itemDef { + name controls + group grpControls + type ITEM_TYPE_YESNO + text "Switch Thumbsticks:" + cvar "vr_switchThumbsticks" + rect 30 140 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + itemDef { name controls group grpControls type ITEM_TYPE_SLIDER text "Weapon Pitch:" cvarfloat "vr_weaponPitch" 5 -25 5 - rect 30 140 200 20 + rect 30 160 200 20 textalign ITEM_ALIGN_RIGHT textalignx 143 textaligny 17 @@ -268,10 +283,10 @@ itemDef { name controls group grpControls type ITEM_TYPE_MULTI - text "Weapon Selector Mode:" + text "Weapon Wheel Mode:" cvar "vr_weaponSelectorMode" - cvarFloatList { "Controller Weapon Selector" 0 "HMD Weapon Wheel" 1 } - rect 30 160 200 20 + cvarFloatList { "Controller Based" 0 "HMD/Thumbstick Based" 1 } + rect 30 180 200 20 textalign ITEM_ALIGN_RIGHT textalignx 143 textaligny 17 @@ -285,7 +300,7 @@ itemDef { group grpControls style 1 text "Comfort Options" - rect 100 195 100 20 + rect 100 215 100 20 textalign ITEM_ALIGN_RIGHT textalignx 143 textaligny 17 @@ -300,7 +315,7 @@ itemDef { type ITEM_TYPE_SLIDER text "Comfort Vignette:" cvarfloat "vr_comfortVignette" 0.2 0 1 - rect 30 220 200 20 + rect 30 240 200 20 textalign ITEM_ALIGN_RIGHT textalignx 143 textaligny 17 @@ -314,7 +329,7 @@ itemDef { type ITEM_TYPE_SLIDER text "Height Adjust:" cvarfloat "vr_heightAdjust" 0.2 0 1 - rect 30 240 200 20 + rect 30 260 200 20 textalign ITEM_ALIGN_RIGHT textalignx 143 textaligny 17 @@ -328,7 +343,7 @@ itemDef { type ITEM_TYPE_YESNO text "Roll When Hit:" cvar "vr_rollWhenHit" - rect 30 260 200 20 + rect 30 280 200 20 textalign ITEM_ALIGN_RIGHT textalignx 143 textaligny 17 @@ -342,7 +357,7 @@ itemDef { type ITEM_TYPE_SLIDER text "Haptic Intensity:" cvarfloat "vr_hapticIntensity" 0.2 0 1 - rect 30 280 200 20 + rect 30 300 200 20 textalign ITEM_ALIGN_RIGHT textalignx 143 textaligny 17 @@ -357,7 +372,7 @@ itemDef { text "HUD Depth:" cvar "vr_hudDepth" cvarFloatList { "Very Close" 0 "Close" 1 "Middle" 2 "Further" 3 "Far" 4 "Distant" 5 } - rect 30 300 200 20 + rect 30 320 200 20 textalign ITEM_ALIGN_RIGHT textalignx 143 textaligny 17 @@ -371,7 +386,7 @@ itemDef { type ITEM_TYPE_SLIDER text "HUD Y Offset:" cvarfloat "vr_hudYOffset" 20 -200 200 - rect 30 320 200 20 + rect 30 340 200 20 textalign ITEM_ALIGN_RIGHT textalignx 143 textaligny 17 diff --git a/android/app/src/main/pakQ3Q/ui/ingame_options.menu b/android/app/src/main/pakQ3Q/ui/ingame_options.menu index ca98c4fe..c3be7df2 100755 --- a/android/app/src/main/pakQ3Q/ui/ingame_options.menu +++ b/android/app/src/main/pakQ3Q/ui/ingame_options.menu @@ -36,7 +36,7 @@ itemDef { } itemDef { name window - rect 34 10 102 8 + rect 34 10 122 8 style 3 background "ui/assets/ingametop.tga" visible 1 @@ -44,7 +44,7 @@ itemDef { } itemDef { name window - rect 218 10 82 8 + rect 208 10 92 8 style 3 background "ui/assets/ingametop.tga" visible 1 @@ -150,7 +150,7 @@ itemDef { } itemDef { name window - rect 198 370 134 8 + rect 158 370 174 8 style 3 background "ui/assets/ingamebottom.tga" visible 1 @@ -206,7 +206,7 @@ itemDef { name options group grpOptions type ITEM_TYPE_YESNO - text "Simple Items (Holster):" + text "Simple Items (Weapon Wheel):" cvar "cg_weaponSelectorSimple2DIcons" rect 50 71 200 20 textalign ITEM_ALIGN_RIGHT @@ -398,7 +398,7 @@ itemDef { name options group grpOptions type ITEM_TYPE_YESNO - text "Statusbar On Weapon Selector:" + text "Statusbar On Weapon Wheel:" cvar "vr_weaponSelectorWithHud" rect 50 292 200 20 textalign ITEM_ALIGN_RIGHT diff --git a/android/app/src/main/pakQ3Q/ui/ingame_system.menu b/android/app/src/main/pakQ3Q/ui/ingame_system.menu index 5d09040d..e7d06a76 100644 --- a/android/app/src/main/pakQ3Q/ui/ingame_system.menu +++ b/android/app/src/main/pakQ3Q/ui/ingame_system.menu @@ -201,8 +201,8 @@ itemDef { type ITEM_TYPE_MULTI text "Refresh Rate:" cvar "vr_refreshrate" - cvarFloatList { "60" 60 "72 (Default)" 72 "80" 80 "90" 90 } - rect 0 70 256 20 + cvarFloatList { "60" 60 "72 (Recommended)" 72 "80" 80 "90" 90 } + rect 0 70 306 20 textalign ITEM_ALIGN_RIGHT textalignx 133 textaligny 17 diff --git a/android/app/src/main/pakQ3Q/ui/options.menu b/android/app/src/main/pakQ3Q/ui/options.menu index 4edd398a..54d174ab 100755 --- a/android/app/src/main/pakQ3Q/ui/options.menu +++ b/android/app/src/main/pakQ3Q/ui/options.menu @@ -82,7 +82,7 @@ itemDef { name options group grpOptions type ITEM_TYPE_YESNO - text "Simple Items (Holster):" + text "Simple Items (Weapon Wheel):" cvar "cg_weaponSelectorSimple2DIcons" rect 99 75 256 20 textalign ITEM_ALIGN_RIGHT @@ -279,7 +279,7 @@ itemDef { name options group grpOptions type ITEM_TYPE_YESNO - text "Statusbar On Weapon Selector:" + text "Statusbar On Weapon Wheel:" cvar "vr_weaponSelectorWithHud" rect 99 335 256 20 textalign ITEM_ALIGN_RIGHT diff --git a/android/app/src/main/pakQ3Q/ui/system.menu b/android/app/src/main/pakQ3Q/ui/system.menu index 03a9ef79..d3286011 100755 --- a/android/app/src/main/pakQ3Q/ui/system.menu +++ b/android/app/src/main/pakQ3Q/ui/system.menu @@ -105,7 +105,7 @@ itemDef { type ITEM_TYPE_MULTI text "Refresh Rate:" cvar "vr_refreshrate" - cvarFloatList { "60" 60 "72 (Default)" 72 "80" 80 "90" 90 } + cvarFloatList { "60" 60 "72 (Recommended)" 72 "80" 80 "90" 90 } rect 99 67 256 20 textalign ITEM_ALIGN_RIGHT textalignx 128