Re3/src/control/CarGen.h
2019-10-10 17:18:19 +03:00

57 lines
1.5 KiB
C++

#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();
void Save(uint8*&);
void Load(uint8*&);
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);
};