separate out the "equipped item" field
will need more modularization and some coding style standardization (perhaps via K_SetItemOut?)
This commit is contained in:
parent
d447f7d429
commit
6f14af9243
6 changed files with 22 additions and 8 deletions
|
|
@ -612,6 +612,7 @@ struct player_t
|
|||
// Item held stuff
|
||||
UINT8 itemtype; // KITEM_ constant for item number
|
||||
UINT8 itemamount; // Amount of said item
|
||||
UINT8 equippeditem; // Item type that is currently "equipped"
|
||||
itemflags_t itemflags; // holds IF_flags (see itemstate_t)
|
||||
tic_t itemusecooldown; // timer for which the player is locked out of using an item or mashing the item roulette (implementation of xItemLib setPlayerItemCooldown)
|
||||
tic_t itemusecooldownmax; // most recent highest value for itemusecooldown, mainly used for HUD rendering currently
|
||||
|
|
|
|||
|
|
@ -1937,6 +1937,7 @@ void K_PlayerItemThink(player_t *player, boolean onground)
|
|||
|
||||
player->rocketsneakertimer = (itemtime*3);
|
||||
player->itemamount--;
|
||||
player->equippeditem = KITEM_ROCKETSNEAKER;
|
||||
K_UpdateHnextList(player, true);
|
||||
|
||||
for (moloop = 0; moloop < 2; moloop++)
|
||||
|
|
@ -1973,7 +1974,7 @@ void K_PlayerItemThink(player_t *player, boolean onground)
|
|||
mobj_t *prev = player->mo;
|
||||
|
||||
//K_PlayAttackTaunt(player->mo);
|
||||
K_SetItemOut(player);
|
||||
K_SetItemOut(player, KITEM_BANANA);
|
||||
S_StartSound(player->mo, sfx_s254);
|
||||
|
||||
for (moloop = 0; moloop < player->itemamount; moloop++)
|
||||
|
|
@ -2014,6 +2015,7 @@ void K_PlayerItemThink(player_t *player, boolean onground)
|
|||
mobj_t *mo;
|
||||
player->itemamount--;
|
||||
player->itemflags |= IF_EGGMANOUT;
|
||||
player->equippeditem = KITEM_EGGMAN;
|
||||
S_StartSound(player->mo, sfx_s254);
|
||||
mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_EGGMANITEM_SHIELD);
|
||||
if (mo)
|
||||
|
|
@ -2038,7 +2040,7 @@ void K_PlayerItemThink(player_t *player, boolean onground)
|
|||
mobj_t *prev = player->mo;
|
||||
|
||||
//K_PlayAttackTaunt(player->mo);
|
||||
K_SetItemOut(player);
|
||||
K_SetItemOut(player, KITEM_ORBINAUT);
|
||||
S_StartSound(player->mo, sfx_s3k3a);
|
||||
|
||||
for (moloop = 0; moloop < player->itemamount; moloop++)
|
||||
|
|
@ -2081,7 +2083,7 @@ void K_PlayerItemThink(player_t *player, boolean onground)
|
|||
mobj_t *prev = player->mo;
|
||||
|
||||
//K_PlayAttackTaunt(player->mo);
|
||||
K_SetItemOut(player);
|
||||
K_SetItemOut(player, KITEM_JAWZ);
|
||||
S_StartSound(player->mo, sfx_s3k3a);
|
||||
|
||||
for (moloop = 0; moloop < player->itemamount; moloop++)
|
||||
|
|
@ -2121,7 +2123,7 @@ void K_PlayerItemThink(player_t *player, boolean onground)
|
|||
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO)
|
||||
{
|
||||
mobj_t *mo;
|
||||
K_SetItemOut(player);
|
||||
K_SetItemOut(player, KITEM_MINE);
|
||||
S_StartSound(player->mo, sfx_s254);
|
||||
mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_SSMINE_SHIELD);
|
||||
if (mo)
|
||||
|
|
@ -2372,7 +2374,7 @@ void K_PlayerItemThink(player_t *player, boolean onground)
|
|||
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO)
|
||||
{
|
||||
mobj_t *mo;
|
||||
K_SetItemOut(player);
|
||||
K_SetItemOut(player, KITEM_KITCHENSINK);
|
||||
S_StartSound(player->mo, sfx_s254);
|
||||
mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_SINK_SHIELD);
|
||||
if (mo)
|
||||
|
|
|
|||
|
|
@ -5440,6 +5440,7 @@ void K_DropRocketSneaker(player_t *player)
|
|||
}
|
||||
P_SetTarget(&player->mo->hnext, NULL);
|
||||
player->rocketsneakertimer = 0;
|
||||
player->equippeditem = KITEM_NONE;
|
||||
}
|
||||
|
||||
void K_DropKitchenSink(player_t *player)
|
||||
|
|
@ -5666,7 +5667,7 @@ static void K_MoveHeldObjects(player_t *player)
|
|||
return;
|
||||
}
|
||||
|
||||
equipstyle = K_GetItemEquipStyle(player->itemtype);
|
||||
equipstyle = K_GetItemEquipStyle(player->equippeditem);
|
||||
|
||||
switch (equipstyle)
|
||||
{
|
||||
|
|
@ -9945,6 +9946,7 @@ void K_StripItems(player_t *player)
|
|||
K_DropRocketSneaker(player);
|
||||
K_DropKitchenSink(player);
|
||||
player->itemtype = KITEM_NONE;
|
||||
player->equippeditem = KITEM_NONE;
|
||||
player->itemamount = 0;
|
||||
player->itemflags &= ~IF_EGGMANOUT;
|
||||
K_UnsetItemOut(player);
|
||||
|
|
@ -10199,15 +10201,17 @@ INT32 K_GetShieldFromItem(INT32 item)
|
|||
}
|
||||
}
|
||||
|
||||
void K_SetItemOut(player_t *player)
|
||||
void K_SetItemOut(player_t *player, kartitemtype_e itemtype)
|
||||
{
|
||||
player->itemflags |= IF_ITEMOUT;
|
||||
player->equippeditem = itemtype;
|
||||
}
|
||||
|
||||
void K_UnsetItemOut(player_t *player)
|
||||
{
|
||||
player->itemflags &= ~(IF_ITEMOUT|IF_HOLDREADY);
|
||||
player->bananadrag = 0;
|
||||
player->equippeditem = KITEM_NONE;
|
||||
}
|
||||
|
||||
static boolean K_InvincibilitySlotHogging(player_t *player)
|
||||
|
|
@ -10354,6 +10358,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
K_ThrowKartItem(player, false, MT_EGGMANITEM, -1, 0);
|
||||
K_PlayAttackTaunt(player->mo);
|
||||
player->itemflags &= ~IF_EGGMANOUT;
|
||||
player->equippeditem = KITEM_NONE;
|
||||
K_UpdateHnextList(player, true);
|
||||
K_BotResetItemConfirm(player, false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -341,7 +341,7 @@ void K_PlayPowerGloatSound(mobj_t *source);
|
|||
INT32 K_GetShieldFromPlayer(const player_t *player);
|
||||
INT32 K_GetShieldFromItem(INT32 item);
|
||||
|
||||
void K_SetItemOut(player_t *player);
|
||||
void K_SetItemOut(player_t *player, kartitemtype_e itemtype);
|
||||
void K_UnsetItemOut(player_t *player);
|
||||
|
||||
boolean K_SafeRespawnPosition(mobj_t * mo);
|
||||
|
|
|
|||
|
|
@ -321,6 +321,7 @@ enum player_e
|
|||
player_roulettetype,
|
||||
player_itemtype,
|
||||
player_itemamount,
|
||||
player_equippeditem,
|
||||
player_itemusecooldown,
|
||||
player_itemusecooldownmax,
|
||||
player_throwdir,
|
||||
|
|
@ -540,6 +541,7 @@ static const char *const player_opt[] = {
|
|||
"roulettetype",
|
||||
"itemtype",
|
||||
"itemamount",
|
||||
"equippeditem",
|
||||
"itemusecooldown",
|
||||
"itemusecooldownmax",
|
||||
"throwdir",
|
||||
|
|
@ -965,6 +967,9 @@ static int player_get(lua_State *L)
|
|||
case player_itemamount:
|
||||
lua_pushinteger(L, plr->itemamount);
|
||||
break;
|
||||
case player_equippeditem:
|
||||
lua_pushinteger(L, plr->equippeditem);
|
||||
break;
|
||||
case player_itemusecooldown:
|
||||
lua_pushinteger(L, plr->itemusecooldown);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -639,6 +639,7 @@ static void P_NetSyncPlayers(savebuffer_t *save)
|
|||
|
||||
SYNC(players[i].itemtype);
|
||||
SYNC(players[i].itemamount);
|
||||
SYNC(players[i].equippeditem);
|
||||
SYNC(players[i].throwdir);
|
||||
|
||||
SYNC(players[i].sadtimer);
|
||||
|
|
|
|||
Loading…
Reference in a new issue