summaryrefslogtreecommitdiff
path: root/src/control/Cranes.h
blob: b40454ea4811157f0f415d35958368a6e91556c2 (plain)
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
57
58
59
60
61
#pragma once
#include "common.h"

class CVehicle;
class CEntity;
class CObject;

class CCrane
{
public:
	CEntity *m_pObject;
	CObject *m_pMagnet;
	int m_nAudioEntity;
	float m_fPickupX1;
	float m_fPickupX2;
	float m_fPickupY1;
	float m_fPickupY2;
	CVector m_vecDropoffTarget;
	float m_fDropoffHeading;
	float m_fPickupAngle;
	float m_fDropoffAngle;
	float m_fPickupDistance;
	float m_fDropoffDistance;
	float m_fAngle;
	float m_fDistance;
	float m_fHeight;
	float m_fHookOffset;
	float m_fHookHeight;
	CVector m_vecHookInitPos;
	CVector m_vecHookCurPos;
	float m_fHookVelocityX;
	float m_fHookVelocityY;
	CVehicle *m_pVehiclePickedUp;
	int m_nUpdateTimer;
	char m_bCraneActive;
	char m_bCraneStatus;
	char m_bVehiclesCollected;
	char m_bIsCrusher;
	char m_bIsMilitaryCrane;
	char field_125;
	char m_bNotMilitaryCrane;
	char gap_127[1];
};

static_assert(sizeof(CCrane) == 128, "CCrane: error");

class CCranes
{
public:
	static bool IsThisCarBeingTargettedByAnyCrane(CVehicle*);
	static bool IsThisCarBeingCarriedByAnyCrane(CVehicle*);
	static bool IsThisCarPickedUp(float, float, CVehicle*);
	static bool HaveAllCarsBeenCollectedByMilitaryCrane();
	static void ActivateCrane(float, float, float, float, float, float, float, float, bool, bool, float, float);
	static void DeActivateCrane(float, float);
	static void InitCranes(void);
	static void UpdateCranes(void);
	static void Save(uint8*, uint32*);
};

void CranesLoad(uint8*, uint32);	// is this really outside CCranes?