diff options
author | erorcun <erorcunerorcun@hotmail.com.tr> | 2020-12-16 21:28:25 +0100 |
---|---|---|
committer | erorcun <erorcunerorcun@hotmail.com.tr> | 2020-12-16 21:28:25 +0100 |
commit | 12d16ddc063bc442c9366aff189f67827aeb09af (patch) | |
tree | 03f4872d235109bcdd66c660c57a3ec883192dc1 /src/peds | |
parent | update librw with stencil states (diff) | |
download | re3-12d16ddc063bc442c9366aff189f67827aeb09af.tar re3-12d16ddc063bc442c9366aff189f67827aeb09af.tar.gz re3-12d16ddc063bc442c9366aff189f67827aeb09af.tar.bz2 re3-12d16ddc063bc442c9366aff189f67827aeb09af.tar.lz re3-12d16ddc063bc442c9366aff189f67827aeb09af.tar.xz re3-12d16ddc063bc442c9366aff189f67827aeb09af.tar.zst re3-12d16ddc063bc442c9366aff189f67827aeb09af.zip |
Diffstat (limited to 'src/peds')
-rw-r--r-- | src/peds/Ped.h | 7 | ||||
-rw-r--r-- | src/peds/PedAI.cpp | 4 | ||||
-rw-r--r-- | src/peds/PedFight.cpp | 21 | ||||
-rw-r--r-- | src/peds/PlayerPed.cpp | 12 |
4 files changed, 27 insertions, 17 deletions
diff --git a/src/peds/Ped.h b/src/peds/Ped.h index c2f417c4..92cb8eff 100644 --- a/src/peds/Ped.h +++ b/src/peds/Ped.h @@ -1009,6 +1009,13 @@ public: return GetPrimaryFireAnim(weapon); } + static AnimationId Get3rdFireAnim(CWeaponInfo* weapon) { + if (!!weapon->m_bCop3rd) + return ANIM_WEAPON_FIRE_3RD; + else + return (AnimationId)0; + } + static AnimationId GetFireAnimGround(CWeaponInfo* weapon, bool kickFloorIfNone = true) { if (!!weapon->m_bGround2nd) return ANIM_WEAPON_CROUCHFIRE; diff --git a/src/peds/PedAI.cpp b/src/peds/PedAI.cpp index 88d0a091..d5705a2f 100644 --- a/src/peds/PedAI.cpp +++ b/src/peds/PedAI.cpp @@ -5901,11 +5901,11 @@ CPed::Duck(void) CWeaponInfo *weapon = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType); CAnimBlendAssociation *attackAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_CROUCH); if (!attackAssoc) { - if(!!weapon->m_bCrouchFire) + if(GetCrouchFireAnim(weapon)) attackAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchFireAnim(weapon)); } if (!attackAssoc) { - if(!!weapon->m_bReload) + if(GetCrouchReloadAnim(weapon)) attackAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchReloadAnim(weapon)); } if (!attackAssoc) { diff --git a/src/peds/PedFight.cpp b/src/peds/PedFight.cpp index 855a0f1f..3a4e785a 100644 --- a/src/peds/PedFight.cpp +++ b/src/peds/PedFight.cpp @@ -472,20 +472,20 @@ CPed::ClearAttackByRemovingAnim(void) CAnimBlendAssociation *weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetPrimaryFireAnim(weapon)); if (!weaponAssoc) { - if (!!weapon->m_bCrouchFire) + if (GetCrouchFireAnim(weapon)) weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchFireAnim(weapon)); } if (!weaponAssoc) { - if(!!weapon->m_bFinish3rd) + if(GetFinishingAttackAnim(weapon)) weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetFinishingAttackAnim(weapon)); } if (!weaponAssoc) { - if(!!weapon->m_bUse2nd) + if(GetSecondFireAnim(weapon)) weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetSecondFireAnim(weapon)); } if (!weaponAssoc) { - if(!!weapon->m_bCop3rd) - weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_SPECIAL); + if(Get3rdFireAnim(weapon)) + weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), Get3rdFireAnim(weapon)); } if (weaponAssoc) { weaponAssoc->blendDelta = -8.0f; @@ -507,10 +507,10 @@ CPed::FinishedAttackCB(CAnimBlendAssociation *attackAssoc, void *arg) if (ped->m_nPedState != PED_ATTACK) { if (ped->bIsDucking && ped->IsPedInControl()) { - if (currentWeapon->m_bReload) { + if (GetCrouchReloadAnim(currentWeapon)) { reloadAnimAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), GetCrouchReloadAnim(currentWeapon)); } - if (currentWeapon->m_bCrouchFire && attackAssoc) { + if (GetCrouchFireAnim(currentWeapon) && attackAssoc) { if (attackAssoc->animId == GetCrouchFireAnim(currentWeapon) && !reloadAnimAssoc) { newAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_WEAPON_CROUCH, 8.0f); newAnim->SetCurrentTime(newAnim->hierarchy->totalLength); @@ -527,11 +527,12 @@ CPed::FinishedAttackCB(CAnimBlendAssociation *attackAssoc, void *arg) newAnim = CAnimManager::AddAnimation(ped->GetClump(), currentWeapon->m_AnimToPlay, ANIM_THROWABLE_THROW); } newAnim->SetFinishCallback(FinishedAttackCB, ped); + } else if (ped->bIsDucking && ped->bCrouchWhenShooting) { - if (currentWeapon->m_bReload) { + if (GetCrouchReloadAnim(currentWeapon)) { reloadAnimAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), GetCrouchReloadAnim(currentWeapon)); } - if (currentWeapon->m_bCrouchFire && attackAssoc) { + if (GetCrouchFireAnim(currentWeapon) && attackAssoc) { if (attackAssoc->animId == GetCrouchFireAnim(currentWeapon) && !reloadAnimAssoc) { newAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_WEAPON_CROUCH, 8.0f); newAnim->SetCurrentTime(newAnim->hierarchy->totalLength); @@ -1957,7 +1958,7 @@ CPed::EndFight(uint8 endType) RestorePreviousState(); CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE); if (!animAssoc) - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_CROUCHRELOAD); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE); if (animAssoc) animAssoc->flags |= ASSOC_DELETEFADEDOUT; diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp index 60499ccd..04f98366 100644 --- a/src/peds/PlayerPed.cpp +++ b/src/peds/PlayerPed.cpp @@ -341,7 +341,7 @@ CPlayerPed::SetRealMoveAnim(void) if (!curIdleAssoc) curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE); if (!curIdleAssoc) - curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_CROUCHRELOAD); + curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE); if (!((curRunStopAssoc && curRunStopAssoc->IsRunning()) || (curRunStopRAssoc && curRunStopRAssoc->IsRunning()))) { @@ -414,7 +414,7 @@ CPlayerPed::SetRealMoveAnim(void) delete RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED); CAnimBlendAssociation *fightIdleAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE); if (!fightIdleAnim) - fightIdleAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_CROUCHRELOAD); + fightIdleAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE); delete fightIdleAnim; delete curSprintAssoc; @@ -1337,13 +1337,14 @@ CPlayerPed::ProcessPlayerWeapon(CPad *padUsed) if (CCamera::m_bUseMouse3rdPerson && CCamera::bFreeCam && m_nSelectedWepSlot == m_currentWeapon && m_nMoveState != PEDMOVE_SPRINT) { +#define CAN_AIM_WITH_ARM (weaponInfo->m_bCanAimWithArm && !bIsDucking && !bCrouchWhenShooting) // Weapons except throwable and melee ones if (weaponInfo->m_nWeaponSlot > 2) { - if ((padUsed->GetTarget() && weaponInfo->m_bCanAimWithArm) || padUsed->GetWeapon()) { + if ((padUsed->GetTarget() && CAN_AIM_WITH_ARM) || padUsed->GetWeapon()) { float limitedCam = CGeneral::LimitRadianAngle(-TheCamera.Orientation); // On this one we can rotate arm. - if (weaponInfo->m_bCanAimWithArm) { + if (CAN_AIM_WITH_ARM) { if (!padUsed->GetWeapon()) { // making this State != ATTACK still stops it after attack. Re-start it immediately! SetWeaponLockOnTarget(nil); bIsPointingGunAt = false; // to not stop after attack @@ -1372,9 +1373,10 @@ CPlayerPed::ProcessPlayerWeapon(CPad *padUsed) m_fRotationCur += (limitedRotDest - m_fRotationCur) / 2; } } - } else if (weaponInfo->m_bCanAimWithArm && m_nPedState != PED_ATTACK) + } else if (CAN_AIM_WITH_ARM && m_nPedState != PED_ATTACK) ClearPointGunAt(); } +#undef CAN_AIM_WITH_ARM } if (changedHeadingRate == 1) { changedHeadingRate = 0; |