mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
WIP: Per-player mid-round announcements
This commit is contained in:
parent
1e39081856
commit
25149db4eb
5 changed files with 37 additions and 19 deletions
|
|
@ -19,6 +19,7 @@
|
|||
#include "k_powerup.h"
|
||||
#include "k_hitlag.h"
|
||||
#include "m_random.h"
|
||||
#include "k_hud.h" // K_AddMessage
|
||||
|
||||
angle_t K_GetCollideAngle(mobj_t *t1, mobj_t *t2)
|
||||
{
|
||||
|
|
@ -876,6 +877,9 @@ boolean K_InstaWhipCollide(mobj_t *shield, mobj_t *victim)
|
|||
attackerPlayer->instaWhipCharge = 0;
|
||||
attackerPlayer->flashing = 0;
|
||||
|
||||
K_AddMessageForPlayer(victimPlayer, va("Reflect Counter!"), false);
|
||||
K_AddMessageForPlayer(attackerPlayer, va("Reflected..."), false);
|
||||
|
||||
// Localized broly for a local event.
|
||||
if (mobj_t *broly = Obj_SpawnBrolyKi(victim, victimHitlag/2))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -5621,7 +5621,7 @@ typedef struct
|
|||
sfxenum_t sound;
|
||||
} message_t;
|
||||
|
||||
static std::deque<std::string> messages = {"Reflected!", "Get the UFO!", "Worm Bagged", "GOTTEM", "Spectator to die why?", ":ubiktune:", "Barrier closing!"};
|
||||
static std::deque<std::string> messages;
|
||||
static tic_t messagetimer = 0;
|
||||
static messagemode_t messagemode = MM_IN;
|
||||
|
||||
|
|
@ -5630,9 +5630,31 @@ static tic_t lazyswitch = 4*TICRATE;
|
|||
|
||||
void K_AddMessage(char *msg, boolean interrupt)
|
||||
{
|
||||
if (interrupt)
|
||||
messages.clear();
|
||||
messages.push_back(msg);
|
||||
}
|
||||
|
||||
void K_AddMessageForPlayer(player_t *player, char *msg, boolean interrupt)
|
||||
{
|
||||
if (!P_IsDisplayPlayer(player))
|
||||
return;
|
||||
K_AddMessage(msg, interrupt);
|
||||
}
|
||||
|
||||
static void K_SwitchMessageMode(messagemode_t mode)
|
||||
{
|
||||
messagemode = mode;
|
||||
messagetimer = 0;
|
||||
}
|
||||
|
||||
static void K_NextMessage()
|
||||
{
|
||||
K_SwitchMessageMode(MM_IN);
|
||||
if (messages.size() > 0)
|
||||
messages.pop_front();
|
||||
}
|
||||
|
||||
void K_TickMessages()
|
||||
{
|
||||
if (messages.size() == 0)
|
||||
|
|
@ -5647,31 +5669,17 @@ void K_TickMessages()
|
|||
{
|
||||
case MM_IN:
|
||||
if (messagetimer > messages[0].length())
|
||||
{
|
||||
messagemode = MM_HOLD;
|
||||
messagetimer = 0;
|
||||
}
|
||||
K_SwitchMessageMode(MM_HOLD);
|
||||
break;
|
||||
case MM_HOLD:
|
||||
if (messages.size() > 1 && messagetimer > speedyswitch) // Waiting message, switch to it right away!
|
||||
{
|
||||
messagemode = MM_IN;
|
||||
messagetimer = 0;
|
||||
messages.pop_front();
|
||||
}
|
||||
K_NextMessage();
|
||||
else if (messagetimer > lazyswitch) // If there's no pending message, we can chill for a bit.
|
||||
{
|
||||
messagemode = MM_OUT;
|
||||
messagetimer = 0;
|
||||
}
|
||||
K_SwitchMessageMode(MM_OUT);
|
||||
break;
|
||||
case MM_OUT:
|
||||
if (messagetimer > messages[0].length())
|
||||
{
|
||||
messagemode = MM_IN;
|
||||
messagetimer = 0;
|
||||
messages.pop_front();
|
||||
}
|
||||
K_NextMessage();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ extern patch_t *kp_eggnum[6];
|
|||
extern patch_t *kp_facenum[MAXPLAYERS+1];
|
||||
|
||||
void K_AddMessage(char *msg, boolean interrupt);
|
||||
void K_AddMessageForPlayer(player_t *player, char *msg, boolean interrupt);
|
||||
void K_TickMessages(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
|
|
@ -3836,6 +3836,9 @@ void K_DoGuardBreak(mobj_t *t1, mobj_t *t2) {
|
|||
S_StartSound(t1, sfx_gbrk);
|
||||
K_AddHitLag(t1, 24, true);
|
||||
|
||||
K_AddMessageForPlayer(t1->player, va("Barrier Break..."), false);
|
||||
K_AddMessageForPlayer(t2->player, va("Smashed 'em!"), false);
|
||||
|
||||
angle_t thrangle = R_PointToAngle2(t1->x, t1->y, t2->x, t2->y);
|
||||
P_Thrust(t1, thrangle, 7*mapobjectscale);
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
#include "../k_battle.h"
|
||||
#include "../k_objects.h"
|
||||
#include "../k_kart.h"
|
||||
#include "../k_hud.h" // K_AddMessage
|
||||
|
||||
using srb2::math::Fixed;
|
||||
using srb2::Mobj;
|
||||
|
|
@ -114,6 +115,7 @@ public:
|
|||
|
||||
Spawner* spawner = next(g_battleufo.previousId);
|
||||
UFO* ufo = static_cast<UFO*>(P_SpawnMobjFromMobj(spawner, 0, 0, 250*FRACUNIT - ofs, MT_BATTLEUFO));
|
||||
K_AddMessage(va("Get the UFO!"), true);
|
||||
|
||||
ufo->sprzoff(ofs * spawner->scale());
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue