Changes to the Speedometer #104

Merged
alufolie91 merged 16 commits from speedostuff into Saturn-Next 2024-03-19 19:49:18 +01:00
5 changed files with 163 additions and 34 deletions

No files matched your search

+62 -6
View File
@@ -69,6 +69,7 @@
#include "filesrch.h" // refreshdirmenu, pathisdirectory
#include "d_protocol.h"
#include "m_perfstats.h"
#include "k_kart.h"
#include "lua_script.h"
@@ -1073,8 +1074,14 @@ static boolean AddIWAD(void)
// extra graphic patches for saturn specific thingies
boolean found_extra_kart;
boolean found_extra2_kart;
boolean found_extra3_kart;
boolean snw_speedo; // snowy speedometer check
boolean xtra_speedo; // extra speedometer check
boolean xtra_speedo_clr; // extra speedometer colour check
boolean xtra_speedo3; // 80x 11 extra speedometer check
boolean xtra_speedo_clr3; // 80x 11 extra speedometer colour check
boolean achi_speedo; // achiiro speedometer check
boolean achi_speedo_clr; // extra speedometer colour check
boolean clr_hud; // colour hud check
boolean big_lap; // bigger lap counter
boolean big_lap_color; // bigger lap counter but colour
@@ -1088,6 +1095,7 @@ static void IdentifyVersion(void)
const char *srb2waddir = NULL;
found_extra_kart = false;
found_extra2_kart = false;
found_extra3_kart = false;
#if defined (__unix__) || defined (UNIXCOMMON) || defined (HAVE_SDL)
// change to the directory where 'srb2.srb' is found
@@ -1145,6 +1153,11 @@ static void IdentifyVersion(void)
D_AddFile(va(pandf,srb2waddir,"extra2.kart"), startupwadfiles);
found_extra2_kart = true;
}
if (FIL_ReadFileOK(va(pandf,srb2waddir,"extra3.kart"))) {
D_AddFile(va(pandf,srb2waddir,"extra3.kart"), startupwadfiles);
found_extra3_kart = true;
}
#if !defined (HAVE_SDL) || defined (HAVE_MIXER)
#define MUSICTEST(str) \
@@ -1435,6 +1448,11 @@ void D_SRB2Main(void)
#endif //ifndef DEVELOP
// 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}};
unsigned last_speedo_i = 0;
#define PUSHSPEEDO(id, name) { ++last_speedo_i; speedo_cons_temp[last_speedo_i].value = id; speedo_cons_temp[last_speedo_i].strvalue = name; }
if (found_extra_kart || found_extra2_kart) // found the funny, add it in!
{
// HAYA: These are seperated for a reason lmao
@@ -1443,9 +1461,25 @@ void D_SRB2Main(void)
if (found_extra2_kart)
mainwads++;
// now check for speedometer stuff
// now check for extra speedometer stuff
if (W_CheckMultipleLumps("SP_SMSTC", "K_TRNULL", "SP_MKMH", "SP_MMPH", "SP_MFRAC", "SP_MPERC", NULL))
snw_speedo = true;
{
xtra_speedo = true;
PUSHSPEEDO(2, "Small");
}
if (W_CheckMultipleLumps("SC_SMSTC", NULL))
xtra_speedo_clr = true;
// now check for achii speedometer stuff
if (W_CheckMultipleLumps("SP_AMSTC", "K_TRNULL", "SP_AKMH", "SP_AMPH", "SP_AFRAC", "SP_APERC", NULL))
{
achi_speedo = true;
PUSHSPEEDO(3, "Achii");
}
if (W_CheckMultipleLumps("SC_AMSTC", "K_TRNULL", "SC_AKMH", "SC_AMPH", "SC_AFRAC", "SC_APERC", NULL))
achi_speedo_clr = true;
// check for bigger lap count
if (W_CheckMultipleLumps("K_STLAPB", "K_STLA2B", NULL))
@@ -1453,7 +1487,7 @@ void D_SRB2Main(void)
// now check for colour hud stuff
if (W_CheckMultipleLumps("K_SCTIME", "K_SCTIMW", "K_SCLAPS", "K_SCLAPW", \
"K_SCBALN", "K_SCBALW", "K_SCKARM", "K_SCTOUT", "K_ISMULC", "K_ITMULC", "K_ITBC","K_ITBCD", "K_ISBC", "K_ISBCD", NULL))
"K_SCBALN", "K_SCBALW", "K_SCKARM", "K_SCTOUT", "K_ISMULC", "K_ITMULC", "K_ITBC", "K_ITBCD", "K_ISBC", "K_ISBCD", NULL))
clr_hud = true;
// check for bigger lap count but color** its color bitch
@@ -1464,8 +1498,11 @@ void D_SRB2Main(void)
if (W_CheckMultipleLumps("K_KZSP1", "K_KZSP2", "K_KZSP3", "K_KZSP4", "K_KZSP5", \
"K_KZSP6", "K_KZSP7", "K_KZSP8", "K_KZSP9", "K_KZSP10", "K_KZSP11", "K_KZSP12", \
"K_KZSP13", "K_KZSP14", "K_KZSP15", "K_KZSP16", "K_KZSP17", "K_KZSP18", "K_KZSP19", \
"K_KZSP20", "K_KZSP21", "K_KZSP22", "K_KZSP23", "K_KZSP24", "K_KZSP25", NULL))
"K_KZSP20", "K_KZSP21", "K_KZSP22", "K_KZSP23", "K_KZSP24", "K_KZSP25", NULL))
{
kartzspeedo = true;
PUSHSPEEDO(4, "P-Meter");
}
// stat display for extended player setup
if (W_CheckMultipleLumps("K_STATNB", "K_STATN1", "K_STATN2", "K_STATN3", "K_STATN4", \
@@ -1475,11 +1512,30 @@ void D_SRB2Main(void)
// Nametag stuffs
if (W_CheckMultipleLumps("NTLINE", "NTLINEV", "NTSP", "NTWH", NULL))
nametaggfx = true;
if (W_CheckMultipleLumps("K_DGAU","K_DCAU","K_DGSU","K_DCSU", NULL))
driftgaugegfx = true;
}
if (found_extra3_kart)
{
if (found_extra3_kart)
mainwads++;
// 80x11 speedometer crap
if (W_CheckMultipleLumps("SP_SM3TC", NULL))
{
xtra_speedo3 = true;
PUSHSPEEDO(5, "Extra");
}
if (W_CheckMultipleLumps("SC_SM3TC", NULL))
xtra_speedo_clr3 = true;
}
#undef PUSHSPEEDO
memcpy(speedo_cons_t, speedo_cons_temp, sizeof(speedo_cons_t));
//
// search for maps
//
+7 -1
View File
@@ -27,8 +27,14 @@ extern char srb2path[256]; //Alam: SRB2's Home
extern boolean found_extra_kart; // for use in k_kart.c
extern boolean found_extra2_kart; // for use in k_kart.c
extern boolean found_extra3_kart; // for use in k_kart.c
extern boolean snw_speedo; // snowy speedometer check
extern boolean xtra_speedo; // extra speedometer check
extern boolean xtra_speedo_clr; // extra speedometer colour check
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 clr_hud; // colour hud check
extern boolean big_lap; // bigger lap counter
extern boolean big_lap_color; // bigger lap counter but colour
+85 -22
View File
@@ -74,7 +74,7 @@ IMPL_HUD_OFFSET(stat); // Stats
consvar_t cv_showstats = {"showstats", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_showinput = {"showinput", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
static CV_PossibleValue_t speedo_cons_t[] = {{1, "Default"}, {2, "Small"}, {3, "P-Meter"}, {0, NULL}};
CV_PossibleValue_t speedo_cons_t[NUMSPEEDOSTUFF];
consvar_t cv_newspeedometer = {"newspeedometer", "Default", CV_SAVE, speedo_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
//hardcode saltyhop mhhm
@@ -6941,6 +6941,7 @@ static patch_t *kp_bumperstickerwideclr;
static patch_t *kp_karmastickerclr;
static patch_t *kp_timeoutstickerclr;
static patch_t *skp_smallstickerclr;
static patch_t *skp_smallstickerclr3;
static patch_t *kp_itemmulstickerclr[2];
static patch_t *kp_itembgclr[4];
@@ -7021,8 +7022,14 @@ static patch_t *driftgaugesmallcolor;
static patch_t *kp_yougotem;
static patch_t *skp_smallsticker;
static patch_t *skp_smallsticker3;
static patch_t *skp_speedpatches[5];
static patch_t *skp_smallstickerachi;
static patch_t *skp_speedpatchesachi[5];
static patch_t *skp_smallstickerachiclr;
static patch_t *skp_speedpatchesachiclr[5];
void K_LoadKartHUDGraphics(void)
{
INT32 i, j;
@@ -7043,10 +7050,35 @@ void K_LoadKartHUDGraphics(void)
kp_karmasticker = W_CachePatchName("K_STKARM", PU_HUDGFX);
kp_splitkarmabomb = W_CachePatchName("K_SPTKRM", PU_HUDGFX);
kp_timeoutsticker = W_CachePatchName("K_STTOUT", PU_HUDGFX);
if (xtra_speedo) // snowy speedometer
{
skp_smallsticker = W_CachePatchName("SP_SMSTC", PU_HUDGFX);
skp_speedpatches[0] = W_CachePatchName("K_TRNULL", PU_HUDGFX); // lolxd
skp_speedpatches[1] = W_CachePatchName("SP_MKMH", PU_HUDGFX);
skp_speedpatches[2] = W_CachePatchName("SP_MMPH", PU_HUDGFX);
skp_speedpatches[3] = W_CachePatchName("SP_MFRAC", PU_HUDGFX);
skp_speedpatches[4] = W_CachePatchName("SP_MPERC", PU_HUDGFX);
}
if (xtra_speedo3) // 80x11 patch scaled to size
{
skp_smallsticker3 = W_CachePatchName("SP_SM3TC", PU_HUDGFX);
}
if (achi_speedo)
{
skp_smallstickerachi = W_CachePatchName("SP_AMSTC", PU_HUDGFX);
skp_speedpatchesachi[0] = W_CachePatchName("K_TRNULL", PU_HUDGFX); // lolxd
skp_speedpatchesachi[1] = W_CachePatchName("SP_AKMH", PU_HUDGFX);
skp_speedpatchesachi[2] = W_CachePatchName("SP_AMPH", PU_HUDGFX);
skp_speedpatchesachi[3] = W_CachePatchName("SP_AFRAC", PU_HUDGFX);
skp_speedpatchesachi[4] = W_CachePatchName("SP_APERC", PU_HUDGFX);
}
if (big_lap){
kp_lapstickerbig = W_CachePatchName("K_STLAPB", PU_HUDGFX);
kp_lapstickerbig2 = W_CachePatchName("K_STLA2B", PU_HUDGFX);
kp_lapstickerbig = W_CachePatchName("K_STLAPB", PU_HUDGFX);
kp_lapstickerbig2 = W_CachePatchName("K_STLA2B", PU_HUDGFX);
}
// Colourized hud
@@ -7071,8 +7103,21 @@ void K_LoadKartHUDGraphics(void)
kp_lapstickerbig2clr = W_CachePatchName("K_SCLA2B", PU_HUDGFX);
}
if (snw_speedo)
if (xtra_speedo && xtra_speedo_clr)
skp_smallstickerclr = W_CachePatchName("SC_SMSTC", PU_HUDGFX);
if (xtra_speedo3 && xtra_speedo_clr3) // 80x11 patch scaled to size
skp_smallstickerclr3 = W_CachePatchName("SC_SM3TC", PU_HUDGFX);
if (achi_speedo && achi_speedo_clr)
{
skp_smallstickerachiclr = W_CachePatchName("SC_AMSTC", PU_HUDGFX);
skp_speedpatchesachiclr[0] = W_CachePatchName("K_TRNULL", PU_HUDGFX); // lolxd
skp_speedpatchesachiclr[1] = W_CachePatchName("SC_AKMH", PU_HUDGFX);
skp_speedpatchesachiclr[2] = W_CachePatchName("SC_AMPH", PU_HUDGFX);
skp_speedpatchesachiclr[3] = W_CachePatchName("SC_AFRAC", PU_HUDGFX);
skp_speedpatchesachiclr[4] = W_CachePatchName("SC_APERC", PU_HUDGFX);
}
}
// KartZ speedo
@@ -7347,16 +7392,6 @@ void K_LoadKartHUDGraphics(void)
}
kp_yougotem = (patch_t *) W_CachePatchName("YOUGOTEM", PU_HUDGFX);
if (snw_speedo) // snowy speedometer
{
skp_smallsticker = W_CachePatchName("SP_SMSTC", PU_HUDGFX);
skp_speedpatches[0] = W_CachePatchName("K_TRNULL", PU_HUDGFX); // lolxd
skp_speedpatches[1] = W_CachePatchName("SP_MKMH", PU_HUDGFX);
skp_speedpatches[2] = W_CachePatchName("SP_MMPH", PU_HUDGFX);
skp_speedpatches[3] = W_CachePatchName("SP_MFRAC", PU_HUDGFX);
skp_speedpatches[4] = W_CachePatchName("SP_MPERC", PU_HUDGFX);
}
}
// For the item toggle menu
@@ -7743,7 +7778,7 @@ static void K_drawKartStats(void)
//Internal offset for speedometer
if (cv_kartspeedometer.value)
{
if (cv_newspeedometer.value == 2 && snw_speedo)
if ((cv_newspeedometer.value == 2 && xtra_speedo) || (cv_newspeedometer.value == 3 && achi_speedo) || (cv_newspeedometer.value == 5 && xtra_speedo3))
spdoffset = -10;
else
spdoffset = -14;
@@ -8741,7 +8776,7 @@ static void K_drawKartSpeedometer(void)
}
// man.
if ((cv_newspeedometer.value == 1) || (cv_newspeedometer.value == 2 && !snw_speedo) || (cv_newspeedometer.value == 3 && !kartzspeedo))
if ((cv_newspeedometer.value == 1) || (cv_newspeedometer.value == 2 && !xtra_speedo) || (cv_newspeedometer.value == 3 && !achi_speedo) || (cv_newspeedometer.value == 4 && !kartzspeedo) || (cv_newspeedometer.value == 5 && !xtra_speedo3))
{
switch (speedtype) {
case 1:
@@ -8754,7 +8789,7 @@ static void K_drawKartSpeedometer(void)
V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%3d fu/t", convSpeed));
break;
case 4: // if extra.kart is found, use its included % symbol
if (!snw_speedo)
if (!xtra_speedo)
V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%4d P", convSpeed));
else
V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%4d %%", convSpeed));
@@ -8763,25 +8798,53 @@ static void K_drawKartSpeedometer(void)
break;
}
}
else if (cv_newspeedometer.value == 2 && snw_speedo) // why bother if we dont?
else if (cv_newspeedometer.value == 2 && xtra_speedo) // why bother if we dont?
{
if (!K_UseColorHud())
V_DrawScaledPatch(SPDM_X + 1, SPDM_Y + 4, (V_HUDTRANS|splitflags), (skp_smallsticker));
else //Colourized hud
if (K_UseColorHud() && xtra_speedo_clr) //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);
}
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_DrawScaledPatch(SPDM_X + 31, SPDM_Y + 4, V_HUDTRANS|splitflags, skp_speedpatches[cv_kartspeedometer.value]);
}
else if (cv_newspeedometer.value == 3 && achi_speedo) // why bother if we dont?
{
if (K_UseColorHud() && achi_speedo_clr) //Colourized hud
{
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_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_DrawScaledPatch(SPDM_X + 31, SPDM_Y + 4, V_HUDTRANS|splitflags, skp_speedpatchesachi[cv_kartspeedometer.value]);
}
}
else if (cv_newspeedometer.value == 5 && xtra_speedo3) // why bother if we dont?
{
if (K_UseColorHud() && xtra_speedo_clr3) //Colourized hud
{
UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, K_GetHudColor(), GTC_CACHE);
V_DrawStretchyFixedPatch((SPDM_X-1)<<FRACBITS, (SPDM_Y + 5)<<FRACBITS, FRACUNIT*0.765, FRACUNIT*0.55, (V_HUDTRANS|splitflags), (skp_smallstickerclr3), colormap);
}
else
V_DrawStretchyFixedPatch((SPDM_X-1)<<FRACBITS, (SPDM_Y + 5)<<FRACBITS, FRACUNIT*0.765, FRACUNIT*0.55, (V_HUDTRANS|splitflags), (skp_smallsticker3), NULL);
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]);
}
// Kart Z speedo bullshit...
// Draw the Speed counter.
// Warning large if statement below...
else if (cv_newspeedometer.value == 3 && kartzspeedo)
else if (cv_newspeedometer.value == 4 && kartzspeedo)
{
fuspeed = FixedDiv(stplyr->speed, mapobjectscale)/FRACUNIT;
+3
View File
@@ -32,6 +32,9 @@ extern consvar_t cv_stat_xoffset;
extern consvar_t cv_stat_yoffset;
extern consvar_t cv_showstats;
#define NUMSPEEDOSTUFF 6
extern CV_PossibleValue_t speedo_cons_t[NUMSPEEDOSTUFF];
boolean K_IsPlayerLosing(player_t *player);
boolean K_IsPlayerWanted(player_t *player);
void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean solid);
+6 -5
View File
@@ -4498,14 +4498,15 @@ void M_Init(void)
}
#endif
if (!snw_speedo && !kartzspeedo) // why bother?
if (!xtra_speedo && !kartzspeedo && !achi_speedo) // why bother?
OP_SaturnMenu[sm_speedometer].status = IT_GRAYEDOUT;
if (!snw_speedo && kartzspeedo)
OP_SaturnMenu[sm_speedometer].text = "Speedometer (No Small)";
//if (!xtra_speedo && kartzspeedo)
//OP_SaturnMenu[sm_speedometer].text = "Speedometer (No Small)";
if (snw_speedo && !kartzspeedo)
OP_SaturnMenu[sm_speedometer].text = "Speedometer (No PMeter)";
//if (xtra_speedo && !kartzspeedo)
//OP_SaturnMenu[sm_speedometer].text = "Speedometer (No PMeter)";
// idk i dont wanna bother with this tbh lmao
if (!clr_hud){ // uhguauhauguuhee
OP_SaturnMenu[sm_colorhud].status = IT_GRAYEDOUT;