From 1c633dd9ee4e90ef09b402d8441613e87af994a3 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Fri, 30 Jun 2023 16:02:46 -0700 Subject: [PATCH] Direct players to battle UFOs via Obj_PointPlayersToXY --- src/d_player.h | 3 ++- src/k_kart.c | 2 ++ src/k_objects.h | 1 + src/objects/battle-ufo.cpp | 2 ++ src/objects/servant-hand.c | 19 ++++++++++++++++++- 5 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/d_player.h b/src/d_player.h index a3f3143aa..f1d8e02bd 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -71,7 +71,8 @@ typedef enum PF_GAINAX = 1<<3, PF_KICKSTARTACCEL = 1<<4, // Accessibility feature: Is accelerate in kickstart mode? - // 1<<5 free + + PF_POINTME = 1<<5, // An object is calling for my attention (via Obj_PointPlayersToMobj). Unset every frame! // 1<<6 free PF_WANTSTOJOIN = 1<<7, // Spectator that wants to join diff --git a/src/k_kart.c b/src/k_kart.c index 8204d080b..122e879be 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -8353,6 +8353,8 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) } K_HandleDelayedHitByEm(player); + + player->pflags &= ~PF_POINTME; } void K_KartResetPlayerColor(player_t *player) diff --git a/src/k_objects.h b/src/k_objects.h index 4f24a6a05..92477ca4d 100644 --- a/src/k_objects.h +++ b/src/k_objects.h @@ -145,6 +145,7 @@ void Obj_SpawnGachaBomRebound(mobj_t *source, mobj_t *target); /* Servant Hand */ void Obj_ServantHandHandling(player_t *player); +void Obj_PointPlayersToXY(fixed_t x, fixed_t y); /* Super Flicky Controller */ void Obj_SpawnSuperFlickySwarm(player_t *owner, tic_t time); diff --git a/src/objects/battle-ufo.cpp b/src/objects/battle-ufo.cpp index db8ef23c9..12a982309 100644 --- a/src/objects/battle-ufo.cpp +++ b/src/objects/battle-ufo.cpp @@ -132,6 +132,8 @@ void Obj_BattleUFOThink(mobj_t *mobj) { ufo->spawn_beam(); } + + Obj_PointPlayersToXY(mobj->x, mobj->y); } void Obj_BattleUFODeath(mobj_t *mobj) diff --git a/src/objects/servant-hand.c b/src/objects/servant-hand.c index 3a94ab69a..2b9cb7527 100644 --- a/src/objects/servant-hand.c +++ b/src/objects/servant-hand.c @@ -5,10 +5,12 @@ #include "../k_kart.h" #include "../k_objects.h" #include "../v_video.h" +#include "../r_main.h" +#include "../g_game.h" void Obj_ServantHandHandling(player_t *player) { - if (player->pflags & PF_WRONGWAY) + if (player->pflags & PF_WRONGWAY || player->pflags & PF_POINTME) { if (player->handtimer < TICRATE) { @@ -101,3 +103,18 @@ void Obj_ServantHandHandling(player_t *player) player->hand->renderflags |= (RF_DONTDRAW & ~K_GetPlayerDontDrawFlag(player)); } } + +void Obj_PointPlayersToXY(fixed_t x, fixed_t y) +{ + for(int i = 0; i < MAXPLAYERS; i++) + { + if (!playeringame[i] || players[i].spectator || !players[i].mo) + continue; + + angle_t angletotarget = R_PointToAngle2( + players[i].mo->x, players[i].mo->y, + x, y); + players[i].pflags |= PF_POINTME; + players[i].besthanddirection = angletotarget; + } +}