mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Super Flicky trackables
Super Flickies have HUD tracking, have map tracking, and are 3x big when chasing instead of 2x
This commit is contained in:
parent
1325bf7afa
commit
3b1edb903c
6 changed files with 51 additions and 4 deletions
18
src/k_hud.c
18
src/k_hud.c
|
|
@ -85,6 +85,7 @@ static patch_t *kp_catcherminimap;
|
|||
static patch_t *kp_emeraldminimap[2];
|
||||
static patch_t *kp_capsuleminimap[3];
|
||||
static patch_t *kp_battleufominimap;
|
||||
static patch_t *kp_superflickyminimap;
|
||||
|
||||
static patch_t *kp_ringsticker[2];
|
||||
static patch_t *kp_ringstickersplit[4];
|
||||
|
|
@ -198,6 +199,8 @@ patch_t *kp_capsuletarget_far[2];
|
|||
patch_t *kp_capsuletarget_far_text[2];
|
||||
patch_t *kp_capsuletarget_near[8];
|
||||
|
||||
patch_t *kp_superflickytarget[4];
|
||||
|
||||
patch_t *kp_button_a[2][2];
|
||||
patch_t *kp_button_b[2][2];
|
||||
patch_t *kp_button_c[2][2];
|
||||
|
|
@ -376,6 +379,7 @@ void K_LoadKartHUDGraphics(void)
|
|||
HU_UpdatePatch(&kp_capsuleminimap[2], "MINICAP3");
|
||||
|
||||
HU_UpdatePatch(&kp_battleufominimap, "MINIBUFO");
|
||||
HU_UpdatePatch(&kp_superflickyminimap, "FLKMAPA");
|
||||
|
||||
// Rings & Lives
|
||||
HU_UpdatePatch(&kp_ringsticker[0], "RNGBACKA");
|
||||
|
|
@ -760,6 +764,13 @@ void K_LoadKartHUDGraphics(void)
|
|||
HU_UpdatePatch(&kp_capsuletarget_near[i], "%s", buffer);
|
||||
}
|
||||
|
||||
sprintf(buffer, "HUDFLKAx");
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
buffer[7] = '0'+i;
|
||||
HU_UpdatePatch(&kp_superflickytarget[i], "%s", buffer);
|
||||
}
|
||||
|
||||
K_LoadButtonGraphics(kp_button_a[0], 'A');
|
||||
K_LoadButtonGraphics(kp_button_a[1], 'N');
|
||||
K_LoadButtonGraphics(kp_button_b[0], 'B');
|
||||
|
|
@ -4076,6 +4087,13 @@ static void K_drawKartMinimap(void)
|
|||
case MT_BATTLEUFO:
|
||||
workingPic = kp_battleufominimap;
|
||||
break;
|
||||
case MT_SUPER_FLICKY:
|
||||
workingPic = kp_superflickyminimap;
|
||||
if (Obj_SuperFlickyOwner(mobj)->color)
|
||||
{
|
||||
colormap = R_GetTranslationColormap(TC_RAINBOW, (Obj_SuperFlickyOwner(mobj)->color), GTC_CACHE);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,6 +59,8 @@ extern patch_t *kp_capsuletarget_far[2];
|
|||
extern patch_t *kp_capsuletarget_far_text[2];
|
||||
extern patch_t *kp_capsuletarget_near[8];
|
||||
|
||||
extern patch_t *kp_superflickytarget[4];
|
||||
|
||||
extern patch_t *kp_button_a[2][2];
|
||||
extern patch_t *kp_button_b[2][2];
|
||||
extern patch_t *kp_button_c[2][2];
|
||||
|
|
|
|||
|
|
@ -42,6 +42,8 @@ struct TargetTracking
|
|||
case MT_PLAYER:
|
||||
return player_emeralds_color();
|
||||
|
||||
case MT_SUPER_FLICKY:
|
||||
return static_cast<skincolornum_t>(Obj_SuperFlickyOwner(mobj)->color);
|
||||
default:
|
||||
return SKINCOLOR_NONE;
|
||||
}
|
||||
|
|
@ -269,7 +271,7 @@ void K_DrawTargetTracking(const TargetTracking& target)
|
|||
|
||||
bool visible = P_CheckSight(stplyr->mo, target.mobj);
|
||||
|
||||
if (visible == false && (leveltime & 1))
|
||||
if ((visible == false || target.mobj->type == MT_SUPER_FLICKY) && (leveltime & 1))
|
||||
{
|
||||
// Flicker when not visible.
|
||||
return;
|
||||
|
|
@ -290,7 +292,12 @@ void K_DrawTargetTracking(const TargetTracking& target)
|
|||
);
|
||||
};
|
||||
|
||||
if (useNear == true)
|
||||
if (target.mobj->type == MT_SUPER_FLICKY)
|
||||
{
|
||||
timer = (leveltime / 2);
|
||||
draw(kp_superflickytarget[timer % 4]);
|
||||
}
|
||||
else if (useNear == true)
|
||||
{
|
||||
timer = (leveltime / 2);
|
||||
draw(kp_capsuletarget_near[timer % 8]);
|
||||
|
|
@ -382,6 +389,9 @@ bool is_object_tracking_target(const mobj_t* mobj)
|
|||
case MT_MONITOR:
|
||||
return is_player_tracking_target() && Obj_MonitorGetEmerald(mobj) != 0;
|
||||
|
||||
case MT_SUPER_FLICKY:
|
||||
return Obj_IsSuperFlickyTargettingYou(mobj, stplyr->mo);
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -161,7 +161,9 @@ void Obj_WhipSuperFlicky(mobj_t *flicky);
|
|||
void Obj_BlockSuperFlicky(mobj_t *flicky);
|
||||
void Obj_SuperFlickyPlayerCollide(mobj_t *flicky, mobj_t *player);
|
||||
void Obj_SuperFlickyLanding(mobj_t *flicky);
|
||||
mobj_t *Obj_SuperFlickyOwner(const mobj_t *flicky);
|
||||
boolean Obj_IsSuperFlickyWhippable(const mobj_t *flicky);
|
||||
boolean Obj_IsSuperFlickyTargettingYou(const mobj_t *flicky, mobj_t *player);
|
||||
|
||||
/* Battle/Power-UP UFO */
|
||||
void Obj_BattleUFOLegThink(mobj_t *leg);
|
||||
|
|
|
|||
|
|
@ -277,7 +277,7 @@ struct Flicky : mobj_t
|
|||
|
||||
void animate()
|
||||
{
|
||||
P_InstaScale(this, source()->scale * (chasing() ? 2 : 1));
|
||||
destscale = source()->scale * (chasing() ? 3 : 1);
|
||||
|
||||
if (color >= kSuperStart && color <= kSuperEnd)
|
||||
{
|
||||
|
|
@ -761,9 +761,23 @@ tic_t Obj_SuperFlickySwarmTime(mobj_t* mobj)
|
|||
return !P_MobjWasRemoved(x) ? x->powerup_remaining() : 0u;
|
||||
}
|
||||
|
||||
mobj_t *Obj_SuperFlickyOwner(const mobj_t* mobj)
|
||||
{
|
||||
const Flicky* x = static_cast<const Flicky*>(mobj);
|
||||
|
||||
return x->source();
|
||||
}
|
||||
|
||||
boolean Obj_IsSuperFlickyWhippable(const mobj_t* mobj)
|
||||
{
|
||||
const Flicky* x = static_cast<const Flicky*>(mobj);
|
||||
|
||||
return mobj == x->chasing() && !x->stunned();
|
||||
}
|
||||
|
||||
boolean Obj_IsSuperFlickyTargettingYou(const mobj_t* mobj, mobj_t *player)
|
||||
{
|
||||
const Flicky* x = static_cast<const Flicky*>(mobj);
|
||||
|
||||
return player == x->chasing();
|
||||
}
|
||||
|
|
@ -5336,6 +5336,7 @@ static boolean P_IsTrackerType(INT32 type)
|
|||
case MT_MONITOR:
|
||||
case MT_EMERALD:
|
||||
case MT_BATTLEUFO:
|
||||
case MT_SUPER_FLICKY:
|
||||
return true;
|
||||
|
||||
default:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue