diff --git a/src/k_hud.cpp b/src/k_hud.cpp index 8306e40b3..5bfc23d9f 100644 --- a/src/k_hud.cpp +++ b/src/k_hud.cpp @@ -5706,6 +5706,49 @@ INT32 K_GetMinimapSplitFlags(const boolean usingProgressBar) #define ICON_DOT_RADIUS (10) +// modified pick from blondedradio/RadioRacers (but there are like 57 things we don't want in the commit) +// (so gogo gadget copypaste, thanks for a good feature and saving me work i was supposed to do anyway) +static void K_DrawKartUFOTimer(fixed_t objx, fixed_t objy, INT32 hudx, INT32 hudy, INT32 flags) +{ + fixed_t amnumxpos, amnumypos; + INT32 amxpos, amypos; + + if (exitcountdown || leveltime > g_battleufo.due) + return; + + tic_t raw = g_battleufo.due - leveltime; + tic_t countdown = G_TicsToSeconds(raw) + 1; + + if (countdown <= 5) + { + flags |= (raw / (TICRATE/2) % 2) ? V_YELLOWMAP : 0; + } + + if (countdown <= 10) + { + flags &= ~(V_HUDTRANS|V_HUDTRANSHALF); + } + + amnumxpos = (FixedMul(objx, minimapinfo.zoom) - minimapinfo.offs_x); + amnumypos = -(FixedMul(objy, minimapinfo.zoom) - minimapinfo.offs_y); + + if (encoremode) + amnumxpos = -amnumxpos; + + fixed_t text_width = V_StringScaledWidth(FRACUNIT, FRACUNIT, FRACUNIT, 0, TINY_FONT, va("%d", countdown)); + int16_t final_width = (kp_battleufominimap->width/2) - ((text_width/FRACUNIT)+3)/2; + if (countdown < 10) + final_width -= 3; // magic number + + // magic number + int16_t text_height = (kp_battleufominimap->height/2) + 2; + + amxpos = amnumxpos + ((hudx - (SHORT(final_width))/2)<x, spawner->y, x, y, splitflags); + splitflags = prevsplitflags; + } + if (doprogressionbar == false && cv_kartdebugwaypoints.value != 0) { struct MiniWaypoint diff --git a/src/k_objects.h b/src/k_objects.h index 03240a089..c894c0f18 100644 --- a/src/k_objects.h +++ b/src/k_objects.h @@ -213,6 +213,7 @@ void Obj_SpawnBattleUFOFromSpawner(void); INT32 Obj_RandomBattleUFOSpawnerID(void); void Obj_BattleUFOBeamThink(mobj_t *beam); INT32 Obj_BattleUFOSpawnerID(const mobj_t *spawner); +mobj_t *Obj_GetNextUFOSpawner(void); /* Power-Up Aura */ void Obj_SpawnPowerUpAura(player_t* player); diff --git a/src/objects/battle-ufo.cpp b/src/objects/battle-ufo.cpp index 21045eef1..ca56f0a18 100644 --- a/src/objects/battle-ufo.cpp +++ b/src/objects/battle-ufo.cpp @@ -287,3 +287,8 @@ INT32 Obj_BattleUFOSpawnerID(const mobj_t *spawner) { return static_cast(spawner)->id(); } + +mobj_t *Obj_GetNextUFOSpawner(void) +{ + return g_spawners.next(g_battleufo.previousId); +} \ No newline at end of file