From 89fb6f6887833168e02083e969473fbc033ba137 Mon Sep 17 00:00:00 2001 From: Simon Date: Tue, 31 Jan 2023 21:45:13 +0000 Subject: [PATCH] Configurable HUD scaling menu options --- .../jni/OpenJK/code/cgame/cg_drawtools.cpp | 9 +- .../Android/jni/OpenJK/code/cgame/cg_local.h | 4 + .../Android/jni/OpenJK/code/cgame/cg_main.cpp | 9 ++ .../jni/OpenJK/codeJK2/cgame/cg_drawtools.cpp | 8 +- .../jni/OpenJK/codeJK2/cgame/cg_local.h | 4 + .../jni/OpenJK/codeJK2/cgame/cg_main.cpp | 9 ++ assets/z_vr_assets.pk3 | Bin 1405719 -> 1406060 bytes z_vr_assets/strip/menus_vr.sp | 32 +++++- z_vr_assets/ui/controls.menu | 99 ++++++++++++++++++ z_vr_assets/ui/ingamecontrols.menu | 99 ++++++++++++++++++ 10 files changed, 264 insertions(+), 9 deletions(-) diff --git a/Projects/Android/jni/OpenJK/code/cgame/cg_drawtools.cpp b/Projects/Android/jni/OpenJK/code/cgame/cg_drawtools.cpp index 4e86519..b53a772 100644 --- a/Projects/Android/jni/OpenJK/code/cgame/cg_drawtools.cpp +++ b/Projects/Android/jni/OpenJK/code/cgame/cg_drawtools.cpp @@ -30,10 +30,10 @@ along with this program; if not, see . void CG_AdjustFrom640( float *x, float *y, float *w, float *h ) { if (cg.drawingHUD && !vr->cin_camera && !vr->using_screen_layer) { - float screenXScale = 1.0f / (cg.drawingHUD == CG_HUD_SCALED ? 2.5f : 1.0f); - float screenYScale = 1.0f / (cg.drawingHUD == CG_HUD_SCALED ? 2.5f : 1.0f); + float screenXScale = 1.0f / (cg.drawingHUD == CG_HUD_SCALED ? cg_hudScale.value : 1.0f); + float screenYScale = 1.0f / (cg.drawingHUD == CG_HUD_SCALED ? cg_hudScale.value : 1.25f); - float xoffset = cg.drawingHUD == CG_HUD_SCALED ? -20 : 0; + float xoffset = cg.drawingHUD == CG_HUD_SCALED ? -cg_hudStereo.value : 0; if (cg.stereoView == STEREO_LEFT) { xoffset *= -1; } @@ -48,9 +48,10 @@ void CG_AdjustFrom640( float *x, float *y, float *w, float *h ) { } *x += (640 - (640 * screenXScale)) / 2.0f + xoffset; - *y += (480 - (480 * screenYScale)) / 2.0f; + *y += (480 - (480 * screenYScale)) / 2.0f - cg_hudYOffset.value; } } + void CG_AdjustFrom640Int( int *x, int *y, int *w, int *h ) { float fx = (float)*x; float fy = (float)*y; diff --git a/Projects/Android/jni/OpenJK/code/cgame/cg_local.h b/Projects/Android/jni/OpenJK/code/cgame/cg_local.h index a6a8bed..76ecab7 100644 --- a/Projects/Android/jni/OpenJK/code/cgame/cg_local.h +++ b/Projects/Android/jni/OpenJK/code/cgame/cg_local.h @@ -644,6 +644,10 @@ extern vmCvar_t cg_developer; extern vmCvar_t cg_timescale; extern vmCvar_t cg_skippingcin; +extern vmCvar_t cg_hudScale; +extern vmCvar_t cg_hudStereo; +extern vmCvar_t cg_hudYOffset; + extern vmCvar_t cg_pano; extern vmCvar_t cg_panoNumShots; diff --git a/Projects/Android/jni/OpenJK/code/cgame/cg_main.cpp b/Projects/Android/jni/OpenJK/code/cgame/cg_main.cpp index beaf652..8c16c30 100644 --- a/Projects/Android/jni/OpenJK/code/cgame/cg_main.cpp +++ b/Projects/Android/jni/OpenJK/code/cgame/cg_main.cpp @@ -320,6 +320,11 @@ vmCvar_t cg_developer; vmCvar_t cg_timescale; vmCvar_t cg_skippingcin; +vmCvar_t cg_hudScale; +vmCvar_t cg_hudStereo; +vmCvar_t cg_hudYOffset; + + vmCvar_t cg_pano; vmCvar_t cg_panoNumShots; @@ -392,6 +397,10 @@ static cvarTable_t cvarTable[] = { { &cg_footsteps, "cg_footsteps", "3", CVAR_ARCHIVE },//1 = sounds, 2 = sounds & effects, 3 = sounds, effects & marks, 4 = always { &cg_saberEntMarks, "cg_saberEntMarks", "1", CVAR_ARCHIVE }, + { &cg_hudScale, "cg_hudScale", "2.5", CVAR_ARCHIVE }, + { &cg_hudStereo, "cg_hudStereo", "20", CVAR_ARCHIVE }, + { &cg_hudYOffset, "cg_hudYOffset", "0.0", CVAR_ARCHIVE }, + { &cg_draw2D, "cg_draw2D", "1", CVAR_ARCHIVE }, { &cg_drawStatus, "cg_drawStatus", "1", CVAR_ARCHIVE }, { &cg_drawHUD, "cg_drawHUD", "1", 0 }, diff --git a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_drawtools.cpp b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_drawtools.cpp index 8f4614b..a984bc6 100644 --- a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_drawtools.cpp +++ b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_drawtools.cpp @@ -29,10 +29,10 @@ along with this program; if not, see . void CG_AdjustFrom640( float *x, float *y, float *w, float *h ) { if (cg.drawingHUD && !vr->cin_camera && !vr->using_screen_layer) { - float screenXScale = 1.0f / (cg.drawingHUD == CG_HUD_SCALED ? 2.5f : 1.0f); - float screenYScale = 1.0f / (cg.drawingHUD == CG_HUD_SCALED ? 2.5f : 1.25f); + float screenXScale = 1.0f / (cg.drawingHUD == CG_HUD_SCALED ? cg_hudScale.value : 1.0f); + float screenYScale = 1.0f / (cg.drawingHUD == CG_HUD_SCALED ? cg_hudScale.value : 1.25f); - float xoffset = cg.drawingHUD == CG_HUD_SCALED ? -20 : 0; + float xoffset = cg.drawingHUD == CG_HUD_SCALED ? -cg_hudStereo.value : 0; if (cg.stereoView == STEREO_LEFT) { xoffset *= -1; } @@ -47,7 +47,7 @@ void CG_AdjustFrom640( float *x, float *y, float *w, float *h ) { } *x += (640 - (640 * screenXScale)) / 2.0f + xoffset; - *y += (480 - (480 * screenYScale)) / 2.0f; + *y += (480 - (480 * screenYScale)) / 2.0f - cg_hudYOffset.value; } } diff --git a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_local.h b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_local.h index 48e8498..d0eabd0 100644 --- a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_local.h +++ b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_local.h @@ -640,6 +640,10 @@ extern vmCvar_t cg_developer; extern vmCvar_t cg_timescale; extern vmCvar_t cg_skippingcin; +extern vmCvar_t cg_hudScale; +extern vmCvar_t cg_hudStereo; +extern vmCvar_t cg_hudYOffset; + extern vmCvar_t cg_pano; extern vmCvar_t cg_panoNumShots; diff --git a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_main.cpp b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_main.cpp index e5df2ac..a18f185 100644 --- a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_main.cpp +++ b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_main.cpp @@ -315,6 +315,11 @@ vmCvar_t cg_developer; vmCvar_t cg_timescale; vmCvar_t cg_skippingcin; +vmCvar_t cg_hudScale; +vmCvar_t cg_hudStereo; +vmCvar_t cg_hudYOffset; + + vmCvar_t cg_pano; vmCvar_t cg_panoNumShots; @@ -381,6 +386,10 @@ static cvarTable_t cvarTable[] = { { &cg_heightAdjust, "cg_heightAdjust", "0.0", CVAR_ARCHIVE }, { &cg_shadows, "cg_shadows", "3", CVAR_ARCHIVE }, + { &cg_hudScale, "cg_hudScale", "2.5", CVAR_ARCHIVE }, + { &cg_hudStereo, "cg_hudStereo", "20", CVAR_ARCHIVE }, + { &cg_hudYOffset, "cg_hudYOffset", "0.0", CVAR_ARCHIVE }, + { &cg_draw2D, "cg_draw2D", "1", CVAR_ARCHIVE }, { &cg_drawStatus, "cg_drawStatus", "1", CVAR_ARCHIVE }, { &cg_drawHUD, "cg_drawHUD", "1", 0 }, diff --git a/assets/z_vr_assets.pk3 b/assets/z_vr_assets.pk3 index 6c0b794d2898c0da6f342940a07ffa2813601d5f..d842d1e28ba2055bd30807b616ad570ea77a726f 100644 GIT binary patch delta 12573 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 H@6-PQ8AAFM delta 12157 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 diff --git a/z_vr_assets/strip/menus_vr.sp b/z_vr_assets/strip/menus_vr.sp index e77754b..3e6f683 100644 --- a/z_vr_assets/strip/menus_vr.sp +++ b/z_vr_assets/strip/menus_vr.sp @@ -3,7 +3,7 @@ CONFIG W:\bin\striped.cfg ID 100 REFERENCE MENUS_VR DESCRIPTION "VR Menu Localizations" -COUNT 136 +COUNT 142 INDEX 0 { REFERENCE COMMON_CONTROLS_ITEM @@ -684,3 +684,33 @@ INDEX 135 REFERENCE DIRECTORS_CUT_DESC TEXT_LANGUAGE1 "Various tweaks for better balance of VR gameplay." } +INDEX 136 +{ + REFERENCE HUD_SCALE_ITEM + TEXT_LANGUAGE1 "VR HUD Scale:" +} +INDEX 137 +{ + REFERENCE HUD_SCALE_DESC + TEXT_LANGUAGE1 "Scale of the HUD in VR." +} +INDEX 138 +{ + REFERENCE HUD_STEREO_ITEM + TEXT_LANGUAGE1 "VR HUD Stereo:" +} +INDEX 139 +{ + REFERENCE HUD_STEREO_DESC + TEXT_LANGUAGE1 "Stereo depth of the HUD in VR." +} +INDEX 140 +{ + REFERENCE HUD_YOFFSET_ITEM + TEXT_LANGUAGE1 "VR HUD Y-Offset:" +} +INDEX 141 +{ + REFERENCE HUD_YOFFSET_DESC + TEXT_LANGUAGE1 "Y-Offset of the HUD in VR." +} diff --git a/z_vr_assets/ui/controls.menu b/z_vr_assets/ui/controls.menu index 89a9dfb..cbb397d 100644 --- a/z_vr_assets/ui/controls.menu +++ b/z_vr_assets/ui/controls.menu @@ -1984,5 +1984,104 @@ } } + itemDef + { + name none + group comfortcontrols + type ITEM_TYPE_SLIDER + text @MENUS_VR_HUD_SCALE_ITEM + cvarfloat "cg_hudScale" 0.1 1.0 5.0 + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS_VR_HUD_SCALE_DESC + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight7 + } + + mouseexit + { + hide highlight7 + } + } + + itemDef + { + name none + group comfortcontrols + type ITEM_TYPE_SLIDER + text @MENUS_VR_HUD_STEREO_ITEM + cvarfloat "cg_hudStereo" 1 1 30 + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS_VR_HUD_STEREO_DESC + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight8 + } + + mouseexit + { + hide highlight8 + } + } + + itemDef + { + name none + group comfortcontrols + type ITEM_TYPE_SLIDER + text @MENUS_VR_HUD_YOFFSET_ITEM + cvarfloat "cg_hudYOffset" 1 -50 120 + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS_VR_HUD_YOFFSET_DESC + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight8 + } + + mouseexit + { + hide highlight8 + } + } + } } diff --git a/z_vr_assets/ui/ingamecontrols.menu b/z_vr_assets/ui/ingamecontrols.menu index 6269b3e..f7cdd5c 100644 --- a/z_vr_assets/ui/ingamecontrols.menu +++ b/z_vr_assets/ui/ingamecontrols.menu @@ -1983,5 +1983,104 @@ } } + itemDef + { + name none + group comfortcontrols + type ITEM_TYPE_SLIDER + text @MENUS_VR_HUD_SCALE_ITEM + cvarfloat "cg_hudScale" 0.1 1.0 5.0 + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS_VR_HUD_SCALE_DESC + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight7 + } + + mouseexit + { + hide highlight7 + } + } + + itemDef + { + name none + group comfortcontrols + type ITEM_TYPE_SLIDER + text @MENUS_VR_HUD_STEREO_ITEM + cvarfloat "cg_hudStereo" 1 1 30 + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS_VR_HUD_STEREO_DESC + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight8 + } + + mouseexit + { + hide highlight8 + } + } + + itemDef + { + name none + group comfortcontrols + type ITEM_TYPE_SLIDER + text @MENUS_VR_HUD_YOFFSET_ITEM + cvarfloat "cg_hudYOffset" 1 -50 120 + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS_VR_HUD_YOFFSET_DESC + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight8 + } + + mouseexit + { + hide highlight8 + } + } + } }