diff --git a/src/k_hud.c b/src/k_hud.c index 45d939e71..6e4bd69f1 100644 --- a/src/k_hud.c +++ b/src/k_hud.c @@ -750,9 +750,8 @@ void K_AdjustXYWithSnap(INT32 *x, INT32 *y, UINT32 options, INT32 dupx, INT32 du if (options & V_SLIDEIN) { const tic_t length = TICRATE/2; - const tic_t end = (lt_endtime + length); - if (lt_ticker < end) + if (lt_exitticker < length) { INT32 offset = screenwidth - ((lt_exitticker * screenwidth) / length); boolean slidefromright = false; @@ -3048,16 +3047,17 @@ static void K_drawKartMinimap(void) x = MINI_X - (AutomapPic->width/2); y = MINI_Y - (AutomapPic->height/2); - if (timeinmap > 105) { + const tic_t length = TICRATE/2; + + if (!lt_exitticker) + return; minimaptrans = cv_kartminimap.value; - if (timeinmap <= 113) - minimaptrans = ((((INT32)timeinmap) - 105)*minimaptrans)/(113-105); + if (lt_exitticker < length) + minimaptrans = (((INT32)lt_exitticker)*minimaptrans)/((INT32)length); if (!minimaptrans) return; } - else - return; minimaptrans = ((10-minimaptrans)<spectator && timeinmap > 113) // FREE PLAY? + if (netgame && !stplyr->spectator) // FREE PLAY? { UINT8 i; @@ -3631,7 +3631,7 @@ static void K_drawBattleFullscreen(void) } if (LUA_HudEnabled(hud_freeplay)) - K_drawKartFreePlay(leveltime); + K_drawKartFreePlay(); } } @@ -3804,18 +3804,6 @@ static void K_drawInput(void) const INT32 accent2 = splitflags | skincolors[stplyr->skincolor].ramp[9]; ticcmd_t *cmd = &stplyr->cmd; - if (timeinmap <= 105) - return; - - if (timeinmap < 113) - { - INT32 count = ((INT32)(timeinmap) - 105); - offs = 64; - while (count-- > 0) - offs >>= 1; - x += offs; - } - #define BUTTW 8 #define BUTTH 11 @@ -3963,12 +3951,15 @@ static void K_drawLapStartAnim(void) } } -void K_drawKartFreePlay(UINT32 flashtime) +void K_drawKartFreePlay(void) { // no splitscreen support because it's not FREE PLAY if you have more than one player in-game // (you fool, you can take splitscreen online. :V) - if ((flashtime % TICRATE) < TICRATE/2) + if (lt_exitticker < TICRATE/2) + return; + + if (((leveltime-lt_endtime) % TICRATE) < TICRATE/2) return; V_DrawKartString((BASEVIDWIDTH - (LAPS_X+1)) - (12*9), // mirror the laps thingy @@ -4240,25 +4231,17 @@ void K_drawKartHUD(void) { if (demo.title) // Draw title logo instead in demo.titles { - INT32 x = BASEVIDWIDTH - 32, y = 128, offs; + INT32 x = BASEVIDWIDTH - 32, y = 128, snapflags = V_SNAPTOBOTTOM|V_SNAPTORIGHT; if (r_splitscreen == 3) { x = BASEVIDWIDTH/2 + 10; y = BASEVIDHEIGHT/2 - 30; + snapflags = 0; } - if (timeinmap < 113) - { - INT32 count = ((INT32)(timeinmap) - 104); - offs = 256; - while (count-- > 0) - offs >>= 1; - x += offs; - } - - V_DrawTinyScaledPatch(x-54, y, 0, W_CachePatchName("TTKBANNR", PU_CACHE)); - V_DrawTinyScaledPatch(x-54, y+25, 0, W_CachePatchName("TTKART", PU_CACHE)); + V_DrawTinyScaledPatch(x-54, y, snapflags|V_SLIDEIN, W_CachePatchName("TTKBANNR", PU_CACHE)); + V_DrawTinyScaledPatch(x-54, y+25, snapflags|V_SLIDEIN, W_CachePatchName("TTKART", PU_CACHE)); } else if (gametype == GT_RACE) // Race-only elements { @@ -4339,10 +4322,10 @@ void K_drawKartHUD(void) V_DrawScaledPatch(BASEVIDWIDTH/2 - (SHORT(kp_yougotem->width)/2), 32, V_HUDTRANS, kp_yougotem); // Draw FREE PLAY. - if (isfreeplay && !stplyr->spectator && timeinmap > 113) + if (isfreeplay && !stplyr->spectator) { if (LUA_HudEnabled(hud_freeplay)) - K_drawKartFreePlay(leveltime); + K_drawKartFreePlay(); } if (r_splitscreen == 0 && stplyr->kartstuff[k_wrongway] && ((leveltime / 8) & 1)) diff --git a/src/k_hud.h b/src/k_hud.h index d2da15217..fff718ef5 100644 --- a/src/k_hud.h +++ b/src/k_hud.h @@ -33,7 +33,7 @@ void K_ObjectTracking(trackingResult_t *result, vector3_t *point, UINT8 cameraNu const char *K_GetItemPatch(UINT8 item, boolean tiny); void K_LoadKartHUDGraphics(void); void K_drawKartHUD(void); -void K_drawKartFreePlay(UINT32 flashtime); +void K_drawKartFreePlay(void); void K_drawKartTimestamp(tic_t drawtime, INT32 TX, INT32 TY, INT16 emblemmap, UINT8 mode); void K_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, INT32 whiteplayer, INT32 hilicol); diff --git a/src/lua_hudlib.c b/src/lua_hudlib.c index 06e4d6916..926df78ca 100644 --- a/src/lua_hudlib.c +++ b/src/lua_hudlib.c @@ -705,17 +705,17 @@ static int libd_drawOnMinimap(lua_State *L) // splitscreen flags splitflags = (r_splitscreen == 3 ? 0 : V_SNAPTORIGHT); // flags should only be 0 when it's centered (4p split) - // translucency: - if (timeinmap > 105) { + const tic_t length = TICRATE/2; + + if (!lt_exitticker) + return 0; minimaptrans = cv_kartminimap.value; - if (timeinmap <= 113) - minimaptrans = ((((INT32)timeinmap) - 105)*minimaptrans)/(113-105); + if (lt_exitticker < length) + minimaptrans = (((INT32)lt_exitticker)*minimaptrans)/((INT32)length); if (!minimaptrans) return 0; } - else - return 0; minimaptrans = ((10-minimaptrans)<> V_ALPHASHIFT))) { - if (alphalevel == 13) - alphalevel = hudminusalpha[st_translucency]; - else if (alphalevel == 14) - alphalevel = 10 - st_translucency; - else if (alphalevel == 15) - alphalevel = hudplusalpha[st_translucency]; + if (alphalevel > 11) // not standard, V_ADDTRANS or V_SUBTRANS + { + if (alphalevel == 13) // V_HUDTRANSHALF + alphalevel = hudminusalpha[st_translucency]; + else if (alphalevel == 14) // V_HUDTRANS + alphalevel = 10 - st_translucency; + else if (alphalevel == 15) // V_HUDTRANSDOUBLE + alphalevel = hudplusalpha[st_translucency]; - if (alphalevel >= 12) - return; // invis + if (alphalevel >= 10) // Still inelegible to render? + return; + } if (alphalevel) { @@ -737,15 +739,18 @@ void V_DrawCroppedPatch(fixed_t x, fixed_t y, fixed_t pscale, INT32 scrn, patch_ v_translevel = NULL; if ((alphalevel = ((scrn & V_ALPHAMASK) >> V_ALPHASHIFT))) { - if (alphalevel == 13) - alphalevel = hudminusalpha[st_translucency]; - else if (alphalevel == 14) - alphalevel = 10 - st_translucency; - else if (alphalevel == 15) - alphalevel = hudplusalpha[st_translucency]; + if (alphalevel > 11) // not standard, V_ADDTRANS or V_SUBTRANS + { + if (alphalevel == 13) // V_HUDTRANSHALF + alphalevel = hudminusalpha[st_translucency]; + else if (alphalevel == 14) // V_HUDTRANS + alphalevel = 10 - st_translucency; + else if (alphalevel == 15) // V_HUDTRANSDOUBLE + alphalevel = hudplusalpha[st_translucency]; - if (alphalevel >= 12) - return; // invis + if (alphalevel >= 10) // Still inelegible to render? + return; + } if (alphalevel) { @@ -990,15 +995,18 @@ void V_DrawFillConsoleMap(INT32 x, INT32 y, INT32 w, INT32 h, INT32 c) if ((alphalevel = ((c & V_ALPHAMASK) >> V_ALPHASHIFT))) { - if (alphalevel == 13) - alphalevel = hudminusalpha[st_translucency]; - else if (alphalevel == 14) - alphalevel = 10 - st_translucency; - else if (alphalevel == 15) - alphalevel = hudplusalpha[st_translucency]; + if (alphalevel > 11) // not standard, V_ADDTRANS or V_SUBTRANS + { + if (alphalevel == 13) // V_HUDTRANSHALF + alphalevel = hudminusalpha[st_translucency]; + else if (alphalevel == 14) // V_HUDTRANS + alphalevel = 10 - st_translucency; + else if (alphalevel == 15) // V_HUDTRANSDOUBLE + alphalevel = hudplusalpha[st_translucency]; - if (alphalevel >= 12) - return; // invis + if (alphalevel >= 10) // Still inelegible to render? + return; + } } if (!(c & V_NOSCALESTART))