From ed86f2c227bf6526c7a37ee49852f50d6a23897c Mon Sep 17 00:00:00 2001 From: hayaunderscore Date: Sat, 26 Aug 2023 09:34:49 +0800 Subject: [PATCH 01/13] tmm stuff --- src/info.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/info.h b/src/info.h index 9b931ff65..437ffb467 100644 --- a/src/info.h +++ b/src/info.h @@ -229,7 +229,7 @@ void A_NapalmScatter(); void A_SpawnFreshCopy(); // ratio of states to sprites to mobj types is roughly 6 : 1 : 1 -#define NUMMOBJFREESLOTS 1024 +#define NUMMOBJFREESLOTS 2048 #define NUMSPRITEFREESLOTS NUMMOBJFREESLOTS #define NUMSTATEFREESLOTS (NUMMOBJFREESLOTS*8) -- 2.54.0 From ed04181899d3e4e634382614bb86f1537be9505f Mon Sep 17 00:00:00 2001 From: hayaunderscore Date: Sat, 26 Aug 2023 10:02:28 +0800 Subject: [PATCH 02/13] readd smaller position with input display --- src/d_netcmd.c | 1 + src/g_game.h | 1 + src/k_kart.c | 18 ++++++++++++++++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 84bfc364c..955853cc8 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -954,6 +954,7 @@ void D_RegisterClientCommands(void) CV_RegisterVar(&cv_mini_yoffset); CV_RegisterVar(&cv_want_xoffset); CV_RegisterVar(&cv_want_yoffset); + CV_RegisterVar(&cv_showinput); //CV_RegisterVar(&cv_crosshair); //CV_RegisterVar(&cv_crosshair2); diff --git a/src/g_game.h b/src/g_game.h index c99404a35..e8ed07c64 100644 --- a/src/g_game.h +++ b/src/g_game.h @@ -145,6 +145,7 @@ extern consvar_t cv_mini_xoffset; extern consvar_t cv_mini_yoffset; extern consvar_t cv_want_xoffset; extern consvar_t cv_want_yoffset; +extern consvar_t cv_showinput; extern consvar_t cv_driftsparkpulse; extern consvar_t cv_gravstretch; diff --git a/src/k_kart.c b/src/k_kart.c index 1f62f7c72..fcac64877 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -53,6 +53,8 @@ consvar_t cv_mini_yoffset = {"hud_minimap_yoffset", "0", CV_SAVE, NULL, NULL, 0, consvar_t cv_want_xoffset = {"hud_wanted_xoffset", "0", CV_SAVE, NULL, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_want_yoffset = {"hud_wanted_yoffset", "0", CV_SAVE, NULL, NULL, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_showinput = {"showinput", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; + // SOME IMPORTANT VARIABLES DEFINED IN DOOMDEF.H: // gamespeed is cc (0 for easy, 1 for normal, 2 for hard) // franticitems is Frantic Mode items, bool @@ -7775,6 +7777,7 @@ static void K_DrawKartPositionNum(INT32 num) patch_t *localpatch = kp_positionnum[0][0]; //INT32 splitflags = K_calcSplitFlags(V_SNAPTOBOTTOM|V_SNAPTORIGHT); INT32 fx = 0, fy = 0, fflags = 0; + INT32 xoffs = (cv_showinput.value) ? -48 : 0; boolean flipdraw = false; // flip the order we draw it in for MORE splitscreen bs. fun. boolean flipvdraw = false; // used only for 2p splitscreen so overtaking doesn't make 1P's position fly off the screen. boolean overtake = false; @@ -7786,13 +7789,15 @@ static void K_DrawKartPositionNum(INT32 num) } if (splitscreen) scale /= 2; + if (cv_showinput.value && !splitscreen) // anuther one. + scale /= 2; W = FixedMul(W<>FRACBITS; // pain and suffering defined below if (!splitscreen) { - fx = POSI_X; + fx = POSI_X + xoffs; fy = BASEVIDHEIGHT - 8; fflags = V_SNAPTOBOTTOM|V_SNAPTORIGHT; } @@ -9004,9 +9009,12 @@ static void K_drawKartFirstPerson(void) // doesn't need to ever support 4p static void K_drawInput(void) { + if (!cv_showinput.value && !modeattacking) // dont bother + return; + static INT32 pn = 0; INT32 target = 0, splitflags = (V_SNAPTOBOTTOM|V_SNAPTORIGHT); - INT32 x = BASEVIDWIDTH - 32, y = BASEVIDHEIGHT-24, offs, col; + 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]; ticcmd_t *cmd = &stplyr->cmd; @@ -9388,6 +9396,12 @@ void K_drawKartHUD(void) if (!stplyr->spectator && !demo.freecam) // Bottom of the screen elements, don't need in spectate mode { + if (!(splitscreen || demo.title)) +#ifdef HAVE_BLUA + if (LUA_HudEnabled(hud_position)) +#endif + K_drawInput(); + if (demo.title) // Draw title logo instead in demo.titles { INT32 x = BASEVIDWIDTH - 32, y = 128, offs; -- 2.54.0 From 4a74eaa6b02e6bab18c18907041f3e0460b1846d Mon Sep 17 00:00:00 2001 From: hayaunderscore Date: Sat, 26 Aug 2023 13:17:03 +0800 Subject: [PATCH 03/13] mkay --- src/k_kart.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index fcac64877..e8d081848 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -8213,17 +8213,17 @@ static void K_drawKartSpeedometer(void) if (cv_kartspeedometer.value == 1) // Kilometers { convSpeed = FixedDiv(FixedMul(stplyr->speed, 142371), mapobjectscale)/FRACUNIT; // 2.172409058 - V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%3d km/h", convSpeed)); + V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%03d km/h", convSpeed)); } else if (cv_kartspeedometer.value == 2) // Miles { convSpeed = FixedDiv(FixedMul(stplyr->speed, 88465), mapobjectscale)/FRACUNIT; // 1.349868774 - V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%3d mph", convSpeed)); + V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%03d mph", convSpeed)); } else if (cv_kartspeedometer.value == 3) // Fracunits { convSpeed = FixedDiv(stplyr->speed, mapobjectscale)/FRACUNIT; - V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%3d fu/t", convSpeed)); + V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%03d fu/t", convSpeed)); } else if (cv_kartspeedometer.value == 4) // Percent { @@ -8233,7 +8233,7 @@ static void K_drawKartSpeedometer(void) if (stplyr->mo) { convSpeed = (FixedDiv(stplyr->speed, FixedMul(K_GetKartSpeed(stplyr, false), ORIG_FRICTION))*100)>>FRACBITS; - V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%4d P", convSpeed)); + V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%03d P", convSpeed)); } } } -- 2.54.0 From e852034ca8b5102cb81a7ea2abe398442fa68fa0 Mon Sep 17 00:00:00 2001 From: hayaunderscore Date: Sat, 26 Aug 2023 14:33:14 +0800 Subject: [PATCH 04/13] V2 speedometer nonsense you can get extra.kart from me (for now). It's not the same as snowy_files.kart :V --- src/d_main.c | 11 +++++++ src/d_main.h | 2 ++ src/d_netcmd.c | 1 + src/g_game.h | 1 + src/hu_stuff.c | 4 +++ src/hu_stuff.h | 1 + src/k_kart.c | 84 +++++++++++++++++++++++++++++++++++++------------- src/m_menu.c | 39 ++++++++++++----------- src/v_video.c | 22 +++++++++++++ src/v_video.h | 3 ++ 10 files changed, 128 insertions(+), 40 deletions(-) diff --git a/src/d_main.c b/src/d_main.c index 66ad22211..5467ba655 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -957,9 +957,12 @@ static boolean AddIWAD(void) } } +boolean found_extra_kart; + static void IdentifyVersion(void) { const char *srb2waddir = NULL; + found_extra_kart = false; #if (defined (__unix__) && !defined (MSDOS)) || defined (UNIXCOMMON) || defined (HAVE_SDL) // change to the directory where 'srb2.srb' is found @@ -1012,6 +1015,11 @@ static void IdentifyVersion(void) #ifdef USE_PATCH_KART D_AddFile(va(pandf,srb2waddir,"patch.kart"), startupwadfiles); #endif + // completely optional + if (FIL_ReadFileOK(va(pandf,srb2waddir,"extra.kart"))) { + D_AddFile(va(pandf,srb2waddir,"extra.kart"), startupwadfiles); + found_extra_kart = true; + } #if !defined (HAVE_SDL) || defined (HAVE_MIXER) #define MUSICTEST(str) \ @@ -1337,6 +1345,9 @@ void D_SRB2Main(void) #endif //ifndef DEVELOP + if (found_extra_kart) // found the funny, add it in! + mainwads++; + // // search for maps // diff --git a/src/d_main.h b/src/d_main.h index af74e7a69..b64d672de 100644 --- a/src/d_main.h +++ b/src/d_main.h @@ -25,6 +25,8 @@ extern boolean usehome; //Alam: which path? extern const char *pandf; //Alam: how to path? extern char srb2path[256]; //Alam: SRB2's Home +extern boolean found_extra_kart; // for use in k_kart.c + // the infinite loop of D_SRB2Loop() called from win_main for windows version void D_SRB2Loop(void) FUNCNORETURN; diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 955853cc8..a3957b2ec 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -955,6 +955,7 @@ void D_RegisterClientCommands(void) CV_RegisterVar(&cv_want_xoffset); CV_RegisterVar(&cv_want_yoffset); CV_RegisterVar(&cv_showinput); + CV_RegisterVar(&cv_newspeedometer); //CV_RegisterVar(&cv_crosshair); //CV_RegisterVar(&cv_crosshair2); diff --git a/src/g_game.h b/src/g_game.h index e8ed07c64..168d9a2d3 100644 --- a/src/g_game.h +++ b/src/g_game.h @@ -146,6 +146,7 @@ extern consvar_t cv_mini_yoffset; extern consvar_t cv_want_xoffset; extern consvar_t cv_want_yoffset; extern consvar_t cv_showinput; +extern consvar_t cv_newspeedometer; extern consvar_t cv_driftsparkpulse; extern consvar_t cv_gravstretch; diff --git a/src/hu_stuff.c b/src/hu_stuff.c index effb24837..0768cd489 100644 --- a/src/hu_stuff.c +++ b/src/hu_stuff.c @@ -81,6 +81,8 @@ patch_t *pingnum[10]; patch_t *pinggfx[5]; // small ping graphic patch_t *pingmeasure[2]; // ping measurement graphic +patch_t *ranknum[10]; // rank numbers + patch_t *framecounter; patch_t *frameslash; // framerate stuff. Used in screen.c @@ -281,6 +283,8 @@ void HU_LoadGraphics(void) nightsnum[i] = (patch_t *) W_CachePatchName(buffer, PU_HUDGFX); sprintf(buffer, "PINGN%d", i); pingnum[i] = (patch_t *) W_CachePatchName(buffer, PU_HUDGFX); + sprintf(buffer, "OPPRNK0%d", i); + ranknum[i] = (patch_t *) W_CachePatchName(buffer, PU_HUDGFX); } // minus for negative tallnums diff --git a/src/hu_stuff.h b/src/hu_stuff.h index f0ef731b6..e81a519a6 100644 --- a/src/hu_stuff.h +++ b/src/hu_stuff.h @@ -83,6 +83,7 @@ extern patch_t *hu_font[HU_FONTSIZE], *kart_font[KART_FONTSIZE], *tny_font[HU_FO extern patch_t *tallnum[10]; extern patch_t *pingnum[10]; extern patch_t *pinggfx[5]; +extern patch_t *ranknum[10]; extern patch_t *nightsnum[10]; extern patch_t *framecounter; extern patch_t *frameslash; diff --git a/src/k_kart.c b/src/k_kart.c index e8d081848..804110ff1 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -22,6 +22,7 @@ #include "f_finale.h" #include "lua_hud.h" // For Lua hud checks #include "lua_hook.h" // For MobjDamage and ShouldDamage +#include "d_main.h" // found_extra_kart // Hud offset cvars consvar_t cv_item_xoffset = {"hud_item_xoffset", "0", CV_SAVE, NULL, NULL, 0, NULL, NULL, 0, 0, NULL}; @@ -54,6 +55,7 @@ consvar_t cv_want_xoffset = {"hud_wanted_xoffset", "0", CV_SAVE, NULL, NULL, 0, consvar_t cv_want_yoffset = {"hud_wanted_yoffset", "0", CV_SAVE, NULL, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_showinput = {"showinput", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_newspeedometer = {"newspeedometer", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; // SOME IMPORTANT VARIABLES DEFINED IN DOOMDEF.H: // gamespeed is cc (0 for easy, 1 for normal, 2 for hard) @@ -6819,6 +6821,9 @@ static patch_t *kp_lapanim_hand[3]; static patch_t *kp_yougotem; +static patch_t *skp_smallsticker; +static patch_t *skp_speedpatches[5]; + void K_LoadKartHUDGraphics(void) { INT32 i, j; @@ -7065,6 +7070,16 @@ void K_LoadKartHUDGraphics(void) } kp_yougotem = (patch_t *) W_CachePatchName("YOUGOTEM", PU_HUDGFX); + + if (found_extra_kart) // 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 @@ -8207,35 +8222,60 @@ static void K_drawKartLaps(void) static void K_drawKartSpeedometer(void) { - fixed_t convSpeed; + // why? + if (cv_kartspeedometer.value == 0) + return; + + fixed_t convSpeed = 0; + INT32 speedtype = 0; INT32 splitflags = K_calcSplitFlags(V_SNAPTOBOTTOM|V_SNAPTOLEFT); - if (cv_kartspeedometer.value == 1) // Kilometers + switch (cv_kartspeedometer.value) { - convSpeed = FixedDiv(FixedMul(stplyr->speed, 142371), mapobjectscale)/FRACUNIT; // 2.172409058 - V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%03d km/h", convSpeed)); + case 1: + convSpeed = FixedDiv(FixedMul(stplyr->speed, 142371), mapobjectscale)/FRACUNIT; // 2.172409058 + speedtype = 1; + break; + case 2: + convSpeed = FixedDiv(FixedMul(stplyr->speed, 142371), mapobjectscale)/FRACUNIT; // 2.172409058 + speedtype = 2; + break; + case 3: + convSpeed = FixedDiv(FixedMul(stplyr->speed, 88465), mapobjectscale)/FRACUNIT; // 1.349868774 + speedtype = 3; + break; + case 4: + if (stplyr->mo) + convSpeed = (FixedDiv(stplyr->speed, FixedMul(K_GetKartSpeed(stplyr, false), ORIG_FRICTION))*100)>>FRACBITS; + speedtype = 4; + break; + default: + break; } - else if (cv_kartspeedometer.value == 2) // Miles + + // man. + if ((!cv_newspeedometer.value) || (cv_newspeedometer.value && !found_extra_kart)) { - convSpeed = FixedDiv(FixedMul(stplyr->speed, 88465), mapobjectscale)/FRACUNIT; // 1.349868774 - V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%03d mph", convSpeed)); - } - else if (cv_kartspeedometer.value == 3) // Fracunits - { - convSpeed = FixedDiv(stplyr->speed, mapobjectscale)/FRACUNIT; - V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%03d fu/t", convSpeed)); - } - else if (cv_kartspeedometer.value == 4) // Percent - { - // so code breaks if someone attempts to join from spectator since it sets - // their mo to NULL - // so can we just check if their mo is NULL???? - if (stplyr->mo) - { - convSpeed = (FixedDiv(stplyr->speed, FixedMul(K_GetKartSpeed(stplyr, false), ORIG_FRICTION))*100)>>FRACBITS; - V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%03d P", convSpeed)); + switch (speedtype) { + case 1: + V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%03d km/h", convSpeed)); + case 2: + V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%03d mph", convSpeed)); + case 3: + V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%03d fu/t", convSpeed)); + case 4: // if extra.kart is found, use its included % symbol + if (!found_extra_kart) + V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%03d P", convSpeed)); + else + V_DrawKartString(SPDM_X, SPDM_Y, V_HUDTRANS|splitflags, va("%03d %%", convSpeed)); } } + else if (cv_newspeedometer.value && found_extra_kart) { // why bother if we dont? + + 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]); + } } static void K_drawKartBumpersOrKarma(void) diff --git a/src/m_menu.c b/src/m_menu.c index a68d11b52..4a0ecb71a 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -1694,14 +1694,15 @@ static menuitem_t OP_MonitorToggleMenu[] = static menuitem_t OP_SaturnMenu[] = { {IT_HEADER, NULL, "Saturn Options", NULL, 0}, - {IT_STRING | IT_CVAR, NULL, "Serverqueue waittime", &cv_connectawaittime, 30}, + {IT_STRING | IT_CVAR, NULL, "Serverqueue waittime", &cv_connectawaittime, 20}, //{IT_STRING | IT_CVAR, NULL, "Addon Download Speed", &cv_downloadspeed, 55}, //no idea why you would wanna change it anyways - {IT_STRING | IT_CVAR, NULL, "Skin Select Spinning Speed", &cv_skinselectspin, 50}, - {IT_STRING | IT_CVAR, NULL, "No Midnight Channel Flicker", &cv_lessflicker, 75}, - {IT_SUBMENU|IT_STRING, NULL, "Player distortion...", &OP_PlayerDistortDef, 100}, - {IT_SUBMENU|IT_STRING, NULL, "Hud Offsets...", &OP_HudOffsetDef, 115}, + {IT_STRING | IT_CVAR, NULL, "Skin Select Spinning Speed", &cv_skinselectspin, 40}, + {IT_STRING | IT_CVAR, NULL, "Input Display outside of RA", &cv_showinput, 50}, + {IT_STRING | IT_CVAR, NULL, "No Midnight Channel Flicker", &cv_lessflicker, 60}, + {IT_SUBMENU|IT_STRING, NULL, "Player distortion...", &OP_PlayerDistortDef, 80}, + {IT_SUBMENU|IT_STRING, NULL, "Hud Offsets...", &OP_HudOffsetDef, 90}, - {IT_SUBMENU|IT_STRING, NULL, "Saturn Credits", &OP_SaturnCreditsDef, 155}, // uwu + {IT_SUBMENU|IT_STRING, NULL, "Saturn Credits", &OP_SaturnCreditsDef, 110}, // uwu }; static menuitem_t OP_PlayerDistortMenu[] = @@ -1745,25 +1746,27 @@ static menuitem_t OP_SaturnCreditsMenu[] = {IT_HEADER, NULL, "Main Devs <3", NULL, 20}, - {IT_STRING, NULL, "alufolie91 aka Alug", NULL, 30}, - {IT_STRING, NULL, "Indev", NULL, 40}, + {IT_STRING2+IT_SPACE, NULL, "alufolie91 aka Alug", NULL, 30}, + {IT_STRING2+IT_SPACE, NULL, "Indev", NULL, 40}, {IT_HEADER, NULL, "Testers <3", NULL, 60}, - {IT_STRING, NULL, "Sunflower aka AnimeSonic", NULL, 70}, - {IT_STRING, NULL, "Yuz aka Yuzler", NULL, 80}, - {IT_STRING, NULL, "Democrab", NULL, 90}, - {IT_STRING, NULL, "EXpand aka Maver", NULL, 100}, + {IT_STRING2+IT_SPACE, NULL, "Sunflower aka AnimeSonic", NULL, 70}, + {IT_STRING2+IT_SPACE, NULL, "Yuz aka Yuzler", NULL, 80}, + {IT_STRING2+IT_SPACE, NULL, "Democrab", NULL, 90}, + {IT_STRING2+IT_SPACE, NULL, "EXpand aka Maver", NULL, 100}, {IT_HEADER, NULL, "Special Thanks <3", NULL, 120}, - {IT_STRING, NULL, "xyzzy", NULL, 130}, - {IT_STRING, NULL, "Haya", NULL, 140}, - {IT_STRING, NULL, "Galactice", NULL, 150}, - {IT_STRING, NULL, "Himie and", NULL, 160}, - {IT_STRING, NULL, "The Moe Mansion / Birdhouse Team", NULL, 170}, - {IT_STRING, NULL, "All of Sunflower's Garden", NULL, 180}, + {IT_STRING2+IT_SPACE, NULL, "xyzzy", NULL, 130}, + {IT_STRING2+IT_SPACE, NULL, "Haya", NULL, 140}, + {IT_STRING2+IT_SPACE, NULL, "Galactice", NULL, 150}, + {IT_STRING2+IT_SPACE, NULL, "Himie and", NULL, 160}, + {IT_STRING2+IT_SPACE, NULL, "The Moe Mansion / Birdhouse Team", NULL, 170}, + {IT_STRING2+IT_SPACE, NULL, "All of Sunflower's Garden", NULL, 180}, + {IT_STRING+IT_SPACE, NULL, "", NULL, 190}, // dummy text + {IT_STRING, NULL, "", NULL, 200}, // dummy text II }; static menuitem_t OP_BirdMenu[] = diff --git a/src/v_video.c b/src/v_video.c index 0b5231c02..91c47c3c4 100644 --- a/src/v_video.c +++ b/src/v_video.c @@ -2053,6 +2053,28 @@ INT32 V_DrawPingNum(INT32 x, INT32 y, INT32 flags, INT32 num, const UINT8 *color return x; } +// Jaden: Draw a number using the position numbers. +// +void V_DrawRankNum(INT32 x, INT32 y, INT32 flags, INT32 num, INT32 digits, const UINT8 *colormap) +{ + INT32 w = SHORT(ranknum[0]->width) - 1; + + if (flags & V_NOSCALESTART) + w *= vid.dupx; + + if (num < 0) + num = -num; + + // draw the number + do + { + x -= (w - 1); + + V_DrawFixedPatch(x << FRACBITS, y << FRACBITS, FRACUNIT, flags, ranknum[num % 10], colormap); + num /= 10; + } while (--digits); +} + // Write a string using the credit font // NOTE: the text is centered for screens larger than the base width // diff --git a/src/v_video.h b/src/v_video.h index f8024c8a2..8593f9f77 100644 --- a/src/v_video.h +++ b/src/v_video.h @@ -212,6 +212,9 @@ INT32 V_DrawPingNum(INT32 x, INT32 y, INT32 flags, INT32 num, const UINT8 *color INT32 V_LevelNameWidth(const char *string); INT32 V_LevelNameHeight(const char *string); +// Rank numbers. +void V_DrawRankNum(INT32 x, INT32 y, INT32 flags, INT32 num, INT32 digits, const UINT8 *colormap); + void V_DrawCreditString(fixed_t x, fixed_t y, INT32 option, const char *string); INT32 V_CreditStringWidth(const char *string); -- 2.54.0 From 53ead1007e91a48bbbe8e4dad9f9d02dd000e4f4 Mon Sep 17 00:00:00 2001 From: hayaunderscore Date: Sat, 26 Aug 2023 14:38:46 +0800 Subject: [PATCH 05/13] forgor :skull --- src/m_menu.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/m_menu.c b/src/m_menu.c index 4a0ecb71a..2e8ef4ab0 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -1698,11 +1698,12 @@ static menuitem_t OP_SaturnMenu[] = //{IT_STRING | IT_CVAR, NULL, "Addon Download Speed", &cv_downloadspeed, 55}, //no idea why you would wanna change it anyways {IT_STRING | IT_CVAR, NULL, "Skin Select Spinning Speed", &cv_skinselectspin, 40}, {IT_STRING | IT_CVAR, NULL, "Input Display outside of RA", &cv_showinput, 50}, - {IT_STRING | IT_CVAR, NULL, "No Midnight Channel Flicker", &cv_lessflicker, 60}, - {IT_SUBMENU|IT_STRING, NULL, "Player distortion...", &OP_PlayerDistortDef, 80}, - {IT_SUBMENU|IT_STRING, NULL, "Hud Offsets...", &OP_HudOffsetDef, 90}, + {IT_STRING | IT_CVAR, NULL, "V2-ish Speedometer", &cv_newspeedometer, 60}, + {IT_STRING | IT_CVAR, NULL, "No Midnight Channel Flicker", &cv_lessflicker, 70}, + {IT_SUBMENU|IT_STRING, NULL, "Player distortion...", &OP_PlayerDistortDef, 90}, + {IT_SUBMENU|IT_STRING, NULL, "Hud Offsets...", &OP_HudOffsetDef, 100}, - {IT_SUBMENU|IT_STRING, NULL, "Saturn Credits", &OP_SaturnCreditsDef, 110}, // uwu + {IT_SUBMENU|IT_STRING, NULL, "Saturn Credits", &OP_SaturnCreditsDef, 120}, // uwu }; static menuitem_t OP_PlayerDistortMenu[] = -- 2.54.0 From b626c095d0562c97b33d47a736f20eb472cf6fb2 Mon Sep 17 00:00:00 2001 From: hayaunderscore Date: Sun, 27 Aug 2023 08:26:57 +0800 Subject: [PATCH 06/13] Gray out speedometer option --- src/m_menu.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/m_menu.c b/src/m_menu.c index 2e8ef4ab0..668052e39 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -1706,6 +1706,19 @@ static menuitem_t OP_SaturnMenu[] = {IT_SUBMENU|IT_STRING, NULL, "Saturn Credits", &OP_SaturnCreditsDef, 120}, // uwu }; +enum +{ + sm_header, + sm_waittime, + sm_skinselspeed, + sm_input, + sm_speedometer, + sm_pisschannel, + sm_distortionmenu, + sm_hudoffsets, + sm_credits, +}; + static menuitem_t OP_PlayerDistortMenu[] = { {IT_HEADER, NULL, "Player Distortion", NULL, 0}, @@ -3830,6 +3843,9 @@ void M_Init(void) OP_VideoOptionsMenu[op_video_ogl].status = IT_DISABLED; #endif + if (!found_extra_kart) // why bother? + OP_SaturnMenu[sm_speedometer].status = IT_GRAYEDOUT; + #ifndef NONET CV_RegisterVar(&cv_serversort); #endif @@ -11054,7 +11070,7 @@ static void M_DrawJoystick(void) compareval4 = cv_usejoystick4.value; compareval3 = cv_usejoystick3.value; compareval2 = cv_usejoystick2.value; - compareval = cv_usejoystick.value + compareval = cv_usejoystick.value; #endif if ((setupcontrolplayer == 4 && (i == compareval4)) -- 2.54.0 From da1df719e3e39b7b316783444335ad9c9bd81e39 Mon Sep 17 00:00:00 2001 From: hayaunderscore Date: Sun, 27 Aug 2023 09:12:11 +0800 Subject: [PATCH 07/13] HARDCODED SALTYHOP `hardcodehop on` on console :) --- src/d_netcmd.c | 3 +++ src/g_game.h | 3 +++ src/k_kart.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/p_mobj.h | 9 ++++++++ 4 files changed, 77 insertions(+) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index a3957b2ec..c9989137d 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -957,6 +957,9 @@ void D_RegisterClientCommands(void) CV_RegisterVar(&cv_showinput); CV_RegisterVar(&cv_newspeedometer); + CV_RegisterVar(&cv_saltyhop); + CV_RegisterVar(&cv_saltyhopsfx); + //CV_RegisterVar(&cv_crosshair); //CV_RegisterVar(&cv_crosshair2); //CV_RegisterVar(&cv_crosshair3); diff --git a/src/g_game.h b/src/g_game.h index 168d9a2d3..f9d160e7f 100644 --- a/src/g_game.h +++ b/src/g_game.h @@ -148,6 +148,9 @@ extern consvar_t cv_want_yoffset; extern consvar_t cv_showinput; extern consvar_t cv_newspeedometer; +extern consvar_t cv_saltyhop; +extern consvar_t cv_saltyhopsfx; + extern consvar_t cv_driftsparkpulse; extern consvar_t cv_gravstretch; extern consvar_t cv_sloperoll; diff --git a/src/k_kart.c b/src/k_kart.c index 804110ff1..d676e6a69 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -57,6 +57,9 @@ consvar_t cv_want_yoffset = {"hud_wanted_yoffset", "0", CV_SAVE, NULL, NULL, 0, consvar_t cv_showinput = {"showinput", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_newspeedometer = {"newspeedometer", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_saltyhop = {"hardcodehop", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_saltyhopsfx = {"hardcodehopsfx", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; + // SOME IMPORTANT VARIABLES DEFINED IN DOOMDEF.H: // gamespeed is cc (0 for easy, 1 for normal, 2 for hard) // franticitems is Frantic Mode items, bool @@ -3041,6 +3044,61 @@ static void K_StretchPlayerGravity(player_t *p) } } +static void K_QuiteSaltyHop(player_t *p) +{ + // what the fuck is this haya + fixed_t mos = mapobjectscale; + + // ready? + if (!p->kartstuff[k_jmp]) { + p->mo->salty_ready = true; + p->mo->salty_tapping = false; + } else if (p->mo->salty_ready) { + p->mo->salty_ready = false; + p->mo->salty_tapping = true; + } else { + p->mo->salty_tapping = false; + } + + // GO! + if (!p->mo->init_salty) { + p->mo->salty_jump = false; + p->mo->salty_zoffset = 0; + p->mo->salty_momz = 0; + p->mo->init_salty = true; + } + else if (p->mo->salty_jump) { + if (p->mo->eflags & MFE_JUSTHITFLOOR) { + p->mo->salty_zoffset = 0; + } else if (P_IsObjectOnGround(p->mo)) { + p->mo->salty_zoffset += p->mo->salty_momz; + p->mo->salty_momz -= (mos*3/2); + } else { + p->mo->salty_zoffset *= 49/50; + p->mo->salty_momz = 0; + } + if (p->mo->salty_zoffset <= 0) { + if (!(p->mo->eflags & MFE_JUSTHITFLOOR) && P_IsObjectOnGround(p->mo) && cv_saltyhopsfx.value) + S_StartSound(p->mo, sfx_s268); + p->mo->salty_jump = false; + p->mo->salty_zoffset = 0; + p->mo->salty_momz = 0; + } + p->mo->spriteyoffset = p->mo->salty_zoffset*P_MobjFlip(p->mo); + if (S_SoundPlaying(p->mo, sfx_screec)) + S_StopSoundByID(p->mo, sfx_screec); + if (S_SoundPlaying(p->mo, sfx_drift)) + S_StopSoundByID(p->mo, sfx_drift); + } + else if (p->mo->salty_tapping && P_IsObjectOnGround(p->mo) && !p->kartstuff[k_spinouttimer] && !p->kartstuff[k_squishedtimer]) { + p->mo->salty_jump = true; + p->mo->salty_zoffset = 0; + p->mo->salty_momz = 6*mos; + if (cv_saltyhopsfx.value) + S_StartSound(p->mo, sfx_s25a); + } +} + static INT32 K_FindPlayerNum(player_t *plyr) { INT32 i; @@ -6396,6 +6454,10 @@ void K_MoveKartPlayer(player_t *player, boolean onground) player->kartstuff[k_boostcharge] = 0; } + + // salty hop! i wanna die + if (cv_saltyhop.value) + K_QuiteSaltyHop(player); } void K_CalculateBattleWanted(void) diff --git a/src/p_mobj.h b/src/p_mobj.h index 872c9dd5e..2f3ab36a6 100644 --- a/src/p_mobj.h +++ b/src/p_mobj.h @@ -23,6 +23,7 @@ // We need the WAD data structure for Map things, from the THINGS lump. #include "doomdata.h" +#include "doomtype.h" // States are tied to finite states are tied to animation frames. // Needs precompiled tables/data structures. @@ -296,6 +297,14 @@ typedef struct mobj_s fixed_t old_spritexscale, old_spriteyscale; fixed_t old_spritexoffset, old_spriteyoffset; + // saltyhop! hardcode edition + boolean salty_ready; + boolean salty_tapping; + fixed_t salty_zoffset; + fixed_t salty_momz; + boolean salty_jump; + boolean init_salty; + fixed_t realxscale, realyscale; // funn-E streeetch fixed_t stretchslam; // "squish" effect when you land -- 2.54.0 From 59f9705b93ac629b353e2d0d590242483852fb6e Mon Sep 17 00:00:00 2001 From: hayaunderscore Date: Sun, 27 Aug 2023 09:57:08 +0800 Subject: [PATCH 08/13] Distracting sprite scaling for saltyhop Mayo asked for this. --- src/k_kart.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/k_kart.c b/src/k_kart.c index d676e6a69..3661928d0 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3083,6 +3083,12 @@ static void K_QuiteSaltyHop(player_t *p) p->mo->salty_jump = false; p->mo->salty_zoffset = 0; p->mo->salty_momz = 0; + // shlamma damma + p->mo->stretchslam += (8*mos); + } else if (p->mo->salty_zoffset >= 0) { + // goofy ahh hack + p->mo->spriteyscale += (mos/8); + p->mo->spritexscale -= (mos/8); } p->mo->spriteyoffset = p->mo->salty_zoffset*P_MobjFlip(p->mo); if (S_SoundPlaying(p->mo, sfx_screec)) -- 2.54.0 From e46391992ad02173076898bc8c78b07f2da9474e Mon Sep 17 00:00:00 2001 From: hayaunderscore Date: Sun, 27 Aug 2023 12:39:00 +0800 Subject: [PATCH 09/13] fix precipitation --- src/p_mobj.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/p_mobj.h b/src/p_mobj.h index 2f3ab36a6..76dc72c58 100644 --- a/src/p_mobj.h +++ b/src/p_mobj.h @@ -442,6 +442,14 @@ typedef struct precipmobj_s fixed_t old_spritexscale, old_spriteyscale; fixed_t old_spritexoffset, old_spriteyoffset; + // saltyhop! hardcode edition + boolean salty_ready; + boolean salty_tapping; + fixed_t salty_zoffset; + fixed_t salty_momz; + boolean salty_jump; + boolean init_salty; + fixed_t realxscale, realyscale; // funn-E streeetch fixed_t stretchslam; // "squish" effect when you land -- 2.54.0 From 9f4df6b80d7e6596c225e96a96eb67b5aed879a8 Mon Sep 17 00:00:00 2001 From: hayaunderscore Date: Sun, 27 Aug 2023 15:18:12 +0800 Subject: [PATCH 10/13] nuh uh --- src/k_kart.c | 4 ++-- src/r_fps.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 3661928d0..810f24993 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3047,7 +3047,7 @@ static void K_StretchPlayerGravity(player_t *p) static void K_QuiteSaltyHop(player_t *p) { // what the fuck is this haya - fixed_t mos = mapobjectscale; + fixed_t mos = FRACUNIT; // doesnt work correctly if it isnt :/ // ready? if (!p->kartstuff[k_jmp]) { @@ -3074,7 +3074,7 @@ static void K_QuiteSaltyHop(player_t *p) p->mo->salty_zoffset += p->mo->salty_momz; p->mo->salty_momz -= (mos*3/2); } else { - p->mo->salty_zoffset *= 49/50; + p->mo->salty_zoffset *= (49/50)*mos; p->mo->salty_momz = 0; } if (p->mo->salty_zoffset <= 0) { diff --git a/src/r_fps.c b/src/r_fps.c index ce7d08a7a..67865d016 100644 --- a/src/r_fps.c +++ b/src/r_fps.c @@ -293,13 +293,13 @@ void R_InterpolateMobjState(mobj_t *mobj, fixed_t frac, interpmobjstate_t *out) out->scale = mobj->resetinterp ? mobj->scale : R_LerpFixed(mobj->old_scale, mobj->scale, frac); out->spritexscale = mobj->resetinterp ? mobj->spritexscale : R_LerpFixed(mobj->old_spritexscale, mobj->spritexscale, frac); out->spriteyscale = mobj->resetinterp ? mobj->spriteyscale : R_LerpFixed(mobj->old_spriteyscale, mobj->spriteyscale, frac); - //out->spritexoffset = mobj->resetinterp ? mobj->spritexoffset : R_LerpFixed(mobj->old_spritexoffset, mobj->spritexoffset, frac); - //out->spriteyoffset = mobj->resetinterp ? mobj->spriteyoffset : R_LerpFixed(mobj->old_spriteyoffset, mobj->spriteyoffset, frac); + out->spritexoffset = mobj->resetinterp ? mobj->spritexoffset : R_LerpFixed(mobj->old_spritexoffset, mobj->spritexoffset, frac); + out->spriteyoffset = mobj->resetinterp ? mobj->spriteyoffset : R_LerpFixed(mobj->old_spriteyoffset, mobj->spriteyoffset, frac); // Sprite offsets are not interpolated until we have a way to interpolate them explicitly in Lua. // It seems existing mods visually break more often than not if it is interpolated. - out->spritexoffset = mobj->spritexoffset; - out->spriteyoffset = mobj->spriteyoffset; + //out->spritexoffset = mobj->spritexoffset; + //out->spriteyoffset = mobj->spriteyoffset; out->subsector = R_PointInSubsector(out->x, out->y); -- 2.54.0 From 8117b528abf0989ea0c1c35e4f2643ff996b94f2 Mon Sep 17 00:00:00 2001 From: hayaunderscore Date: Sun, 27 Aug 2023 15:22:46 +0800 Subject: [PATCH 11/13] fix hanged yoffset upon turning off saltyhop mid start drift --- src/k_kart.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/k_kart.c b/src/k_kart.c index 810f24993..bcea0b0f4 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -6464,6 +6464,12 @@ void K_MoveKartPlayer(player_t *player, boolean onground) // salty hop! i wanna die if (cv_saltyhop.value) K_QuiteSaltyHop(player); + else { + player->mo->spriteyoffset = 0; + player->mo->salty_jump = false; + player->mo->salty_zoffset = 0; + player->mo->salty_momz = 0; + } } void K_CalculateBattleWanted(void) -- 2.54.0 From 6cbd7503f9e010602af4fa25ca674a2673524d25 Mon Sep 17 00:00:00 2001 From: haya <126386046+hayaunderscore@users.noreply.github.com> Date: Mon, 28 Aug 2023 01:03:19 +0800 Subject: [PATCH 12/13] revert freeslot limit from master that was for tmm sorry --- src/info.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/info.h b/src/info.h index 437ffb467..9b931ff65 100644 --- a/src/info.h +++ b/src/info.h @@ -229,7 +229,7 @@ void A_NapalmScatter(); void A_SpawnFreshCopy(); // ratio of states to sprites to mobj types is roughly 6 : 1 : 1 -#define NUMMOBJFREESLOTS 2048 +#define NUMMOBJFREESLOTS 1024 #define NUMSPRITEFREESLOTS NUMMOBJFREESLOTS #define NUMSTATEFREESLOTS (NUMMOBJFREESLOTS*8) -- 2.54.0 From e3b1dba13c047078331151fb74524fc9803663f8 Mon Sep 17 00:00:00 2001 From: haya <126386046+hayaunderscore@users.noreply.github.com> Date: Mon, 28 Aug 2023 01:06:37 +0800 Subject: [PATCH 13/13] Remove precipitation salty values As per suggestion --- src/p_mobj.h | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/src/p_mobj.h b/src/p_mobj.h index 76dc72c58..5b7b02a88 100644 --- a/src/p_mobj.h +++ b/src/p_mobj.h @@ -297,14 +297,6 @@ typedef struct mobj_s fixed_t old_spritexscale, old_spriteyscale; fixed_t old_spritexoffset, old_spriteyoffset; - // saltyhop! hardcode edition - boolean salty_ready; - boolean salty_tapping; - fixed_t salty_zoffset; - fixed_t salty_momz; - boolean salty_jump; - boolean init_salty; - fixed_t realxscale, realyscale; // funn-E streeetch fixed_t stretchslam; // "squish" effect when you land @@ -403,6 +395,14 @@ typedef struct mobj_s boolean colorized; // Whether the mobj uses the rainbow colormap boolean rollmodel; // OpenGL: Should this model rotate? + // saltyhop! hardcode edition + boolean salty_ready; + boolean salty_tapping; + fixed_t salty_zoffset; + fixed_t salty_momz; + boolean salty_jump; + boolean init_salty; + // WARNING: New fields must be added separately to savegame and Lua. } mobj_t; @@ -442,14 +442,6 @@ typedef struct precipmobj_s fixed_t old_spritexscale, old_spriteyscale; fixed_t old_spritexoffset, old_spriteyoffset; - // saltyhop! hardcode edition - boolean salty_ready; - boolean salty_tapping; - fixed_t salty_zoffset; - fixed_t salty_momz; - boolean salty_jump; - boolean init_salty; - fixed_t realxscale, realyscale; // funn-E streeetch fixed_t stretchslam; // "squish" effect when you land -- 2.54.0