2019-07-27 14:28:18 -04:00
|
|
|
#pragma once
|
|
|
|
#include "common.h"
|
|
|
|
#include "config.h"
|
|
|
|
|
|
|
|
enum {
|
|
|
|
CARGEN_MAXACTUALLIMIT = 100
|
|
|
|
};
|
|
|
|
|
|
|
|
class CCarGenerator
|
|
|
|
{
|
|
|
|
int32 m_nModelIndex;
|
|
|
|
CVector m_vecPos;
|
|
|
|
float m_fAngle;
|
|
|
|
int16 m_nColor1;
|
|
|
|
int16 m_nColor2;
|
|
|
|
uint8 m_bForceSpawn;
|
|
|
|
uint8 m_nAlarm;
|
|
|
|
uint8 m_nDoorlock;
|
|
|
|
int16 m_nMinDelay;
|
|
|
|
int16 m_nMaxDelay;
|
|
|
|
uint32 m_nTimer;
|
|
|
|
int32 m_nVehicleHandle;
|
|
|
|
uint16 m_nUsesRemaining;
|
|
|
|
bool m_bIsBlocking;
|
|
|
|
CVector m_vecInf;
|
|
|
|
CVector m_vecSup;
|
|
|
|
float m_fSize;
|
|
|
|
public:
|
|
|
|
void SwitchOff();
|
|
|
|
void SwitchOn();
|
|
|
|
uint32 CalcNextGen();
|
|
|
|
void DoInternalProcessing();
|
|
|
|
void Process();
|
|
|
|
void Setup(float x, float y, float z, float angle, int32 mi, int16 color1, int16 color2, uint8 force, uint8 alarm, uint8 lock, uint16 min_delay, uint16 max_delay);
|
|
|
|
bool CheckForBlockage();
|
|
|
|
bool CheckIfWithinRangeOfAnyPlayer();
|
2019-10-10 10:18:19 -04:00
|
|
|
void Save(uint8*&);
|
|
|
|
void Load(uint8*&);
|
2019-07-27 14:28:18 -04:00
|
|
|
void SetUsesRemaining(uint16 uses) { m_nUsesRemaining = uses; }
|
|
|
|
};
|
|
|
|
|
|
|
|
class CTheCarGenerators
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
static uint8 &ProcessCounter;
|
|
|
|
static uint32 &NumOfCarGenerators;
|
|
|
|
static CCarGenerator (&CarGeneratorArray)[NUM_CARGENS];
|
|
|
|
static uint8 &GenerateEvenIfPlayerIsCloseCounter;
|
|
|
|
static uint32 &CurrentActiveCount;
|
|
|
|
|
|
|
|
static void Process();
|
|
|
|
static int32 CreateCarGenerator(float x, float y, float z, float angle, int32 mi, int16 color1, int16 color2, uint8 force, uint8 alarm, uint8 lock, uint16 min_delay, uint16 max_delay);
|
|
|
|
static void Init();
|
|
|
|
static void SaveAllCarGenerators(uint8 *, uint32 *);
|
|
|
|
static void LoadAllCarGenerators(uint8 *, uint32);
|
|
|
|
};
|