diff --git a/src/d_netcmd.h b/src/d_netcmd.h index ec58c7bfd..9e1744e00 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -172,9 +172,7 @@ extern consvar_t cv_nametagdist; extern consvar_t cv_showownnametag; extern consvar_t cv_smallnametags; extern consvar_t cv_nametagrestat; -extern consvar_t cv_nametaghop; extern consvar_t cv_nametagscore; -extern consvar_t cv_shownametagfinish; extern consvar_t cv_shownametagspectator; #define SKINSELECTSPIN_PAIN 25 diff --git a/src/k_kart.c b/src/k_kart.c index e0ee1da71..ae3cdeaea 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -212,9 +212,7 @@ consvar_t cv_nametagmaxlenght = {"kartnametagmaxlenght", "12", CV_SAVE, CV_Unsig //consvar_t cv_nametagscaling = {"nametagscaling", "160", CV_SAVE, nametagscaling_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_showownnametag = {"kartnametagshowown", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_smallnametags = {"kartnametagsmall", "Off", CV_SAVE, nametagsize_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; -consvar_t cv_nametaghop = {"kartnametaghop", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_nametagscore = {"kartnametagscore", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; -consvar_t cv_shownametagfinish = {"kartshownametagfinished", "No", CV_SAVE, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_shownametagspectator = {"kartshownametagspectator", "No", CV_SAVE, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL}; @@ -901,9 +899,7 @@ void K_RegisterClientKartStuff(void) CV_RegisterVar(&cv_showownnametag); CV_RegisterVar(&cv_smallnametags); CV_RegisterVar(&cv_nametagrestat); - CV_RegisterVar(&cv_nametaghop); CV_RegisterVar(&cv_nametagscore); - CV_RegisterVar(&cv_shownametagfinish); CV_RegisterVar(&cv_shownametagspectator); CV_RegisterVar(&cv_driftgauge); @@ -9255,7 +9251,6 @@ static void K_drawKartSpeedometer(void) // man. const boolean useoldspeedo = ((cv_newspeedometer.value == 1) || (cv_newspeedometer.value == 2 && !xtra_speedo) || (cv_newspeedometer.value == 3 && !achi_speedo) || (cv_newspeedometer.value == 4 && !kartz_speedo) || (cv_newspeedometer.value == 5 && !xtra_speedo3)); - const char *metric = ""; switch (cv_kartspeedometer.value) { @@ -9278,6 +9273,8 @@ static void K_drawKartSpeedometer(void) if (useoldspeedo) { + const char *metric = ""; + switch (cv_kartspeedometer.value) { case 1: @@ -9355,7 +9352,7 @@ static void K_drawKartSpeedometer(void) 35, 37, 40, 42, 45, 47, 50, 52, 55}; - fuspeed = FixedDiv(stplyr->speed, mapobjectscale)/FRACUNIT; + fuspeed = FixedDiv(stplyr->speed, mapobjectscale)/FRACUNIT; for (INT32 i = 0; i < 22; ++i) { @@ -9590,27 +9587,31 @@ static void K_drawNameTags(void) UINT8 i,j; INT32 trans = 0; vector2_t pos = {0}; - fixed_t tagwidth; - fixed_t tagwidthsmall; fixed_t namex,namey; int tagsdisplayed = 0; + fixed_t distance = 0; + fixed_t maxdistance = 0; + boolean flipped = false; + fixed_t z; + char *tag; patch_t *icon; - const INT32 hudtransflag = V_LocalTransFlag(); - if (P_MobjWasRemoved(stplyr->mo) || (stplyr->spectator && !cv_shownametagspectator.value) || (stplyr->exiting && !cv_shownametagfinish.value)) + INT32 dup = 0; + UINT8 *cm = NULL; + UINT8 tagcolor = 0; + INT32 vflags = 0; + boolean usenametagrestat = false; + fixed_t tagwidthsmall; + fixed_t tagwidth; + + if (P_MobjWasRemoved(stplyr->mo) || (stplyr->spectator && !cv_shownametagspectator.value) || stplyr->exiting) return; - // True if currently viewed player is flipped and has flipcam on - const boolean flipcam = ((stplyr->pflags & PF_FLIPCAM) && (stplyr->mo->eflags & MFE_VERTICALFLIP)); + maxdistance = ((10*cv_nametagdist.value) * mapobjectscale); for (i = 0; i < MAXPLAYERS; i++) { - fixed_t distance = 0; - const fixed_t maxdistance = ((10*cv_nametagdist.value)* mapobjectscale); - boolean flipped = 0; - fixed_t z; - if (i > PLAYERSMASK) continue; if (P_MobjWasRemoved(players[i].mo) || players[i].spectator || !playeringame[i]) @@ -9628,6 +9629,19 @@ static void K_drawNameTags(void) if (!P_CheckSightFast(stplyr->mo, players[i].mo)) continue; + z = players[i].mo->height; + + //Saltyhop hehe + z += lerp(players[i].mo->old_spriteyoffset, players[i].mo->spriteyoffset); + + if (!K_GetScreenCoords(&pos, stplyr, players[i].mo, z, false)) + continue; + + tagsdisplayed += 1; + + if (tagsdisplayed > cv_nametagmaxplayers.value) + break; + switch (cv_nametagtrans.value) { case 0: @@ -9657,49 +9671,34 @@ static void K_drawNameTags(void) trans = V_40TRANS; break; case 4: - trans = hudtransflag; + trans = V_LocalTransFlag(); break; default: break; } - const INT32 dup = vid.dupx; - - // If flipcam is on, other player is flipped relative to us when we have different - // verticalflip flag value. Otherwise, they are simply flipped when verticalflip flag says - // so - if (flipcam) - flipped = (players[i].mo->eflags & MFE_VERTICALFLIP) != (stplyr->mo->eflags & MFE_VERTICALFLIP); - else - flipped = players[i].mo->eflags & MFE_VERTICALFLIP; - - z = players[i].mo->height; - - //Saltyhop hehe - if (cv_saltyhop.value && cv_nametaghop.value) - z += lerp(players[i].mo->old_spriteyoffset, players[i].mo->spriteyoffset); - - if (!K_GetScreenCoords(&pos, stplyr, players[i].mo, z, false)) - continue; - - tagsdisplayed += 1; - - if (tagsdisplayed > cv_nametagmaxplayers.value) - break; - namex = pos.x>>FRACBITS; namey = pos.y>>FRACBITS; tag = va("%s%s ", HU_SkinColorToConsoleColor(players[i].mo->color),player_names[i]); icon = R_GetSkinFaceMini(players[i].mo->player); - const UINT8 *cm = R_GetTranslationColormap(players[i].skin, players[i].mo->color, GTC_CACHE); - const INT32 tagcolor = colortranslations[players[i].mo->color][7]; - const INT32 vflags = trans | V_NOSCALESTART; - tagwidth = cv_smallnametags.value ? dup*V_SmallStringWidth(player_names[i], V_ALLOWLOWERCASE) : dup*V_ThinStringWidth(player_names[i], V_ALLOWLOWERCASE); + dup = vid.dupx; + cm = R_GetTranslationColormap(players[i].skin, players[i].mo->color, GTC_CACHE); + tagcolor = colortranslations[players[i].mo->color][7]; + vflags = trans | V_NOSCALESTART; + usenametagrestat = ((cv_nametagrestat.value == 1 && (players[i].kartspeed != skins[players[i].skin].kartspeed || players[i].kartweight != skins[players[i].skin].kartweight)) || cv_nametagrestat.value == 2); tagwidthsmall = cv_smallnametags.value ? V_SmallStringWidth(player_names[i], V_ALLOWLOWERCASE) : V_ThinStringWidth(player_names[i], V_ALLOWLOWERCASE); + tagwidth = dup*tagwidthsmall; - if (cv_smallnametags.value == 2 || cv_smallnametags.value == 1 || !nametaggfx) + // If flipcam is on, other player is flipped relative to us when we have different + // verticalflip flag value. Otherwise, they are simply flipped when verticalflip flag says so + if ((stplyr->pflags & PF_FLIPCAM) && (stplyr->mo->eflags & MFE_VERTICALFLIP)) + flipped = (players[i].mo->eflags & MFE_VERTICALFLIP) != (stplyr->mo->eflags & MFE_VERTICALFLIP); + else + flipped = players[i].mo->eflags & MFE_VERTICALFLIP; + + if (cv_smallnametags.value || !nametaggfx) { if (flipped) namey += dup*5; @@ -9714,6 +9713,7 @@ static void K_drawNameTags(void) // Have to draw the nametag using patches here since drawfill can't draw at this scale... if (!flipped) V_DrawFixedPatch(namex<height/2)<width/2); // add offset to other stuff + V_DrawFixedPatch(namex<height/2)<width/2); // add offset to other stuff } //Name V_DrawSmallString(namex, namey, V_ALLOWLOWERCASE | vflags, tag); - if ((cv_nametagrestat.value == 1 && (players[i].kartspeed != skins[players[i].skin].kartspeed || players[i].kartweight != skins[players[i].skin].kartweight)) || cv_nametagrestat.value == 2) + if (usenametagrestat) { V_DrawSmallString(namex, namey - dup*5, vflags, va("\x84S%d ", players[i].kartspeed)); V_DrawSmallString(namex + dup*10, namey - dup*5, vflags, va("\x87W%d ", players[i].kartweight)); @@ -9738,10 +9738,8 @@ static void K_drawNameTags(void) if (cv_nametagscore.value) { - if ((cv_nametagrestat.value == 1 && (players[i].kartspeed != skins[players[i].skin].kartspeed || players[i].kartweight != skins[players[i].skin].kartweight)) || cv_nametagrestat.value == 2) - V_DrawSmallString(namex, namey - dup*10, V_ALLOWLOWERCASE | vflags, va("\x8A%d ", players[i].score)); - else - V_DrawSmallString(namex, namey - dup*5, V_ALLOWLOWERCASE | vflags, va("\x8A%d ", players[i].score)); + INT32 yofs = usenametagrestat ? 10 : 5; + V_DrawSmallString(namex, namey - dup*yofs, V_ALLOWLOWERCASE | vflags, va("\x8A%d ", players[i].score)); } } else @@ -9766,16 +9764,17 @@ static void K_drawNameTags(void) } else { - for (j = 0; j < 4; j++) + for (j = 0; j < 4; j++) { namey -= dup*4; V_DrawFill(namex, namey, dup*3, dup*4, 31 | vflags); V_DrawFill(namex+dup, namey, dup, dup*4, tagcolor | vflags); namex += dup; } - V_DrawFill(namex, namey, dup, dup, 31 | vflags); - V_DrawFill(namex+dup, namey, tagwidth - dup*2, dup*3, 31 | vflags); - V_DrawFill(namex+dup, namey+dup, tagwidth - dup*3, dup, tagcolor | vflags); + + V_DrawFill(namex, namey, dup, dup, 31 | vflags); + V_DrawFill(namex+dup, namey, tagwidth - dup*2, dup*3, 31 | vflags); + V_DrawFill(namex+dup, namey+dup, tagwidth - dup*3, dup, tagcolor | vflags); } if (cv_nametagfacerank.value) @@ -9786,7 +9785,7 @@ static void K_drawNameTags(void) V_DrawThinString(namex, namey - dup*10, V_ALLOWLOWERCASE | vflags, tag); - if ((cv_nametagrestat.value == 1 && (players[i].kartspeed != skins[players[i].skin].kartspeed || players[i].kartweight != skins[players[i].skin].kartweight)) || cv_nametagrestat.value == 2) + if (usenametagrestat) { V_DrawScaledPatch(namex, namey - dup*20, vflags, nametagspeed); V_DrawScaledPatch(namex + dup*18, namey - dup*20, vflags, nametagweight); @@ -9796,10 +9795,8 @@ static void K_drawNameTags(void) if (cv_nametagscore.value) { - if ((cv_nametagrestat.value == 1 && (players[i].kartspeed != skins[players[i].skin].kartspeed || players[i].kartweight != skins[players[i].skin].kartweight)) || cv_nametagrestat.value == 2) - V_DrawSmallString(namex, namey - dup*25, V_ALLOWLOWERCASE | vflags, va("\x8A%d ", players[i].score)); - else - V_DrawSmallString(namex, namey - dup*15, V_ALLOWLOWERCASE | vflags, va("\x8A%d ", players[i].score)); + INT32 yofs = usenametagrestat ? 25 : 15; + V_DrawSmallString(namex, namey - dup*yofs, V_ALLOWLOWERCASE | vflags, va("\x8A%d ", players[i].score)); } } } @@ -9810,23 +9807,23 @@ static void K_drawDriftGauge(void) { vector2_t pos = {0}; fixed_t basex, basey; - const INT32 hudtransflag = V_LocalTransFlag(); const int dup = vid.dupx; int i; + UINT8 *cmap; - UINT8 driftcolors[3][4] = { + static UINT8 driftcolors[3][4] = { {0, 0, 10, 16}, // no drift {215, 215, 204, 253}, // blue {125, 125, 151, 159} // red }; - UINT8 driftskins[3] = { + static UINT8 driftskins[3] = { SKINCOLOR_NONE, SKINCOLOR_TEAL, SKINCOLOR_SALMON, }; - UINT8 driftrainbow[18] = { + static UINT8 driftrainbow[18] = { 0, 31, 47, 63, 79, 95, 111, 119, 127, 143, 159, 175, 183, 191, 199, 207, 223, 247 }; @@ -9847,17 +9844,17 @@ skipcrap: if (!K_GetScreenCoords(&pos, stplyr, stplyr->mo, FixedMul(cv_driftgaugeofs.value, cv_driftgaugeofs.value > 0 ? stplyr->mo->scale : mapobjectscale), false)) return; - const INT32 driftval = K_GetKartDriftSparkValue(stplyr); - const INT32 driftcharge = min(driftval*4, stplyr->kartstuff[k_driftcharge]); - - basex = pos.x>>FRACBITS; - basey = pos.y>>FRACBITS; - fixed_t barx; fixed_t bary; INT32 BAR_WIDTH; - const INT32 drifttrans = ((cv_driftgaugetrans.value) ? hudtransflag : 0); + const INT32 driftval = K_GetKartDriftSparkValue(stplyr); + const INT32 driftcharge = min(driftval*4, stplyr->kartstuff[k_driftcharge]); + const INT32 driftlevel = min(driftcharge / driftval, 2); + const INT32 drifttrans = ((cv_driftgaugetrans.value) ? V_LocalTransFlag() : 0); + + basex = pos.x>>FRACBITS; + basey = pos.y>>FRACBITS; switch (cv_driftgaugestyle.value) { @@ -9884,11 +9881,6 @@ skipcrap: bary = basey - dup*2; - UINT8 *cmap; - const INT32 limit = driftval * (driftcharge >= driftval*2 ? 2 : 1); - const INT32 width = ((driftcharge - (driftcharge >= driftval ? limit : 0)) * BAR_WIDTH) / limit; - const INT32 level = min(driftcharge / driftval, 2); - if (usescaledpatch) // i hate hud code i hate hud code i hate hud code i hate hud code i hate hud code..... { if (K_UseColorHud() && xtra_speedo_clr3) // Colourized hud @@ -9914,18 +9906,23 @@ skipcrap: if (driftcharge >= driftval*4) // rainbow sparks { cmap = R_GetTranslationColormap(TC_RAINBOW, 1 + leveltime % (MAXSKINCOLORS-1),GTC_CACHE); - for (i = 0; i < 4; i++) + + for (i = 0; i < 4; i++) V_DrawFill(barx, bary+dup*1+dup*i, BAR_WIDTH, dup, (driftrainbow[min((leveltime % 18) + 1, 18 - 1)] + i*2) | V_NOSCALESTART|drifttrans); } else // none/blue/red { - cmap = R_GetTranslationColormap(TC_RAINBOW, driftskins[level],GTC_CACHE); + const INT32 limit = (driftval * (driftcharge >= driftval*2 ? 2 : 1)); + const INT32 width = ((driftcharge - (driftcharge >= driftval ? limit : 0)) * BAR_WIDTH) / limit; + + cmap = R_GetTranslationColormap(TC_RAINBOW, driftskins[driftlevel],GTC_CACHE); + for (i = 0; i < 4; i++) { if (driftcharge >= driftval) - V_DrawFill(barx, bary+dup*1+dup*i, BAR_WIDTH, dup, driftcolors[level-1][i] | V_NOSCALESTART|drifttrans); + V_DrawFill(barx, bary+dup*1+dup*i, BAR_WIDTH, dup, driftcolors[driftlevel-1][i] | V_NOSCALESTART|drifttrans); - V_DrawFill(barx, bary+dup*1+dup*i, width, dup, driftcolors[level][i] | V_NOSCALESTART|drifttrans); + V_DrawFill(barx, bary+dup*1+dup*i, width, dup, driftcolors[driftlevel][i] | V_NOSCALESTART|drifttrans); } } @@ -9939,12 +9936,10 @@ skipcrap: break; case 4: { - UINT8 *cmap; - const INT32 level = min(driftcharge / driftval, 2); + cmap = R_GetTranslationColormap(TC_RAINBOW, driftskins[driftlevel],GTC_CACHE); + if (driftcharge >= driftval*4) cmap = R_GetTranslationColormap(TC_RAINBOW, 1 + leveltime % (MAXSKINCOLORS-1),GTC_CACHE); - else - cmap = R_GetTranslationColormap(TC_RAINBOW, driftskins[level],GTC_CACHE); V_DrawPaddedTallColorNum(basex + (dup*16), basey, V_NOSCALESTART|V_OFFSET|drifttrans, driftcharge*100 / driftval, 3, cmap); } @@ -9964,17 +9959,17 @@ static fixed_t K_FindCheckX(fixed_t px, fixed_t py, angle_t ang, fixed_t mx, fix dist = abs(R_PointToDist2(px, py, mx, my)); if (dist > range) - return -320; + return -BASEVIDWIDTH; diff = R_PointToAngle2(px, py, mx, my) - ang; if (diff < ANGLE_90 || diff > ANGLE_270) - return -320; + return -BASEVIDWIDTH; else x = (FixedMul(FINETANGENT(((diff+ANGLE_90)>>ANGLETOFINESHIFT) & 4095), 160<>FRACBITS; if (encoremode) - x = 320-x; + x = BASEVIDWIDTH-x; if (splitscreen > 1) x /= 2; diff --git a/src/m_menu.c b/src/m_menu.c index 0a4c46852..aba369bfe 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -2576,10 +2576,8 @@ static menuitem_t OP_NametagMenu[] = {IT_STRING | IT_CVAR, NULL, "Nametag Transparency", &cv_nametagtrans, 70}, {IT_STRING | IT_CVAR, NULL, "Nametag Score", &cv_nametagscore, 80}, {IT_STRING | IT_CVAR, NULL, "Nametag Restat", &cv_nametagrestat, 90}, - {IT_STRING | IT_CVAR, NULL, "Nametag Hop", &cv_nametaghop, 100}, - {IT_STRING | IT_CVAR, NULL, "Small Nametags", &cv_smallnametags, 110}, - {IT_STRING | IT_CVAR, NULL, "Show Nametags after Race finish", &cv_shownametagfinish, 120}, - {IT_STRING | IT_CVAR, NULL, "Show Nametags in Spectator Mode", &cv_shownametagspectator, 130}, + {IT_STRING | IT_CVAR, NULL, "Small Nametags", &cv_smallnametags, 100}, + {IT_STRING | IT_CVAR, NULL, "Show Nametags while Spectating", &cv_shownametagspectator, 110}, //{IT_STRING | IT_CVAR, NULL, "Nametag Scaling", &cv_nametagscaling, 70} }; @@ -2594,9 +2592,7 @@ static const char* OP_NametagTooltips[] = "Transparency of nametags.", "Show player score in nametag.", "Show stats in nametags.", - "Enable Saltyhop support for nametags.", "Alternative smaller nametags.", - "Show Nametags after Race finish.", "Show Nametags when you are spectating.", }; @@ -2611,13 +2607,10 @@ enum nt_nttrans, nt_ntpscore, nt_ntrestat, - nt_nthop, nt_smol, - nt_finish, nt_spec, }; - static menuitem_t OP_DriftGaugeMenu[] = { {IT_HEADER, NULL, "Driftgauge", NULL, 0},