int GetButtonBits(int bResetState) override { int bits = BaseClass::GetButtonBits(bResetState); CalcButtonBits(bits, IN_TIMES, s_ClearInputState, &in_times, bResetState); bits &= ~s_ClearInputState; if (bResetState) { s_ClearInputState = 0; } return bits; }
/* ============ GetButtonBits Returns appropriate button info for keyboard and mouse state Set bResetState to 1 to clear old state info ============ */ int CInput::GetButtonBits( int bResetState ) { int bits = 0; CalcButtonBits( bits, IN_SPEED, s_ClearInputState, &in_speed, bResetState ); CalcButtonBits( bits, IN_WALK, s_ClearInputState, &in_walk, bResetState ); CalcButtonBits( bits, IN_ATTACK, s_ClearInputState, &in_attack, bResetState ); CalcButtonBits( bits, IN_DUCK, s_ClearInputState, &in_duck, bResetState ); CalcButtonBits( bits, IN_JUMP, s_ClearInputState, &in_jump, bResetState ); CalcButtonBits( bits, IN_FORWARD, s_ClearInputState, &in_forward, bResetState ); CalcButtonBits( bits, IN_BACK, s_ClearInputState, &in_back, bResetState ); CalcButtonBits( bits, IN_USE, s_ClearInputState, &in_use, bResetState ); CalcButtonBits( bits, IN_LEFT, s_ClearInputState, &in_left, bResetState ); CalcButtonBits( bits, IN_RIGHT, s_ClearInputState, &in_right, bResetState ); CalcButtonBits( bits, IN_MOVELEFT, s_ClearInputState, &in_moveleft, bResetState ); CalcButtonBits( bits, IN_MOVERIGHT, s_ClearInputState, &in_moveright, bResetState ); CalcButtonBits( bits, IN_ATTACK2, s_ClearInputState, &in_attack2, bResetState ); CalcButtonBits( bits, IN_RELOAD, s_ClearInputState, &in_reload, bResetState ); CalcButtonBits( bits, IN_ALT1, s_ClearInputState, &in_alt1, bResetState ); CalcButtonBits( bits, IN_ALT2, s_ClearInputState, &in_alt2, bResetState ); CalcButtonBits( bits, IN_SCORE, s_ClearInputState, &in_score, bResetState ); CalcButtonBits( bits, IN_ZOOM, s_ClearInputState, &in_zoom, bResetState ); CalcButtonBits( bits, IN_GRENADE1, s_ClearInputState, &in_grenade1, bResetState ); CalcButtonBits( bits, IN_GRENADE2, s_ClearInputState, &in_grenade2, bResetState ); CalcButtonBits( bits, IN_ATTACK3, s_ClearInputState, &in_attack3, bResetState ); if ( KeyState(&in_ducktoggle) ) { bits |= IN_DUCK; } // Cancel is a special flag if (in_cancel) { bits |= IN_CANCEL; } if ( gHUD.m_iKeyBits & IN_WEAPON1 ) { bits |= IN_WEAPON1; } if ( gHUD.m_iKeyBits & IN_WEAPON2 ) { bits |= IN_WEAPON2; } // Clear out any residual bits &= ~s_ClearInputState; if ( bResetState ) { s_ClearInputState = 0; } return bits; }
/* ============ GetButtonBits Returns appropriate button info for keyboard and mouse state Set bResetState to 1 to clear old state info ============ */ int CInput::GetButtonBits( int bResetState ) { int bits = 0; CalcButtonBits( bits, IN_SPEED, s_ClearInputState, &in_speed, bResetState ); CalcButtonBits( bits, IN_WALK, s_ClearInputState, &in_walk, bResetState ); CalcButtonBits( bits, IN_ATTACK, s_ClearInputState, &in_attack, bResetState ); CalcButtonBits( bits, IN_DUCK, s_ClearInputState, &in_duck, bResetState ); CalcButtonBits( bits, IN_JUMP, s_ClearInputState, &in_jump, bResetState ); CalcButtonBits( bits, IN_FORWARD, s_ClearInputState, &in_forward, bResetState ); CalcButtonBits( bits, IN_BACK, s_ClearInputState, &in_back, bResetState ); CalcButtonBits( bits, IN_USE, s_ClearInputState, &in_use, bResetState ); CalcButtonBits( bits, IN_LEFT, s_ClearInputState, &in_left, bResetState ); CalcButtonBits( bits, IN_RIGHT, s_ClearInputState, &in_right, bResetState ); CalcButtonBits( bits, IN_MOVELEFT, s_ClearInputState, &in_moveleft, bResetState ); CalcButtonBits( bits, IN_MOVERIGHT, s_ClearInputState, &in_moveright, bResetState ); CalcButtonBits( bits, IN_ATTACK2, s_ClearInputState, &in_attack2, bResetState ); #ifdef C17 CalcButtonBits(bits, IN_IRONSIGHT, s_ClearInputState, &in_ironsight, bResetState); #endif CalcButtonBits( bits, IN_RELOAD, s_ClearInputState, &in_reload, bResetState ); CalcButtonBits( bits, IN_ALT1, s_ClearInputState, &in_alt1, bResetState ); CalcButtonBits( bits, IN_ALT2, s_ClearInputState, &in_alt2, bResetState ); CalcButtonBits( bits, IN_SCORE, s_ClearInputState, &in_score, bResetState ); CalcButtonBits( bits, IN_ZOOM, s_ClearInputState, &in_zoom, bResetState ); CalcButtonBits( bits, IN_GRENADE1, s_ClearInputState, &in_grenade1, bResetState ); CalcButtonBits( bits, IN_GRENADE2, s_ClearInputState, &in_grenade2, bResetState ); CalcButtonBits( bits, IN_ATTACK3, s_ClearInputState, &in_attack3, bResetState ); #ifdef C17_HAPTICS // Haptics addition CalcButtonBits(bits, IN_HAP_TOGGLEHAPTICS, s_ClearInputState, &in_hap_togglehaptics, bResetState); CalcButtonBits(bits, IN_HAP_TOGGLEMOVE, s_ClearInputState, &in_hap_togglemovement, bResetState); CalcButtonBits(bits, IN_HAP_HOLDCAMERA, s_ClearInputState, &in_hap_holdcamera, bResetState); #endif if ( KeyState(&in_ducktoggle) ) { bits |= IN_DUCK; } // Cancel is a special flag if (in_cancel) { bits |= IN_CANCEL; } if ( gHUD.m_iKeyBits & IN_WEAPON1 ) { bits |= IN_WEAPON1; } if ( gHUD.m_iKeyBits & IN_WEAPON2 ) { bits |= IN_WEAPON2; } // Clear out any residual bits &= ~s_ClearInputState; if ( bResetState ) { s_ClearInputState = 0; } return bits; }