mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 20:41:46 +00:00
Spraycan HUD tracking
This commit is contained in:
parent
11f428b67a
commit
c454843837
4 changed files with 73 additions and 1 deletions
31
src/k_hud.c
31
src/k_hud.c
|
|
@ -203,6 +203,9 @@ patch_t *kp_capsuletarget_near[2][8];
|
||||||
|
|
||||||
patch_t *kp_superflickytarget[2][4];
|
patch_t *kp_superflickytarget[2][4];
|
||||||
|
|
||||||
|
patch_t *kp_spraycantarget_far[2][6];
|
||||||
|
patch_t *kp_spraycantarget_near[2][6];
|
||||||
|
|
||||||
patch_t *kp_button_a[2][2];
|
patch_t *kp_button_a[2][2];
|
||||||
patch_t *kp_button_b[2][2];
|
patch_t *kp_button_b[2][2];
|
||||||
patch_t *kp_button_c[2][2];
|
patch_t *kp_button_c[2][2];
|
||||||
|
|
@ -796,6 +799,34 @@ void K_LoadKartHUDGraphics(void)
|
||||||
HU_UpdatePatch(&kp_superflickytarget[1][i], "%s", buffer);
|
HU_UpdatePatch(&kp_superflickytarget[1][i], "%s", buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sprintf(buffer, "SPCNBFAx");
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
buffer[7] = '1'+i;
|
||||||
|
HU_UpdatePatch(&kp_spraycantarget_far[0][i], "%s", buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf(buffer, "SPCNSFAx");
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
buffer[7] = '1'+i;
|
||||||
|
HU_UpdatePatch(&kp_spraycantarget_far[1][i], "%s", buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf(buffer, "SPCNBCLx");
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
buffer[7] = '1'+i;
|
||||||
|
HU_UpdatePatch(&kp_spraycantarget_near[0][i], "%s", buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf(buffer, "SPCNSCLx");
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
buffer[7] = '1'+i;
|
||||||
|
HU_UpdatePatch(&kp_spraycantarget_near[1][i], "%s", buffer);
|
||||||
|
}
|
||||||
|
|
||||||
K_LoadButtonGraphics(kp_button_a[0], 'A');
|
K_LoadButtonGraphics(kp_button_a[0], 'A');
|
||||||
K_LoadButtonGraphics(kp_button_a[1], 'N');
|
K_LoadButtonGraphics(kp_button_a[1], 'N');
|
||||||
K_LoadButtonGraphics(kp_button_b[0], 'B');
|
K_LoadButtonGraphics(kp_button_b[0], 'B');
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,9 @@ extern patch_t *kp_capsuletarget_near[2][8];
|
||||||
|
|
||||||
extern patch_t *kp_superflickytarget[2][4];
|
extern patch_t *kp_superflickytarget[2][4];
|
||||||
|
|
||||||
|
extern patch_t *kp_spraycantarget_far[2][6];
|
||||||
|
extern patch_t *kp_spraycantarget_near[2][6];
|
||||||
|
|
||||||
extern patch_t *kp_autoroulette;
|
extern patch_t *kp_autoroulette;
|
||||||
|
|
||||||
extern patch_t *kp_button_a[2][2];
|
extern patch_t *kp_button_a[2][2];
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ struct TargetTracking
|
||||||
int frames;
|
int frames;
|
||||||
int tics_per_frame;
|
int tics_per_frame;
|
||||||
StaticVec<patch_t**, kMaxLayers> layers;
|
StaticVec<patch_t**, kMaxLayers> layers;
|
||||||
|
int32_t video_flags = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Graphics
|
struct Graphics
|
||||||
|
|
@ -85,6 +86,18 @@ struct TargetTracking
|
||||||
return anim;
|
return anim;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool uses_off_screen_arrow() const
|
||||||
|
{
|
||||||
|
switch (mobj->type)
|
||||||
|
{
|
||||||
|
case MT_SPRAYCAN:
|
||||||
|
return false;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
StaticVec<uint32_t, 7> player_emeralds_vec() const
|
StaticVec<uint32_t, 7> player_emeralds_vec() const
|
||||||
{
|
{
|
||||||
StaticVec<uint32_t, 7> emeralds;
|
StaticVec<uint32_t, 7> emeralds;
|
||||||
|
|
@ -149,6 +162,18 @@ private:
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
case MT_SPRAYCAN:
|
||||||
|
return {
|
||||||
|
{ // Near
|
||||||
|
{6, 2, {kp_spraycantarget_near[0]}, V_ADD}, // 1P
|
||||||
|
{{6, 2, {kp_spraycantarget_near[1]}, V_ADD}}, // 4P
|
||||||
|
},
|
||||||
|
{{ // Far
|
||||||
|
{6, 2, {kp_spraycantarget_far[0]}, V_ADD}, // 1P
|
||||||
|
{{6, 2, {kp_spraycantarget_far[1]}, V_ADD}}, // 4P
|
||||||
|
}},
|
||||||
|
};
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return {
|
return {
|
||||||
{ // Near
|
{ // Near
|
||||||
|
|
@ -178,6 +203,11 @@ void K_DrawTargetTracking(const TargetTracking& target)
|
||||||
// Off-screen, draw alongside the borders of the screen.
|
// Off-screen, draw alongside the borders of the screen.
|
||||||
// Probably the most complicated thing.
|
// Probably the most complicated thing.
|
||||||
|
|
||||||
|
if (target.uses_off_screen_arrow() == false)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int32_t scrVal = 240;
|
int32_t scrVal = 240;
|
||||||
vector2_t screenSize = {};
|
vector2_t screenSize = {};
|
||||||
|
|
||||||
|
|
@ -339,7 +369,7 @@ void K_DrawTargetTracking(const TargetTracking& target)
|
||||||
targetPos.x - ((patch->width << FRACBITS) >> 1),
|
targetPos.x - ((patch->width << FRACBITS) >> 1),
|
||||||
targetPos.y - ((patch->height << FRACBITS) >> 1),
|
targetPos.y - ((patch->height << FRACBITS) >> 1),
|
||||||
FRACUNIT,
|
FRACUNIT,
|
||||||
V_SPLITSCREEN,
|
V_SPLITSCREEN | anim.video_flags,
|
||||||
patch,
|
patch,
|
||||||
colormap
|
colormap
|
||||||
);
|
);
|
||||||
|
|
@ -421,6 +451,9 @@ bool is_object_tracking_target(const mobj_t* mobj)
|
||||||
case MT_SUPER_FLICKY:
|
case MT_SUPER_FLICKY:
|
||||||
return Obj_IsSuperFlickyTargettingYou(mobj, stplyr->mo);
|
return Obj_IsSuperFlickyTargettingYou(mobj, stplyr->mo);
|
||||||
|
|
||||||
|
case MT_SPRAYCAN:
|
||||||
|
return !(mobj->renderflags & (RF_TRANSMASK | RF_DONTDRAW)); // the spraycan wasn't collected yet
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -434,6 +467,10 @@ bool is_object_visible(mobj_t* mobj)
|
||||||
// Always flickers.
|
// Always flickers.
|
||||||
return (leveltime & 1);
|
return (leveltime & 1);
|
||||||
|
|
||||||
|
case MT_SPRAYCAN:
|
||||||
|
// Flickers, but only when visible.
|
||||||
|
return P_CheckSight(stplyr->mo, mobj) && (leveltime & 1);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// Flicker when not visible.
|
// Flicker when not visible.
|
||||||
return P_CheckSight(stplyr->mo, mobj) || (leveltime & 1);
|
return P_CheckSight(stplyr->mo, mobj) || (leveltime & 1);
|
||||||
|
|
|
||||||
|
|
@ -5342,6 +5342,7 @@ static boolean P_IsTrackerType(INT32 type)
|
||||||
case MT_EMERALD:
|
case MT_EMERALD:
|
||||||
case MT_BATTLEUFO:
|
case MT_BATTLEUFO:
|
||||||
case MT_SUPER_FLICKY:
|
case MT_SUPER_FLICKY:
|
||||||
|
case MT_SPRAYCAN:
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue