Add a dial speedometer #162
No files matched your search
+27
-4
@@ -1208,6 +1208,8 @@ boolean xtra_speedo3 = false; // 80x 11 extra speedometer check
|
||||
boolean xtra_speedo_clr3 = false; // 80x 11 extra speedometer colour check
|
||||
boolean achi_speedo = false; // achiiro speedometer check
|
||||
boolean achi_speedo_clr = false; // extra speedometer colour check
|
||||
boolean dial_speedo = false; // dial speedometer check
|
||||
boolean dial_speedo_clr = false; // dial speedometer colour check
|
||||
boolean kartz_speedo = false; // kartZ speedo
|
||||
boolean kartz_speedo_smol = false; // kartZ speedo but smol
|
||||
|
||||
@@ -1337,7 +1339,7 @@ static inline void D_MakeTitleString(char *s)
|
||||
static void D_CheckSaturnExtraFiles(void)
|
||||
{
|
||||
// Possible value that changes depending on whether required files for speedometer are found or not
|
||||
CV_PossibleValue_t speedo_cons_temp[NUMSPEEDOSTUFF] = {{1, "Default"}, {0, NULL}, {0, NULL}, {0, NULL}, {0, NULL}, {0, NULL}, {0, NULL}};
|
||||
CV_PossibleValue_t speedo_cons_temp[NUMSPEEDOSTUFF] = {{1, "Default"}, {0, NULL}, {0, NULL}, {0, NULL}, {0, NULL}, {0, NULL}, {0, NULL}, {0, NULL}};
|
||||
CV_PossibleValue_t driftgaugestyle_cons_temp[NUMDGAUGESTUFF] = {{1, "Default"}, {2, "Small"}, {3, "Big Numbers"}, {4, "Numbers Only"}, {0, NULL}, {0, NULL}};
|
||||
CV_PossibleValue_t inputdisplay_cons_temp[NUMINPUTDISPLAYSTUFF] = {{0, "Off"}, {1, "Wheel"}, {2, "Stick"}, {0, NULL}, {0, NULL}};
|
||||
|
||||
@@ -1365,6 +1367,17 @@ static void D_CheckSaturnExtraFiles(void)
|
||||
PUSHCONS(speedo_cons_temp, last_speedo_i, 3, "Achii");
|
||||
}
|
||||
|
||||
// now check for dial speedometer stuff
|
||||
if (W_CheckMultipleLumps("K_DSPBS1", "K_DSPBS2", "K_DSDIAL",
|
||||
"K_TRNULL", "SP_DKMH", "SP_DMPH", "SP_DFRAC", "SP_DPERC",
|
||||
"K_DSPNM0", "K_DSPNM1", "K_DSPNM2", "K_DSPNM3", "K_DSPNM4",
|
||||
"K_DSPNM5", "K_DSPNM6", "K_DSPNM7", "K_DSPNM8", "K_DSPNM9",
|
||||
"RANKFIN", NULL))
|
||||
{
|
||||
dial_speedo = true;
|
||||
PUSHCONS(speedo_cons_temp, last_speedo_i, 4, "Dial");
|
||||
}
|
||||
|
||||
// check for bigger lap count
|
||||
if (W_CheckMultipleLumps("K_STLAPB", "K_STLA2B", NULL))
|
||||
{
|
||||
@@ -1378,7 +1391,7 @@ static void D_CheckSaturnExtraFiles(void)
|
||||
"K_KZSP20", "K_KZSP21", "K_KZSP22", "K_KZSP23", "K_KZSP24", "K_KZSP25", NULL))
|
||||
{
|
||||
kartz_speedo = true;
|
||||
PUSHCONS(speedo_cons_temp, last_speedo_i, 4, "P-Meter");
|
||||
PUSHCONS(speedo_cons_temp, last_speedo_i, 5, "P-Meter");
|
||||
}
|
||||
|
||||
if (W_CheckMultipleLumps("K_KZSS1", "K_KZSS2", "K_KZSS3", "K_KZSS4", "K_KZSS5",
|
||||
@@ -1387,7 +1400,7 @@ static void D_CheckSaturnExtraFiles(void)
|
||||
"K_KZSS20", "K_KZSS21", "K_KZSS22", "K_KZSS23", "K_KZSS24", "K_KZSS25", NULL))
|
||||
{
|
||||
kartz_speedo_smol = true;
|
||||
PUSHCONS(speedo_cons_temp, last_speedo_i, 5, "P-Meter Small");
|
||||
PUSHCONS(speedo_cons_temp, last_speedo_i, 6, "P-Meter Small");
|
||||
}
|
||||
|
||||
// stat display for extended player setup
|
||||
@@ -1447,6 +1460,16 @@ static void D_CheckSaturnExtraFiles(void)
|
||||
achi_speedo_clr = true;
|
||||
}
|
||||
|
||||
// dial speedo but colour
|
||||
if (W_CheckMultipleLumps("K_DSPBC1", "K_DSPBC2", "K_DSDIAL",
|
||||
"K_TRNULL", "SC_DKMH", "SC_DMPH", "SC_DFRAC", "SC_DPERC",
|
||||
"K_DSPNC0", "K_DSPNC1", "K_DSPNC2", "K_DSPNC3", "K_DSPNC4",
|
||||
"K_DSPNC5", "K_DSPNC6", "K_DSPNC7", "K_DSPNC8", "K_DSPNC9",
|
||||
"RANKFIN", NULL))
|
||||
{
|
||||
dial_speedo_clr = true;
|
||||
}
|
||||
|
||||
// driftgauge but colour
|
||||
if (W_CheckMultipleLumps("K_DCAU","K_DCSU", NULL))
|
||||
{
|
||||
@@ -1470,7 +1493,7 @@ static void D_CheckSaturnExtraFiles(void)
|
||||
if (W_LumpExists("SP_SM3TC"))
|
||||
{
|
||||
xtra_speedo3 = true;
|
||||
PUSHCONS(speedo_cons_temp, last_speedo_i, 6, "Extra");
|
||||
PUSHCONS(speedo_cons_temp, last_speedo_i, 7, "Extra");
|
||||
PUSHCONS(driftgaugestyle_cons_temp, last_driftgauge_i, 5, "Extra");
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,8 @@ extern boolean xtra_speedo3; // 80x11 extra speedometer check
|
||||
extern boolean xtra_speedo_clr3; // 80x11 extra speedometer colour check
|
||||
extern boolean achi_speedo; // achiiro speedometer check
|
||||
extern boolean achi_speedo_clr; // extra speedometer colour check
|
||||
extern boolean dial_speedo; // dial speedometer check
|
||||
extern boolean dial_speedo_clr; // dial speedometer colour check
|
||||
extern boolean kartz_speedo; // kartZ speedo
|
||||
extern boolean kartz_speedo_smol; // kartZ speedo but smol
|
||||
|
||||
|
||||
+301
-26
@@ -747,6 +747,7 @@ enum
|
||||
SPEEDO_VANILLA,
|
||||
SPEEDO_EXTRA,
|
||||
SPEEDO_ACHII,
|
||||
SPEEDO_DIAL,
|
||||
SPEEDO_PMETER,
|
||||
SPEEDO_PMETERSMOL,
|
||||
SPEEDO_EXTRA3,
|
||||
@@ -758,11 +759,13 @@ static UINT8 K_GetSpeedometerStyle(void)
|
||||
return SPEEDO_EXTRA;
|
||||
else if (cv_newspeedometer.value == 3 && achi_speedo)
|
||||
return SPEEDO_ACHII;
|
||||
else if (cv_newspeedometer.value == 4 && kartz_speedo)
|
||||
else if (cv_newspeedometer.value == 4 && dial_speedo)
|
||||
return SPEEDO_DIAL;
|
||||
else if (cv_newspeedometer.value == 5 && kartz_speedo)
|
||||
return SPEEDO_PMETER;
|
||||
else if (cv_newspeedometer.value == 5 && kartz_speedo_smol)
|
||||
else if (cv_newspeedometer.value == 6 && kartz_speedo_smol)
|
||||
return SPEEDO_PMETERSMOL;
|
||||
else if (cv_newspeedometer.value == 6 && xtra_speedo3)
|
||||
else if (cv_newspeedometer.value == 7 && xtra_speedo3)
|
||||
return SPEEDO_EXTRA3;
|
||||
else
|
||||
return SPEEDO_VANILLA;
|
||||
@@ -7558,6 +7561,16 @@ static patch_t *skp_speedpatchesachi[5];
|
||||
static patch_t *skp_smallstickerachiclr;
|
||||
static patch_t *skp_speedpatchesachiclr[5];
|
||||
|
||||
// dial speedometer
|
||||
static patch_t *skp_rankfinish;
|
||||
static patch_t *skp_dialbase[2];
|
||||
static patch_t *skp_speedpatchesdial[5];
|
||||
static patch_t *skp_dialnum[10];
|
||||
//static patch_t *skp_dialclr;
|
||||
static patch_t *skp_dialbaseclr[2];
|
||||
static patch_t *skp_speedpatchesdialclr[5];
|
||||
static patch_t *skp_dialnumclr[10];
|
||||
|
||||
static patch_t *joybacking;
|
||||
static patch_t *joyknob;
|
||||
static patch_t *joyshadow;
|
||||
@@ -7608,6 +7621,26 @@ void K_LoadKartHUDGraphics(void)
|
||||
skp_speedpatchesachi[4] = W_CachePatchName("SP_APERC", PU_HUDGFX);
|
||||
}
|
||||
|
||||
if (dial_speedo)
|
||||
{
|
||||
skp_rankfinish = W_CachePatchName("RANKFIN", PU_HUDGFX);
|
||||
skp_dialbase[0] = W_CachePatchName("K_DSPBS1", PU_HUDGFX);
|
||||
skp_dialbase[1] = W_CachePatchName("K_DSPBS2", PU_HUDGFX);
|
||||
|
||||
skp_speedpatchesdial[0] = W_CachePatchName("K_TRNULL", PU_HUDGFX); // lolxd
|
||||
skp_speedpatchesdial[1] = W_CachePatchName("SP_DKMH", PU_HUDGFX);
|
||||
skp_speedpatchesdial[2] = W_CachePatchName("SP_DMPH", PU_HUDGFX);
|
||||
skp_speedpatchesdial[3] = W_CachePatchName("SP_DFRAC", PU_HUDGFX);
|
||||
skp_speedpatchesdial[4] = W_CachePatchName("SP_DPERC", PU_HUDGFX);
|
||||
|
||||
sprintf(buffer, "K_DSPNMx");
|
||||
for (i = 0; i < 10; i++)
|
||||
{
|
||||
buffer[7] = '0'+(i%10);
|
||||
skp_dialnum[i] = (patch_t *) W_CachePatchName(buffer, PU_HUDGFX);
|
||||
}
|
||||
}
|
||||
|
||||
if (big_lap)
|
||||
{
|
||||
kp_lapstickerbig = W_CachePatchName("K_STLAPB", PU_HUDGFX);
|
||||
@@ -7655,6 +7688,25 @@ void K_LoadKartHUDGraphics(void)
|
||||
skp_speedpatchesachiclr[4] = W_CachePatchName("SC_APERC", PU_HUDGFX);
|
||||
}
|
||||
|
||||
if (dial_speedo && dial_speedo_clr)
|
||||
{
|
||||
skp_dialbaseclr[0] = W_CachePatchName("K_DSPBC1", PU_HUDGFX);
|
||||
skp_dialbaseclr[1] = W_CachePatchName("K_DSPBC2", PU_HUDGFX);
|
||||
|
||||
skp_speedpatchesdialclr[0] = W_CachePatchName("K_TRNULL", PU_HUDGFX); // lolxd
|
||||
skp_speedpatchesdialclr[1] = W_CachePatchName("SC_DKMH", PU_HUDGFX);
|
||||
skp_speedpatchesdialclr[2] = W_CachePatchName("SC_DMPH", PU_HUDGFX);
|
||||
skp_speedpatchesdialclr[3] = W_CachePatchName("SC_DFRAC", PU_HUDGFX);
|
||||
skp_speedpatchesdialclr[4] = W_CachePatchName("SC_DPERC", PU_HUDGFX);
|
||||
|
||||
sprintf(buffer, "K_DSPNCx");
|
||||
for (i = 0; i < 10; i++)
|
||||
{
|
||||
buffer[7] = '0'+(i%10);
|
||||
skp_dialnumclr[i] = (patch_t *) W_CachePatchName(buffer, PU_HUDGFX);
|
||||
}
|
||||
}
|
||||
|
||||
// KartZ speedo
|
||||
if (kartz_speedo)
|
||||
{
|
||||
@@ -8301,12 +8353,14 @@ patch_t *K_getItemMulPatch(boolean small)
|
||||
|
||||
static void K_drawKartStats(void)
|
||||
{
|
||||
INT32 x, y, spdoffset, flags;
|
||||
INT32 x, y, spdxoffset, spdoffset, flags;
|
||||
|
||||
// For 1-player display
|
||||
x = 15;
|
||||
y = 150;
|
||||
spdxoffset = 0;
|
||||
spdoffset = 0;
|
||||
|
||||
flags = V_SNAPTOBOTTOM|V_SNAPTOLEFT;
|
||||
|
||||
UINT8 splitnum = 0;
|
||||
@@ -8321,29 +8375,38 @@ static void K_drawKartStats(void)
|
||||
return;
|
||||
|
||||
//Internal offset for speedometer
|
||||
if (cv_kartspeedometer.value)
|
||||
{
|
||||
const UINT8 speedostyle = K_GetSpeedometerStyle();
|
||||
|
||||
const UINT8 speedostyle = K_GetSpeedometerStyle();
|
||||
|
||||
if (cv_kartspeedometer.value && (!splitscreen))
|
||||
{
|
||||
if ((speedostyle == SPEEDO_EXTRA) || (speedostyle == SPEEDO_ACHII) || (speedostyle == SPEEDO_EXTRA3))
|
||||
spdoffset = -10;
|
||||
else if (speedostyle == SPEEDO_DIAL)
|
||||
{
|
||||
spdxoffset = 11;
|
||||
spdoffset = 14;
|
||||
}
|
||||
else
|
||||
spdoffset = -14;
|
||||
}
|
||||
else
|
||||
spdoffset = 0;
|
||||
|
||||
if ((speedostyle != SPEEDO_DIAL) || (splitscreen))
|
||||
spdoffset += (G_BattleGametype() ? (stplyr->kartstuff[k_bumper] ? -5 : -8) : 0);
|
||||
|
||||
// Customizations c:
|
||||
if (!splitscreen)
|
||||
{
|
||||
x += 18 + cv_stat_xoffset.value;
|
||||
y += cv_stat_yoffset.value + (G_BattleGametype() ? (stplyr->kartstuff[k_bumper] ? -5 : -8) : 0) + spdoffset;
|
||||
x += 18 + cv_stat_xoffset.value + spdxoffset;
|
||||
y += cv_stat_yoffset.value + spdoffset;
|
||||
}
|
||||
else if (splitscreen == 1) // I tried my best, but this is still mess :/ < :Blobcatpats: c:
|
||||
{
|
||||
x -= 10;
|
||||
y -= 40;
|
||||
y += (G_BattleGametype() ? (stplyr->kartstuff[k_bumper] ? -5 : -8) : 0);
|
||||
y += spdoffset;
|
||||
|
||||
// If we are in 2-player splitscreen, for player 1 we move hud to up and remove snapping
|
||||
// to bottom
|
||||
@@ -9383,13 +9446,164 @@ static void K_drawKartLaps(void)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ROTSPRITE
|
||||
|
||||
#define DIALSPDDIV 97090 // 1.48148; converts 200 to 135
|
||||
#define MPHDIV 68283 // 1.04192; converts 141 to 135
|
||||
|
||||
static void K_DrawDialNum(INT32 x, INT32 y, boolean colorized, INT32 flags, INT32 num, INT32 digits, const UINT8 *colormap)
|
||||
{
|
||||
INT32 w;
|
||||
|
||||
if (colorized)
|
||||
w = SHORT(skp_dialnumclr[0]->width);
|
||||
else
|
||||
w = SHORT(skp_dialnum[0]->width);
|
||||
|
||||
if (flags & V_NOSCALESTART)
|
||||
w *= vid.dupx;
|
||||
|
||||
if (num < 0)
|
||||
num = -num;
|
||||
|
||||
// draw the number
|
||||
do
|
||||
{
|
||||
x -= (w);
|
||||
|
||||
if (colorized)
|
||||
V_DrawFixedPatch(x << FRACBITS, y << FRACBITS, FRACUNIT, flags, skp_dialnumclr[num % 10], colormap);
|
||||
else
|
||||
V_DrawFixedPatch(x << FRACBITS, y << FRACBITS, FRACUNIT, flags, skp_dialnum[num % 10], colormap);
|
||||
|
||||
num /= 10;
|
||||
} while (--digits);
|
||||
}
|
||||
|
||||
static void K_DrawDialLaps(INT32 x, INT32 y, INT32 num, INT32 total, INT32 flags)
|
||||
{
|
||||
INT32 fx;
|
||||
fx = x + ((num < 10) ? 0 : 6);
|
||||
V_DrawRankNum(fx, y, flags, num, (num < 10) ? 1 : 2, NULL);
|
||||
V_DrawScaledPatch(fx + 2, y, flags, frameslash);
|
||||
V_DrawRankNum(fx + 13 + ((total < 10) ? 0 : 6), y, flags, total, (total < 10) ? 1 : 2, NULL);
|
||||
}
|
||||
|
||||
static void K_DrawDialSpeedometer(fixed_t speed,
|
||||
fixed_t divisor,
|
||||
INT32 splitflags,
|
||||
boolean battlemode,
|
||||
boolean infoactive,
|
||||
boolean colorized)
|
||||
{
|
||||
UINT8* colormap = R_GetTranslationColormap(TC_DEFAULT, K_GetHudColor(), GTC_CACHE);
|
||||
|
||||
INT32 rot = 0;
|
||||
UINT8 infoidx = (infoactive) ? 1 : 0;
|
||||
patch_t* dialpatch;
|
||||
|
||||
angle_t speedangle =
|
||||
FixedAngle(((min(135 * FRACUNIT, FixedDiv(speed, divisor)) - (45 * FRACUNIT))));
|
||||
|
||||
rot = R_GetRollAngle(speedangle);
|
||||
|
||||
if (rot)
|
||||
{
|
||||
dialpatch = W_CachePatchNameRotated("K_DSDIAL", rot, PU_STATIC);
|
||||
}
|
||||
else
|
||||
{
|
||||
dialpatch = W_CachePatchName("K_DSDIAL", PU_STATIC);
|
||||
}
|
||||
|
||||
if (colorized) // Colourized hud
|
||||
{
|
||||
V_DrawMappedPatch(
|
||||
SPDM_X, SPDM_Y - 9, (V_HUDTRANS | splitflags), skp_dialbaseclr[infoidx], colormap);
|
||||
V_DrawMappedPatch(SPDM_X,
|
||||
SPDM_Y + 30,
|
||||
V_HUDTRANS | splitflags,
|
||||
skp_speedpatchesdialclr[cv_kartspeedometer.value],
|
||||
colormap);
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawScaledPatch(SPDM_X, SPDM_Y - 9, (V_HUDTRANS | splitflags), skp_dialbase[infoidx]);
|
||||
V_DrawScaledPatch(SPDM_X,
|
||||
SPDM_Y + 30,
|
||||
V_HUDTRANS | splitflags,
|
||||
skp_speedpatchesdial[cv_kartspeedometer.value]);
|
||||
}
|
||||
|
||||
K_DrawDialNum(SPDM_X + 10,
|
||||
SPDM_Y + 25,
|
||||
colorized,
|
||||
V_HUDTRANS | splitflags,
|
||||
speed / FRACUNIT,
|
||||
3,
|
||||
colormap);
|
||||
|
||||
// gotta center the dial manually
|
||||
V_DrawMappedPatch(SPDM_X - 19, SPDM_Y + 15, (V_HUDTRANS | splitflags), (dialpatch), colormap);
|
||||
|
||||
if (!infoactive)
|
||||
{
|
||||
// no need to draw info if we're not supposed to
|
||||
return;
|
||||
}
|
||||
|
||||
// draw the info
|
||||
if (battlemode)
|
||||
{
|
||||
if (stplyr->kartstuff[k_bumper] <= 0)
|
||||
{
|
||||
V_DrawMappedPatch(
|
||||
SPDM_X + 28, SPDM_Y + 27, V_HUDTRANS | splitflags, kp_splitkarmabomb, colormap);
|
||||
K_DrawDialLaps(SPDM_X + 46,
|
||||
SPDM_Y + 29,
|
||||
stplyr->kartstuff[k_comebackpoints],
|
||||
2,
|
||||
V_HUDTRANS | splitflags);
|
||||
}
|
||||
else // the above doesn't need to account for weird stuff since the max amount of karma
|
||||
// necessary is always 2 ^^^^
|
||||
{
|
||||
V_DrawMappedPatch(
|
||||
SPDM_X + 28, SPDM_Y + 27, V_HUDTRANS | splitflags, kp_rankbumper, colormap);
|
||||
K_DrawDialLaps(SPDM_X + 46,
|
||||
SPDM_Y + 29,
|
||||
stplyr->kartstuff[k_bumper],
|
||||
cv_kartbumpers.value,
|
||||
V_HUDTRANS | splitflags);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawScaledPatch(SPDM_X + 28, SPDM_Y + 27, V_HUDTRANS | splitflags, kp_splitlapflag);
|
||||
|
||||
if (stplyr->exiting)
|
||||
V_DrawScaledPatch(SPDM_X + 39, SPDM_Y + 29, V_HUDTRANS | splitflags, skp_rankfinish);
|
||||
else
|
||||
K_DrawDialLaps(SPDM_X + 46,
|
||||
SPDM_Y + 29,
|
||||
stplyr->laps + 1,
|
||||
cv_numlaps.value,
|
||||
V_HUDTRANS | splitflags);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static void K_drawKartSpeedometer(void)
|
||||
{
|
||||
// why?
|
||||
if (cv_kartspeedometer.value == 0)
|
||||
return;
|
||||
|
||||
fixed_t convSpeed = 0;
|
||||
// index 0 is the raw value, index 1 is the converted value
|
||||
fixed_t convSpeed[2] = {0,0};
|
||||
fixed_t dial_divisor = DIALSPDDIV;
|
||||
|
||||
INT32 splitflags = K_calcSplitFlags(V_SNAPTOBOTTOM|V_SNAPTOLEFT);
|
||||
|
||||
// man.
|
||||
@@ -9398,17 +9612,25 @@ static void K_drawKartSpeedometer(void)
|
||||
switch (cv_kartspeedometer.value)
|
||||
{
|
||||
case 1:
|
||||
convSpeed = FixedDiv(FixedMul(stplyr->speed, 142371), mapobjectscale)/FRACUNIT; // 2.172409058
|
||||
convSpeed[0] = FixedDiv(FixedMul(stplyr->speed, 142371), mapobjectscale); // 2.172409058
|
||||
convSpeed[1] = convSpeed[0] / FRACUNIT;
|
||||
break;
|
||||
case 2:
|
||||
convSpeed = FixedDiv(FixedMul(stplyr->speed, 88465), mapobjectscale)/FRACUNIT; // 1.349868774
|
||||
convSpeed[0] = FixedDiv(FixedMul(stplyr->speed, 88465), mapobjectscale); // 1.349868774
|
||||
convSpeed[1] = convSpeed[0] / FRACUNIT;
|
||||
dial_divisor = MPHDIV;
|
||||
break;
|
||||
case 3:
|
||||
convSpeed = FixedDiv(stplyr->speed, mapobjectscale)/FRACUNIT;
|
||||
convSpeed[0] = FixedDiv(stplyr->speed, mapobjectscale);
|
||||
convSpeed[1] = convSpeed[0] / FRACUNIT;
|
||||
dial_divisor = MPHDIV;
|
||||
break;
|
||||
case 4:
|
||||
if (stplyr->mo)
|
||||
convSpeed = (FixedDiv(stplyr->speed, FixedMul(K_GetKartSpeed(stplyr, false), ORIG_FRICTION))*100)>>FRACBITS;
|
||||
{
|
||||
convSpeed[0] = (FixedDiv(stplyr->speed, FixedMul(K_GetKartSpeed(stplyr, false), ORIG_FRICTION))*100);
|
||||
convSpeed[1] = convSpeed[0] >> FRACBITS;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -9421,20 +9643,20 @@ static void K_drawKartSpeedometer(void)
|
||||
switch (cv_kartspeedometer.value)
|
||||
{
|
||||
case 1:
|
||||
metric = va("%3d km/h", convSpeed);
|
||||
metric = va("%3d km/h", convSpeed[1]);
|
||||
break;
|
||||
case 2:
|
||||
metric = va("%3d mph", convSpeed);
|
||||
metric = va("%3d mph", convSpeed[1]);
|
||||
break;
|
||||
case 3:
|
||||
metric = va("%3d fu/t", convSpeed);
|
||||
metric = va("%3d fu/t", convSpeed[1]);
|
||||
break;
|
||||
case 4:
|
||||
// if extra.kart is found, use its included % symbol
|
||||
if (!xtra_speedo)
|
||||
metric = va("%4d P", convSpeed);
|
||||
metric = va("%4d P", convSpeed[1]);
|
||||
else
|
||||
metric = va("%4d %%", convSpeed);
|
||||
metric = va("%4d %%", convSpeed[1]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -9452,7 +9674,7 @@ static void K_drawKartSpeedometer(void)
|
||||
else
|
||||
V_DrawScaledPatch(SPDM_X + 1, SPDM_Y + 4, (V_HUDTRANS|splitflags), (skp_smallsticker));
|
||||
|
||||
V_DrawRankNum(SPDM_X + 26, SPDM_Y + 4, V_HUDTRANS|splitflags, convSpeed, 3, NULL);
|
||||
V_DrawRankNum(SPDM_X + 26, SPDM_Y + 4, V_HUDTRANS|splitflags, convSpeed[1], 3, NULL);
|
||||
V_DrawScaledPatch(SPDM_X + 31, SPDM_Y + 4, V_HUDTRANS|splitflags, skp_speedpatches[cv_kartspeedometer.value]);
|
||||
}
|
||||
else if (speedostyle == SPEEDO_ACHII) // why bother if we dont?
|
||||
@@ -9461,16 +9683,27 @@ static void K_drawKartSpeedometer(void)
|
||||
{
|
||||
UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, K_GetHudColor(), GTC_CACHE);
|
||||
V_DrawMappedPatch(SPDM_X + 1, SPDM_Y + 4, (V_HUDTRANS|splitflags), (skp_smallstickerachiclr), colormap);
|
||||
V_DrawRankNum(SPDM_X + 26, SPDM_Y + 4, V_HUDTRANS|splitflags, convSpeed, 3, NULL);
|
||||
V_DrawRankNum(SPDM_X + 26, SPDM_Y + 4, V_HUDTRANS|splitflags, convSpeed[1], 3, NULL);
|
||||
V_DrawMappedPatch(SPDM_X + 31, SPDM_Y + 4, V_HUDTRANS|splitflags, skp_speedpatchesachiclr[cv_kartspeedometer.value], colormap);
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawScaledPatch(SPDM_X + 1, SPDM_Y + 4, (V_HUDTRANS|splitflags), (skp_smallstickerachi));
|
||||
V_DrawRankNum(SPDM_X + 26, SPDM_Y + 4, V_HUDTRANS|splitflags, convSpeed, 3, NULL);
|
||||
V_DrawRankNum(SPDM_X + 26, SPDM_Y + 4, V_HUDTRANS|splitflags, convSpeed[1], 3, NULL);
|
||||
V_DrawScaledPatch(SPDM_X + 31, SPDM_Y + 4, V_HUDTRANS|splitflags, skp_speedpatchesachi[cv_kartspeedometer.value]);
|
||||
}
|
||||
}
|
||||
#ifdef ROTSPRITE
|
||||
else if (speedostyle == SPEEDO_DIAL) // why bother if we dont?
|
||||
{
|
||||
K_DrawDialSpeedometer(convSpeed[0],
|
||||
dial_divisor,
|
||||
splitflags,
|
||||
(boolean)(G_BattleGametype()),
|
||||
(LUA_HudEnabled(hud_gametypeinfo)),
|
||||
(boolean)(K_UseColorHud() && dial_speedo_clr));
|
||||
}
|
||||
#endif
|
||||
else if (speedostyle == SPEEDO_EXTRA3) // why bother if we dont?
|
||||
{
|
||||
if (K_UseColorHud() && xtra_speedo_clr3) //Colourized hud
|
||||
@@ -9481,7 +9714,7 @@ static void K_drawKartSpeedometer(void)
|
||||
else
|
||||
V_DrawStretchyFixedPatch((SPDM_X-1)<<FRACBITS, (SPDM_Y + 5)<<FRACBITS, FRACUNIT*0.765, FRACUNIT*0.55, (V_HUDTRANS|splitflags), (skp_smallsticker3), NULL, 0);
|
||||
|
||||
V_DrawRankNum(SPDM_X + 26, SPDM_Y + 4, V_HUDTRANS|splitflags, convSpeed, 3, NULL);
|
||||
V_DrawRankNum(SPDM_X + 26, SPDM_Y + 4, V_HUDTRANS|splitflags, convSpeed[1], 3, NULL);
|
||||
V_DrawScaledPatch(SPDM_X + 31, SPDM_Y + 4, V_HUDTRANS|splitflags, skp_speedpatches[cv_kartspeedometer.value]);
|
||||
}
|
||||
// Kart Z speedo bullshit...
|
||||
@@ -9522,6 +9755,11 @@ static void K_drawKartSpeedometer(void)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ROTSPRITE
|
||||
#undef DIALSPDDIV
|
||||
#undef MPHDIV
|
||||
#endif
|
||||
|
||||
static void K_drawKartBumpersOrKarma(void)
|
||||
{
|
||||
UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, K_GetHudColor(), GTC_CACHE);
|
||||
@@ -11174,11 +11412,45 @@ static void K_drawCheckpointDebugger(void)
|
||||
V_DrawString(8, 192, 0, va("Waypoint dist: Prev %d, Next %d", stplyr->kartstuff[k_prevcheck], stplyr->kartstuff[k_nextcheck]));
|
||||
}
|
||||
|
||||
// determines if gametype info (laps/bumpers) should be hidden
|
||||
static boolean K_DisableGametypeInfo(void)
|
||||
{
|
||||
if (!LUA_HudEnabled(hud_gametypeinfo))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef ROTSPRITE
|
||||
if (splitscreen || (!cv_kartspeedometer.value))
|
||||
{
|
||||
// don't need to run checks if we're in splitscreen, or not using the speedometer
|
||||
return false;
|
||||
}
|
||||
|
||||
const UINT8 speedostyle = K_GetSpeedometerStyle();
|
||||
|
||||
if (G_RaceGametype())
|
||||
{
|
||||
if (speedostyle == SPEEDO_DIAL)
|
||||
return true;
|
||||
}
|
||||
else if (G_BattleGametype())
|
||||
{
|
||||
if ((cv_battlespeedo.value) && (speedostyle == SPEEDO_DIAL))
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void K_drawKartHUD(void)
|
||||
{
|
||||
boolean isfreeplay = false;
|
||||
boolean battlefullscreen = false;
|
||||
boolean freecam = camera[stplyrnum].freecam; //disable some hud elements w/ freecam
|
||||
boolean gameinfovisible = false;
|
||||
|
||||
// Define the X and Y for each drawn object
|
||||
// This is handled by console/menu values
|
||||
@@ -11284,6 +11556,9 @@ void K_drawKartHUD(void)
|
||||
|
||||
if (!stplyr->spectator && !freecam) // Bottom of the screen elements, don't need in spectate mode
|
||||
{
|
||||
// get gametype info visibility ahead of time
|
||||
gameinfovisible = (!K_DisableGametypeInfo());
|
||||
|
||||
if (!(splitscreen || demo.title))
|
||||
{
|
||||
if (LUA_HudEnabled(hud_inputdisplay))
|
||||
@@ -11324,7 +11599,7 @@ void K_drawKartHUD(void)
|
||||
else if (G_RaceGametype()) // Race-only elements
|
||||
{
|
||||
// Draw the lap counter
|
||||
if (LUA_HudEnabled(hud_gametypeinfo))
|
||||
if (gameinfovisible)
|
||||
K_drawKartLaps();
|
||||
|
||||
if (!splitscreen)
|
||||
@@ -11347,7 +11622,7 @@ void K_drawKartHUD(void)
|
||||
else if (G_BattleGametype()) // Battle-only
|
||||
{
|
||||
// Draw the hits left!
|
||||
if (LUA_HudEnabled(hud_gametypeinfo))
|
||||
if (gameinfovisible)
|
||||
K_drawKartBumpersOrKarma();
|
||||
|
||||
if ((!splitscreen) && cv_battlespeedo.value)
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ extern consvar_t cv_battlespeedo;
|
||||
extern consvar_t cv_multiitemicon;
|
||||
extern consvar_t cv_huditemamount;
|
||||
|
||||
#define NUMSPEEDOSTUFF 7
|
||||
#define NUMSPEEDOSTUFF 8
|
||||
extern CV_PossibleValue_t speedo_cons_t[NUMSPEEDOSTUFF];
|
||||
#define NUMDGAUGESTUFF 6
|
||||
extern CV_PossibleValue_t driftgaugestyle_cons_t[NUMDGAUGESTUFF];
|
||||
|
||||
+1
-1
@@ -4925,7 +4925,7 @@ void M_Init(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!xtra_speedo && !kartz_speedo && !achi_speedo) // why bother?
|
||||
if (!xtra_speedo && !kartz_speedo && !achi_speedo && !dial_speedo) // why bother?
|
||||
OP_SaturnHudMenu[sh_speedometer].status = IT_GRAYEDOUT;
|
||||
|
||||
//if (!xtra_speedo && kartz_speedo)
|
||||
|
||||
Reference in new issue
Block a user