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 ); } }
int CCSPlayerAnimState::CalcAimLayerSequence( float *flCycle, float *flAimSequenceWeight, bool bForceIdle ) { VPROF( "CCSPlayerAnimState::CalcAimLayerSequence" ); const char *pSuffix = GetWeaponSuffix(); if ( !pSuffix ) return 0; if ( bForceIdle ) { switch ( GetCurrentMainSequenceActivity() ) { case ACT_CROUCHIDLE: case ACT_RUN_CROUCH: return CalcSequenceIndex( "%s%s", DEFAULT_CROUCH_IDLE_NAME, pSuffix ); default: return CalcSequenceIndex( "%s%s", DEFAULT_IDLE_NAME, pSuffix ); } } else { switch ( GetCurrentMainSequenceActivity() ) { case ACT_RUN: return CalcSequenceIndex( "%s%s", DEFAULT_RUN_NAME, pSuffix ); case ACT_WALK: case ACT_RUNTOIDLE: case ACT_IDLETORUN: return CalcSequenceIndex( "%s%s", DEFAULT_WALK_NAME, pSuffix ); case ACT_CROUCHIDLE: return CalcSequenceIndex( "%s%s", DEFAULT_CROUCH_IDLE_NAME, pSuffix ); case ACT_RUN_CROUCH: return CalcSequenceIndex( "%s%s", DEFAULT_CROUCH_WALK_NAME, pSuffix ); case ACT_IDLE: default: return CalcSequenceIndex( "%s%s", DEFAULT_IDLE_NAME, pSuffix ); } } }
int CSDKPlayerAnimState::CalcFireLayerSequence(PlayerAnimEvent_t event) { // Figure out the weapon suffix. CWeaponSDKBase *pWeapon = m_pHelpers->SDKAnim_GetActiveWeapon(); if ( !pWeapon ) return 0; const char *pSuffix = GetWeaponSuffix(); if ( !pSuffix ) return 0; // Don't rely on their weapon here because the player has usually switched to their // pistol or rifle by the time the PLAYERANIMEVENT_THROW_GRENADE message gets to the client. if ( event == PLAYERANIMEVENT_THROW_GRENADE ) { pSuffix = "Gren"; } 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 ); } }
int CSDKPlayerAnimState::CalcReloadLayerSequence() { const char *pSuffix = GetWeaponSuffix(); if ( !pSuffix ) return -1; CWeaponSDKBase *pWeapon = m_pHelpers->SDKAnim_GetActiveWeapon(); if ( !pWeapon ) return -1; // First, look for reload_<weapon name>. char szName[512]; Q_snprintf( szName, sizeof( szName ), "reload_%s", pSuffix ); int iReloadSequence = m_pOuter->LookupSequence( szName ); if ( iReloadSequence != -1 ) return iReloadSequence; //SDKTODO /* // Ok, look for generic categories.. pistol, shotgun, rifle, etc. if ( pWeapon->GetSDKWpnData().m_WeaponType == WEAPONTYPE_PISTOL ) { Q_snprintf( szName, sizeof( szName ), "reload_pistol" ); iReloadSequence = m_pOuter->LookupSequence( szName ); if ( iReloadSequence != -1 ) return iReloadSequence; } */ // Fall back to reload_m4. iReloadSequence = CalcSequenceIndex( "reload_m4" ); if ( iReloadSequence > 0 ) return iReloadSequence; return -1; }
int CCSPlayerAnimState::CalcReloadLayerSequence( PlayerAnimEvent_t event ) { if ( m_delayedFire != PLAYERANIMEVENT_COUNT ) return -1; const char *weaponSuffix = GetWeaponSuffix(); if ( !weaponSuffix ) return -1; CWeaponCSBase *pWeapon = m_pHelpers->CSAnim_GetActiveWeapon(); if ( !pWeapon ) return -1; const char *prefix = ""; switch ( GetCurrentMainSequenceActivity() ) { case ACT_PLAYER_RUN_FIRE: case ACT_RUN: prefix = "run"; break; case ACT_PLAYER_WALK_FIRE: case ACT_WALK: prefix = "walk"; break; case ACT_PLAYER_CROUCH_FIRE: case ACT_CROUCHIDLE: prefix = "crouch_idle"; break; case ACT_PLAYER_CROUCH_WALK_FIRE: case ACT_RUN_CROUCH: prefix = "crouch_walk"; break; default: case ACT_PLAYER_IDLE_FIRE: prefix = "idle"; break; } const char *reloadSuffix = ""; switch ( event ) { case PLAYERANIMEVENT_RELOAD_START: reloadSuffix = "_start"; break; case PLAYERANIMEVENT_RELOAD_LOOP: reloadSuffix = "_loop"; break; case PLAYERANIMEVENT_RELOAD_END: reloadSuffix = "_end"; break; } // First, look for <prefix>_reload_<weapon name><_start|_loop|_end>. char szName[512]; Q_snprintf( szName, sizeof( szName ), "%s_reload_%s%s", prefix, weaponSuffix, reloadSuffix ); int iReloadSequence = m_pOuter->LookupSequence( szName ); if ( iReloadSequence != -1 ) return iReloadSequence; // Next, look for reload_<weapon name><_start|_loop|_end>. Q_snprintf( szName, sizeof( szName ), "reload_%s%s", weaponSuffix, reloadSuffix ); iReloadSequence = m_pOuter->LookupSequence( szName ); if ( iReloadSequence != -1 ) return iReloadSequence; // Ok, look for generic categories.. pistol, shotgun, rifle, etc. if ( pWeapon->GetCSWpnData().m_WeaponType == WEAPONTYPE_PISTOL ) { Q_snprintf( szName, sizeof( szName ), "reload_pistol" ); iReloadSequence = m_pOuter->LookupSequence( szName ); if ( iReloadSequence != -1 ) return iReloadSequence; } // Fall back to reload_m4. iReloadSequence = CalcSequenceIndex( "reload_m4" ); if ( iReloadSequence > 0 ) return iReloadSequence; return -1; }