more kart hud cleanup

also removes erronous nametag toggles
This commit is contained in:
Alug committed 2025-02-28 18:55:52 +01:00
1 parent c3f32da557
commit ff4c6ea950
3 files changed
+87 -101

No files matched your search

-2
View File
@@ -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
+85 -90
View File
@@ -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<<FRACBITS, namey<<FRACBITS, FRACUNIT/2, vflags, nametagline, cm);
V_DrawStretchyFixedPatch(((namex+dup*3)<<FRACBITS), namey<<FRACBITS,
tagwidthsmall<<FRACBITS, FRACUNIT/2, vflags, nametagpic, cm, 0);
@@ -9723,14 +9723,14 @@ static void K_drawNameTags(void)
if (cv_nametagfacerank.value)
{
V_DrawFixedPatch(namex<<FRACBITS, (namey - icon->height/2)<<FRACBITS, FRACUNIT/2, vflags, icon, cm);
namex += dup*(1+icon->width/2); // add offset to other stuff
V_DrawFixedPatch(namex<<FRACBITS, (namey - icon->height/2)<<FRACBITS, FRACUNIT/2, vflags, icon, cm);
namex += dup*(1+icon->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) + (160<<FRACBITS))>>FRACBITS;
if (encoremode)
x = 320-x;
x = BASEVIDWIDTH-x;
if (splitscreen > 1)
x /= 2;
+2 -9
View File
@@ -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},