Add flickyAttacker and powerupvars_t to player_t, add to netsave

This commit is contained in:
James R 2023-06-27 00:06:13 -07:00
parent b35d0ae25e
commit d737387132
4 changed files with 48 additions and 0 deletions

View file

@ -439,6 +439,11 @@ typedef struct {
boolean flip;
} sonicloopvars_t;
// player_t struct for power-ups
struct powerupvars_t {
mobj_t *flickyController;
};
// player_t struct for all alternative viewpoint variables
struct altview_t
{
@ -756,6 +761,7 @@ struct player_t
mobj_t *sliptideZipIndicator;
mobj_t *whip;
mobj_t *hand;
mobj_t *flickyAttacker;
UINT8 instaShieldCooldown;
UINT8 guardCooldown;
@ -777,6 +783,7 @@ struct player_t
sonicloopvars_t loop;
roundconditions_t roundconditions;
powerupvars_t powerup;
};
// WARNING FOR ANYONE ABOUT TO ADD SOMETHING TO THE PLAYER STRUCT, G_PlayerReborn WANTS YOU TO SUFFER

View file

@ -8287,6 +8287,12 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
if (player->hand && P_MobjWasRemoved(player->hand))
P_SetTarget(&player->hand, NULL);
if (player->flickyAttacker && P_MobjWasRemoved(player->flickyAttacker))
P_SetTarget(&player->flickyAttacker, NULL);
if (player->powerup.flickyController && P_MobjWasRemoved(player->powerup.flickyController))
P_SetTarget(&player->powerup.flickyController, NULL);
if (player->spectator == false)
{
K_KartEbrakeVisuals(player);

View file

@ -79,6 +79,8 @@ typedef enum
RINGSHOOTER = 0x0100,
WHIP = 0x0200,
HAND = 0x0400,
FLICKYATTACKER = 0x0800,
FLICKYCONTROLLER = 0x1000,
} player_saveflags;
static inline void P_ArchivePlayer(savebuffer_t *save)
@ -319,6 +321,12 @@ static void P_NetArchivePlayers(savebuffer_t *save)
if (players[i].ringShooter)
flags |= RINGSHOOTER;
if (players[i].flickyAttacker)
flags |= FLICKYATTACKER;
if (players[i].powerup.flickyController)
flags |= FLICKYCONTROLLER;
WRITEUINT16(save->p, flags);
if (flags & SKYBOXVIEW)
@ -351,6 +359,12 @@ static void P_NetArchivePlayers(savebuffer_t *save)
if (flags & RINGSHOOTER)
WRITEUINT32(save->p, players[i].ringShooter->mobjnum);
if (flags & FLICKYATTACKER)
WRITEUINT32(save->p, players[i].flickyAttacker->mobjnum);
if (flags & FLICKYCONTROLLER)
WRITEUINT32(save->p, players[i].powerup.flickyController->mobjnum);
WRITEUINT32(save->p, (UINT32)players[i].followitem);
WRITEUINT32(save->p, players[i].charflags);
@ -754,6 +768,12 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
if (flags & RINGSHOOTER)
players[i].ringShooter = (mobj_t *)(size_t)READUINT32(save->p);
if (flags & FLICKYATTACKER)
players[i].flickyAttacker = (mobj_t *)(size_t)READUINT32(save->p);
if (flags & FLICKYCONTROLLER)
players[i].powerup.flickyController = (mobj_t *)(size_t)READUINT32(save->p);
players[i].followitem = (mobjtype_t)READUINT32(save->p);
//SetPlayerSkinByNum(i, players[i].skin);
@ -5258,6 +5278,20 @@ static void P_RelinkPointers(void)
if (!P_SetTarget(&players[i].ringShooter, P_FindNewPosition(temp)))
CONS_Debug(DBG_GAMELOGIC, "ringShooter not found on player %d\n", i);
}
if (players[i].flickyAttacker)
{
temp = (UINT32)(size_t)players[i].flickyAttacker;
players[i].flickyAttacker = NULL;
if (!P_SetTarget(&players[i].flickyAttacker, P_FindNewPosition(temp)))
CONS_Debug(DBG_GAMELOGIC, "flickyAttacker not found on player %d\n", i);
}
if (players[i].powerup.flickyController)
{
temp = (UINT32)(size_t)players[i].powerup.flickyController;
players[i].powerup.flickyController = NULL;
if (!P_SetTarget(&players[i].powerup.flickyController, P_FindNewPosition(temp)))
CONS_Debug(DBG_GAMELOGIC, "powerup.flickyController not found on player %d\n", i);
}
}
}

View file

@ -47,6 +47,7 @@ TYPEDEF (botvars_t);
TYPEDEF (roundconditions_t);
TYPEDEF (skybox_t);
TYPEDEF (itemroulette_t);
TYPEDEF (powerupvars_t);
TYPEDEF (altview_t);
TYPEDEF (player_t);