From bec1cbc1cb8de15ebd056ed35b6d91b7f397e530 Mon Sep 17 00:00:00 2001 From: aap Date: Wed, 4 Aug 2021 13:54:26 +0200 Subject: [PATCH] CVehicle fixes and cleanup --- src/peds/Ped.cpp | 2 +- src/vehicles/Vehicle.cpp | 30 ++++++++++++++---------------- src/vehicles/Vehicle.h | 4 ++-- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 7194d824..535445c5 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -287,7 +287,7 @@ CPed::CPed(uint32 pedType) : m_pedIK(this) bHeadStuckInCollision = false; bDeadPedInFrontOfCar = false; - m_gangFlags = 0xFF; + m_gangFlags = ~0; bStayInCarOnJack = false; diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp index d7d8cd76..d1054191 100644 --- a/src/vehicles/Vehicle.cpp +++ b/src/vehicles/Vehicle.cpp @@ -841,7 +841,8 @@ CVehicle::ProcessWheel(CVector &wheelFwd, CVector &wheelRight, CVector &wheelCon #ifdef FIX_BUGS // contactSpeedFwd is independent of framerate but fwd has timestep as a factor // so we probably have to fix this - fwd *= CTimer::GetTimeStepFix(); + // better get rid of it here too + //fwd *= CTimer::GetTimeStepFix(); #endif if(!bBraking){ @@ -977,7 +978,8 @@ CVehicle::ProcessBikeWheel(CVector &wheelFwd, CVector &wheelRight, CVector &whee #ifdef FIX_BUGS // contactSpeedRight is independent of framerate but right has timestep as a factor // so we probably have to fix this - right *= CTimer::GetTimeStepFix(); + // see above + //right *= CTimer::GetTimeStepFix(); #endif if(wheelStatus == WHEEL_STATUS_BURST){ @@ -1002,7 +1004,8 @@ CVehicle::ProcessBikeWheel(CVector &wheelFwd, CVector &wheelRight, CVector &whee #ifdef FIX_BUGS // contactSpeedFwd is independent of framerate but fwd has timestep as a factor // so we probably have to fix this - fwd *= CTimer::GetTimeStepFix(); + // see above + //fwd *= CTimer::GetTimeStepFix(); #endif if(!bBraking){ @@ -1514,9 +1517,8 @@ CVehicle::MakeNonDraggedPedsLeaveVehicle(CPed *ped1, CPed *ped2, CPlayerPed *&pl if(p && p != ped1 && !p->bStayInCarOnJack){ peds[numPeds++] = p; // uhh what? - if(i < 1 && !ped1IsDriver) - continue; - peds2[numPeds2++] = p; + if(i > 0 || ped1IsDriver) + peds2[numPeds2++] = p; } } @@ -1566,10 +1568,8 @@ CVehicle::ProcessDelayedExplosion(void) if(IsCar() && ((CAutomobile*)this)->m_bombType == CARBOMB_TIMEDACTIVE && (m_nBombTimer & 0xFE00) != (prev & 0xFE00)) DMAudio.PlayOneShot(m_audioEntityId, SOUND_CAR_BOMB_TICK, 0.0f); - if (m_nBombTimer != 0) - return; - - BlowUpCar(m_pBlowUpEntity); + if (m_nBombTimer == 0) + BlowUpCar(m_pBlowUpEntity); } bool @@ -1690,7 +1690,7 @@ CVehicle::CanPedOpenLocks(CPed *ped) if(m_nDoorLock == CARLOCK_LOCKED || m_nDoorLock == CARLOCK_LOCKED_INITIALLY || m_nDoorLock == CARLOCK_LOCKED_PLAYER_INSIDE || - m_nDoorLock == CARLOCK_SKIP_SHUT_DOORS) + m_nDoorLock == CARLOCK_LOCKED_BUT_CAN_BE_DAMAGED) return false; if(ped->IsPlayer() && m_nDoorLock == CARLOCK_LOCKOUT_PLAYER_ONLY) return false; @@ -1702,7 +1702,7 @@ CVehicle::CanDoorsBeDamaged(void) { return m_nDoorLock == CARLOCK_NOT_USED || m_nDoorLock == CARLOCK_UNLOCKED || - m_nDoorLock == CARLOCK_SKIP_SHUT_DOORS; + m_nDoorLock == CARLOCK_LOCKED_BUT_CAN_BE_DAMAGED; } bool @@ -1975,9 +1975,7 @@ CVehicle::RemovePassenger(CPed *p) bool CVehicle::IsDriver(CPed *ped) { - if(ped == nil) - return false; - return ped == pDriver; + return ped && ped == pDriver; } bool @@ -2028,7 +2026,7 @@ CVehicle::ProcessCarAlarm(void) { uint32 step; - if(!IsAlarmOn()) + if(m_nAlarmState == 0 || m_nAlarmState == -1) return; step = CTimer::GetTimeStepInMilliseconds(); diff --git a/src/vehicles/Vehicle.h b/src/vehicles/Vehicle.h index 31b52138..b59b6b19 100644 --- a/src/vehicles/Vehicle.h +++ b/src/vehicles/Vehicle.h @@ -60,7 +60,7 @@ enum eCarLock { CARLOCK_LOCKED_PLAYER_INSIDE, CARLOCK_LOCKED_INITIALLY, CARLOCK_FORCE_SHUT_DOORS, - CARLOCK_SKIP_SHUT_DOORS + CARLOCK_LOCKED_BUT_CAN_BE_DAMAGED }; enum eBombType @@ -271,7 +271,7 @@ public: uint8 m_bRainSamplesCounter; uint32 m_nCarHornTimer; uint8 m_nCarHornPattern; - bool m_bSirenOrAlarm; + uint8 m_bSirenOrAlarm; uint8 m_nCarHornDelay; int8 m_comedyControlState; CStoredCollPoly m_aCollPolys[2]; // poly which is under front/rear part of car