Merge branch 'box-pikachu' into 'master'

Show next bufo spawn on minimap

See merge request kart-krew-dev/ring-racers-internal!2659
This commit is contained in:
Oni VelocitOni 2025-07-01 20:35:30 +00:00
commit 4e15a28963
3 changed files with 59 additions and 0 deletions

View file

@ -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)<<FRACBITS);
amypos = amnumypos + ((hudy - (SHORT(text_height))/2)<<FRACBITS);
V_DrawCenteredThinString(amxpos/FRACUNIT, amypos/FRACUNIT, flags, va("%d", countdown));
}
static void K_drawKartMinimap(void)
{
patch_t *workingPic;
@ -6202,6 +6245,16 @@ static void K_drawKartMinimap(void)
}
}
if (gametype == GT_BATTLE && Obj_GetNextUFOSpawner() != NULL)
{
const INT32 prevsplitflags = splitflags;
mobj_t *spawner = Obj_GetNextUFOSpawner();
splitflags &= ~V_HUDTRANS;
splitflags |= V_HUDTRANSHALF;
K_DrawKartUFOTimer(spawner->x, spawner->y, x, y, splitflags);
splitflags = prevsplitflags;
}
if (doprogressionbar == false && cv_kartdebugwaypoints.value != 0)
{
struct MiniWaypoint

View file

@ -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);

View file

@ -287,3 +287,8 @@ INT32 Obj_BattleUFOSpawnerID(const mobj_t *spawner)
{
return static_cast<const Spawner*>(spawner)->id();
}
mobj_t *Obj_GetNextUFOSpawner(void)
{
return g_spawners.next(g_battleufo.previousId);
}