Merge branch 'hud-track-anything' into 'k-hud-track-cpp'

HUD track UFO catcher; hide TARGET text in 3P and 4P splitscreen

See merge request KartKrew/Kart!957
This commit is contained in:
Oni 2023-02-22 06:26:33 +00:00
commit 022665b7dc
4 changed files with 42 additions and 11 deletions

View file

@ -177,6 +177,7 @@ static patch_t *kp_trickcool[2];
patch_t *kp_capsuletarget_arrow[2][2]; patch_t *kp_capsuletarget_arrow[2][2];
patch_t *kp_capsuletarget_icon[2]; patch_t *kp_capsuletarget_icon[2];
patch_t *kp_capsuletarget_far[2]; patch_t *kp_capsuletarget_far[2];
patch_t *kp_capsuletarget_far_text[2];
patch_t *kp_capsuletarget_near[8]; patch_t *kp_capsuletarget_near[8];
void K_LoadKartHUDGraphics(void) void K_LoadKartHUDGraphics(void)
@ -665,6 +666,13 @@ void K_LoadKartHUDGraphics(void)
} }
} }
sprintf(buffer, "HUDCAPDx");
for (i = 0; i < 2; i++)
{
buffer[7] = '0'+i;
HU_UpdatePatch(&kp_capsuletarget_far_text[i], "%s", buffer);
}
sprintf(buffer, "HUDCAPCx"); sprintf(buffer, "HUDCAPCx");
for (i = 0; i < 2; i++) for (i = 0; i < 2; i++)
{ {
@ -3274,10 +3282,7 @@ static void K_drawKartNameTags(void)
} }
} }
if (battlecapsules == true) K_drawTargetHUD(&c, stplyr);
{
K_drawTargetHUD(&c, stplyr);
}
for (i = 0; i < MAXPLAYERS; i++) for (i = 0; i < MAXPLAYERS; i++)
{ {

View file

@ -50,6 +50,7 @@ extern patch_t *kp_facehighlight[8];
extern patch_t *kp_capsuletarget_arrow[2][2]; extern patch_t *kp_capsuletarget_arrow[2][2];
extern patch_t *kp_capsuletarget_icon[2]; extern patch_t *kp_capsuletarget_icon[2];
extern patch_t *kp_capsuletarget_far[2]; 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_capsuletarget_near[8];
#ifdef __cplusplus #ifdef __cplusplus

View file

@ -174,7 +174,6 @@ void K_DrawTargetTracking(const TargetTracking& target)
const fixed_t farDistance = 1280 * mapobjectscale; const fixed_t farDistance = 1280 * mapobjectscale;
bool useNear = (target.camDist < farDistance); bool useNear = (target.camDist < farDistance);
patch_t* targetPatch = nullptr;
vector2_t targetPos = {}; vector2_t targetPos = {};
bool visible = P_CheckSight(stplyr->mo, target.mobj); bool visible = P_CheckSight(stplyr->mo, target.mobj);
@ -188,21 +187,46 @@ void K_DrawTargetTracking(const TargetTracking& target)
targetPos.x = result.x; targetPos.x = result.x;
targetPos.y = result.y; targetPos.y = result.y;
auto draw = [&](patch_t* patch)
{
V_DrawFixedPatch(
targetPos.x - ((patch->width << FRACBITS) >> 1),
targetPos.y - ((patch->height << FRACBITS) >> 1),
FRACUNIT,
V_SPLITSCREEN,
patch,
nullptr
);
};
if (useNear == true) if (useNear == true)
{ {
timer = (leveltime / 2); timer = (leveltime / 2);
targetPatch = kp_capsuletarget_near[timer % 8]; draw(kp_capsuletarget_near[timer % 8]);
} }
else else
{ {
timer = (leveltime / 3); timer = (leveltime / 3);
targetPatch = kp_capsuletarget_far[timer & 1]; draw(kp_capsuletarget_far[timer & 1]);
if (r_splitscreen <= 1)
{
draw(kp_capsuletarget_far_text[timer & 1]);
}
} }
}
}
targetPos.x -= (targetPatch->width << FRACBITS) >> 1; bool is_object_tracking_target(const mobj_t* mobj)
targetPos.y -= (targetPatch->height << FRACBITS) >> 1; {
switch (mobj->type)
{
case MT_BATTLECAPSULE:
case MT_SPECIAL_UFO:
return true;
V_DrawFixedPatch(targetPos.x, targetPos.y, FRACUNIT, V_SPLITSCREEN, targetPatch, nullptr); default:
return false;
} }
} }
@ -224,7 +248,7 @@ void K_drawTargetHUD(const vector3_t* origin, player_t* player)
continue; continue;
} }
if (mobj->type != MT_BATTLECAPSULE) if (is_object_tracking_target(mobj) == false)
{ {
continue; continue;
} }

View file

@ -5247,6 +5247,7 @@ static boolean P_IsTrackerType(INT32 type)
// Primarily for minimap data, handle with care // Primarily for minimap data, handle with care
case MT_SPB: case MT_SPB:
case MT_BATTLECAPSULE: case MT_BATTLECAPSULE:
case MT_SPECIAL_UFO:
return true; return true;
default: default: