mirror of
https://git.rip/DMCA_FUCKER/re3.git
synced 2024-12-23 02:30:00 +00:00
Weapon flags changed from bit fields to bit mask (R* vision)
This commit is contained in:
parent
612470cb3f
commit
d459ef8820
|
@ -135,9 +135,9 @@ public:
|
||||||
|
|
||||||
cPedParams()
|
cPedParams()
|
||||||
{
|
{
|
||||||
m_pPed = nil;
|
|
||||||
m_bDistanceCalculated = false;
|
m_bDistanceCalculated = false;
|
||||||
m_fDistance = 0.0f;
|
m_fDistance = 0.0f;
|
||||||
|
m_pPed = nil;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -155,7 +155,7 @@ public:
|
||||||
{
|
{
|
||||||
m_bDistanceCalculated = false;
|
m_bDistanceCalculated = false;
|
||||||
m_fDistance = 0.0f;
|
m_fDistance = 0.0f;
|
||||||
m_pVehicle = 0;
|
m_pVehicle = nil;
|
||||||
m_pTransmission = nil;
|
m_pTransmission = nil;
|
||||||
m_nIndex = 0;
|
m_nIndex = 0;
|
||||||
m_fVelocityChange = 0.0f;
|
m_fVelocityChange = 0.0f;
|
||||||
|
|
|
@ -1046,7 +1046,7 @@ CPed::SetAimFlag(float angle)
|
||||||
m_lookTimer = 0;
|
m_lookTimer = 0;
|
||||||
m_pLookTarget = nil;
|
m_pLookTarget = nil;
|
||||||
m_pSeekTarget = nil;
|
m_pSeekTarget = nil;
|
||||||
if (CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bCanAimWithArm)
|
if (CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->IsFlagSet(WEAPONFLAG_CANAIM_WITHARM))
|
||||||
m_pedIK.m_flags |= CPedIK::AIMS_WITH_ARM;
|
m_pedIK.m_flags |= CPedIK::AIMS_WITH_ARM;
|
||||||
else
|
else
|
||||||
m_pedIK.m_flags &= ~CPedIK::AIMS_WITH_ARM;
|
m_pedIK.m_flags &= ~CPedIK::AIMS_WITH_ARM;
|
||||||
|
|
|
@ -201,7 +201,7 @@ CPed::PointGunAt(void)
|
||||||
weaponAssoc->SetCurrentTime(weaponInfo->m_fAnimLoopStart);
|
weaponAssoc->SetCurrentTime(weaponInfo->m_fAnimLoopStart);
|
||||||
weaponAssoc->flags &= ~ASSOC_RUNNING;
|
weaponAssoc->flags &= ~ASSOC_RUNNING;
|
||||||
|
|
||||||
if (weaponInfo->m_bCanAimWithArm)
|
if (weaponInfo->IsFlagSet(WEAPONFLAG_CANAIM_WITHARM))
|
||||||
m_pedIK.m_flags |= CPedIK::AIMS_WITH_ARM;
|
m_pedIK.m_flags |= CPedIK::AIMS_WITH_ARM;
|
||||||
else
|
else
|
||||||
m_pedIK.m_flags &= ~CPedIK::AIMS_WITH_ARM;
|
m_pedIK.m_flags &= ~CPedIK::AIMS_WITH_ARM;
|
||||||
|
@ -300,7 +300,7 @@ CPed::SetAttack(CEntity *victim)
|
||||||
if (m_pSeekTarget)
|
if (m_pSeekTarget)
|
||||||
m_pSeekTarget->RegisterReference((CEntity **) &m_pSeekTarget);
|
m_pSeekTarget->RegisterReference((CEntity **) &m_pSeekTarget);
|
||||||
|
|
||||||
if (curWeapon->m_bCanAim) {
|
if (curWeapon->IsFlagSet(WEAPONFLAG_CANAIM)) {
|
||||||
CVector aimPos = GetRight() * 0.1f + GetForward() * 0.2f + GetPosition();
|
CVector aimPos = GetRight() * 0.1f + GetForward() * 0.2f + GetPosition();
|
||||||
CEntity *obstacle = CWorld::TestSphereAgainstWorld(aimPos, 0.2f, nil, true, false, false, true, false, false);
|
CEntity *obstacle = CWorld::TestSphereAgainstWorld(aimPos, 0.2f, nil, true, false, false, true, false, false);
|
||||||
if (obstacle)
|
if (obstacle)
|
||||||
|
@ -342,7 +342,7 @@ CPed::SetAttack(CEntity *victim)
|
||||||
if (pointBlankStatus == POINT_BLANK_FOR_WANTED_PED || !victimPed)
|
if (pointBlankStatus == POINT_BLANK_FOR_WANTED_PED || !victimPed)
|
||||||
StartFightAttack(200);
|
StartFightAttack(200);
|
||||||
} else {
|
} else {
|
||||||
if (!curWeapon->m_bCanAim)
|
if (!curWeapon->IsFlagSet(WEAPONFLAG_CANAIM))
|
||||||
m_pSeekTarget = nil;
|
m_pSeekTarget = nil;
|
||||||
|
|
||||||
if (m_nPedState != PED_AIM_GUN)
|
if (m_nPedState != PED_AIM_GUN)
|
||||||
|
@ -417,7 +417,7 @@ CPed::ClearAttackByRemovingAnim(void)
|
||||||
if (!weaponAssoc) {
|
if (!weaponAssoc) {
|
||||||
weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), weapon->m_Anim2ToPlay);
|
weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), weapon->m_Anim2ToPlay);
|
||||||
|
|
||||||
if (!weaponAssoc && weapon->m_bThrow)
|
if (!weaponAssoc && weapon->IsFlagSet(WEAPONFLAG_THROW))
|
||||||
weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_THROWU);
|
weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_THROWU);
|
||||||
|
|
||||||
if (!weaponAssoc) {
|
if (!weaponAssoc) {
|
||||||
|
@ -569,7 +569,7 @@ CPed::Attack(void)
|
||||||
delayBetweenAnimAndFire = ourWeapon->m_fAnim2FrameFire;
|
delayBetweenAnimAndFire = ourWeapon->m_fAnim2FrameFire;
|
||||||
|
|
||||||
// Long throw granade, molotov
|
// Long throw granade, molotov
|
||||||
if (!weaponAnimAssoc && ourWeapon->m_bThrow) {
|
if (!weaponAnimAssoc && ourWeapon->IsFlagSet(WEAPONFLAG_THROW)) {
|
||||||
weaponAnimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_THROWU);
|
weaponAnimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_THROWU);
|
||||||
delayBetweenAnimAndFire = 0.2f;
|
delayBetweenAnimAndFire = 0.2f;
|
||||||
}
|
}
|
||||||
|
@ -605,7 +605,7 @@ CPed::Attack(void)
|
||||||
animStart = ourWeapon->m_fAnimLoopStart;
|
animStart = ourWeapon->m_fAnimLoopStart;
|
||||||
weaponAnimTime = weaponAnimAssoc->currentTime;
|
weaponAnimTime = weaponAnimAssoc->currentTime;
|
||||||
if (weaponAnimTime > animStart && weaponAnimTime - weaponAnimAssoc->timeStep <= animStart) {
|
if (weaponAnimTime > animStart && weaponAnimTime - weaponAnimAssoc->timeStep <= animStart) {
|
||||||
if (ourWeapon->m_bCanAimWithArm)
|
if (ourWeapon->IsFlagSet(WEAPONFLAG_CANAIM_WITHARM))
|
||||||
m_pedIK.m_flags |= CPedIK::AIMS_WITH_ARM;
|
m_pedIK.m_flags |= CPedIK::AIMS_WITH_ARM;
|
||||||
else
|
else
|
||||||
m_pedIK.m_flags &= ~CPedIK::AIMS_WITH_ARM;
|
m_pedIK.m_flags &= ~CPedIK::AIMS_WITH_ARM;
|
||||||
|
|
|
@ -192,7 +192,7 @@ CPlayerPed::MakeChangesForNewWeapon(int8 weapon)
|
||||||
|
|
||||||
GetWeapon()->m_nAmmoInClip = Min(GetWeapon()->m_nAmmoTotal, CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_nAmountofAmmunition);
|
GetWeapon()->m_nAmmoInClip = Min(GetWeapon()->m_nAmmoTotal, CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_nAmountofAmmunition);
|
||||||
|
|
||||||
if (!(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bCanAim))
|
if (!CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->IsFlagSet(WEAPONFLAG_CANAIM))
|
||||||
ClearWeaponTarget();
|
ClearWeaponTarget();
|
||||||
|
|
||||||
CAnimBlendAssociation *weaponAnim = RpAnimBlendClumpGetAssociation(GetClump(), CWeaponInfo::GetWeaponInfo(WEAPONTYPE_SNIPERRIFLE)->m_AnimToPlay);
|
CAnimBlendAssociation *weaponAnim = RpAnimBlendClumpGetAssociation(GetClump(), CWeaponInfo::GetWeaponInfo(WEAPONTYPE_SNIPERRIFLE)->m_AnimToPlay);
|
||||||
|
@ -685,7 +685,7 @@ CPlayerPed::PlayerControlFighter(CPad *padUsed)
|
||||||
bIsAttacking = false;
|
bIsAttacking = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bHeavy && padUsed->JumpJustDown()) {
|
if (!CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->IsFlagSet(WEAPONFLAG_HEAVY) && padUsed->JumpJustDown()) {
|
||||||
if (m_nEvadeAmount != 0 && m_pEvadingFrom) {
|
if (m_nEvadeAmount != 0 && m_pEvadingFrom) {
|
||||||
SetEvasiveDive((CPhysical*)m_pEvadingFrom, 1);
|
SetEvasiveDive((CPhysical*)m_pEvadingFrom, 1);
|
||||||
m_nEvadeAmount = 0;
|
m_nEvadeAmount = 0;
|
||||||
|
@ -723,13 +723,13 @@ CPlayerPed::PlayerControl1stPersonRunAround(CPad *padUsed)
|
||||||
m_fMoveSpeed = 0.0f;
|
m_fMoveSpeed = 0.0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bHeavy) && padUsed->GetSprint()) {
|
if (!CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->IsFlagSet(WEAPONFLAG_HEAVY) && padUsed->GetSprint()) {
|
||||||
m_nMoveState = PEDMOVE_SPRINT;
|
m_nMoveState = PEDMOVE_SPRINT;
|
||||||
}
|
}
|
||||||
if (m_nPedState != PED_FIGHT)
|
if (m_nPedState != PED_FIGHT)
|
||||||
SetRealMoveAnim();
|
SetRealMoveAnim();
|
||||||
|
|
||||||
if (!bIsInTheAir && !(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bHeavy)
|
if (!bIsInTheAir && !(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->IsFlagSet(WEAPONFLAG_HEAVY))
|
||||||
&& padUsed->JumpJustDown() && m_nPedState != PED_JUMP) {
|
&& padUsed->JumpJustDown() && m_nPedState != PED_JUMP) {
|
||||||
ClearAttack();
|
ClearAttack();
|
||||||
ClearWeaponTarget();
|
ClearWeaponTarget();
|
||||||
|
@ -1061,12 +1061,12 @@ CPlayerPed::ProcessPlayerWeapon(CPad *padUsed)
|
||||||
m_nSelectedWepSlot == m_currentWeapon && m_nMoveState != PEDMOVE_SPRINT) {
|
m_nSelectedWepSlot == m_currentWeapon && m_nMoveState != PEDMOVE_SPRINT) {
|
||||||
|
|
||||||
// Weapons except throwable and melee ones
|
// Weapons except throwable and melee ones
|
||||||
if (weaponInfo->m_bCanAim || weaponInfo->m_b1stPerson || weaponInfo->m_bExpands) {
|
if (weaponInfo->IsFlagSet(WEAPONFLAG_CANAIM) || weaponInfo->IsFlagSet(WEAPONFLAG_1ST_PERSON) || weaponInfo->IsFlagSet(WEAPONFLAG_EXPANDS)) {
|
||||||
if ((padUsed->GetTarget() && weaponInfo->m_bCanAimWithArm) || padUsed->GetWeapon()) {
|
if ((padUsed->GetTarget() && weaponInfo->IsFlagSet(WEAPONFLAG_CANAIM_WITHARM)) || padUsed->GetWeapon()) {
|
||||||
float limitedCam = CGeneral::LimitRadianAngle(-TheCamera.Orientation);
|
float limitedCam = CGeneral::LimitRadianAngle(-TheCamera.Orientation);
|
||||||
|
|
||||||
// On this one we can rotate arm.
|
// On this one we can rotate arm.
|
||||||
if (weaponInfo->m_bCanAimWithArm) {
|
if (weaponInfo->IsFlagSet(WEAPONFLAG_CANAIM_WITHARM)) {
|
||||||
if (!padUsed->GetWeapon()) { // making this State != ATTACK still stops it after attack. Re-start it immediately!
|
if (!padUsed->GetWeapon()) { // making this State != ATTACK still stops it after attack. Re-start it immediately!
|
||||||
SetPointGunAt(nil);
|
SetPointGunAt(nil);
|
||||||
bIsPointingGunAt = false; // to not stop after attack
|
bIsPointingGunAt = false; // to not stop after attack
|
||||||
|
@ -1083,7 +1083,7 @@ CPlayerPed::ProcessPlayerWeapon(CPad *padUsed)
|
||||||
m_headingRate = 50.0f;
|
m_headingRate = 50.0f;
|
||||||
|
|
||||||
// Anim. fix for shotgun, ak47 and m16 (we must finish rot. it quickly)
|
// Anim. fix for shotgun, ak47 and m16 (we must finish rot. it quickly)
|
||||||
if (weaponInfo->m_bCanAim && padUsed->WeaponJustDown()) {
|
if (weaponInfo->IsFlagSet(WEAPONFLAG_CANAIM) && padUsed->WeaponJustDown()) {
|
||||||
m_fRotationCur = CGeneral::LimitRadianAngle(m_fRotationCur);
|
m_fRotationCur = CGeneral::LimitRadianAngle(m_fRotationCur);
|
||||||
float limitedRotDest = m_fRotationDest;
|
float limitedRotDest = m_fRotationDest;
|
||||||
|
|
||||||
|
@ -1096,7 +1096,7 @@ CPlayerPed::ProcessPlayerWeapon(CPad *padUsed)
|
||||||
m_fRotationCur += (limitedRotDest - m_fRotationCur) / 2;
|
m_fRotationCur += (limitedRotDest - m_fRotationCur) / 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (weaponInfo->m_bCanAimWithArm && m_nPedState != PED_ATTACK)
|
} else if (weaponInfo->IsFlagSet(WEAPONFLAG_CANAIM_WITHARM) && m_nPedState != PED_ATTACK)
|
||||||
ClearPointGunAt();
|
ClearPointGunAt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1133,7 +1133,7 @@ CPlayerPed::ProcessPlayerWeapon(CPad *padUsed)
|
||||||
TheCamera.UpdateAimingCoors(m_pPointGunAt->GetPosition());
|
TheCamera.UpdateAimingCoors(m_pPointGunAt->GetPosition());
|
||||||
}
|
}
|
||||||
#ifdef FREE_CAM
|
#ifdef FREE_CAM
|
||||||
else if ((CCamera::bFreeCam && weaponInfo->m_eWeaponFire == WEAPON_FIRE_MELEE) || (weaponInfo->m_bCanAim && !CCamera::m_bUseMouse3rdPerson)) {
|
else if ((CCamera::bFreeCam && weaponInfo->m_eWeaponFire == WEAPON_FIRE_MELEE) || (weaponInfo->IsFlagSet(WEAPONFLAG_CANAIM) && !CCamera::m_bUseMouse3rdPerson)) {
|
||||||
#else
|
#else
|
||||||
else if (weaponInfo->m_bCanAim && !CCamera::m_bUseMouse3rdPerson) {
|
else if (weaponInfo->m_bCanAim && !CCamera::m_bUseMouse3rdPerson) {
|
||||||
#endif
|
#endif
|
||||||
|
@ -1215,13 +1215,13 @@ CPlayerPed::PlayerControlZelda(CPad *padUsed)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bHeavy) && padUsed->GetSprint()) {
|
if (!CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->IsFlagSet(WEAPONFLAG_HEAVY) && padUsed->GetSprint()) {
|
||||||
m_nMoveState = PEDMOVE_SPRINT;
|
m_nMoveState = PEDMOVE_SPRINT;
|
||||||
}
|
}
|
||||||
if (m_nPedState != PED_FIGHT)
|
if (m_nPedState != PED_FIGHT)
|
||||||
SetRealMoveAnim();
|
SetRealMoveAnim();
|
||||||
|
|
||||||
if (!bIsInTheAir && !(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bHeavy)
|
if (!bIsInTheAir && !(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->IsFlagSet(WEAPONFLAG_HEAVY))
|
||||||
&& padUsed->JumpJustDown() && m_nPedState != PED_JUMP) {
|
&& padUsed->JumpJustDown() && m_nPedState != PED_JUMP) {
|
||||||
ClearAttack();
|
ClearAttack();
|
||||||
ClearWeaponTarget();
|
ClearWeaponTarget();
|
||||||
|
|
|
@ -76,7 +76,7 @@ CShotInfo::AddShot(CEntity *sourceEntity, eWeaponType weapon, CVector startPos,
|
||||||
gaShotInfo[slot].m_areaAffected.z += CShotInfo::ms_afRandTable[CGeneral::GetRandomNumber() % ARRAY_SIZE(ms_afRandTable)];
|
gaShotInfo[slot].m_areaAffected.z += CShotInfo::ms_afRandTable[CGeneral::GetRandomNumber() % ARRAY_SIZE(ms_afRandTable)];
|
||||||
}
|
}
|
||||||
gaShotInfo[slot].m_areaAffected.Normalise();
|
gaShotInfo[slot].m_areaAffected.Normalise();
|
||||||
if (weaponInfo->m_bRandSpeed)
|
if (weaponInfo->IsFlagSet(WEAPONFLAG_RAND_SPEED))
|
||||||
gaShotInfo[slot].m_areaAffected *= CShotInfo::ms_afRandTable[CGeneral::GetRandomNumber() % ARRAY_SIZE(ms_afRandTable)] + weaponInfo->m_fSpeed;
|
gaShotInfo[slot].m_areaAffected *= CShotInfo::ms_afRandTable[CGeneral::GetRandomNumber() % ARRAY_SIZE(ms_afRandTable)] + weaponInfo->m_fSpeed;
|
||||||
else
|
else
|
||||||
gaShotInfo[slot].m_areaAffected *= weaponInfo->m_fSpeed;
|
gaShotInfo[slot].m_areaAffected *= weaponInfo->m_fSpeed;
|
||||||
|
@ -117,10 +117,10 @@ CShotInfo::Update()
|
||||||
shot.m_inUse = false;
|
shot.m_inUse = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (weaponInfo->m_bSlowsDown)
|
if (weaponInfo->IsFlagSet(WEAPONFLAG_SLOWS_DOWN))
|
||||||
shot.m_areaAffected *= pow(0.96, CTimer::GetTimeStep()); // FRAMERATE
|
shot.m_areaAffected *= pow(0.96, CTimer::GetTimeStep()); // FRAMERATE
|
||||||
|
|
||||||
if (weaponInfo->m_bExpands)
|
if (weaponInfo->IsFlagSet(WEAPONFLAG_EXPANDS))
|
||||||
shot.m_radius += 0.075f * CTimer::GetTimeStep();
|
shot.m_radius += 0.075f * CTimer::GetTimeStep();
|
||||||
|
|
||||||
shot.m_startPos += CTimer::GetTimeStep() * shot.m_areaAffected;
|
shot.m_startPos += CTimer::GetTimeStep() * shot.m_areaAffected;
|
||||||
|
|
|
@ -39,11 +39,7 @@ CWeaponInfo::Initialise(void)
|
||||||
ms_apWeaponInfos[i].m_eWeaponFire = WEAPON_FIRE_INSTANT_HIT;
|
ms_apWeaponInfos[i].m_eWeaponFire = WEAPON_FIRE_INSTANT_HIT;
|
||||||
ms_apWeaponInfos[i].m_AnimToPlay = ANIM_PUNCH_R;
|
ms_apWeaponInfos[i].m_AnimToPlay = ANIM_PUNCH_R;
|
||||||
ms_apWeaponInfos[i].m_Anim2ToPlay = NUM_ANIMS;
|
ms_apWeaponInfos[i].m_Anim2ToPlay = NUM_ANIMS;
|
||||||
ms_apWeaponInfos[i].m_bUseGravity = 1;
|
ms_apWeaponInfos[i].m_Flags = WEAPONFLAG_USE_GRAVITY | WEAPONFLAG_SLOWS_DOWN | WEAPONFLAG_RAND_SPEED | WEAPONFLAG_EXPANDS | WEAPONFLAG_EXPLODES;
|
||||||
ms_apWeaponInfos[i].m_bSlowsDown = 1;
|
|
||||||
ms_apWeaponInfos[i].m_bRandSpeed = 1;
|
|
||||||
ms_apWeaponInfos[i].m_bExpands = 1;
|
|
||||||
ms_apWeaponInfos[i].m_bExplodes = 1;
|
|
||||||
}
|
}
|
||||||
debug("Loading weapon data...\n");
|
debug("Loading weapon data...\n");
|
||||||
LoadWeaponData();
|
LoadWeaponData();
|
||||||
|
@ -160,17 +156,7 @@ CWeaponInfo::LoadWeaponData(void)
|
||||||
ms_apWeaponInfos[weaponType].m_fAnimFrameFire = delayBetweenAnimAndFire / 30.0f;
|
ms_apWeaponInfos[weaponType].m_fAnimFrameFire = delayBetweenAnimAndFire / 30.0f;
|
||||||
ms_apWeaponInfos[weaponType].m_fAnim2FrameFire = delayBetweenAnim2AndFire / 30.0f;
|
ms_apWeaponInfos[weaponType].m_fAnim2FrameFire = delayBetweenAnim2AndFire / 30.0f;
|
||||||
ms_apWeaponInfos[weaponType].m_nModelId = modelId;
|
ms_apWeaponInfos[weaponType].m_nModelId = modelId;
|
||||||
ms_apWeaponInfos[weaponType].m_bUseGravity = flags & 1;
|
ms_apWeaponInfos[weaponType].m_Flags = flags;
|
||||||
ms_apWeaponInfos[weaponType].m_bSlowsDown = (flags >> 1) & 1;
|
|
||||||
ms_apWeaponInfos[weaponType].m_bDissipates = (flags >> 2) & 1;
|
|
||||||
ms_apWeaponInfos[weaponType].m_bRandSpeed = (flags >> 3) & 1;
|
|
||||||
ms_apWeaponInfos[weaponType].m_bExpands = (flags >> 4) & 1;
|
|
||||||
ms_apWeaponInfos[weaponType].m_bExplodes = (flags >> 5) & 1;
|
|
||||||
ms_apWeaponInfos[weaponType].m_bCanAim = (flags >> 6) & 1;
|
|
||||||
ms_apWeaponInfos[weaponType].m_bCanAimWithArm = (flags >> 7) & 1;
|
|
||||||
ms_apWeaponInfos[weaponType].m_b1stPerson = (flags >> 8) & 1;
|
|
||||||
ms_apWeaponInfos[weaponType].m_bHeavy = (flags >> 9) & 1;
|
|
||||||
ms_apWeaponInfos[weaponType].m_bThrow = (flags >> 10) & 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,22 @@
|
||||||
#include "AnimationId.h"
|
#include "AnimationId.h"
|
||||||
#include "WeaponType.h"
|
#include "WeaponType.h"
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
WEAPONFLAG_USE_GRAVITY = 1,
|
||||||
|
WEAPONFLAG_SLOWS_DOWN = 1 << 1,
|
||||||
|
WEAPONFLAG_DISSIPATES = 1 << 2,
|
||||||
|
WEAPONFLAG_RAND_SPEED = 1 << 3,
|
||||||
|
WEAPONFLAG_EXPANDS = 1 << 4,
|
||||||
|
WEAPONFLAG_EXPLODES = 1 << 5,
|
||||||
|
WEAPONFLAG_CANAIM = 1 << 6,
|
||||||
|
WEAPONFLAG_CANAIM_WITHARM = 1 << 7,
|
||||||
|
WEAPONFLAG_1ST_PERSON = 1 << 8,
|
||||||
|
WEAPONFLAG_HEAVY = 1 << 9,
|
||||||
|
WEAPONFLAG_THROW = 1 << 10,
|
||||||
|
};
|
||||||
|
|
||||||
class CWeaponInfo {
|
class CWeaponInfo {
|
||||||
// static CWeaponInfo(&ms_apWeaponInfos)[14];
|
|
||||||
static CWeaponInfo ms_apWeaponInfos[WEAPONTYPE_LAST_WEAPONTYPE];
|
static CWeaponInfo ms_apWeaponInfos[WEAPONTYPE_LAST_WEAPONTYPE];
|
||||||
public:
|
public:
|
||||||
eWeaponFire m_eWeaponFire;
|
eWeaponFire m_eWeaponFire;
|
||||||
|
@ -25,18 +39,7 @@ public:
|
||||||
float m_fAnimFrameFire;
|
float m_fAnimFrameFire;
|
||||||
float m_fAnim2FrameFire;
|
float m_fAnim2FrameFire;
|
||||||
int32 m_nModelId;
|
int32 m_nModelId;
|
||||||
// flags
|
uint32 m_Flags;
|
||||||
uint8 m_bUseGravity : 1;
|
|
||||||
uint8 m_bSlowsDown : 1;
|
|
||||||
uint8 m_bDissipates : 1;
|
|
||||||
uint8 m_bRandSpeed : 1;
|
|
||||||
uint8 m_bExpands : 1;
|
|
||||||
uint8 m_bExplodes : 1;
|
|
||||||
uint8 m_bCanAim : 1;
|
|
||||||
uint8 m_bCanAimWithArm : 1;
|
|
||||||
uint8 m_b1stPerson : 1;
|
|
||||||
uint8 m_bHeavy : 1;
|
|
||||||
uint8 m_bThrow : 1;
|
|
||||||
|
|
||||||
static void Initialise(void);
|
static void Initialise(void);
|
||||||
static void LoadWeaponData(void);
|
static void LoadWeaponData(void);
|
||||||
|
@ -44,6 +47,7 @@ public:
|
||||||
static eWeaponFire FindWeaponFireType(char *name);
|
static eWeaponFire FindWeaponFireType(char *name);
|
||||||
static eWeaponType FindWeaponType(char *name);
|
static eWeaponType FindWeaponType(char *name);
|
||||||
static void Shutdown(void);
|
static void Shutdown(void);
|
||||||
|
bool IsFlagSet(uint32 flag) const { return (m_Flags & flag) != 0; }
|
||||||
};
|
};
|
||||||
|
|
||||||
VALIDATE_SIZE(CWeaponInfo, 0x54);
|
VALIDATE_SIZE(CWeaponInfo, 0x54);
|
Loading…
Reference in a new issue