Add K_TranslateTimer, get the correct timer value for time limit; use this function for splitscreen timer

This commit is contained in:
James R 2023-06-29 21:44:17 -07:00
parent 36bb219196
commit 34b65a7c59
3 changed files with 28 additions and 7 deletions

View file

@ -13,6 +13,11 @@ namespace
constexpr INT32 kHudFlags = V_HUDTRANS | V_SLIDEIN;
tic_t player_timer(const player_t* player)
{
return K_TranslateTimer(player->realtime, 0, nullptr);
}
}; // namespace
void K_drawKart2PTimestamp(void)
@ -32,7 +37,7 @@ void K_drawKart2PTimestamp(void)
Draw row = get_row().flags(kHudFlags | V_SNAPTORIGHT).font(Draw::Font::kZVote);
row.patch("K_STTIMS");
row.xy(12, 2).text("{:03}", stplyr->realtime / TICRATE);
row.xy(12, 2).text("{:03}", player_timer(stplyr) / TICRATE);
}
void K_drawKart4PTimestamp(void)
@ -45,7 +50,7 @@ void K_drawKart4PTimestamp(void)
row.xy(5, 12).text("{:03}", time / TICRATE);
};
auto time_of = [](int k) -> tic_t { return k <= r_splitscreen ? players[displayplayers[k]].realtime : 0u; };
auto time_of = [](int k) -> tic_t { return k <= r_splitscreen ? player_timer(&players[displayplayers[k]]) : 0u; };
draw(row.y(1).flags(V_SNAPTOTOP), std::max(time_of(0), time_of(1)));
draw(row.y(178).flags(V_SNAPTOBOTTOM), std::max(time_of(2), time_of(3)));

View file

@ -1684,12 +1684,8 @@ static void K_drawKartSlotMachine(void)
V_ClearClipRect();
}
void K_drawKartTimestamp(tic_t drawtime, INT32 TX, INT32 TY, INT32 splitflags, UINT8 mode)
tic_t K_TranslateTimer(tic_t drawtime, UINT8 mode, INT32 *return_jitter)
{
// TIME_X = BASEVIDWIDTH-124; // 196
// TIME_Y = 6; // 6
tic_t worktime;
INT32 jitter = 0;
if (!mode)
@ -1725,6 +1721,24 @@ void K_drawKartTimestamp(tic_t drawtime, INT32 TX, INT32 TY, INT32 splitflags, U
}
}
if (return_jitter)
{
*return_jitter = jitter;
}
return drawtime;
}
void K_drawKartTimestamp(tic_t drawtime, INT32 TX, INT32 TY, INT32 splitflags, UINT8 mode)
{
// TIME_X = BASEVIDWIDTH-124; // 196
// TIME_Y = 6; // 6
tic_t worktime;
INT32 jitter = 0;
drawtime = K_TranslateTimer(drawtime, mode, &jitter);
V_DrawScaledPatch(TX, TY, splitflags, ((mode == 2) ? kp_lapstickerwide : kp_timestickerwide));
TX += 33;

View file

@ -36,6 +36,8 @@ struct trackingResult_t
void K_ObjectTracking(trackingResult_t *result, const vector3_t *point, boolean reverse);
tic_t K_TranslateTimer(tic_t drawtime, UINT8 mode, INT32 *return_jitter);
const char *K_GetItemPatch(UINT8 item, boolean tiny);
void K_LoadKartHUDGraphics(void);
void K_drawKartHUD(void);