From 155fe22bd75dd757abf149ca415b940e407d6b75 Mon Sep 17 00:00:00 2001 From: Ashnal Date: Mon, 19 Aug 2024 19:48:02 -0400 Subject: [PATCH] K_drawDistributionDebugger is NOT netsafe --- src/k_hud.cpp | 79 ++++++++++++++++++++++-------------------------- src/k_hud.h | 2 +- src/k_roulette.c | 11 +++++++ 3 files changed, 48 insertions(+), 44 deletions(-) diff --git a/src/k_hud.cpp b/src/k_hud.cpp index 4ee6e65c0..41665e707 100644 --- a/src/k_hud.cpp +++ b/src/k_hud.cpp @@ -5698,46 +5698,46 @@ static void K_drawDistributionDebugger(void) K_FillItemRouletteData(stplyr, &rouletteData, false); - // for (i = 0; i < rouletteData.itemListLen; i++) - // { - // const kartitems_t item = static_cast(rouletteData.itemList[i]); - // UINT8 amount = 1; + for (i = 0; i < rouletteData.itemListLen; i++) + { + const kartitems_t item = static_cast(rouletteData.itemList[i]); + UINT8 amount = 1; - // if (y > (BASEVIDHEIGHT << FRACBITS) - space - pad) - // { - // x += space; - // y = -pad; - // } + if (y > (BASEVIDHEIGHT << FRACBITS) - space - pad) + { + x += space; + y = -pad; + } - // V_DrawFixedPatch(x, y, scale, V_SNAPTOTOP, - // K_GetSmallStaticCachedItemPatch(item), NULL); + V_DrawFixedPatch(x, y, scale, V_SNAPTOTOP, + K_GetSmallStaticCachedItemPatch(item), NULL); - // // Display amount for multi-items - // amount = K_ItemResultToAmount(item); - // if (amount > 1) - // { - // V_DrawStringScaled( - // x + (18 * scale), - // y + (23 * scale), - // scale, FRACUNIT, FRACUNIT, - // V_SNAPTOTOP, - // NULL, HU_FONT, - // va("x%d", amount) - // ); - // } + // Display amount for multi-items + amount = K_ItemResultToAmount(item); + if (amount > 1) + { + V_DrawStringScaled( + x + (18 * scale), + y + (23 * scale), + scale, FRACUNIT, FRACUNIT, + V_SNAPTOTOP, + NULL, HU_FONT, + va("x%d", amount) + ); + } - // y += space; - // } + y += space; + } - // V_DrawString((x >> FRACBITS) + 20, 2, V_SNAPTOTOP, va("useOdds[%u]", rouletteData.useOdds)); - // V_DrawString((x >> FRACBITS) + 20, 10, V_SNAPTOTOP, va("speed = %u", rouletteData.speed)); + V_DrawString((x >> FRACBITS) + 20, 2, V_SNAPTOTOP, va("useOdds[%u]", rouletteData.useOdds)); + V_DrawString((x >> FRACBITS) + 20, 10, V_SNAPTOTOP, va("speed = %u", rouletteData.speed)); - // V_DrawString((x >> FRACBITS) + 20, 22, V_SNAPTOTOP, va("baseDist = %u", rouletteData.baseDist)); - // V_DrawString((x >> FRACBITS) + 20, 30, V_SNAPTOTOP, va("dist = %u", rouletteData.dist)); + V_DrawString((x >> FRACBITS) + 20, 22, V_SNAPTOTOP, va("baseDist = %u", rouletteData.baseDist)); + V_DrawString((x >> FRACBITS) + 20, 30, V_SNAPTOTOP, va("dist = %u", rouletteData.dist)); - // V_DrawString((x >> FRACBITS) + 20, 42, V_SNAPTOTOP, va("firstDist = %u", rouletteData.firstDist)); - // V_DrawString((x >> FRACBITS) + 20, 50, V_SNAPTOTOP, va("secondDist = %u", rouletteData.secondDist)); - // V_DrawString((x >> FRACBITS) + 20, 58, V_SNAPTOTOP, va("secondToFirst = %u", rouletteData.secondToFirst)); + V_DrawString((x >> FRACBITS) + 20, 42, V_SNAPTOTOP, va("firstDist = %u", rouletteData.firstDist)); + V_DrawString((x >> FRACBITS) + 20, 50, V_SNAPTOTOP, va("secondDist = %u", rouletteData.secondDist)); + V_DrawString((x >> FRACBITS) + 20, 58, V_SNAPTOTOP, va("secondToFirst = %u", rouletteData.secondToFirst)); if (rouletteData.preexpuseOdds > rouletteData.useOdds) { @@ -5748,13 +5748,6 @@ static void K_drawDistributionDebugger(void) V_DrawString((x >> FRACBITS) + 20, 10, V_SNAPTOTOP, va("items BOOSTED %u -> %u", rouletteData.preexpuseOdds, rouletteData.useOdds)); } - /* - V_DrawString((x >> FRACBITS) + 20, 10, V_SNAPTOTOP, va("pre-exp dist %u", rouletteData.preexpdist)); - V_DrawString((x >> FRACBITS) + 20, 18, V_SNAPTOTOP, va("pre-exp useOdds %u", rouletteData.preexpuseOdds)); - V_DrawString((x >> FRACBITS) + 20, 26, V_SNAPTOTOP, va(" dist %u", rouletteData.dist)); - V_DrawString((x >> FRACBITS) + 20, 34, V_SNAPTOTOP, va(" useOdds %u", rouletteData.useOdds)); - */ - #ifndef ITEM_LIST_SIZE Z_Free(rouletteData.itemList); #endif @@ -6060,7 +6053,7 @@ void K_ClearPersistentMessages() } // Return value can be used for "paired" splitscreen messages, true = was displayed -void K_AddMessageForPlayer(player_t *player, const char *msg, boolean interrupt, boolean persist) +void K_AddMessageForPlayer(const player_t *player, const char *msg, boolean interrupt, boolean persist) { if (!player) return; @@ -6525,11 +6518,11 @@ void K_drawKartHUD(void) K_drawInput(); } - // if (cv_kartdebugdistribution.value) + if (cv_kartdebugdistribution.value) K_drawDistributionDebugger(); // temp debug - V_DrawString(8, 2, V_SNAPTOTOP, va("Exp/Dist mult: %.2f", FixedToFloat(stplyr->exp))); + V_DrawSmallString(8, 2, V_SNAPTOTOP, va("Exp/Dist mult: %.2f", FixedToFloat(stplyr->exp))); // V_DrawSmallString(8, 4, V_SNAPTOTOP, va("Exp/Dist mult: %.2f", FixedToFloat(stplyr->exp))); if (cv_kartdebugnodes.value) diff --git a/src/k_hud.h b/src/k_hud.h index 07cea4774..8d2b38819 100644 --- a/src/k_hud.h +++ b/src/k_hud.h @@ -101,7 +101,7 @@ extern patch_t *kp_facenum[MAXPLAYERS+1]; extern patch_t *kp_unknownminimap; void K_AddMessage(const char *msg, boolean interrupt, boolean persist); -void K_AddMessageForPlayer(player_t *player, const char *msg, boolean interrupt, boolean persist); +void K_AddMessageForPlayer(const player_t *player, const char *msg, boolean interrupt, boolean persist); void K_ClearPersistentMessages(void); void K_ClearPersistentMessageForPlayer(player_t *player); void K_TickMessages(void); diff --git a/src/k_roulette.c b/src/k_roulette.c index 84ec445d4..685346dc4 100644 --- a/src/k_roulette.c +++ b/src/k_roulette.c @@ -1493,6 +1493,17 @@ void K_FillItemRouletteData(const player_t *player, itemroulette_t *const roulet roulette->dist = FixedMul(roulette->preexpdist, max(player->exp, FRACUNIT/2)); roulette->useOdds = K_FindUseodds(player, roulette); + if (roulette->preexpuseOdds > roulette->useOdds) + { + K_AddMessageForPlayer(player, va("items NERFED %u -> %u", roulette->preexpuseOdds, roulette->useOdds), true, false); + CONS_Printf("%s items NERFED %u -> %u", player_names[player - players], roulette->preexpuseOdds, roulette->useOdds); + } + else if (roulette->preexpuseOdds < roulette->useOdds) + { + K_AddMessageForPlayer(player, va("items BOOSTED %u -> %u", roulette->preexpuseOdds, roulette->useOdds), true, false); + CONS_Printf("%s items BOOSTED %u -> %u", player_names[player - players], roulette->preexpuseOdds, roulette->useOdds); + } + for (i = 1; i < NUMKARTRESULTS; i++) { spawnChance[i] = (