summaryrefslogtreecommitdiffstats
path: root/src/control/CarGen.h
blob: 75acdd56e0d395c352a78927eb4f54bb2955d23b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#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);
};