2019-06-15 01:34:19 +02:00
|
|
|
#pragma once
|
2019-07-12 18:01:22 +02:00
|
|
|
|
|
|
|
class CEntity;
|
|
|
|
class CCopPed;
|
|
|
|
|
|
|
|
enum eCrimeType
|
|
|
|
{
|
|
|
|
CRIME_NONE,
|
|
|
|
CRIME_POSSESSION_GUN,
|
|
|
|
CRIME_HIT_PED,
|
|
|
|
CRIME_HIT_COP,
|
|
|
|
CRIME_SHOOT_PED,
|
|
|
|
CRIME_SHOOT_COP,
|
|
|
|
CRIME_STEAL_CAR,
|
|
|
|
CRIME_RUN_REDLIGHT,
|
|
|
|
CRIME_RECKLESS_DRIVING,
|
|
|
|
CRIME_SPEEDING,
|
|
|
|
CRIME_RUNOVER_PED,
|
|
|
|
CRIME_RUNOVER_COP,
|
|
|
|
CRIME_SHOOT_HELI,
|
|
|
|
CRIME_PED_BURNED,
|
|
|
|
CRIME_COP_BURNED,
|
|
|
|
CRIME_VEHICLE_BURNED,
|
|
|
|
CRIME_DESTROYED_CESSNA,
|
2020-01-25 11:41:22 +01:00
|
|
|
NUM_CRIME_TYPES
|
2019-07-12 18:01:22 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
class CCrimeBeingQd
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
eCrimeType m_nType;
|
|
|
|
uint32 m_nId;
|
|
|
|
int32 m_nTime;
|
|
|
|
CVector m_vecPosn;
|
|
|
|
bool m_bReported;
|
|
|
|
bool m_bPoliceDoesntCare;
|
2019-08-02 00:04:30 +02:00
|
|
|
|
|
|
|
CCrimeBeingQd() { };
|
|
|
|
~CCrimeBeingQd() { };
|
2019-06-15 01:34:19 +02:00
|
|
|
};
|
|
|
|
|
2019-06-26 23:31:12 +02:00
|
|
|
class CWanted
|
2019-06-17 02:10:55 +02:00
|
|
|
{
|
2019-06-15 01:34:19 +02:00
|
|
|
public:
|
|
|
|
int32 m_nChaos;
|
|
|
|
int32 m_nLastUpdateTime;
|
2019-10-17 16:28:24 +02:00
|
|
|
uint32 m_nLastWantedLevelChange;
|
2019-06-17 00:16:38 +02:00
|
|
|
float m_fCrimeSensitivity;
|
2019-07-04 22:31:21 +02:00
|
|
|
uint8 m_CurrentCops;
|
|
|
|
uint8 m_MaxCops;
|
|
|
|
uint8 m_MaximumLawEnforcerVehicles;
|
2019-07-12 18:01:22 +02:00
|
|
|
uint8 m_CopsBeatingSuspect;
|
2019-07-04 22:31:21 +02:00
|
|
|
int16 m_RoadblockDensity;
|
2019-07-12 18:01:22 +02:00
|
|
|
uint8 m_bIgnoredByCops : 1;
|
|
|
|
uint8 m_bIgnoredByEveryone : 1;
|
|
|
|
uint8 m_bSwatRequired : 1;
|
|
|
|
uint8 m_bFbiRequired : 1;
|
|
|
|
uint8 m_bArmyRequired : 1;
|
2019-06-15 01:34:19 +02:00
|
|
|
int32 m_nWantedLevel;
|
2019-07-12 18:01:22 +02:00
|
|
|
CCrimeBeingQd m_aCrimes[16];
|
2019-06-15 01:34:19 +02:00
|
|
|
CCopPed *m_pCops[10];
|
2019-07-12 18:01:22 +02:00
|
|
|
|
2019-07-04 22:31:21 +02:00
|
|
|
static int32 &MaximumWantedLevel;
|
2019-07-12 18:01:22 +02:00
|
|
|
static int32 &nMaximumWantedLevel;
|
2019-06-26 23:31:12 +02:00
|
|
|
|
|
|
|
public:
|
2019-07-12 18:01:22 +02:00
|
|
|
void Initialise();
|
2019-06-26 23:31:12 +02:00
|
|
|
bool AreSwatRequired();
|
|
|
|
bool AreFbiRequired();
|
|
|
|
bool AreArmyRequired();
|
2019-07-12 18:01:22 +02:00
|
|
|
int32 NumOfHelisRequired();
|
2019-07-04 22:31:21 +02:00
|
|
|
void SetWantedLevel(int32);
|
2019-07-09 18:50:35 +02:00
|
|
|
void SetWantedLevelNoDrop(int32 level);
|
2019-07-12 18:01:22 +02:00
|
|
|
void RegisterCrime(eCrimeType type, const CVector &coors, uint32 id, bool policeDoesntCare);
|
|
|
|
void RegisterCrime_Immediately(eCrimeType type, const CVector &coors, uint32 id, bool policeDoesntCare);
|
2019-07-04 22:31:21 +02:00
|
|
|
void ClearQdCrimes();
|
2019-07-12 18:01:22 +02:00
|
|
|
bool AddCrimeToQ(eCrimeType type, int32 id, const CVector &pos, bool reported, bool policeDoesntCare);
|
|
|
|
void ReportCrimeNow(eCrimeType type, const CVector &coors, bool policeDoesntCare);
|
2019-07-04 22:31:21 +02:00
|
|
|
void UpdateWantedLevel();
|
2019-10-07 23:29:30 +02:00
|
|
|
void Reset();
|
2020-02-13 00:33:21 +01:00
|
|
|
void Update();
|
2019-07-12 18:01:22 +02:00
|
|
|
|
2019-08-04 00:31:00 +02:00
|
|
|
bool IsIgnored(void) { return m_bIgnoredByCops || m_bIgnoredByEveryone; }
|
|
|
|
|
2019-07-12 18:01:22 +02:00
|
|
|
static int32 WorkOutPolicePresence(CVector posn, float radius);
|
|
|
|
static void SetMaximumWantedLevel(int32 level);
|
2019-06-15 01:34:19 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
static_assert(sizeof(CWanted) == 0x204, "CWanted: error");
|