mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'ancient-gear-minimap' into 'master'
Display up to one Ancient Gear on the minimap See merge request kart-krew-dev/ring-racers-internal!2800
This commit is contained in:
commit
2cae08fa8f
4 changed files with 65 additions and 0 deletions
|
|
@ -6292,6 +6292,12 @@ static void K_drawKartMinimap(void)
|
||||||
colormap = R_GetTranslationColormap(TC_RAINBOW, static_cast<skincolornum_t>(owner->color), GTC_CACHE);
|
colormap = R_GetTranslationColormap(TC_RAINBOW, static_cast<skincolornum_t>(owner->color), GTC_CACHE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case MT_ANCIENTGEAR:
|
||||||
|
if (mobj == Obj_GetAncientGearMinimapMobj())
|
||||||
|
{
|
||||||
|
workingPic = kp_unknownminimap;
|
||||||
|
colormap = R_GetTranslationColormap(TC_RAINBOW, static_cast<skincolornum_t>(K_RainbowColor(leveltime)), GTC_CACHE);
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -500,6 +500,7 @@ void Obj_AncientGearSetup(mobj_t *gear, mapthing_t *mt);
|
||||||
void Obj_AncientGearLevelInit(void);
|
void Obj_AncientGearLevelInit(void);
|
||||||
player_t *Obj_GetAncientGearCollectingPlayer(void);
|
player_t *Obj_GetAncientGearCollectingPlayer(void);
|
||||||
boolean Obj_AllAncientGearsCollected(void);
|
boolean Obj_AllAncientGearsCollected(void);
|
||||||
|
mobj_t *Obj_GetAncientGearMinimapMobj(void);
|
||||||
|
|
||||||
void Obj_MushroomHillPolePlayerThink(player_t *player);
|
void Obj_MushroomHillPolePlayerThink(player_t *player);
|
||||||
void Obj_MushroomHillPoleTouch(mobj_t *pole, mobj_t *toucher);
|
void Obj_MushroomHillPoleTouch(mobj_t *pole, mobj_t *toucher);
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ static UINT32 gearBank = 0;
|
||||||
static UINT8 gearBankIndex = 0;
|
static UINT8 gearBankIndex = 0;
|
||||||
static boolean allGearsCollected = false;
|
static boolean allGearsCollected = false;
|
||||||
static player_t *collectingPlayer = NULL;
|
static player_t *collectingPlayer = NULL;
|
||||||
|
static mobj_t *minimapGear = NULL;
|
||||||
|
|
||||||
static void UpdateAncientGearPart(mobj_t *part)
|
static void UpdateAncientGearPart(mobj_t *part)
|
||||||
{
|
{
|
||||||
|
|
@ -122,6 +123,11 @@ void Obj_AncientGearPartThink(mobj_t *part)
|
||||||
|
|
||||||
void Obj_AncientGearRemoved(mobj_t *gear)
|
void Obj_AncientGearRemoved(mobj_t *gear)
|
||||||
{
|
{
|
||||||
|
if (gear == minimapGear)
|
||||||
|
{
|
||||||
|
minimapGear = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
while (!P_MobjWasRemoved(gear->hnext))
|
while (!P_MobjWasRemoved(gear->hnext))
|
||||||
{
|
{
|
||||||
P_RemoveMobj(gear->hnext);
|
P_RemoveMobj(gear->hnext);
|
||||||
|
|
@ -281,6 +287,7 @@ void Obj_AncientGearLevelInit(void)
|
||||||
gearBankIndex = 0;
|
gearBankIndex = 0;
|
||||||
numGears = 0;
|
numGears = 0;
|
||||||
collectingPlayer = NULL;
|
collectingPlayer = NULL;
|
||||||
|
minimapGear = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
player_t *Obj_GetAncientGearCollectingPlayer(void)
|
player_t *Obj_GetAncientGearCollectingPlayer(void)
|
||||||
|
|
@ -292,3 +299,53 @@ boolean Obj_AllAncientGearsCollected(void)
|
||||||
{
|
{
|
||||||
return allGearsCollected;
|
return allGearsCollected;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mobj_t *Obj_GetAncientGearMinimapMobj(void)
|
||||||
|
{
|
||||||
|
UINT8 lowestTag = UINT8_MAX;
|
||||||
|
UINT8 tag;
|
||||||
|
mobj_t *mobj;
|
||||||
|
|
||||||
|
// no gears in the map? nothing to display
|
||||||
|
if (numGears == 0)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if a gear is currently being tracked, display it on the minimap
|
||||||
|
if (!P_MobjWasRemoved(minimapGear))
|
||||||
|
{
|
||||||
|
// only display the gear while uncollected,
|
||||||
|
// but keep it tracked so there's some natural delay between when one gear disappears and when the next one is chosen
|
||||||
|
if (minimapGear->health > 0)
|
||||||
|
{
|
||||||
|
return minimapGear;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
minimapGear = NULL;
|
||||||
|
|
||||||
|
// try to find a new gear to track
|
||||||
|
for (mobj = trackercap; mobj; mobj = mobj->itnext)
|
||||||
|
{
|
||||||
|
if (
|
||||||
|
mobj->type != MT_ANCIENTGEAR
|
||||||
|
|| !(mobj->health > 0)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
tag = ((UINT8)(mobj->thing_args[0] - 1)) % MAX_GEARS; // 0 minus 1 wraps around to 31 so that untagged gears are chosen last
|
||||||
|
|
||||||
|
if (tag < lowestTag)
|
||||||
|
{
|
||||||
|
lowestTag = tag;
|
||||||
|
minimapGear = mobj;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// display the tracked gear, if found
|
||||||
|
return minimapGear;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -5458,6 +5458,7 @@ static boolean P_IsTrackerType(INT32 type)
|
||||||
case MT_SPB:
|
case MT_SPB:
|
||||||
case MT_BATTLECAPSULE:
|
case MT_BATTLECAPSULE:
|
||||||
case MT_CDUFO:
|
case MT_CDUFO:
|
||||||
|
case MT_ANCIENTGEAR:
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// Players sometimes get targeted with HUD tracking
|
// Players sometimes get targeted with HUD tracking
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue