From d83842df551a73926fafbf1ad4b8bdd01c51680c Mon Sep 17 00:00:00 2001 From: Indev Date: Thu, 12 Oct 2023 21:35:18 +0300 Subject: [PATCH 1/2] Allow selecting hud color via colorizedhudcolor cvar. 'None' means use current player's skincolor --- src/d_netcmd.c | 4 ++ src/k_kart.c | 144 +++++++++++++++++++++---------------------------- src/k_kart.h | 2 + 3 files changed, 66 insertions(+), 84 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 9c2aa282a..e9d9f5f8c 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -917,6 +917,10 @@ void D_RegisterClientCommands(void) CV_RegisterVar(&cv_timetic); CV_RegisterVar(&cv_itemfinder); + // Has to be added here instead of K_RegisterKartStuff because it needs + // Color_cons_t + CV_RegisterVar(&cv_colorizedhudcolor); + // time attack ghost options are also saved to config CV_RegisterVar(&cv_ghost_besttime); CV_RegisterVar(&cv_ghost_bestlap); diff --git a/src/k_kart.c b/src/k_kart.c index 5a87c5826..bbc14b82e 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -63,6 +63,7 @@ consvar_t cv_saltysquish = {"hardcodehopsquish", "On", CV_SAVE, CV_OnOff, NULL, //Colourized HUD consvar_t cv_colorizedhud = {"colorizedhud", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_colorizedhudcolor = {"colorizedhudcolor", "None", CV_SAVE, Color_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; // SOME IMPORTANT VARIABLES DEFINED IN DOOMDEF.H: @@ -578,6 +579,13 @@ UINT8 K_GetKartColorByName(const char *name) return 0; } +UINT8 K_GetHudColor() +{ + if (stplyr && players - stplyr != consoleplayer) return stplyr->skincolor; + if (cv_colorizedhudcolor.value) return cv_colorizedhudcolor.value; + return cv_playercolor.value; +} + //} //{ SRB2kart Net Variables @@ -7500,14 +7508,14 @@ static void K_drawKartItem(void) UINT8 localcolor = SKINCOLOR_NONE; SINT8 colormode = TC_RAINBOW; UINT8 *colmap = NULL; - UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, stplyr->skincolor, GTC_CACHE); + UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, K_GetHudColor(), GTC_CACHE); boolean flipamount = false; // Used for 3P/4P splitscreen to flip item amount stuff if (stplyr->kartstuff[k_itemroulette]) { - if (stplyr->skincolor) - localcolor = stplyr->skincolor; + if (K_GetHudColor()) + localcolor = K_GetHudColor(); switch((stplyr->kartstuff[k_itemroulette] % (14*3)) / 3) { @@ -7827,23 +7835,16 @@ void K_drawKartTimestamp(tic_t drawtime, INT32 TX, INT32 TY, INT16 emblemmap, UI } - if (!stplyr) + if (!cv_colorizedhud.value || !found_extra2_kart) V_DrawScaledPatch(TX, TY, splitflags, ((mode == 2) ? kp_lapstickerwide : kp_timestickerwide)); - else if (stplyr) + else { - UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, stplyr->skincolor, GTC_CACHE); - - //Colourized hud - if (cv_colorizedhud.value && found_extra2_kart) - { - V_DrawMappedPatch(TX, TY, splitflags, ((mode == 2) ? kp_lapstickerwideclr : kp_timestickerwideclr), colormap); - } - else - { - V_DrawScaledPatch(TX, TY, splitflags, ((mode == 2) ? kp_lapstickerwide : kp_timestickerwide)); - } - } - + //Colourized hud + UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, K_GetHudColor(), GTC_CACHE); + + V_DrawMappedPatch(TX, TY, splitflags, ((mode == 2) ? kp_lapstickerwideclr : kp_timestickerwideclr), colormap); + } + TX += 33; worktime = drawtime/(60*TICRATE); @@ -8412,24 +8413,17 @@ static void K_drawKartLaps(void) } else { - - if (!stplyr) + + if (!cv_colorizedhud.value || !found_extra2_kart) V_DrawScaledPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_lapsticker); - else if (stplyr) + else { - UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, stplyr->skincolor, GTC_CACHE); - - //Colourized hud - if (cv_colorizedhud.value && found_extra2_kart) - { - V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_lapstickerclr, colormap); - } - else - { - V_DrawScaledPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_lapsticker); - } - } - + //Colourized hud + UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, K_GetHudColor(), GTC_CACHE); + + V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_lapstickerclr, colormap); + } + if (stplyr->exiting) V_DrawKartString(LAPS_X+33, LAPS_Y+3, V_HUDTRANS|splitflags, "FIN"); else @@ -8491,36 +8485,27 @@ static void K_drawKartSpeedometer(void) V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%4d %%", convSpeed)); } } - else if (cv_newspeedometer.value && found_extra_kart) { // why bother if we dont? - if (!stplyr) - V_DrawScaledPatch(SPDM_X + 1, SPDM_Y + 4, (V_HUDTRANS|splitflags), (skp_smallsticker)); - else if (stplyr) + else if (cv_newspeedometer.value && found_extra_kart) { // why bother if we dont? + if (!cv_colorizedhud.value || !found_extra2_kart) + V_DrawScaledPatch(SPDM_X + 1, SPDM_Y + 4, (V_HUDTRANS|splitflags), (skp_smallsticker)); + else { - UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, stplyr->skincolor, GTC_CACHE); - - //Colourized hud - if (cv_colorizedhud.value && found_extra2_kart) - { - V_DrawMappedPatch(SPDM_X + 1, SPDM_Y + 4, (V_HUDTRANS|splitflags), (skp_smallstickerclr), colormap); - } - else - { - V_DrawScaledPatch(SPDM_X + 1, SPDM_Y + 4, (V_HUDTRANS|splitflags), (skp_smallsticker)); - } + //Colourized hud + UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, K_GetHudColor(), GTC_CACHE); + + V_DrawMappedPatch(SPDM_X + 1, SPDM_Y + 4, (V_HUDTRANS|splitflags), (skp_smallstickerclr), colormap); } - + V_DrawRankNum(SPDM_X + 26, SPDM_Y + 4, V_HUDTRANS|splitflags, convSpeed, 3, NULL); - - - + V_DrawScaledPatch(SPDM_X + 31, SPDM_Y + 4, V_HUDTRANS|splitflags, skp_speedpatches[cv_kartspeedometer.value]); - + } } static void K_drawKartBumpersOrKarma(void) { - UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, stplyr->skincolor, GTC_CACHE); + UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, K_GetHudColor(), GTC_CACHE); INT32 splitflags = K_calcSplitFlags(V_SNAPTOBOTTOM|V_SNAPTOLEFT); INT32 fx = 0, fy = 0, fflags = 0; boolean flipstring = false; // same as laps, used for splitscreen @@ -8560,7 +8545,7 @@ static void K_drawKartBumpersOrKarma(void) V_DrawRightAlignedString(BASEVIDWIDTH-3, fy+1, V_HUDTRANS|fflags, va("%d/%d", stplyr->kartstuff[k_bumper], cv_kartbumpers.value)); } else // draw bumpers normally. - { + { V_DrawMappedPatch(fx, fy-1, V_HUDTRANS|fflags, kp_rankbumper, colormap); V_DrawString(fx+13, fy+1, V_HUDTRANS|fflags, va("%d/%d", stplyr->kartstuff[k_bumper], cv_kartbumpers.value)); } @@ -8570,11 +8555,11 @@ static void K_drawKartBumpersOrKarma(void) { if (stplyr->kartstuff[k_bumper] <= 0) { - //Colourized hud + //Colourized hud if (cv_colorizedhud.value && found_extra2_kart) { V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_karmastickerclr, colormap); - } + } else { V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_karmasticker, colormap); @@ -8584,8 +8569,7 @@ static void K_drawKartBumpersOrKarma(void) else { if (stplyr->kartstuff[k_bumper] > 9 && cv_kartbumpers.value > 9) - - //Colourized hud + //Colourized hud if (cv_colorizedhud.value && found_extra2_kart) { V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_bumperstickerwideclr, colormap); @@ -8594,9 +8578,8 @@ static void K_drawKartBumpersOrKarma(void) { V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_bumperstickerwide, colormap); } - else - //Colourized hud + //Colourized hud if (cv_colorizedhud.value && found_extra2_kart) { V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_bumperstickerclr, colormap); @@ -8605,7 +8588,7 @@ static void K_drawKartBumpersOrKarma(void) { V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_bumpersticker, colormap); } - + V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|splitflags, va("%d/%d", stplyr->kartstuff[k_bumper], cv_kartbumpers.value)); } } @@ -9144,24 +9127,17 @@ static void K_drawBattleFullscreen(void) if (splitscreen > 1) V_DrawString(x-txoff, ty, 0, va("%d", stplyr->kartstuff[k_comebacktimer]/TICRATE)); else - { - if (!stplyr) + { + if (!cv_colorizedhud.value || !found_extra2_kart) V_DrawFixedPatch(x<skincolor, GTC_CACHE); - - //Colourized hud - if (cv_colorizedhud.value && found_extra2_kart) - { - V_DrawFixedPatch(x<kartstuff[k_comebacktimer]/TICRATE)); } } @@ -9347,8 +9323,8 @@ static void K_drawInput(void) static INT32 pn = 0; INT32 target = 0, splitflags = (V_SNAPTOBOTTOM|V_SNAPTORIGHT); INT32 x = BASEVIDWIDTH - 32 + cv_posi_xoffset.value, y = BASEVIDHEIGHT-24 + cv_posi_yoffset.value, offs, col; - const INT32 accent1 = splitflags|colortranslations[stplyr->skincolor][5]; - const INT32 accent2 = splitflags|colortranslations[stplyr->skincolor][9]; + const INT32 accent1 = splitflags|colortranslations[K_GetHudColor()][5]; + const INT32 accent2 = splitflags|colortranslations[K_GetHudColor()][9]; ticcmd_t *cmd = &stplyr->cmd; if (timeinmap <= 105) @@ -9424,12 +9400,12 @@ static void K_drawInput(void) if (target > 4) target = 4; - if (!stplyr->skincolor) + if (!K_GetHudColor()) V_DrawFixedPatch(x<skincolor, GTC_CACHE); + colormap = R_GetTranslationColormap(0, K_GetHudColor(), GTC_CACHE); V_DrawFixedPatch(x<kartstuff[k_lapanimation]; - UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, stplyr->skincolor, GTC_CACHE); + UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, K_GetHudColor(), GTC_CACHE); V_DrawFixedPatch((BASEVIDWIDTH/2 + (32*max(0, stplyr->kartstuff[k_lapanimation]-76)))*FRACUNIT, (48 - (32*max(0, progress-76)))*FRACUNIT, diff --git a/src/k_kart.h b/src/k_kart.h index d29338fe3..b6c7e3091 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -17,10 +17,12 @@ extern const UINT8 KartColor_Opposite[MAXSKINCOLORS*2]; void K_RainbowColormap(UINT8 *dest_colormap, UINT8 skincolor); void K_GenerateKartColormap(UINT8 *dest_colormap, INT32 skinnum, UINT8 color, boolean local); UINT8 K_GetKartColorByName(const char *name); +UINT8 K_GetHudColor(); void K_RegisterKartStuff(void); extern consvar_t cv_colorizedhud; +extern consvar_t cv_colorizedhudcolor; boolean K_IsPlayerLosing(player_t *player); boolean K_IsPlayerWanted(player_t *player); -- 2.54.0 From 8cd848e44dd4c88d129e014a8f370e0e0abbbe52 Mon Sep 17 00:00:00 2001 From: Indev Date: Thu, 12 Oct 2023 23:40:11 +0300 Subject: [PATCH 2/2] Default value for colorizedhudcolor is now called 'Skin Color' --- src/d_netcmd.c | 4 ---- src/k_kart.c | 16 +++++++++++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index e9d9f5f8c..9c2aa282a 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -917,10 +917,6 @@ void D_RegisterClientCommands(void) CV_RegisterVar(&cv_timetic); CV_RegisterVar(&cv_itemfinder); - // Has to be added here instead of K_RegisterKartStuff because it needs - // Color_cons_t - CV_RegisterVar(&cv_colorizedhudcolor); - // time attack ghost options are also saved to config CV_RegisterVar(&cv_ghost_besttime); CV_RegisterVar(&cv_ghost_bestlap); diff --git a/src/k_kart.c b/src/k_kart.c index bbc14b82e..073f21615 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -63,7 +63,9 @@ consvar_t cv_saltysquish = {"hardcodehopsquish", "On", CV_SAVE, CV_OnOff, NULL, //Colourized HUD consvar_t cv_colorizedhud = {"colorizedhud", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; -consvar_t cv_colorizedhudcolor = {"colorizedhudcolor", "None", CV_SAVE, Color_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; + +static CV_PossibleValue_t HudColor_cons_t[MAXSKINCOLORS+1]; +consvar_t cv_colorizedhudcolor = {"colorizedhudcolor", "Skin Color", CV_SAVE, HudColor_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; // SOME IMPORTANT VARIABLES DEFINED IN DOOMDEF.H: @@ -592,6 +594,17 @@ UINT8 K_GetHudColor() void K_RegisterKartStuff(void) { + HudColor_cons_t[0].value = 0; + HudColor_cons_t[0].strvalue = "Skin Color"; + + for (INT32 i = 1; i < MAXSKINCOLORS; i++) + { + HudColor_cons_t[i].value = i; + HudColor_cons_t[i].strvalue = KartColor_Names[i]; // SRB2kart + } + HudColor_cons_t[MAXSKINCOLORS].value = 0; + HudColor_cons_t[MAXSKINCOLORS].strvalue = NULL; + CV_RegisterVar(&cv_sneaker); CV_RegisterVar(&cv_rocketsneaker); CV_RegisterVar(&cv_invincibility); @@ -670,6 +683,7 @@ void K_RegisterKartStuff(void) //Colourized HUD CV_RegisterVar(&cv_colorizedhud); + CV_RegisterVar(&cv_colorizedhudcolor); CV_RegisterVar(&cv_slamsound); -- 2.54.0