From dfde95743e7b030a79ff124809c02aeecb0ecd6f Mon Sep 17 00:00:00 2001 From: Kevin Remisoski Date: Thu, 7 Mar 2024 04:34:52 -0500 Subject: [PATCH 01/12] added colored crosshair support and UI option via game options --- code/cgame/cg_cvar.h | 1 + code/cgame/cg_draw.c | 29 +++++++- code/q3_ui/ui_preferences.c | 132 +++++++++++++++++++++++++++++++++--- 3 files changed, 151 insertions(+), 11 deletions(-) diff --git a/code/cgame/cg_cvar.h b/code/cgame/cg_cvar.h index 46811af9..1019c490 100644 --- a/code/cgame/cg_cvar.h +++ b/code/cgame/cg_cvar.h @@ -30,6 +30,7 @@ CG_CVAR( cg_drawAttacker, "cg_drawAttacker", "1", CVAR_ARCHIVE ) CG_CVAR( cg_drawSpeed, "cg_drawSpeed", "0", CVAR_ARCHIVE ) CG_CVAR( cg_drawCrosshair, "cg_drawCrosshair", "4", CVAR_ARCHIVE ) CG_CVAR( cg_drawCrosshairNames, "cg_drawCrosshairNames", "1", CVAR_ARCHIVE ) +CG_CVAR( cg_crosshairColor, "cg_crosshairColor", "7", CVAR_ARCHIVE ) CG_CVAR( cg_drawRewards, "cg_drawRewards", "1", CVAR_ARCHIVE ) CG_CVAR( cg_drawWeaponSelect, "cg_drawWeaponSelect", "1", CVAR_ARCHIVE ) CG_CVAR( cg_crosshairSize, "cg_crosshairSize", "24", CVAR_ARCHIVE ) diff --git a/code/cgame/cg_draw.c b/code/cgame/cg_draw.c index 366c6d00..325399cb 100644 --- a/code/cgame/cg_draw.c +++ b/code/cgame/cg_draw.c @@ -1995,6 +1995,33 @@ CROSSHAIR ================================================================================ */ +/* +================= +CG_SetCrosshairColor +================= +*/ +static void CG_SetCrosshairColor( void ) { + static int colorNum; + static float *colors[] = { + colorBlack, + colorRed, + colorGreen, + colorYellow, + colorBlue, + colorCyan, + colorMagenta, + colorWhite + }; + + colorNum = cg_crosshairColor.integer; + if ( colorNum < 0 || colorNum > 7 ) { // if it's 0, then set to white + colorNum = 7; + } + colorNum = colorNum % ARRAY_LEN( colors ); + + trap_R_SetColor( colors[colorNum] ); +} + /* ================= @@ -2027,7 +2054,7 @@ static void CG_DrawCrosshair( void ) { CG_ColorForHealth( hcolor ); trap_R_SetColor( hcolor ); } else { - trap_R_SetColor( NULL ); + CG_SetCrosshairColor(); } w = h = cg_crosshairSize.value; diff --git a/code/q3_ui/ui_preferences.c b/code/q3_ui/ui_preferences.c index 8cb17256..7da2117e 100644 --- a/code/q3_ui/ui_preferences.c +++ b/code/q3_ui/ui_preferences.c @@ -17,6 +17,15 @@ GAME OPTIONS MENU #define ART_BACK0 "menu/art/back_0" #define ART_BACK1 "menu/art/back_1" +#define ART_FX_BASE "menu/art/fx_base" +#define ART_FX_BLUE "menu/art/fx_blue" +#define ART_FX_CYAN "menu/art/fx_cyan" +#define ART_FX_GREEN "menu/art/fx_grn" +#define ART_FX_RED "menu/art/fx_red" +#define ART_FX_TEAL "menu/art/fx_teal" +#define ART_FX_WHITE "menu/art/fx_white" +#define ART_FX_YELLOW "menu/art/fx_yel" + #define PREFERENCES_X_POS 360 #define ID_CROSSHAIR 127 @@ -29,8 +38,9 @@ GAME OPTIONS MENU #define ID_SYNCEVERYFRAME 134 #define ID_FORCEMODEL 135 #define ID_DRAWTEAMOVERLAY 136 -#define ID_ALLOWDOWNLOAD 137 +#define ID_ALLOWDOWNLOAD 137 #define ID_BACK 138 +#define ID_CROSSHAIRCOLOR 139 #define NUM_CROSSHAIRS 10 @@ -42,7 +52,8 @@ typedef struct { menubitmap_s framel; menubitmap_s framer; - menulist_s crosshair; + menulist_s crosshair; + menulist_s crosshaircolor; menuradiobutton_s simpleitems; menuradiobutton_s brass; menuradiobutton_s wallmarks; @@ -51,15 +62,45 @@ typedef struct { menuradiobutton_s highqualitysky; menuradiobutton_s synceveryframe; menuradiobutton_s forcemodel; - menulist_s drawteamoverlay; + menulist_s drawteamoverlay; menuradiobutton_s allowdownload; menubitmap_s back; - qhandle_t crosshairShader[NUM_CROSSHAIRS]; + qhandle_t crosshairShader[NUM_CROSSHAIRS]; + + qhandle_t fxBasePic; + qhandle_t fxPic[8]; } preferences_t; static preferences_t s_preferences; +/*=================================================== + INDEX - UI SLIDER BAR COLOR VALUE > CGAME VALUE + 0 - RED 7 > 1 + 1 - GREEN 0 > 2 + 2 - YELLOW 1 > 3 + 3 - BLUE 2 > 4 + 4 - TEAL (CYAN) 3 > 5 + 5 - MAGENTA 5 > 6 + 6 - WHITE 4 > 7 + 7 - BLACK 6 > 0 +===================================================== +If any number isn't in the UI table to assign, it will always map to WHITE +*/ +static int gamecodetoui[] = {7,0,1,2,3,5,4,6}; +static int uitogamecode[] = {1,2,3,4,6,5,7,0}; +static float *uiSliderColors[] = { + colorRed, + colorGreen, + colorYellow, + colorBlue, + colorMagenta, + colorCyan, + colorWhite, + colorBlack +}; +static int uiSliderColorIndex; + static const char *teamoverlay_names[] = { "off", @@ -70,15 +111,25 @@ static const char *teamoverlay_names[] = }; static void Preferences_SetMenuItems( void ) { + int c; + s_preferences.crosshair.curvalue = (int)trap_Cvar_VariableValue( "cg_drawCrosshair" ) % NUM_CROSSHAIRS; - s_preferences.simpleitems.curvalue = trap_Cvar_VariableValue( "cg_simpleItems" ) != 0; - s_preferences.brass.curvalue = trap_Cvar_VariableValue( "cg_brassTime" ) != 0; - s_preferences.wallmarks.curvalue = trap_Cvar_VariableValue( "cg_marks" ) != 0; + + c = (int)trap_Cvar_VariableValue( "cg_crosshairColor" ); + if ( c < 0 || c > 7 ) { + c = 7; //set to white if cvar is invalid + } + + uiSliderColorIndex = s_preferences.crosshaircolor.curvalue = gamecodetoui[c]; + + s_preferences.simpleitems.curvalue = trap_Cvar_VariableValue( "cg_simpleItems" ) != 0; + s_preferences.brass.curvalue = trap_Cvar_VariableValue( "cg_brassTime" ) != 0; + s_preferences.wallmarks.curvalue = trap_Cvar_VariableValue( "cg_marks" ) != 0; s_preferences.identifytarget.curvalue = trap_Cvar_VariableValue( "cg_drawCrosshairNames" ) != 0; s_preferences.dynamiclights.curvalue = trap_Cvar_VariableValue( "r_dynamiclight" ) != 0; s_preferences.highqualitysky.curvalue = trap_Cvar_VariableValue ( "r_fastsky" ) == 0; s_preferences.synceveryframe.curvalue = trap_Cvar_VariableValue( "r_swapinterval" ) != 0; - s_preferences.forcemodel.curvalue = trap_Cvar_VariableValue( "cg_forcemodel" ) != 0; + s_preferences.forcemodel.curvalue = trap_Cvar_VariableValue( "cg_forcemodel" ) != 0; s_preferences.drawteamoverlay.curvalue = Com_Clamp( 0, 3, trap_Cvar_VariableValue( "cg_drawTeamOverlay" ) ); s_preferences.allowdownload.curvalue = trap_Cvar_VariableValue( "cl_allowDownload" ) != 0; } @@ -98,6 +149,14 @@ static void Preferences_Event( void* ptr, int notification ) { trap_Cvar_SetValue( "cg_drawCrosshair", s_preferences.crosshair.curvalue ); break; + case ID_CROSSHAIRCOLOR: + uiSliderColorIndex++; + if( uiSliderColorIndex > ( ARRAY_LEN( uiSliderColors ) - 1 ) ) { + uiSliderColorIndex = 0; + } + trap_Cvar_SetValue( "cg_crosshairColor", uitogamecode[s_preferences.crosshaircolor.curvalue] ); + break; + case ID_SIMPLEITEMS: trap_Cvar_SetValue( "cg_simpleItems", s_preferences.simpleitems.curvalue ); break; @@ -157,8 +216,8 @@ Crosshair_Draw static void Crosshair_Draw( void *self ) { menulist_s *s; float *color; - int x, y; - int style; + int x, y; + int style; qboolean focus; s = (menulist_s *)self; @@ -194,10 +253,38 @@ static void Crosshair_Draw( void *self ) { if( !s->curvalue ) { return; } + trap_R_SetColor( uiSliderColors[uiSliderColorIndex] ); // Draw color to the crosshair UI_DrawHandlePic( x + SMALLCHAR_WIDTH, y - 4, 24, 24, s_preferences.crosshairShader[s->curvalue] ); } +/* +================= +CrosshairColor_Draw +================= +*/ +static void CrosshairColor_Draw( void *self ) { + menulist_s *item; + float *color; + int style; + qboolean focus; + + item = (menulist_s *)self; + focus = (item->generic.parent->cursor == item->generic.menuPosition); + + style = UI_LEFT|UI_SMALLFONT; + color = text_color_normal; + if( focus ) { + style |= UI_PULSE; + color = text_color_highlight; + } + UI_DrawString( item->generic.x - SMALLCHAR_WIDTH, item->generic.y, item->generic.name, style|UI_RIGHT, color ); + + UI_DrawHandlePic( item->generic.x + BIGCHAR_HEIGHT+4 - 20, item->generic.y + 8, 128, 8, s_preferences.fxBasePic ); + UI_DrawHandlePic( item->generic.x + BIGCHAR_HEIGHT+4 + item->curvalue * 16 + 8 - 20, item->generic.y + 6, 16, 12, s_preferences.fxPic[item->curvalue] ); +} + + static void Preferences_MenuInit( void ) { int y; @@ -246,6 +333,21 @@ static void Preferences_MenuInit( void ) { s_preferences.crosshair.generic.right = PREFERENCES_X_POS + 48; y += BIGCHAR_HEIGHT+2+4; + s_preferences.crosshaircolor.generic.type = MTYPE_SPINCONTROL; + s_preferences.crosshaircolor.generic.flags = QMF_NODEFAULTINIT; + s_preferences.crosshaircolor.generic.x = PREFERENCES_X_POS - 24; + s_preferences.crosshaircolor.generic.y = y; + s_preferences.crosshaircolor.generic.name = "Crosshair Color:"; + s_preferences.crosshaircolor.generic.callback = Preferences_Event; + s_preferences.crosshaircolor.generic.ownerdraw = CrosshairColor_Draw; + s_preferences.crosshaircolor.generic.id = ID_CROSSHAIRCOLOR; + s_preferences.crosshaircolor.generic.top = y - 4; + s_preferences.crosshaircolor.generic.bottom = y + 20; + s_preferences.crosshaircolor.generic.left = PREFERENCES_X_POS - ( ( (int)strlen(s_preferences.crosshaircolor.generic.name) + 1 ) * SMALLCHAR_WIDTH ); + s_preferences.crosshaircolor.generic.right = PREFERENCES_X_POS + 48; + s_preferences.crosshaircolor.numitems = 8; + + y += BIGCHAR_HEIGHT+24; s_preferences.simpleitems.generic.type = MTYPE_RADIOBUTTON; s_preferences.simpleitems.generic.name = "Simple Items:"; s_preferences.simpleitems.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; @@ -353,6 +455,7 @@ static void Preferences_MenuInit( void ) { Menu_AddItem( &s_preferences.menu, &s_preferences.framer ); Menu_AddItem( &s_preferences.menu, &s_preferences.crosshair ); + Menu_AddItem( &s_preferences.menu, &s_preferences.crosshaircolor ); Menu_AddItem( &s_preferences.menu, &s_preferences.simpleitems ); Menu_AddItem( &s_preferences.menu, &s_preferences.wallmarks ); Menu_AddItem( &s_preferences.menu, &s_preferences.brass ); @@ -385,6 +488,15 @@ void Preferences_Cache( void ) { for( n = 0; n < NUM_CROSSHAIRS; n++ ) { s_preferences.crosshairShader[n] = trap_R_RegisterShaderNoMip( va("gfx/2d/crosshair%c", 'a' + n ) ); } + + s_preferences.fxBasePic = trap_R_RegisterShaderNoMip( ART_FX_BASE ); + s_preferences.fxPic[0] = trap_R_RegisterShaderNoMip( ART_FX_RED ); + s_preferences.fxPic[1] = trap_R_RegisterShaderNoMip( ART_FX_GREEN ); + s_preferences.fxPic[2] = trap_R_RegisterShaderNoMip( ART_FX_YELLOW ); + s_preferences.fxPic[3] = trap_R_RegisterShaderNoMip( ART_FX_BLUE ); + s_preferences.fxPic[4] = trap_R_RegisterShaderNoMip( ART_FX_CYAN ); + s_preferences.fxPic[5] = trap_R_RegisterShaderNoMip( ART_FX_TEAL ); + s_preferences.fxPic[6] = trap_R_RegisterShaderNoMip( ART_FX_WHITE ); } From 39532d27a9c56e850b76228140e85be2afdd0b13 Mon Sep 17 00:00:00 2001 From: Kevin Remisoski Date: Thu, 7 Mar 2024 04:49:06 -0500 Subject: [PATCH 02/12] added crosshair color assets --- assets/gfx/2d/crosshaira.tga | Bin 0 -> 65554 bytes assets/gfx/2d/crosshairb.tga | Bin 0 -> 65554 bytes assets/gfx/2d/crosshairc.tga | Bin 0 -> 65554 bytes assets/gfx/2d/crosshaird.tga | Bin 0 -> 65554 bytes assets/gfx/2d/crosshaire.tga | Bin 0 -> 65554 bytes assets/gfx/2d/crosshairf.tga | Bin 0 -> 65554 bytes assets/gfx/2d/crosshairg.tga | Bin 0 -> 65554 bytes assets/gfx/2d/crosshairh.tga | Bin 0 -> 65554 bytes assets/gfx/2d/crosshairi.tga | Bin 0 -> 65554 bytes assets/gfx/2d/crosshairj.tga | Bin 0 -> 65554 bytes assets/scripts/crosshair.shader | 90 ++++++++++++++++++++++++++++++++ 11 files changed, 90 insertions(+) create mode 100644 assets/gfx/2d/crosshaira.tga create mode 100644 assets/gfx/2d/crosshairb.tga create mode 100644 assets/gfx/2d/crosshairc.tga create mode 100644 assets/gfx/2d/crosshaird.tga create mode 100644 assets/gfx/2d/crosshaire.tga create mode 100644 assets/gfx/2d/crosshairf.tga create mode 100644 assets/gfx/2d/crosshairg.tga create mode 100644 assets/gfx/2d/crosshairh.tga create mode 100644 assets/gfx/2d/crosshairi.tga create mode 100644 assets/gfx/2d/crosshairj.tga create mode 100644 assets/scripts/crosshair.shader diff --git a/assets/gfx/2d/crosshaira.tga b/assets/gfx/2d/crosshaira.tga new file mode 100644 index 0000000000000000000000000000000000000000..c8a83ecef1090fa4f84a1e4bf405d66af1d2fe83 GIT binary patch literal 65554 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 literal 0 HcmV?d00001 diff --git a/assets/gfx/2d/crosshairb.tga b/assets/gfx/2d/crosshairb.tga new file mode 100644 index 0000000000000000000000000000000000000000..07e6966310676c0504f6e66c5a9c31ce92d675a0 GIT binary patch literal 65554 zcmeIzL2AP=5Qb6FRgcl5=9ImSp=6P*1hc55e_o)3B2;VMXV+tVjnC&bUgPKc^P6u1 z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+Kvm#*p5NI| z_3zquhrq1;d+m-XoU$sQe^oAHpZ*ygt5fJ-mCM+te@4gZ6#7@?GWO}8(Xl#({#Ch* zefno~tWKeSRW4(n{uv#sQ|Mon%h;!XM#t(D`d8&L_UV6j$5p@G>v!v(fBM~hSJyvZ z@a_|?{CBV4t$Y6IclTXg|9ru_Pq^~my?(du`KRCAcXj>q1@AuL%76Fz-MZ(Wes|y1 z_0JdVeM0^8pWOq!b@Hd5wSTYW3-q2)fBk3oKyRJ=>1XZz|JOfXp!bBHfBk3oKyRJ= z>1XY||Mkxo=slt5U;o)X&|4>e`dNGLfBo|XdQa&2@7>?@1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ jfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkL{KLq{&2&#_b literal 0 HcmV?d00001 diff --git a/assets/gfx/2d/crosshairc.tga b/assets/gfx/2d/crosshairc.tga new file mode 100644 index 0000000000000000000000000000000000000000..d17290ea66329bac663414ab25a7627ffde042aa GIT binary patch literal 65554 zcmeI&L2eu&5CzbVS2;$G>YF=wVR@)UBiuj=@w3GsUhmiY_2>83 z%D)5%5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5;&Q34+yAHQC|M%7hk4}sV0Ki}^$wJApl$bXdNo^|BEXKtgWF8RN` zevPWD&K?4<*?+#@V`@{55|IBW$vx}Hf6v@TO&1TGJH7iC0x^%6*VCC|z1Z(*ednJE#5`hN&#GTntQY$|t?&F=fs)_tYwa|; ztroZqzdT$$kA7ikQ; zsehkXtG9nQ`R||MlN-qYiQfKa<)16Vl1KIVy|~Ubt!YLJ#JuBrbU*cS3BM~m)NPyT!5HF{e4--{NX zqd)(5`u*Heqk?>C!yLjE&#^VgPt{)}c$xH|utcTu}vK>qz^C!LW0Non@q zMgIL}C!LW0Non@qMgIL}C!LW0Non@qMgIL}nNO5Fm;V2H?3dZ*f0!-iQPxxcz7qTW z55}4A81s;S=CsDoCjarKDiR<-fB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pka|QkaxjVV? literal 0 HcmV?d00001 diff --git a/assets/gfx/2d/crosshaird.tga b/assets/gfx/2d/crosshaird.tga new file mode 100644 index 0000000000000000000000000000000000000000..11177a646fb87fffedf6bc932ad9b7bca0f50b0d GIT binary patch literal 65554 zcmeHQiE`UI49tCJCP~{gN2B&r`^o)*ByZP`RAgDQCF>%A%?v|JmPHD?06~xx4-SqF z;@{tczXyLV;*pj7^Yil%>Gh2n&OIT2LHdRChV;9Zc#hw_glqYmdmQr~ z=e#GW*OwvH9ntMkz+2;0hu2{_S9`+ z@QO4D*AaftI)&S$->iNW0=)RE#LgTy4i&kcErB zBcAmFn5W!_TZ%`FBb-~c1;G6X&&L>DfqW?$CtYrk4P|7?7T|eKfjMLENy|T>`f&`x zgkON?xPe@AjNdHHRm$u-*Y+k!=XLY5EgEsxjMWuDYA#A_y?sIahU@Jkhm_|ni{3VXyb=Cp`2XC;4*>RDqa~d; zBm-jFl>^d!licsr7XbF^?;FzlXvcwTfwXhZAgWN_631I->(<1Q*KZe(EsmE{Q#WjJbumVGKhIiryJVw?kU(*Y#c&|Md?Ee#e0QLL*VISIoRU82LpCT3E+!{x8&Mr5IdC+~u zef+ikQP1NZY4KROFD~4|257wB7v`mo2kbTG=M;bVcX40Lk`waz?D~9lY@z?0~Llq_WaHv)~%X-A(;xoj`p@74$k%hk0bpLP{|;?{d;mZA zuf6{v;IH?;_`$zy`-wgO;14Jc&U_=weqgWt-+~R${*QKSKrh`7_-p@H z1NhUILu%dgr^)umbFlv!6Ud(fy>&n0&m0_3OgLW-boTkHm{&i;b|@Z@A^yOvbAP{z zchhIs0L=}^j03=bXRNOY>!x$`AHacEB+GpyOV9R7%$l&=_Z+alq)ibA($)cDgw%Pj z?>>A0_L?W2z75=%+tml-ZP(JKfCGvPrptjBVzdpzq2J;D>JOxe{~NG59g1(4-=mxx z`2orK0p)s*E*K8I1{}~lkwokOu^5VH-`}H5`T~j#F3$nJ!)4Mozl|G#1M&x#kQ8BO^O7y&a(5udUsU z7%ZL34oq$X7}rlq@9Uf+H(>|l6OL>LAXm=gNgDge1=Lf0!*TI{q)elHbI4g=B*lmZ z@_;hT4f`rTQTH390&Rk&@%1^Lh41E{HKtp|ZOqTW|4cqXFa9&Gb2cUhOWzC6L!aQA zY{5<*JWy6k<26jhRA-Msdj!JE`S4U6Fj|tkTF~rw!SMLAP>e1xaQPs>=4h#7~U11wX0k_UI+PH z1X&f}L$Ymmm%8CO*uE2Y>3dHyLuQ<7${1pf@1)`w?H$rAb2591HoMEg0s08^6;s}? zly&2NYJ=9?W(UrU6^1@>t_iuoHHj(sjP&Jbqqsh5(YaVN!jMc+fe+ljfNPV;he_-M z$|=IVSq9^n^y9J^k4*-w87e|dkT@5KHsThashgZ5`-Gg>(U)lA2+ytd!wuKQy%AS? Lr173e=JfkNBz28f literal 0 HcmV?d00001 diff --git a/assets/gfx/2d/crosshaire.tga b/assets/gfx/2d/crosshaire.tga new file mode 100644 index 0000000000000000000000000000000000000000..06e17602452fed768addce3391c8891a4738ba03 GIT binary patch literal 65554 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 literal 0 HcmV?d00001 diff --git a/assets/gfx/2d/crosshairg.tga b/assets/gfx/2d/crosshairg.tga new file mode 100644 index 0000000000000000000000000000000000000000..1213d18024b61b93347a927f4d8c2abc20ee3b13 GIT binary patch literal 65554 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 b{2|Uh<%)aPaqeH5hk3b&u^1af--_^md<5vq literal 0 HcmV?d00001 diff --git a/assets/gfx/2d/crosshairh.tga b/assets/gfx/2d/crosshairh.tga new file mode 100644 index 0000000000000000000000000000000000000000..bead78b2433156921b5987801fa827c8b8ba4981 GIT binary patch literal 65554 zcmeIzL2AP=5Qb6FRgcjt_69k*DOqGI!7M82pBE^h2-TYR+4UG-qL-UzN+)r+-Gr>J<7{z;r5-F;WrKVR_f6R!MsuiveE{^@u3U0wft!Mjhm^54CFx9<6;-`#h0 z{qqHTpHM&jXZJvFo&4!%?cZzp0=*~HU;o)X&|4>e`dNGb|Mkxo=slt5U;o)X&|4>e z`dNGLfBo|XdQa&2*MD{o^w!Cre%9XmU;li8-V=KMd-pdz0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U iAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBoL4}m{?kg`+& literal 0 HcmV?d00001 diff --git a/assets/gfx/2d/crosshairi.tga b/assets/gfx/2d/crosshairi.tga new file mode 100644 index 0000000000000000000000000000000000000000..faa45f6fbc802cf617be3e57d5c0709a1a323267 GIT binary patch literal 65554 zcmeI&F>0e>377J-g-s77J-g-s>dh^E6-gew9C+r}?Y<-S1cTt9hEQd%wz`&eQzW{qFax`_(+n z*S%lmPv>d=>VEh8)%|Lo=Ih?C@~87Oe|5k6{px--PxE!}SNYRkVf4^`H4&-`4;22DAM7&-|`$>;HO#S$_Rze%H74f4#vhzy347 z>)ZOj-e8tr|Cyg{0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U KAVA>v1wH|PY)>Bm literal 0 HcmV?d00001 diff --git a/assets/gfx/2d/crosshairj.tga b/assets/gfx/2d/crosshairj.tga new file mode 100644 index 0000000000000000000000000000000000000000..a17f9903169f492bd1e9061ff80c62e8eba59a28 GIT binary patch literal 65554 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 literal 0 HcmV?d00001 diff --git a/assets/scripts/crosshair.shader b/assets/scripts/crosshair.shader new file mode 100644 index 00000000..975f362e --- /dev/null +++ b/assets/scripts/crosshair.shader @@ -0,0 +1,90 @@ +gfx/2d/crosshaira +{ + nopicmip + { + map gfx/2d/crosshaira.tga + blendFunc BLEND + rgbGen exactVertex + } +} +gfx/2d/crosshairb +{ + nopicmip + { + map gfx/2d/crosshairb.tga + blendFunc BLEND + rgbGen exactVertex + } +} +gfx/2d/crosshairc +{ + nopicmip + { + map gfx/2d/crosshairc.tga + blendFunc BLEND + rgbGen exactVertex + } +} +gfx/2d/crosshaird +{ + nopicmip + { + map gfx/2d/crosshaird.tga + blendFunc BLEND + rgbGen exactVertex + } +} +gfx/2d/crosshaire +{ + nopicmip + { + map gfx/2d/crosshaire.tga + blendFunc BLEND + rgbGen exactVertex + } +} +gfx/2d/crosshairf +{ + nopicmip + { + map gfx/2d/crosshairf.tga + blendFunc BLEND + rgbGen exactVertex + } +} +gfx/2d/crosshairg +{ + nopicmip + { + map gfx/2d/crosshairg.tga + blendFunc BLEND + rgbGen exactVertex + } +} +gfx/2d/crosshairh +{ + nopicmip + { + map gfx/2d/crosshairh.tga + blendFunc BLEND + rgbGen exactVertex + } +} +gfx/2d/crosshairi +{ + nopicmip + { + map gfx/2d/crosshairi.tga + blendFunc BLEND + rgbGen exactVertex + } +} +gfx/2d/crosshairj +{ + nopicmip + { + map gfx/2d/crosshairj.tga + blendFunc BLEND + rgbGen exactVertex + } +} From 0424117816aa7040214c02a76f426af332e4a025 Mon Sep 17 00:00:00 2001 From: Kevin Remisoski Date: Thu, 7 Mar 2024 06:01:19 -0500 Subject: [PATCH 03/12] fixed UI --- code/cgame/cg_draw.c | 18 +++++++++--------- code/q3_ui/ui_preferences.c | 10 +++++----- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/code/cgame/cg_draw.c b/code/cgame/cg_draw.c index 325399cb..44177999 100644 --- a/code/cgame/cg_draw.c +++ b/code/cgame/cg_draw.c @@ -2003,18 +2003,18 @@ CG_SetCrosshairColor static void CG_SetCrosshairColor( void ) { static int colorNum; static float *colors[] = { - colorBlack, - colorRed, - colorGreen, - colorYellow, - colorBlue, - colorCyan, - colorMagenta, - colorWhite + colorBlack, //0 + colorRed, //1 + colorGreen, //2 + colorYellow, //3 + colorBlue, //4 + colorCyan, //5 + colorMagenta, //6 + colorWhite, //7 }; colorNum = cg_crosshairColor.integer; - if ( colorNum < 0 || colorNum > 7 ) { // if it's 0, then set to white + if ( colorNum > 8 || colorNum < 0 ) { // if it's larger than 8 or less than 0, set it to white colorNum = 7; } colorNum = colorNum % ARRAY_LEN( colors ); diff --git a/code/q3_ui/ui_preferences.c b/code/q3_ui/ui_preferences.c index 7da2117e..997cfe6d 100644 --- a/code/q3_ui/ui_preferences.c +++ b/code/q3_ui/ui_preferences.c @@ -20,11 +20,11 @@ GAME OPTIONS MENU #define ART_FX_BASE "menu/art/fx_base" #define ART_FX_BLUE "menu/art/fx_blue" #define ART_FX_CYAN "menu/art/fx_cyan" -#define ART_FX_GREEN "menu/art/fx_grn" +#define ART_FX_GREEN "menu/art/fx_grn" #define ART_FX_RED "menu/art/fx_red" #define ART_FX_TEAL "menu/art/fx_teal" -#define ART_FX_WHITE "menu/art/fx_white" -#define ART_FX_YELLOW "menu/art/fx_yel" +#define ART_FX_WHITE "menu/art/fx_white" +#define ART_FX_YELLOW "menu/art/fx_yel" #define PREFERENCES_X_POS 360 @@ -116,8 +116,8 @@ static void Preferences_SetMenuItems( void ) { s_preferences.crosshair.curvalue = (int)trap_Cvar_VariableValue( "cg_drawCrosshair" ) % NUM_CROSSHAIRS; c = (int)trap_Cvar_VariableValue( "cg_crosshairColor" ); - if ( c < 0 || c > 7 ) { - c = 7; //set to white if cvar is invalid + if ( c < 0 || c > 7 ) { // if cvar is invalid, set to white + c = 7; } uiSliderColorIndex = s_preferences.crosshaircolor.curvalue = gamecodetoui[c]; From 564362275fa56790c6b2a1228e858a4d9b6bc51b Mon Sep 17 00:00:00 2001 From: Kevin Remisoski Date: Thu, 7 Mar 2024 06:06:06 -0500 Subject: [PATCH 04/12] cleanup --- code/q3_ui/ui_preferences.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/q3_ui/ui_preferences.c b/code/q3_ui/ui_preferences.c index 997cfe6d..1d928f00 100644 --- a/code/q3_ui/ui_preferences.c +++ b/code/q3_ui/ui_preferences.c @@ -321,13 +321,13 @@ static void Preferences_MenuInit( void ) { y = 144; s_preferences.crosshair.generic.type = MTYPE_TEXT; s_preferences.crosshair.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT|QMF_NODEFAULTINIT|QMF_OWNERDRAW; - s_preferences.crosshair.generic.x = PREFERENCES_X_POS; - s_preferences.crosshair.generic.y = y; + s_preferences.crosshair.generic.x = PREFERENCES_X_POS; + s_preferences.crosshair.generic.y = y; s_preferences.crosshair.generic.name = "Crosshair:"; s_preferences.crosshair.generic.callback = Preferences_Event; s_preferences.crosshair.generic.ownerdraw = Crosshair_Draw; - s_preferences.crosshair.generic.id = ID_CROSSHAIR; - s_preferences.crosshair.generic.top = y - 4; + s_preferences.crosshair.generic.id = ID_CROSSHAIR; + s_preferences.crosshair.generic.top = y - 4; s_preferences.crosshair.generic.bottom = y + 20; s_preferences.crosshair.generic.left = PREFERENCES_X_POS - ( ( strlen(s_preferences.crosshair.generic.name) + 1 ) * SMALLCHAR_WIDTH ); s_preferences.crosshair.generic.right = PREFERENCES_X_POS + 48; From f2a4eef1167691c7cc81ba70ed144739d84a5327 Mon Sep 17 00:00:00 2001 From: Kevin Remisoski Date: Mon, 11 Mar 2024 23:14:32 -0400 Subject: [PATCH 05/12] fixed color count added from my other mod --- code/cgame/cg_draw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/cgame/cg_draw.c b/code/cgame/cg_draw.c index 44177999..7260acf0 100644 --- a/code/cgame/cg_draw.c +++ b/code/cgame/cg_draw.c @@ -2014,7 +2014,7 @@ static void CG_SetCrosshairColor( void ) { }; colorNum = cg_crosshairColor.integer; - if ( colorNum > 8 || colorNum < 0 ) { // if it's larger than 8 or less than 0, set it to white + if ( colorNum > 7 || colorNum < 0 ) { // if it's larger than 7 or less than 0, set it to white colorNum = 7; } colorNum = colorNum % ARRAY_LEN( colors ); From 71d57caf2c87a19593c9869c0e4059e8221b2ddc Mon Sep 17 00:00:00 2001 From: Kr3m Date: Tue, 12 Mar 2024 16:07:06 -0400 Subject: [PATCH 06/12] updated build files --- build/win32-msvc/baseq3e.sln | 15 +- build/win32-msvc/cgame.vcxproj | 205 +++++++++++++++++++++ build/win32-msvc/cgame.vcxproj.filters | 121 +++++++++++++ build/win32-msvc/cgame.vcxproj.user | 13 ++ build/win32-msvc/game.vcxproj | 239 +++++++++++++++++++++++++ build/win32-msvc/game.vcxproj.filters | 212 ++++++++++++++++++++++ build/win32-msvc/game.vcxproj.user | 13 ++ build/win32-msvc/q3_ui.vcxproj | 227 +++++++++++++++++++++++ build/win32-msvc/q3_ui.vcxproj.filters | 170 ++++++++++++++++++ build/win32-msvc/q3_ui.vcxproj.user | 13 ++ 10 files changed, 1223 insertions(+), 5 deletions(-) create mode 100644 build/win32-msvc/cgame.vcxproj create mode 100644 build/win32-msvc/cgame.vcxproj.filters create mode 100644 build/win32-msvc/cgame.vcxproj.user create mode 100644 build/win32-msvc/game.vcxproj create mode 100644 build/win32-msvc/game.vcxproj.filters create mode 100644 build/win32-msvc/game.vcxproj.user create mode 100644 build/win32-msvc/q3_ui.vcxproj create mode 100644 build/win32-msvc/q3_ui.vcxproj.filters create mode 100644 build/win32-msvc/q3_ui.vcxproj.user diff --git a/build/win32-msvc/baseq3e.sln b/build/win32-msvc/baseq3e.sln index 3daacb61..f552308b 100644 --- a/build/win32-msvc/baseq3e.sln +++ b/build/win32-msvc/baseq3e.sln @@ -1,11 +1,13 @@  -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cgame", "cgame.vcproj", "{FF0DC79F-C1D1-4DE3-BBD0-91B6146FD69C}" +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34622.214 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cgame", "cgame.vcxproj", "{FF0DC79F-C1D1-4DE3-BBD0-91B6146FD69C}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "game", "game.vcproj", "{25F3B624-E060-4DAD-93D6-479AB6CD782F}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "game", "game.vcxproj", "{25F3B624-E060-4DAD-93D6-479AB6CD782F}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "q3_ui", "q3_ui.vcproj", "{96D17D51-0760-4732-89C1-26DFD5B581BF}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "q3_ui", "q3_ui.vcxproj", "{96D17D51-0760-4732-89C1-26DFD5B581BF}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -43,4 +45,7 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {1C55EC9F-CEA6-492E-8CBD-D086B4777FAF} + EndGlobalSection EndGlobal diff --git a/build/win32-msvc/cgame.vcxproj b/build/win32-msvc/cgame.vcxproj new file mode 100644 index 00000000..cc85498d --- /dev/null +++ b/build/win32-msvc/cgame.vcxproj @@ -0,0 +1,205 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + 17.0 + {FF0DC79F-C1D1-4DE3-BBD0-91B6146FD69C} + cgame + Win32Proj + 10.0 + + + + DynamicLibrary + v143 + Unicode + true + + + DynamicLibrary + v143 + Unicode + + + DynamicLibrary + v143 + Unicode + true + + + DynamicLibrary + v143 + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>17.0.34511.75 + + + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)_$(ProjectName)\ + true + $(ProjectName)$(ARCHL) + + + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)_$(ProjectName)\ + + + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + $(ProjectName)$(ARCHL) + + + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)_$(ProjectName)\ + + + + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + Level3 + EditAndContinue + + + $(OutDir)cgamex86.dll + true + Windows + + + copy $(ProjectDir)$(ARCH)\$(Configuration)\$(TargetName)$(TargetExt) "$(QUAKE3DIR)\$(MODDIR)" +copy $(ProjectDir)$(ARCH)\$(Configuration)\$(TargetName).pdb "$(QUAKE3DIR)\$(MODDIR)" + + + + + _CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions) + Level3 + + + $(OutDir)cgamex86.dll + Windows + true + true + + + + + X64 + + + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + Level3 + ProgramDatabase + + + $(OutDir)cgamex86_64.dll + true + Windows + MachineX64 + + + copy $(ProjectDir)$(ARCH)\$(Configuration)\$(TargetName)$(TargetExt) "$(QUAKE3DIR)\$(MODDIR)" +copy $(ProjectDir)$(ARCH)\$(Configuration)\$(TargetName).pdb "$(QUAKE3DIR)\$(MODDIR)" + + + + + X64 + + + _CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions) + Level3 + + + $(OutDir)cgamex86_64.dll + Windows + true + true + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/win32-msvc/cgame.vcxproj.filters b/build/win32-msvc/cgame.vcxproj.filters new file mode 100644 index 00000000..a485ed52 --- /dev/null +++ b/build/win32-msvc/cgame.vcxproj.filters @@ -0,0 +1,121 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + c;def + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;inc + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32-msvc/cgame.vcxproj.user b/build/win32-msvc/cgame.vcxproj.user new file mode 100644 index 00000000..c679bda1 --- /dev/null +++ b/build/win32-msvc/cgame.vcxproj.user @@ -0,0 +1,13 @@ + + + + $(QUAKE3DIR)\$(QUAKE3EXE) + +set fs_game $(MODDIR) +set sv_pure 0 +ser r_fullscreen 0 +set r_mode -1 +set r_customWidth 800 +set r_customHeight 600 +set g_gametype 4 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0 +connect kr3m.dev:27961 + WindowsLocalDebugger + + + $(QUAKE3DIR)\$(QUAKE3EXE) + WindowsLocalDebugger + +set fs_game $(MODDIR) +set sv_pure 0 +set g_gametype 4 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0 +exec q3server.cfg +map q3ctf2 + + \ No newline at end of file diff --git a/build/win32-msvc/game.vcxproj b/build/win32-msvc/game.vcxproj new file mode 100644 index 00000000..ce1c97ea --- /dev/null +++ b/build/win32-msvc/game.vcxproj @@ -0,0 +1,239 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + 17.0 + {25F3B624-E060-4DAD-93D6-479AB6CD782F} + game + Win32Proj + 10.0 + + + + DynamicLibrary + v143 + Unicode + true + + + DynamicLibrary + v143 + Unicode + + + DynamicLibrary + v143 + Unicode + true + + + DynamicLibrary + v143 + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>17.0.34511.75 + + + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)_$(ProjectName)\ + true + qagame$(ARCHL) + + + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)_$(ProjectName)\ + + + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)_$(ProjectName)\ + true + qagame$(ARCHL) + + + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)_$(ProjectName)\ + + + + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + Level3 + EditAndContinue + + + $(OutDir)qagamex86.dll + true + Windows + + + copy $(ProjectDir)$(ARCH)\$(Configuration)\$(TargetName)$(TargetExt) "$(QUAKE3DIR)\$(MODDIR)" +copy $(ProjectDir)$(ARCH)\$(Configuration)\$(TargetName).pdb "$(QUAKE3DIR)\$(MODDIR)" + + + + + _CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions) + Level3 + + + $(OutDir)qagamex86.dll + Windows + true + true + + + + + X64 + + + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + Level3 + ProgramDatabase + + + $(OutDir)qagamex86_64.dll + true + Windows + MachineX64 + + + copy $(ProjectDir)$(ARCH)\$(Configuration)\$(TargetName)$(TargetExt) "$(QUAKE3DIR)\$(MODDIR)" +copy $(ProjectDir)$(ARCH)\$(Configuration)\$(TargetName).pdb "$(QUAKE3DIR)\$(MODDIR)" + + + + + X64 + + + _CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions) + Level3 + + + $(OutDir)qagamex86_64.dll + Windows + true + true + MachineX64 + + + + + + + + + + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/win32-msvc/game.vcxproj.filters b/build/win32-msvc/game.vcxproj.filters new file mode 100644 index 00000000..40b87cf7 --- /dev/null +++ b/build/win32-msvc/game.vcxproj.filters @@ -0,0 +1,212 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + c;def + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;inc + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/build/win32-msvc/game.vcxproj.user b/build/win32-msvc/game.vcxproj.user new file mode 100644 index 00000000..4d0bec93 --- /dev/null +++ b/build/win32-msvc/game.vcxproj.user @@ -0,0 +1,13 @@ + + + + $(QUAKE3DIR)\$(QUAKE3EXE) + WindowsLocalDebugger + +set fs_game $(MODDIR) +set sv_pure 0 +ser r_fullscreen 0 +set r_mode -1 +set r_customWidth 800 +set r_customHeight 600 +set g_gametype 4 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0 +connect kr3m.dev:27961 + + + +set fs_game $(MODDIR) +set sv_pure 0 +set g_gametype 4 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0 +exec q3server.cfg +map q3ctf2 + WindowsLocalDebugger + $(QUAKE3DIR)\$(QUAKE3EXE) + + \ No newline at end of file diff --git a/build/win32-msvc/q3_ui.vcxproj b/build/win32-msvc/q3_ui.vcxproj new file mode 100644 index 00000000..da2ac137 --- /dev/null +++ b/build/win32-msvc/q3_ui.vcxproj @@ -0,0 +1,227 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + 17.0 + {96D17D51-0760-4732-89C1-26DFD5B581BF} + q3_ui + Win32Proj + 10.0 + + + + DynamicLibrary + v143 + Unicode + true + + + DynamicLibrary + v143 + Unicode + + + DynamicLibrary + v143 + Unicode + true + + + DynamicLibrary + v143 + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>17.0.34511.75 + + + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)_$(ProjectName)\ + true + ui$(ARCHL) + + + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)_$(ProjectName)\ + true + ui$(ARCHL) + + + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)_$(ProjectName)\ + false + + + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)_$(ProjectName)\ + false + + + + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + Level3 + EditAndContinue + + + $(OutDir)uix86.dll + true + Windows + + + copy $(ProjectDir)$(ARCH)\$(Configuration)\$(TargetName)$(TargetExt) "$(QUAKE3DIR)\$(MODDIR)" +copy $(ProjectDir)$(ARCH)\$(Configuration)\$(TargetName).pdb "$(QUAKE3DIR)\$(MODDIR)" + + + + + X64 + + + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + Level3 + ProgramDatabase + + + $(OutDir)uix86_64.dll + true + Windows + MachineX64 + + + copy $(ProjectDir)$(ARCH)\$(Configuration)\$(TargetName)$(TargetExt) "$(QUAKE3DIR)\$(MODDIR)" +copy $(ProjectDir)$(ARCH)\$(Configuration)\$(TargetName).pdb "$(QUAKE3DIR)\$(MODDIR)" + + + + + _CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions) + Level3 + ProgramDatabase + + + $(OutDir)uix86.dll + true + Windows + true + true + MachineX86 + + + + + X64 + + + _CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions) + Level3 + ProgramDatabase + + + $(OutDir)uix86_64.dll + true + Windows + true + true + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/win32-msvc/q3_ui.vcxproj.filters b/build/win32-msvc/q3_ui.vcxproj.filters new file mode 100644 index 00000000..bb09275d --- /dev/null +++ b/build/win32-msvc/q3_ui.vcxproj.filters @@ -0,0 +1,170 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + c;def + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;inc + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/build/win32-msvc/q3_ui.vcxproj.user b/build/win32-msvc/q3_ui.vcxproj.user new file mode 100644 index 00000000..3fce3a2d --- /dev/null +++ b/build/win32-msvc/q3_ui.vcxproj.user @@ -0,0 +1,13 @@ + + + + $(QUAKE3DIR)\$(QUAKE3EXE) + WindowsLocalDebugger + +set fs_game $(MODDIR) +set sv_pure 0 +ser r_fullscreen 0 +set r_mode -1 +set r_customWidth 800 +set r_customHeight 600 +set g_gametype 4 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0 +connect kr3m.dev:27961 + + + $(QUAKE3DIR)\$(QUAKE3EXE) + WindowsLocalDebugger + +set fs_game $(MODDIR) +set sv_pure 0 +set g_gametype 4 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0 +exec q3server.cfg +map q3ctf2 + + \ No newline at end of file From 7dde07ef48c6879c38d17d5c0f822d7500a1fc38 Mon Sep 17 00:00:00 2001 From: Kr3m Date: Tue, 12 Mar 2024 16:07:33 -0400 Subject: [PATCH 07/12] updated build files --- build/win32-msvc/cgame.vcxproj.user | 13 ------------- build/win32-msvc/game.vcxproj.user | 13 ------------- build/win32-msvc/q3_ui.vcxproj.user | 13 ------------- 3 files changed, 39 deletions(-) delete mode 100644 build/win32-msvc/cgame.vcxproj.user delete mode 100644 build/win32-msvc/game.vcxproj.user delete mode 100644 build/win32-msvc/q3_ui.vcxproj.user diff --git a/build/win32-msvc/cgame.vcxproj.user b/build/win32-msvc/cgame.vcxproj.user deleted file mode 100644 index c679bda1..00000000 --- a/build/win32-msvc/cgame.vcxproj.user +++ /dev/null @@ -1,13 +0,0 @@ - - - - $(QUAKE3DIR)\$(QUAKE3EXE) - +set fs_game $(MODDIR) +set sv_pure 0 +ser r_fullscreen 0 +set r_mode -1 +set r_customWidth 800 +set r_customHeight 600 +set g_gametype 4 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0 +connect kr3m.dev:27961 - WindowsLocalDebugger - - - $(QUAKE3DIR)\$(QUAKE3EXE) - WindowsLocalDebugger - +set fs_game $(MODDIR) +set sv_pure 0 +set g_gametype 4 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0 +exec q3server.cfg +map q3ctf2 - - \ No newline at end of file diff --git a/build/win32-msvc/game.vcxproj.user b/build/win32-msvc/game.vcxproj.user deleted file mode 100644 index 4d0bec93..00000000 --- a/build/win32-msvc/game.vcxproj.user +++ /dev/null @@ -1,13 +0,0 @@ - - - - $(QUAKE3DIR)\$(QUAKE3EXE) - WindowsLocalDebugger - +set fs_game $(MODDIR) +set sv_pure 0 +ser r_fullscreen 0 +set r_mode -1 +set r_customWidth 800 +set r_customHeight 600 +set g_gametype 4 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0 +connect kr3m.dev:27961 - - - +set fs_game $(MODDIR) +set sv_pure 0 +set g_gametype 4 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0 +exec q3server.cfg +map q3ctf2 - WindowsLocalDebugger - $(QUAKE3DIR)\$(QUAKE3EXE) - - \ No newline at end of file diff --git a/build/win32-msvc/q3_ui.vcxproj.user b/build/win32-msvc/q3_ui.vcxproj.user deleted file mode 100644 index 3fce3a2d..00000000 --- a/build/win32-msvc/q3_ui.vcxproj.user +++ /dev/null @@ -1,13 +0,0 @@ - - - - $(QUAKE3DIR)\$(QUAKE3EXE) - WindowsLocalDebugger - +set fs_game $(MODDIR) +set sv_pure 0 +ser r_fullscreen 0 +set r_mode -1 +set r_customWidth 800 +set r_customHeight 600 +set g_gametype 4 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0 +connect kr3m.dev:27961 - - - $(QUAKE3DIR)\$(QUAKE3EXE) - WindowsLocalDebugger - +set fs_game $(MODDIR) +set sv_pure 0 +set g_gametype 4 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0 +exec q3server.cfg +map q3ctf2 - - \ No newline at end of file From fe3f1c7b3854630677a945d4bfc792a3e906fdb6 Mon Sep 17 00:00:00 2001 From: Kevin Remisoski Date: Fri, 15 Mar 2024 16:12:41 -0400 Subject: [PATCH 08/12] removed unnecessary code --- code/q3_ui/ui_preferences.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/code/q3_ui/ui_preferences.c b/code/q3_ui/ui_preferences.c index 1d928f00..27741cee 100644 --- a/code/q3_ui/ui_preferences.c +++ b/code/q3_ui/ui_preferences.c @@ -488,15 +488,6 @@ void Preferences_Cache( void ) { for( n = 0; n < NUM_CROSSHAIRS; n++ ) { s_preferences.crosshairShader[n] = trap_R_RegisterShaderNoMip( va("gfx/2d/crosshair%c", 'a' + n ) ); } - - s_preferences.fxBasePic = trap_R_RegisterShaderNoMip( ART_FX_BASE ); - s_preferences.fxPic[0] = trap_R_RegisterShaderNoMip( ART_FX_RED ); - s_preferences.fxPic[1] = trap_R_RegisterShaderNoMip( ART_FX_GREEN ); - s_preferences.fxPic[2] = trap_R_RegisterShaderNoMip( ART_FX_YELLOW ); - s_preferences.fxPic[3] = trap_R_RegisterShaderNoMip( ART_FX_BLUE ); - s_preferences.fxPic[4] = trap_R_RegisterShaderNoMip( ART_FX_CYAN ); - s_preferences.fxPic[5] = trap_R_RegisterShaderNoMip( ART_FX_TEAL ); - s_preferences.fxPic[6] = trap_R_RegisterShaderNoMip( ART_FX_WHITE ); } From ed9a4b839ab4ed4a0c66feaf8fa44bd0be818ff7 Mon Sep 17 00:00:00 2001 From: Kevin Remisoski Date: Fri, 15 Mar 2024 16:29:45 -0400 Subject: [PATCH 09/12] removed unnecessary code --- code/q3_ui/ui_preferences.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/q3_ui/ui_preferences.c b/code/q3_ui/ui_preferences.c index 27741cee..c83ba9c1 100644 --- a/code/q3_ui/ui_preferences.c +++ b/code/q3_ui/ui_preferences.c @@ -69,7 +69,7 @@ typedef struct { qhandle_t crosshairShader[NUM_CROSSHAIRS]; qhandle_t fxBasePic; - qhandle_t fxPic[8]; + qhandle_t fxPic; } preferences_t; static preferences_t s_preferences; @@ -281,7 +281,7 @@ static void CrosshairColor_Draw( void *self ) { UI_DrawString( item->generic.x - SMALLCHAR_WIDTH, item->generic.y, item->generic.name, style|UI_RIGHT, color ); UI_DrawHandlePic( item->generic.x + BIGCHAR_HEIGHT+4 - 20, item->generic.y + 8, 128, 8, s_preferences.fxBasePic ); - UI_DrawHandlePic( item->generic.x + BIGCHAR_HEIGHT+4 + item->curvalue * 16 + 8 - 20, item->generic.y + 6, 16, 12, s_preferences.fxPic[item->curvalue] ); + UI_DrawHandlePic( item->generic.x + BIGCHAR_HEIGHT+4 + item->curvalue * 16 + 8 - 20, item->generic.y + 6, 16, 12, s_preferences.fxPic ); } From dbd525416fa70e30a97602042a61e1dbb3b9fb25 Mon Sep 17 00:00:00 2001 From: Kevin Remisoski Date: Fri, 15 Mar 2024 16:55:32 -0400 Subject: [PATCH 10/12] removed unnecessary code --- code/q3_ui/ui_preferences.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/code/q3_ui/ui_preferences.c b/code/q3_ui/ui_preferences.c index c83ba9c1..42079873 100644 --- a/code/q3_ui/ui_preferences.c +++ b/code/q3_ui/ui_preferences.c @@ -17,15 +17,6 @@ GAME OPTIONS MENU #define ART_BACK0 "menu/art/back_0" #define ART_BACK1 "menu/art/back_1" -#define ART_FX_BASE "menu/art/fx_base" -#define ART_FX_BLUE "menu/art/fx_blue" -#define ART_FX_CYAN "menu/art/fx_cyan" -#define ART_FX_GREEN "menu/art/fx_grn" -#define ART_FX_RED "menu/art/fx_red" -#define ART_FX_TEAL "menu/art/fx_teal" -#define ART_FX_WHITE "menu/art/fx_white" -#define ART_FX_YELLOW "menu/art/fx_yel" - #define PREFERENCES_X_POS 360 #define ID_CROSSHAIR 127 From 0089c4f9e495e63048d0825463f6aa05e528407b Mon Sep 17 00:00:00 2001 From: Kevin Remisoski Date: Sun, 7 Apr 2024 18:07:22 -0400 Subject: [PATCH 11/12] changed perms on tools to executable --- build/linux-qvm/tools/q3asm | Bin build/linux-qvm/tools/q3cpp | Bin build/linux-qvm/tools/q3lcc | Bin build/linux-qvm/tools/q3rcc | Bin 4 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 build/linux-qvm/tools/q3asm mode change 100644 => 100755 build/linux-qvm/tools/q3cpp mode change 100644 => 100755 build/linux-qvm/tools/q3lcc mode change 100644 => 100755 build/linux-qvm/tools/q3rcc diff --git a/build/linux-qvm/tools/q3asm b/build/linux-qvm/tools/q3asm old mode 100644 new mode 100755 diff --git a/build/linux-qvm/tools/q3cpp b/build/linux-qvm/tools/q3cpp old mode 100644 new mode 100755 diff --git a/build/linux-qvm/tools/q3lcc b/build/linux-qvm/tools/q3lcc old mode 100644 new mode 100755 diff --git a/build/linux-qvm/tools/q3rcc b/build/linux-qvm/tools/q3rcc old mode 100644 new mode 100755 From ec3702d9fa3a9994801b4920c6432adcf34d1dce Mon Sep 17 00:00:00 2001 From: Kr3m Date: Thu, 18 Apr 2024 03:41:37 -0400 Subject: [PATCH 12/12] fixed colors --- code/q3_ui/ui_preferences.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/code/q3_ui/ui_preferences.c b/code/q3_ui/ui_preferences.c index 42079873..1d928f00 100644 --- a/code/q3_ui/ui_preferences.c +++ b/code/q3_ui/ui_preferences.c @@ -17,6 +17,15 @@ GAME OPTIONS MENU #define ART_BACK0 "menu/art/back_0" #define ART_BACK1 "menu/art/back_1" +#define ART_FX_BASE "menu/art/fx_base" +#define ART_FX_BLUE "menu/art/fx_blue" +#define ART_FX_CYAN "menu/art/fx_cyan" +#define ART_FX_GREEN "menu/art/fx_grn" +#define ART_FX_RED "menu/art/fx_red" +#define ART_FX_TEAL "menu/art/fx_teal" +#define ART_FX_WHITE "menu/art/fx_white" +#define ART_FX_YELLOW "menu/art/fx_yel" + #define PREFERENCES_X_POS 360 #define ID_CROSSHAIR 127 @@ -60,7 +69,7 @@ typedef struct { qhandle_t crosshairShader[NUM_CROSSHAIRS]; qhandle_t fxBasePic; - qhandle_t fxPic; + qhandle_t fxPic[8]; } preferences_t; static preferences_t s_preferences; @@ -272,7 +281,7 @@ static void CrosshairColor_Draw( void *self ) { UI_DrawString( item->generic.x - SMALLCHAR_WIDTH, item->generic.y, item->generic.name, style|UI_RIGHT, color ); UI_DrawHandlePic( item->generic.x + BIGCHAR_HEIGHT+4 - 20, item->generic.y + 8, 128, 8, s_preferences.fxBasePic ); - UI_DrawHandlePic( item->generic.x + BIGCHAR_HEIGHT+4 + item->curvalue * 16 + 8 - 20, item->generic.y + 6, 16, 12, s_preferences.fxPic ); + UI_DrawHandlePic( item->generic.x + BIGCHAR_HEIGHT+4 + item->curvalue * 16 + 8 - 20, item->generic.y + 6, 16, 12, s_preferences.fxPic[item->curvalue] ); } @@ -479,6 +488,15 @@ void Preferences_Cache( void ) { for( n = 0; n < NUM_CROSSHAIRS; n++ ) { s_preferences.crosshairShader[n] = trap_R_RegisterShaderNoMip( va("gfx/2d/crosshair%c", 'a' + n ) ); } + + s_preferences.fxBasePic = trap_R_RegisterShaderNoMip( ART_FX_BASE ); + s_preferences.fxPic[0] = trap_R_RegisterShaderNoMip( ART_FX_RED ); + s_preferences.fxPic[1] = trap_R_RegisterShaderNoMip( ART_FX_GREEN ); + s_preferences.fxPic[2] = trap_R_RegisterShaderNoMip( ART_FX_YELLOW ); + s_preferences.fxPic[3] = trap_R_RegisterShaderNoMip( ART_FX_BLUE ); + s_preferences.fxPic[4] = trap_R_RegisterShaderNoMip( ART_FX_CYAN ); + s_preferences.fxPic[5] = trap_R_RegisterShaderNoMip( ART_FX_TEAL ); + s_preferences.fxPic[6] = trap_R_RegisterShaderNoMip( ART_FX_WHITE ); }