mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-01-15 20:20:54 +00:00
- consolidation of invprev, invnext and invuse.
This commit is contained in:
parent
43de0d8312
commit
447573aa36
13 changed files with 111 additions and 118 deletions
|
@ -349,10 +349,7 @@ void registerinputcommands()
|
||||||
C_RegisterFunction("pause", nullptr, [](CCmdFuncPtr)->int { BitsToSend.pause = 1; sendPause = true; return CCMD_OK; });
|
C_RegisterFunction("pause", nullptr, [](CCmdFuncPtr)->int { BitsToSend.pause = 1; sendPause = true; return CCMD_OK; });
|
||||||
C_RegisterFunction("centerview", nullptr, [](CCmdFuncPtr)->int { BitsToSend.lookCenter = 1; return CCMD_OK; });
|
C_RegisterFunction("centerview", nullptr, [](CCmdFuncPtr)->int { BitsToSend.lookCenter = 1; return CCMD_OK; });
|
||||||
C_RegisterFunction("holsterweapon", nullptr, [](CCmdFuncPtr)->int { BitsToSend.holsterWeapon = 1; return CCMD_OK; });
|
C_RegisterFunction("holsterweapon", nullptr, [](CCmdFuncPtr)->int { BitsToSend.holsterWeapon = 1; return CCMD_OK; });
|
||||||
C_RegisterFunction("invprev", nullptr, [](CCmdFuncPtr)->int { BitsToSend.prevItem = 1; return CCMD_OK; });
|
|
||||||
C_RegisterFunction("invnext", nullptr, [](CCmdFuncPtr)->int { BitsToSend.nextItem = 1; return CCMD_OK; });
|
|
||||||
C_RegisterFunction("turnaround", nullptr, [](CCmdFuncPtr)->int { BitsToSend.spin180 = 1; return CCMD_OK; });
|
C_RegisterFunction("turnaround", nullptr, [](CCmdFuncPtr)->int { BitsToSend.spin180 = 1; return CCMD_OK; });
|
||||||
C_RegisterFunction("invuse", nullptr, [](CCmdFuncPtr)->int { BitsToSend.useItem = 1; return CCMD_OK; });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is called from ImputState::ClearAllInput and resets all static state being used here.
|
// This is called from ImputState::ClearAllInput and resets all static state being used here.
|
||||||
|
|
|
@ -1635,19 +1635,19 @@ void ProcessInput(PLAYER *pPlayer)
|
||||||
pPlayer->q16slopehoriz = 0;
|
pPlayer->q16slopehoriz = 0;
|
||||||
}
|
}
|
||||||
pPlayer->slope = (-fix16_to_int(pPlayer->q16horiz))<<7;
|
pPlayer->slope = (-fix16_to_int(pPlayer->q16horiz))<<7;
|
||||||
if (pInput->syncFlags.prevItem)
|
if (pInput->actions & SB_INVPREV)
|
||||||
{
|
{
|
||||||
pInput->syncFlags.prevItem = 0;
|
pInput->actions&= ~SB_INVPREV;
|
||||||
packPrevItem(pPlayer);
|
packPrevItem(pPlayer);
|
||||||
}
|
}
|
||||||
if (pInput->syncFlags.nextItem)
|
if (pInput->actions & SB_INVNEXT)
|
||||||
{
|
{
|
||||||
pInput->syncFlags.nextItem = 0;
|
pInput->actions &= ~SB_INVNEXT;
|
||||||
packNextItem(pPlayer);
|
packNextItem(pPlayer);
|
||||||
}
|
}
|
||||||
if (pInput->syncFlags.useItem)
|
if (pInput->actions & SB_INVUSE)
|
||||||
{
|
{
|
||||||
pInput->syncFlags.useItem = 0;
|
pInput->actions &= ~SB_INVUSE;
|
||||||
if (pPlayer->packSlots[pPlayer->packItemId].curAmount > 0)
|
if (pPlayer->packSlots[pPlayer->packItemId].curAmount > 0)
|
||||||
packUseItem(pPlayer, pPlayer->packItemId);
|
packUseItem(pPlayer, pPlayer->packItemId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,8 @@
|
||||||
|
|
||||||
static int WeaponToSend = 0;
|
static int WeaponToSend = 0;
|
||||||
ESyncBits ActionsToSend = 0;
|
ESyncBits ActionsToSend = 0;
|
||||||
|
static int dpad_lock = 0;
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
@ -112,6 +114,9 @@ void InputState::ClearAllInput()
|
||||||
{
|
{
|
||||||
memset(KeyStatus, 0, sizeof(KeyStatus));
|
memset(KeyStatus, 0, sizeof(KeyStatus));
|
||||||
AnyKeyStatus = false;
|
AnyKeyStatus = false;
|
||||||
|
ActionsToSend = 0;
|
||||||
|
WeaponToSend = 0;
|
||||||
|
dpad_lock = 0;
|
||||||
buttonMap.ResetButtonStates(); // this is important. If all input is cleared, the buttons must be cleared as well.
|
buttonMap.ResetButtonStates(); // this is important. If all input is cleared, the buttons must be cleared as well.
|
||||||
gi->clearlocalinputstate(); // also clear game local input state.
|
gi->clearlocalinputstate(); // also clear game local input state.
|
||||||
}
|
}
|
||||||
|
@ -274,6 +279,20 @@ CCMD(useitem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CCMD(invprev)
|
||||||
|
{
|
||||||
|
ActionsToSend |= SB_INVPREV;
|
||||||
|
}
|
||||||
|
|
||||||
|
CCMD(invnext)
|
||||||
|
{
|
||||||
|
ActionsToSend |= SB_INVNEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
CCMD(invuse)
|
||||||
|
{
|
||||||
|
ActionsToSend |= SB_INVUSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -281,18 +300,25 @@ void ApplyGlobalInput(InputPacket& input, ControlInfo *info)
|
||||||
{
|
{
|
||||||
if (WeaponToSend != 0) input.setNewWeapon(WeaponToSend);
|
if (WeaponToSend != 0) input.setNewWeapon(WeaponToSend);
|
||||||
WeaponToSend = 0;
|
WeaponToSend = 0;
|
||||||
if (info)
|
if (info && buttonMap.ButtonDown(gamefunc_Dpad_Select))
|
||||||
{
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Dpad_Select) && info->dz > 0) input.setNewWeapon(WeaponSel_Prev);
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Dpad_Select) && info->dz < 0) input.setNewWeapon(WeaponSel_Next);
|
|
||||||
}
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Dpad_Select))
|
|
||||||
{
|
{
|
||||||
|
// These buttons should not autorepeat. The game handlers are not really equipped for that.
|
||||||
|
if (info->dz > 0 && !(dpad_lock & 1)) { dpad_lock |= 1; input.setNewWeapon(WeaponSel_Prev); }
|
||||||
|
else dpad_lock &= ~1;
|
||||||
|
if (info->dz < 0 && !(dpad_lock & 2)) { dpad_lock |= 2; input.setNewWeapon(WeaponSel_Next); }
|
||||||
|
else dpad_lock &= ~2;
|
||||||
|
if ((info->dx < 0 || info->dyaw < 0) && !(dpad_lock & 4)) { dpad_lock |= 4; input.actions |= SB_INVPREV; }
|
||||||
|
else dpad_lock &= ~4;
|
||||||
|
if ((info->dx > 0 || info->dyaw > 0) && !(dpad_lock & 8)) { dpad_lock |= 8; input.actions |= SB_INVNEXT; }
|
||||||
|
else dpad_lock &= ~8;
|
||||||
|
|
||||||
// This eats the controller input for regular use
|
// This eats the controller input for regular use
|
||||||
info->dx = 0;
|
info->dx = 0;
|
||||||
info->dz = 0;
|
info->dz = 0;
|
||||||
info->dyaw = 0;
|
info->dyaw = 0;
|
||||||
}
|
}
|
||||||
|
else dpad_lock = 0;
|
||||||
|
|
||||||
input.actions |= ActionsToSend;
|
input.actions |= ActionsToSend;
|
||||||
ActionsToSend = 0;
|
ActionsToSend = 0;
|
||||||
|
|
||||||
|
|
|
@ -15,14 +15,16 @@ enum ESyncBits_ : uint32_t
|
||||||
SB_ITEM_BIT_6 = 1 << 9,
|
SB_ITEM_BIT_6 = 1 << 9,
|
||||||
SB_ITEM_BIT_7 = 1 << 10,
|
SB_ITEM_BIT_7 = 1 << 10,
|
||||||
|
|
||||||
// Exhumed has 6 items but doesn't use the network packet to activate them. Need to change
|
SB_INVPREV = 1 << 11,
|
||||||
|
SB_INVNEXT = 1 << 12,
|
||||||
|
SB_INVUSE = 1 << 13,
|
||||||
|
|
||||||
|
|
||||||
SB_WEAPONMASK_BITS = (15u * SB_FIRST_WEAPON_BIT), // Weapons take up 4 bits
|
SB_WEAPONMASK_BITS = (15u * SB_FIRST_WEAPON_BIT), // Weapons take up 4 bits
|
||||||
SB_ITEMUSE_BITS = (127u * SB_ITEM_BIT_1),
|
SB_ITEMUSE_BITS = (127u * SB_ITEM_BIT_1),
|
||||||
|
|
||||||
SB_BUTTON_MASK = 0, // all input from buttons (i.e. active while held)
|
SB_BUTTON_MASK = 0, // all input from buttons (i.e. active while held)
|
||||||
SB_INTERFACE_MASK = 0, // all input from CCMDs
|
SB_INTERFACE_MASK = (SB_INVPREV|SB_INVNEXT|SB_INVUSE), // all input from CCMDs
|
||||||
SB_INTERFACE_BITS = (SB_WEAPONMASK_BITS | SB_ITEMUSE_BITS | SB_INTERFACE_MASK)
|
SB_INTERFACE_BITS = (SB_WEAPONMASK_BITS | SB_ITEMUSE_BITS | SB_INTERFACE_MASK)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -68,20 +70,17 @@ enum EDukeSyncBits_ : uint32_t
|
||||||
SKB_MULTIFLAG = 1 << 17,
|
SKB_MULTIFLAG = 1 << 17,
|
||||||
SKB_CENTER_VIEW = 1 << 18,
|
SKB_CENTER_VIEW = 1 << 18,
|
||||||
SKB_HOLSTER = 1 << 19,
|
SKB_HOLSTER = 1 << 19,
|
||||||
SKB_INV_LEFT = 1 << 20,
|
|
||||||
SKB_PAUSE = 1 << 21,
|
SKB_PAUSE = 1 << 21,
|
||||||
SKB_QUICK_KICK = 1 << 22,
|
SKB_QUICK_KICK = 1 << 22,
|
||||||
SKB_AIMMODE = 1 << 23,
|
SKB_AIMMODE = 1 << 23,
|
||||||
SKB_GAMEQUIT = 1 << 26,
|
SKB_GAMEQUIT = 1 << 26,
|
||||||
SKB_INV_RIGHT = 1 << 27,
|
|
||||||
SKB_TURNAROUND = 1 << 28,
|
SKB_TURNAROUND = 1 << 28,
|
||||||
SKB_OPEN = 1 << 29,
|
SKB_OPEN = 1 << 29,
|
||||||
SKB_INVENTORY = 1 << 30,
|
|
||||||
SKB_ESCAPE = 1u << 31,
|
SKB_ESCAPE = 1u << 31,
|
||||||
|
|
||||||
SKB_INTERFACE_BITS = (SKB_QUICK_KICK | \
|
SKB_INTERFACE_BITS = (SKB_QUICK_KICK | \
|
||||||
SKB_HOLSTER | SKB_INV_LEFT | SKB_PAUSE | SKB_INV_RIGHT | \
|
SKB_HOLSTER | SKB_PAUSE | \
|
||||||
SKB_TURNAROUND | SKB_OPEN | SKB_INVENTORY | SKB_ESCAPE),
|
SKB_TURNAROUND | SKB_OPEN | SKB_ESCAPE),
|
||||||
|
|
||||||
SKB_NONE = 0,
|
SKB_NONE = 0,
|
||||||
SKB_ALL = ~0u
|
SKB_ALL = ~0u
|
||||||
|
@ -106,9 +105,6 @@ union SYNCFLAGS
|
||||||
unsigned int lookDown : 1;
|
unsigned int lookDown : 1;
|
||||||
unsigned int action : 1;
|
unsigned int action : 1;
|
||||||
unsigned int jab : 1;
|
unsigned int jab : 1;
|
||||||
unsigned int prevItem : 1;
|
|
||||||
unsigned int nextItem : 1;
|
|
||||||
unsigned int useItem : 1;
|
|
||||||
unsigned int holsterWeapon : 1;
|
unsigned int holsterWeapon : 1;
|
||||||
unsigned int lookCenter : 1;
|
unsigned int lookCenter : 1;
|
||||||
unsigned int lookLeft : 1;
|
unsigned int lookLeft : 1;
|
||||||
|
@ -148,10 +144,6 @@ union SYNCFLAGS
|
||||||
|
|
||||||
#define SK_TURN_180 25
|
#define SK_TURN_180 25
|
||||||
|
|
||||||
#define SK_INV_LEFT 26
|
|
||||||
#define SK_INV_RIGHT 27
|
|
||||||
|
|
||||||
#define SK_INV_USE 29
|
|
||||||
#define SK_HIDE_WEAPON 30
|
#define SK_HIDE_WEAPON 30
|
||||||
#define SK_SPACE_BAR 31
|
#define SK_SPACE_BAR 31
|
||||||
|
|
||||||
|
|
|
@ -528,6 +528,46 @@ void GameTicker()
|
||||||
weap2 = SelectAltWeapon(weap2);
|
weap2 = SelectAltWeapon(weap2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (localInput.actions & SB_INVPREV)
|
||||||
|
{
|
||||||
|
int nItem = nPlayerItem[nLocalPlayer];
|
||||||
|
|
||||||
|
for (int i = 6; i > 0; i--)
|
||||||
|
{
|
||||||
|
nItem--;
|
||||||
|
if (nItem < 0) nItem = 5;
|
||||||
|
|
||||||
|
if (PlayerList[nLocalPlayer].items[nItem] != 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i > 0) SetPlayerItem(nLocalPlayer, nItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (localInput.actions & SB_INVNEXT)
|
||||||
|
{
|
||||||
|
int nItem = nPlayerItem[nLocalPlayer];
|
||||||
|
|
||||||
|
for (int i = 6; i > 0; i--)
|
||||||
|
{
|
||||||
|
nItem++;
|
||||||
|
if (nItem == 6) nItem = 0;
|
||||||
|
|
||||||
|
if (PlayerList[nLocalPlayer].items[nItem] != 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i > 0) SetPlayerItem(nLocalPlayer, nItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (localInput.actions & SB_INVUSE)
|
||||||
|
{
|
||||||
|
if (nPlayerItem[nLocalPlayer] != -1)
|
||||||
|
{
|
||||||
|
localInput.setItemUsed(nPlayerItem[nLocalPlayer]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
if (localInput.isItemUsed(i))
|
if (localInput.isItemUsed(i))
|
||||||
|
|
|
@ -386,9 +386,6 @@ void registerinputcommands()
|
||||||
{
|
{
|
||||||
C_RegisterFunction("pause", nullptr, [](CCmdFuncPtr)->int { /*BitsToSend |= SKB_PAUSE;*/ sendPause = true; return CCMD_OK; });
|
C_RegisterFunction("pause", nullptr, [](CCmdFuncPtr)->int { /*BitsToSend |= SKB_PAUSE;*/ sendPause = true; return CCMD_OK; });
|
||||||
C_RegisterFunction("centerview", nullptr, ccmd_centerview);
|
C_RegisterFunction("centerview", nullptr, ccmd_centerview);
|
||||||
C_RegisterFunction("invprev", nullptr, [](CCmdFuncPtr)->int { if (PlayerList[nLocalPlayer].nHealth > 0) SetPrevItem(nLocalPlayer); return CCMD_OK; });
|
|
||||||
C_RegisterFunction("invnext", nullptr, [](CCmdFuncPtr)->int { if (PlayerList[nLocalPlayer].nHealth > 0) SetNextItem(nLocalPlayer); return CCMD_OK; });
|
|
||||||
//C_RegisterFunction("invuse", nullptr, [](CCmdFuncPtr)->int { if (PlayerList[nLocalPlayer].nHealth > 0) UseCurItem(nLocalPlayer); return CCMD_OK; });
|
|
||||||
|
|
||||||
// These are only here to silence the engine when the keys bound to them are pressed. The functions do not exist.
|
// These are only here to silence the engine when the keys bound to them are pressed. The functions do not exist.
|
||||||
C_RegisterFunction("turnaround", nullptr, [](CCmdFuncPtr)->int { return CCMD_OK; });
|
C_RegisterFunction("turnaround", nullptr, [](CCmdFuncPtr)->int { return CCMD_OK; });
|
||||||
|
|
|
@ -384,51 +384,6 @@ void SetPlayerItem(short nPlayer, short nItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetNextItem(int nPlayer)
|
|
||||||
{
|
|
||||||
short nItem = nPlayerItem[nPlayer];
|
|
||||||
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 6; i > 0; i--)
|
|
||||||
{
|
|
||||||
nItem++;
|
|
||||||
if (nItem == 6)
|
|
||||||
nItem = 0;
|
|
||||||
|
|
||||||
if (PlayerList[nPlayer].items[nItem] != 0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i > 0) {
|
|
||||||
SetPlayerItem(nPlayer, nItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetPrevItem(int nPlayer)
|
|
||||||
{
|
|
||||||
if (nPlayerItem[nPlayer] == -1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
int nItem = nPlayerItem[nPlayer];
|
|
||||||
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 6; i > 0; i--)
|
|
||||||
{
|
|
||||||
nItem--;
|
|
||||||
if (nItem < 0)
|
|
||||||
nItem = 5;
|
|
||||||
|
|
||||||
if (PlayerList[nPlayer].items[nItem] != 0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i > 0) {
|
|
||||||
SetPlayerItem(nPlayer, nItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MoveStatus()
|
void MoveStatus()
|
||||||
{
|
{
|
||||||
if (nItemSeq >= 0)
|
if (nItemSeq >= 0)
|
||||||
|
|
|
@ -36,8 +36,6 @@ void MoveStatus();
|
||||||
void DrawSnakeCamStatus();
|
void DrawSnakeCamStatus();
|
||||||
void DrawStatus();
|
void DrawStatus();
|
||||||
int BuildStatusAnim(int val, int nFlags);
|
int BuildStatusAnim(int val, int nFlags);
|
||||||
void SetNextItem(int nPlayer);
|
|
||||||
void SetPrevItem(int nPlayer);
|
|
||||||
void SetCounter(short nVal);
|
void SetCounter(short nVal);
|
||||||
void SetCounterImmediate(short nVal);
|
void SetCounterImmediate(short nVal);
|
||||||
|
|
||||||
|
|
|
@ -136,6 +136,11 @@ inline EDukeSyncBits PlayerInputBits(int pl, EDukeSyncBits bits)
|
||||||
return (sync[pl].sbits & bits);
|
return (sync[pl].sbits & bits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline bool PlayerInput(int pl, ESyncBits bit)
|
||||||
|
{
|
||||||
|
return (!!((sync[pl].actions) & bit));
|
||||||
|
}
|
||||||
|
|
||||||
inline ESyncBits PlayerInputBits(int pl, ESyncBits bits)
|
inline ESyncBits PlayerInputBits(int pl, ESyncBits bits)
|
||||||
{
|
{
|
||||||
return (sync[pl].actions & bits);
|
return (sync[pl].actions & bits);
|
||||||
|
|
|
@ -204,7 +204,7 @@ void hud_input(int snum)
|
||||||
if (sprite[p->i].extra <= 0) return;
|
if (sprite[p->i].extra <= 0) return;
|
||||||
|
|
||||||
// Activate an inventory item. This just forwards to the other inventory bits. If the inventory selector was taken out of the playsim this could be removed.
|
// Activate an inventory item. This just forwards to the other inventory bits. If the inventory selector was taken out of the playsim this could be removed.
|
||||||
if (PlayerInput(snum, SKB_INVENTORY) && p->newowner == -1)
|
if (PlayerInput(snum, SB_INVUSE) && p->newowner == -1)
|
||||||
{
|
{
|
||||||
SetGameVarID(g_iReturnVarID, 0, -1, snum);
|
SetGameVarID(g_iReturnVarID, 0, -1, snum);
|
||||||
OnEvent(EVENT_INVENTORY, -1, snum, -1);
|
OnEvent(EVENT_INVENTORY, -1, snum, -1);
|
||||||
|
@ -245,11 +245,11 @@ void hud_input(int snum)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PlayerInput(snum, SKB_INV_LEFT) || PlayerInput(snum, SKB_INV_RIGHT))
|
if (PlayerInput(snum, SB_INVPREV) || PlayerInput(snum, SB_INVNEXT))
|
||||||
{
|
{
|
||||||
p->invdisptime = 26 * 2;
|
p->invdisptime = 26 * 2;
|
||||||
|
|
||||||
if (PlayerInput(snum, SKB_INV_RIGHT)) k = 1;
|
if (PlayerInput(snum, SB_INVNEXT)) k = 1;
|
||||||
else k = 0;
|
else k = 0;
|
||||||
|
|
||||||
dainv = p->inven_icon;
|
dainv = p->inven_icon;
|
||||||
|
@ -311,13 +311,13 @@ void hud_input(int snum)
|
||||||
else dainv = 0;
|
else dainv = 0;
|
||||||
|
|
||||||
// These events force us to keep the inventory selector in the playsim as opposed to the UI where it really belongs.
|
// These events force us to keep the inventory selector in the playsim as opposed to the UI where it really belongs.
|
||||||
if (PlayerInput(snum, SKB_INV_LEFT))
|
if (PlayerInput(snum, SB_INVPREV))
|
||||||
{
|
{
|
||||||
SetGameVarID(g_iReturnVarID, dainv, -1, snum);
|
SetGameVarID(g_iReturnVarID, dainv, -1, snum);
|
||||||
OnEvent(EVENT_INVENTORYLEFT, -1, snum, -1);
|
OnEvent(EVENT_INVENTORYLEFT, -1, snum, -1);
|
||||||
dainv = GetGameVarID(g_iReturnVarID, -1, snum);
|
dainv = GetGameVarID(g_iReturnVarID, -1, snum);
|
||||||
}
|
}
|
||||||
if (PlayerInput(snum, SKB_INV_RIGHT))
|
if (PlayerInput(snum, SB_INVNEXT))
|
||||||
{
|
{
|
||||||
SetGameVarID(g_iReturnVarID, dainv, -1, snum);
|
SetGameVarID(g_iReturnVarID, dainv, -1, snum);
|
||||||
OnEvent(EVENT_INVENTORYRIGHT, -1, snum, -1);
|
OnEvent(EVENT_INVENTORYRIGHT, -1, snum, -1);
|
||||||
|
@ -617,12 +617,6 @@ static void processInputBits(player_struct *p, ControlInfo &info)
|
||||||
loc.sbits |= BitsToSend;
|
loc.sbits |= BitsToSend;
|
||||||
BitsToSend = 0;
|
BitsToSend = 0;
|
||||||
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Dpad_Select)) // todo: This must go to global code.
|
|
||||||
{
|
|
||||||
if (info.dx < 0 || info.dyaw < 0) loc.sbits |= SKB_INV_LEFT;
|
|
||||||
if (info.dx > 0 || info.dyaw < 0) loc.sbits |= SKB_INV_RIGHT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gamequit) loc.sbits |= SKB_GAMEQUIT;
|
if (gamequit) loc.sbits |= SKB_GAMEQUIT;
|
||||||
|
|
||||||
if (!onVehicle)
|
if (!onVehicle)
|
||||||
|
@ -1163,10 +1157,8 @@ void registerinputcommands()
|
||||||
C_RegisterFunction("pause", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_PAUSE; sendPause = true; return CCMD_OK; });
|
C_RegisterFunction("pause", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_PAUSE; sendPause = true; return CCMD_OK; });
|
||||||
C_RegisterFunction("centerview", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_CENTER_VIEW; return CCMD_OK; });
|
C_RegisterFunction("centerview", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_CENTER_VIEW; return CCMD_OK; });
|
||||||
C_RegisterFunction("holsterweapon", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_HOLSTER; return CCMD_OK; });
|
C_RegisterFunction("holsterweapon", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_HOLSTER; return CCMD_OK; });
|
||||||
C_RegisterFunction("invprev", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_INV_LEFT; return CCMD_OK; });
|
|
||||||
C_RegisterFunction("invnext", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_INV_RIGHT; return CCMD_OK; });
|
|
||||||
C_RegisterFunction("turnaround", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_TURNAROUND; return CCMD_OK; });
|
C_RegisterFunction("turnaround", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_TURNAROUND; return CCMD_OK; });
|
||||||
C_RegisterFunction("invuse", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_INVENTORY; return CCMD_OK; });
|
|
||||||
C_RegisterFunction("backoff", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_ESCAPE; return CCMD_OK; });
|
C_RegisterFunction("backoff", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_ESCAPE; return CCMD_OK; });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,6 @@ BEGIN_SW_NS
|
||||||
SWBOOL MultiPlayQuitFlag = FALSE;
|
SWBOOL MultiPlayQuitFlag = FALSE;
|
||||||
|
|
||||||
int BitsToSend = 0;
|
int BitsToSend = 0;
|
||||||
int inv_hotkey = 0;
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -473,17 +472,14 @@ void registerinputcommands()
|
||||||
C_RegisterFunction("pause", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= BIT(SK_PAUSE); sendPause = true; return CCMD_OK; });
|
C_RegisterFunction("pause", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= BIT(SK_PAUSE); sendPause = true; return CCMD_OK; });
|
||||||
C_RegisterFunction("centerview", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= BIT(SK_CENTER_VIEW); return CCMD_OK; });
|
C_RegisterFunction("centerview", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= BIT(SK_CENTER_VIEW); return CCMD_OK; });
|
||||||
C_RegisterFunction("holsterweapon", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= BIT(SK_HIDE_WEAPON); return CCMD_OK; });
|
C_RegisterFunction("holsterweapon", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= BIT(SK_HIDE_WEAPON); return CCMD_OK; });
|
||||||
C_RegisterFunction("invprev", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= BIT(SK_INV_LEFT); return CCMD_OK; });
|
|
||||||
C_RegisterFunction("invnext", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= BIT(SK_INV_RIGHT); return CCMD_OK; });
|
|
||||||
C_RegisterFunction("turnaround", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= BIT(SK_TURN_180); return CCMD_OK; });
|
C_RegisterFunction("turnaround", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= BIT(SK_TURN_180); return CCMD_OK; });
|
||||||
C_RegisterFunction("invuse", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= BIT(SK_INV_USE); return CCMD_OK; });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is called from ImputState::ClearAllInput and resets all static state being used here.
|
// This is called from ImputState::ClearAllInput and resets all static state being used here.
|
||||||
void GameInterface::clearlocalinputstate()
|
void GameInterface::clearlocalinputstate()
|
||||||
{
|
{
|
||||||
BitsToSend = 0;
|
BitsToSend = 0;
|
||||||
inv_hotkey = 0;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -412,14 +412,12 @@ StopInventoryNightVision(PLAYERp pp, short InventoryNum)
|
||||||
|
|
||||||
void InventoryKeys(PLAYERp pp)
|
void InventoryKeys(PLAYERp pp)
|
||||||
{
|
{
|
||||||
short inv_hotkey;
|
|
||||||
|
|
||||||
// scroll SPELLs left
|
// scroll SPELLs left
|
||||||
if (TEST_SYNC_KEY(pp, SK_INV_LEFT))
|
if (pp->input.actions & SB_INVPREV)
|
||||||
{
|
{
|
||||||
if (FLAG_KEY_PRESSED(pp, SK_INV_LEFT))
|
if (pp->KeyPressBits & SB_INVPREV)
|
||||||
{
|
{
|
||||||
FLAG_KEY_RELEASE(pp, SK_INV_LEFT);
|
pp->KeyPressBits &= ~SB_INVPREV;
|
||||||
pp->InventoryBarTics = SEC(2);
|
pp->InventoryBarTics = SEC(2);
|
||||||
PlayerUpdateInventory(pp, pp->InventoryNum - 1);
|
PlayerUpdateInventory(pp, pp->InventoryNum - 1);
|
||||||
PutStringInfo(pp, InventoryData[pp->InventoryNum].Name);
|
PutStringInfo(pp, InventoryData[pp->InventoryNum].Name);
|
||||||
|
@ -427,15 +425,15 @@ void InventoryKeys(PLAYERp pp)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FLAG_KEY_RESET(pp, SK_INV_LEFT);
|
pp->KeyPressBits |= SB_INVPREV;
|
||||||
}
|
}
|
||||||
|
|
||||||
// scroll SPELLs right
|
// scroll SPELLs right
|
||||||
if (TEST_SYNC_KEY(pp, SK_INV_RIGHT))
|
if (pp->input.actions & SB_INVNEXT)
|
||||||
{
|
{
|
||||||
if (FLAG_KEY_PRESSED(pp, SK_INV_RIGHT))
|
if (pp->KeyPressBits & SB_INVNEXT)
|
||||||
{
|
{
|
||||||
FLAG_KEY_RELEASE(pp, SK_INV_RIGHT);
|
pp->KeyPressBits &= ~SB_INVNEXT;
|
||||||
pp->InventoryBarTics = SEC(2);
|
pp->InventoryBarTics = SEC(2);
|
||||||
PlayerUpdateInventory(pp, pp->InventoryNum + 1);
|
PlayerUpdateInventory(pp, pp->InventoryNum + 1);
|
||||||
PutStringInfo(pp, InventoryData[pp->InventoryNum].Name);
|
PutStringInfo(pp, InventoryData[pp->InventoryNum].Name);
|
||||||
|
@ -443,15 +441,14 @@ void InventoryKeys(PLAYERp pp)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FLAG_KEY_RESET(pp, SK_INV_RIGHT);
|
pp->KeyPressBits |= SB_INVNEXT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TEST_SYNC_KEY(pp, SK_INV_USE))
|
if (pp->input.actions & SB_INVUSE)
|
||||||
{
|
{
|
||||||
if (FLAG_KEY_PRESSED(pp, SK_INV_USE))
|
if (pp->KeyPressBits & SB_INVUSE)
|
||||||
{
|
{
|
||||||
FLAG_KEY_RELEASE(pp, SK_INV_USE);
|
pp->KeyPressBits &= ~SB_INVUSE;
|
||||||
|
|
||||||
if (InventoryData[pp->InventoryNum].Init)
|
if (InventoryData[pp->InventoryNum].Init)
|
||||||
{
|
{
|
||||||
if (pp->InventoryAmount[pp->InventoryNum])
|
if (pp->InventoryAmount[pp->InventoryNum])
|
||||||
|
@ -468,7 +465,7 @@ void InventoryKeys(PLAYERp pp)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FLAG_KEY_RESET(pp, SK_INV_USE);
|
pp->KeyPressBits |= SB_INVUSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// test all 7 items
|
// test all 7 items
|
||||||
|
|
|
@ -84,17 +84,15 @@ DoPrediction(PLAYERp ppp)
|
||||||
// get rid of input bits so it doesn't go into other code branches that would
|
// get rid of input bits so it doesn't go into other code branches that would
|
||||||
// get it out of sync
|
// get it out of sync
|
||||||
ppp->input.actions &= ~(SB_WEAPONMASK_BITS|SB_ITEMUSE_BITS);
|
ppp->input.actions &= ~(SB_WEAPONMASK_BITS|SB_ITEMUSE_BITS);
|
||||||
ppp->KeyPressBits |= (SB_WEAPONMASK_BITS|SB_ITEMUSE_BITS);
|
ppp->KeyPressBits |= (SB_WEAPONMASK_BITS|SB_ITEMUSE_BITS|SB_INVNEXT|SB_INVPREV|SB_INVUSE);
|
||||||
RESET(ppp->input.bits,
|
RESET(ppp->input.bits,
|
||||||
BIT(SK_SHOOT)|BIT(SK_OPERATE)|BIT(SK_INV_LEFT)|BIT(SK_INV_RIGHT)|
|
BIT(SK_SHOOT)|BIT(SK_OPERATE)|BIT(SK_HIDE_WEAPON)|
|
||||||
BIT(SK_INV_USE)|BIT(SK_HIDE_WEAPON)|
|
|
||||||
BIT(SK_AUTO_AIM)|
|
BIT(SK_AUTO_AIM)|
|
||||||
BIT(SK_CENTER_VIEW)
|
BIT(SK_CENTER_VIEW)
|
||||||
);
|
);
|
||||||
|
|
||||||
SET(ppp->KeyPressFlags,
|
SET(ppp->KeyPressFlags,
|
||||||
BIT(SK_SHOOT)|BIT(SK_OPERATE)|BIT(SK_INV_LEFT)|BIT(SK_INV_RIGHT)|
|
BIT(SK_SHOOT)|BIT(SK_OPERATE)|BIT(SK_HIDE_WEAPON)|
|
||||||
BIT(SK_INV_USE)|BIT(SK_HIDE_WEAPON)|
|
|
||||||
BIT(SK_AUTO_AIM)|
|
BIT(SK_AUTO_AIM)|
|
||||||
BIT(SK_CENTER_VIEW)
|
BIT(SK_CENTER_VIEW)
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue