int CCSPlayerAnimState::CalcFireLayerSequence(PlayerAnimEvent_t event) { // Figure out the weapon suffix. CWeaponCSBase *pWeapon = m_pHelpers->CSAnim_GetActiveWeapon(); if ( !pWeapon ) return -1; const char *pSuffix = GetWeaponSuffix(); if ( !pSuffix ) return -1; char tempsuffix[32]; if ( pWeapon->GetWeaponID() == WEAPON_ELITE ) { bool bPrimary = (event == PLAYERANIMEVENT_FIRE_GUN_PRIMARY); Q_snprintf( tempsuffix, sizeof(tempsuffix), "%s_%c", pSuffix, bPrimary?'r':'l' ); pSuffix = tempsuffix; } // Grenades handle their fire events separately if ( event == PLAYERANIMEVENT_THROW_GRENADE || pWeapon->GetWeaponID() == WEAPON_HEGRENADE || pWeapon->GetWeaponID() == WEAPON_SMOKEGRENADE || pWeapon->GetWeaponID() == WEAPON_FLASHBANG ) { return -1; } switch ( GetCurrentMainSequenceActivity() ) { case ACT_PLAYER_RUN_FIRE: case ACT_RUN: return CalcSequenceIndex( "%s%s", DEFAULT_FIRE_RUN_NAME, pSuffix ); case ACT_PLAYER_WALK_FIRE: case ACT_WALK: return CalcSequenceIndex( "%s%s", DEFAULT_FIRE_WALK_NAME, pSuffix ); case ACT_PLAYER_CROUCH_FIRE: case ACT_CROUCHIDLE: return CalcSequenceIndex( "%s%s", DEFAULT_FIRE_CROUCH_NAME, pSuffix ); case ACT_PLAYER_CROUCH_WALK_FIRE: case ACT_RUN_CROUCH: return CalcSequenceIndex( "%s%s", DEFAULT_FIRE_CROUCH_WALK_NAME, pSuffix ); default: case ACT_PLAYER_IDLE_FIRE: return CalcSequenceIndex( "%s%s", DEFAULT_FIRE_IDLE_NAME, pSuffix ); } }
/** * Returns the client's WEAPON_* value for the currently owned weapon, or WEAPON_NONE if no weapon is owned */ CSWeaponID GetClientWeaponID( bool primary ) { C_CSPlayer *localPlayer = CCSPlayer::GetLocalCSPlayer(); if ( !localPlayer ) return WEAPON_NONE; int slot = (primary)?0:1; CWeaponCSBase *pWeapon = GetWeaponInSlot( slot, slot ); if ( !pWeapon ) return WEAPON_NONE; return pWeapon->GetWeaponID(); }