mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-29 07:22:33 +00:00
- Exhumed: Eliminate PlayerInput
struct in favour of InputPacket
object PlayerList::input
.
This commit is contained in:
parent
67c7dd65f9
commit
9ffc65fa48
6 changed files with 27 additions and 55 deletions
|
@ -98,8 +98,6 @@ void InitCheats();
|
||||||
int EndLevel = 0;
|
int EndLevel = 0;
|
||||||
|
|
||||||
|
|
||||||
InputPacket localInput;
|
|
||||||
|
|
||||||
////////
|
////////
|
||||||
|
|
||||||
void ResetEngine()
|
void ResetEngine()
|
||||||
|
@ -375,9 +373,14 @@ void GameInterface::Ticker()
|
||||||
// disable synchronised input if set by game.
|
// disable synchronised input if set by game.
|
||||||
resetForcedSyncInput();
|
resetForcedSyncInput();
|
||||||
|
|
||||||
|
// set new player input, factoring in previous view centering.
|
||||||
|
auto oldactions = PlayerList[nLocalPlayer].input.actions;
|
||||||
|
PlayerList[nLocalPlayer].input = playercmds[nLocalPlayer].ucmd;
|
||||||
|
if (oldactions & SB_CENTERVIEW) PlayerList[nLocalPlayer].input.actions |= SB_CENTERVIEW;
|
||||||
|
|
||||||
auto& lPlayerVel = PlayerList[nLocalPlayer].pActor->vel.XY();
|
auto& lPlayerVel = PlayerList[nLocalPlayer].pActor->vel.XY();
|
||||||
|
|
||||||
auto inputvect = DVector2(localInput.fvel, localInput.svel).Rotated(inita) * 0.375;
|
auto inputvect = DVector2(PlayerList[nLocalPlayer].input.fvel, PlayerList[nLocalPlayer].input.svel).Rotated(inita) * 0.375;
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
|
@ -387,7 +390,7 @@ void GameInterface::Ticker()
|
||||||
}
|
}
|
||||||
UpdateInterpolations();
|
UpdateInterpolations();
|
||||||
|
|
||||||
if (localInput.actions & SB_INVPREV)
|
if (PlayerList[nLocalPlayer].input.actions & SB_INVPREV)
|
||||||
{
|
{
|
||||||
int nItem = PlayerList[nLocalPlayer].nItem;
|
int nItem = PlayerList[nLocalPlayer].nItem;
|
||||||
|
|
||||||
|
@ -404,7 +407,7 @@ void GameInterface::Ticker()
|
||||||
if (i > 0) PlayerList[nLocalPlayer].nItem = nItem;
|
if (i > 0) PlayerList[nLocalPlayer].nItem = nItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (localInput.actions & SB_INVNEXT)
|
if (PlayerList[nLocalPlayer].input.actions & SB_INVNEXT)
|
||||||
{
|
{
|
||||||
int nItem = PlayerList[nLocalPlayer].nItem;
|
int nItem = PlayerList[nLocalPlayer].nItem;
|
||||||
|
|
||||||
|
@ -421,19 +424,19 @@ void GameInterface::Ticker()
|
||||||
if (i > 0) PlayerList[nLocalPlayer].nItem = nItem;
|
if (i > 0) PlayerList[nLocalPlayer].nItem = nItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (localInput.actions & SB_INVUSE)
|
if (PlayerList[nLocalPlayer].input.actions & SB_INVUSE)
|
||||||
{
|
{
|
||||||
if (PlayerList[nLocalPlayer].nItem != -1)
|
if (PlayerList[nLocalPlayer].nItem != -1)
|
||||||
{
|
{
|
||||||
localInput.setItemUsed(PlayerList[nLocalPlayer].nItem);
|
PlayerList[nLocalPlayer].input.setItemUsed(PlayerList[nLocalPlayer].nItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
if (localInput.isItemUsed(i))
|
if (PlayerList[nLocalPlayer].input.isItemUsed(i))
|
||||||
{
|
{
|
||||||
localInput.clearItemUsed(i);
|
PlayerList[nLocalPlayer].input.clearItemUsed(i);
|
||||||
if (PlayerList[nLocalPlayer].items[i] > 0)
|
if (PlayerList[nLocalPlayer].items[i] > 0)
|
||||||
{
|
{
|
||||||
if (nItemMagic[i] <= PlayerList[nLocalPlayer].nMagic)
|
if (nItemMagic[i] <= PlayerList[nLocalPlayer].nMagic)
|
||||||
|
@ -446,7 +449,7 @@ void GameInterface::Ticker()
|
||||||
}
|
}
|
||||||
|
|
||||||
auto currWeap = PlayerList[nLocalPlayer].nCurrentWeapon;
|
auto currWeap = PlayerList[nLocalPlayer].nCurrentWeapon;
|
||||||
int weap2 = localInput.getNewWeapon();
|
int weap2 = PlayerList[nLocalPlayer].input.getNewWeapon();
|
||||||
if (weap2 == WeaponSel_Next)
|
if (weap2 == WeaponSel_Next)
|
||||||
{
|
{
|
||||||
auto newWeap = currWeap == 6 ? 0 : currWeap + 1;
|
auto newWeap = currWeap == 6 ? 0 : currWeap + 1;
|
||||||
|
@ -455,7 +458,7 @@ void GameInterface::Ticker()
|
||||||
newWeap++;
|
newWeap++;
|
||||||
if (newWeap > 6) newWeap = 0;
|
if (newWeap > 6) newWeap = 0;
|
||||||
}
|
}
|
||||||
localInput.setNewWeapon(newWeap + 1);
|
PlayerList[nLocalPlayer].input.setNewWeapon(newWeap + 1);
|
||||||
}
|
}
|
||||||
else if (weap2 == WeaponSel_Prev)
|
else if (weap2 == WeaponSel_Prev)
|
||||||
{
|
{
|
||||||
|
@ -464,7 +467,7 @@ void GameInterface::Ticker()
|
||||||
{
|
{
|
||||||
newWeap--;
|
newWeap--;
|
||||||
}
|
}
|
||||||
localInput.setNewWeapon(newWeap + 1);
|
PlayerList[nLocalPlayer].input.setNewWeapon(newWeap + 1);
|
||||||
}
|
}
|
||||||
else if (weap2 == WeaponSel_Alt)
|
else if (weap2 == WeaponSel_Alt)
|
||||||
{
|
{
|
||||||
|
@ -472,15 +475,8 @@ void GameInterface::Ticker()
|
||||||
}
|
}
|
||||||
|
|
||||||
// make weapon selection persist until it gets used up.
|
// make weapon selection persist until it gets used up.
|
||||||
int weap = sPlayerInput[nLocalPlayer].getNewWeapon();
|
int weap = PlayerList[nLocalPlayer].input.getNewWeapon();
|
||||||
if (weap2 <= 0 || weap2 > 7) sPlayerInput[nLocalPlayer].SetNewWeapon(weap);
|
if (weap2 <= 0 || weap2 > 7) PlayerList[nLocalPlayer].input.setNewWeapon(weap);
|
||||||
|
|
||||||
auto oldactions = sPlayerInput[nLocalPlayer].actions;
|
|
||||||
sPlayerInput[nLocalPlayer].actions = localInput.actions;
|
|
||||||
if (oldactions & SB_CENTERVIEW) sPlayerInput[nLocalPlayer].actions |= SB_CENTERVIEW;
|
|
||||||
|
|
||||||
sPlayerInput[nLocalPlayer].nAngle = localInput.avel;
|
|
||||||
sPlayerInput[nLocalPlayer].pan = localInput.horz;
|
|
||||||
|
|
||||||
PlayerList[nLocalPlayer].pTarget = Ra[nLocalPlayer].pTarget = bestTarget;
|
PlayerList[nLocalPlayer].pTarget = Ra[nLocalPlayer].pTarget = bestTarget;
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
BEGIN_PS_NS
|
BEGIN_PS_NS
|
||||||
|
|
||||||
PlayerInput sPlayerInput[kMaxPlayers];
|
static InputPacket localInput;
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
|
@ -35,7 +35,7 @@ PlayerInput sPlayerInput[kMaxPlayers];
|
||||||
|
|
||||||
void ClearSpaceBar(int nPlayer)
|
void ClearSpaceBar(int nPlayer)
|
||||||
{
|
{
|
||||||
sPlayerInput[nPlayer].actions &= SB_OPEN;
|
PlayerList[nPlayer].input.actions &= SB_OPEN;
|
||||||
buttonMap.ClearButton(gamefunc_Open);
|
buttonMap.ClearButton(gamefunc_Open);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,31 +29,7 @@ enum {
|
||||||
kButtonCheatItems = 0x100,
|
kButtonCheatItems = 0x100,
|
||||||
};
|
};
|
||||||
|
|
||||||
// 32 bytes
|
|
||||||
struct PlayerInput
|
|
||||||
{
|
|
||||||
float nAngle;
|
|
||||||
float pan;
|
|
||||||
ESyncBits actions;
|
|
||||||
|
|
||||||
int getNewWeapon() const
|
|
||||||
{
|
|
||||||
return (actions & SB_WEAPONMASK_BITS).GetValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetNewWeapon(int weap)
|
|
||||||
{
|
|
||||||
actions = (actions & ~SB_WEAPONMASK_BITS) | (ESyncBits::FromInt(weap) & SB_WEAPONMASK_BITS);
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
void ClearSpaceBar(int nPlayer);
|
void ClearSpaceBar(int nPlayer);
|
||||||
|
|
||||||
int GetLocalInput();
|
|
||||||
|
|
||||||
extern PlayerInput sPlayerInput[];
|
|
||||||
extern InputPacket localInput;
|
|
||||||
|
|
||||||
END_PS_NS
|
END_PS_NS
|
||||||
|
|
||||||
|
|
|
@ -432,7 +432,6 @@ void RestartPlayer(int nPlayer)
|
||||||
|
|
||||||
plr->ototalvel = plr->totalvel = 0;
|
plr->ototalvel = plr->totalvel = 0;
|
||||||
|
|
||||||
memset(&sPlayerInput[nPlayer], 0, sizeof(PlayerInput));
|
|
||||||
PlayerList[nPlayer].nCurrentItem = -1;
|
PlayerList[nPlayer].nCurrentItem = -1;
|
||||||
|
|
||||||
plr->nDeathType = 0;
|
plr->nDeathType = 0;
|
||||||
|
@ -982,7 +981,7 @@ void AIPlayer::Tick(RunListEvent* ev)
|
||||||
// loc_1A494:
|
// loc_1A494:
|
||||||
if (SyncInput())
|
if (SyncInput())
|
||||||
{
|
{
|
||||||
PlayerList[nPlayer].pActor->spr.Angles.Yaw += DAngle::fromDeg(sPlayerInput[nPlayer].nAngle);
|
PlayerList[nPlayer].pActor->spr.Angles.Yaw += DAngle::fromDeg(PlayerList[nPlayer].input.avel);
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerList[nPlayer].Angles.doYawKeys(&sPlayerInput[nLocalPlayer].actions);
|
PlayerList[nPlayer].Angles.doYawKeys(&sPlayerInput[nLocalPlayer].actions);
|
||||||
|
@ -1215,7 +1214,7 @@ sectdone:
|
||||||
|
|
||||||
int var_5C = pViewSect->Flag & kSectUnderwater;
|
int var_5C = pViewSect->Flag & kSectUnderwater;
|
||||||
|
|
||||||
auto actions = sPlayerInput[nPlayer].actions;
|
auto actions = PlayerList[nPlayer].input.actions;
|
||||||
|
|
||||||
// loc_1AEF5:
|
// loc_1AEF5:
|
||||||
if (PlayerList[nPlayer].nHealth > 0)
|
if (PlayerList[nPlayer].nHealth > 0)
|
||||||
|
@ -2425,7 +2424,7 @@ sectdone:
|
||||||
|
|
||||||
// loc_1BE70:
|
// loc_1BE70:
|
||||||
// Handle player pressing number keys to change weapon
|
// Handle player pressing number keys to change weapon
|
||||||
uint8_t var_90 = sPlayerInput[nPlayer].getNewWeapon();
|
uint8_t var_90 = PlayerList[nPlayer].input.getNewWeapon();
|
||||||
|
|
||||||
if (var_90)
|
if (var_90)
|
||||||
{
|
{
|
||||||
|
@ -2469,12 +2468,12 @@ sectdone:
|
||||||
|
|
||||||
if (SyncInput())
|
if (SyncInput())
|
||||||
{
|
{
|
||||||
pPlayer->pActor->spr.Angles.Pitch += DAngle::fromDeg(sPlayerInput[nPlayer].pan);
|
pPlayer->pActor->spr.Angles.Pitch += DAngle::fromDeg(PlayerList[nPlayer].input.horz);
|
||||||
}
|
}
|
||||||
|
|
||||||
pPlayer->Angles.doPitchKeys(&sPlayerInput[nLocalPlayer].actions, sPlayerInput[nPlayer].pan);
|
pPlayer->Angles.doPitchKeys(&PlayerList[nLocalPlayer].input.actions, PlayerList[nPlayer].input.pan);
|
||||||
|
|
||||||
if (actions & (SB_AIM_UP | SB_AIM_DOWN) || sPlayerInput[nPlayer].pan)
|
if (actions & (SB_AIM_UP | SB_AIM_DOWN) || PlayerList[nPlayer].input.horz)
|
||||||
{
|
{
|
||||||
pPlayer->nDestVertPan = pPlayer->pActor->spr.Angles.Pitch;
|
pPlayer->nDestVertPan = pPlayer->pActor->spr.Angles.Pitch;
|
||||||
pPlayer->bPlayerPan = pPlayer->bLockPan = true;
|
pPlayer->bPlayerPan = pPlayer->bLockPan = true;
|
||||||
|
|
|
@ -79,6 +79,7 @@ struct Player
|
||||||
bool bPlayerPan, bLockPan;
|
bool bPlayerPan, bLockPan;
|
||||||
DAngle nDestVertPan;
|
DAngle nDestVertPan;
|
||||||
|
|
||||||
|
InputPacket input;
|
||||||
PlayerAngles Angles;
|
PlayerAngles Angles;
|
||||||
sectortype* pPlayerPushSect;
|
sectortype* pPlayerPushSect;
|
||||||
sectortype* pPlayerViewSect;
|
sectortype* pPlayerViewSect;
|
||||||
|
|
|
@ -196,7 +196,7 @@ void DoSpiritHead()
|
||||||
static int dimSectCount = 0;
|
static int dimSectCount = 0;
|
||||||
auto pSpiritSpr = pSpiritSprite;
|
auto pSpiritSpr = pSpiritSprite;
|
||||||
|
|
||||||
sPlayerInput[0].actions |= SB_CENTERVIEW;
|
PlayerList[0].input.actions |= SB_CENTERVIEW;
|
||||||
|
|
||||||
switch (nHeadStage)
|
switch (nHeadStage)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue