summaryrefslogtreecommitdiffstats
path: root/src/vehicles/Automobile.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vehicles/Automobile.h')
-rw-r--r--src/vehicles/Automobile.h67
1 files changed, 50 insertions, 17 deletions
diff --git a/src/vehicles/Automobile.h b/src/vehicles/Automobile.h
index 60e08d0a..1a103777 100644
--- a/src/vehicles/Automobile.h
+++ b/src/vehicles/Automobile.h
@@ -6,6 +6,25 @@
class CObject;
+// These are used for all the wheel arrays
+// DON'T confuse with VEHWHEEL, which are vehicle components
+enum {
+ CARWHEEL_FRONT_LEFT,
+ CARWHEEL_REAR_LEFT,
+ CARWHEEL_FRONT_RIGHT,
+ CARWHEEL_REAR_RIGHT
+};
+
+enum eBombType
+{
+ CARBOMB_NONE,
+ CARBOMB_TIMED,
+ CARBOMB_ONIGNITION,
+ CARBOMB_REMOTE,
+ CARBOMB_TIMEDACTIVE,
+ CARBOMB_ONIGNITIONACTIVE,
+};
+
class CAutomobile : public CVehicle
{
public:
@@ -16,7 +35,7 @@ public:
CColPoint m_aWheelColPoints[4];
float m_aSuspensionSpringRatio[4];
float m_aSuspensionSpringRatioPrev[4];
- float m_aWheelSkidThing[4];
+ float m_aWheelTimer[4]; // set to 4.0 when wheel is touching ground, then decremented
float field_49C;
bool m_aWheelSkidmarkMuddy[4];
bool m_aWheelSkidmarkBloody[4];
@@ -24,39 +43,45 @@ public:
float m_aWheelPosition[4];
float m_aWheelSpeed[4];
uint8 field_4D8;
- uint8 m_auto_flagA7 : 1;
+ uint8 m_bombType : 3;
uint8 bTaxiLight : 1;
- uint8 m_auto_flagA10 : 1;
+ uint8 bHadDriver : 1; // for bombs
uint8 m_auto_flagA20 : 1;
uint8 m_auto_flagA40 : 1;
uint8 m_auto_flagA80 : 1;
- uint8 field_4DA[10];
+ uint8 bNotDamagedUpsideDown : 1;
+ uint8 bMoreResistantToDamage : 1;
+ uint8 field_4DB;
+ CEntity *m_pBombRigger;
+ int16 field_4E0;
+ int16 field_4E2;
uint32 m_nBusDoorTimerEnd;
uint32 m_nBusDoorTimerStart;
float m_aSuspensionSpringLength[4];
float m_aSuspensionLineLength[4];
float m_fHeightAboveRoad;
- float m_fImprovedHandling;
- uint8 stuff6[28];
- float field_530;
+ float m_fTraction;
+ float m_fVelocityChangeForAudio;
+ float m_randomValues[6]; // used for what?
+ float m_fFireBlowUpTimer;
CPhysical *m_aGroundPhysical[4]; // physicals touching wheels
CVector m_aGroundOffset[4]; // from ground object to colpoint
- CEntity *m_pBlowUpEntity;
- float m_weaponThingA; // TODO
- float m_weaponThingB; // TODO
+ CEntity *m_pSetOnFireEntity;
+ float m_weaponDoorTimerLeft; // still don't know what exactly this is
+ float m_weaponDoorTimerRight;
float m_fCarGunLR;
float m_fCarGunUD;
float m_fWindScreenRotation;
uint8 stuff4[4];
- uint8 m_nWheelsOnGround_2;
uint8 m_nWheelsOnGround;
- uint8 m_nWheelsOnGroundPrev;
- uint8 stuff5[5];
- int32 m_aWheelState[4];
+ uint8 m_nDriveWheelsOnGround;
+ uint8 m_nDriveWheelsOnGroundPrev;
+ int32 field_594;
+ tWheelState m_aWheelState[4];
static bool &m_sAllTaxiLights;
- CAutomobile(int, uint8);
+ CAutomobile(int32, uint8);
// from CEntity
void SetModelIndex(uint32 id);
@@ -87,6 +112,16 @@ public:
float GetHeightAboveRoad(void);
void PlayCarHorn(void);
+ void FireTruckControl(void);
+ void TankControl(void);
+ void HydraulicControl(void);
+ void VehicleDamage(float impulse, uint16 damagedPiece);
+ void ProcessBuoyancy(void);
+ void DoDriveByShootings(void);
+ int32 RcbanditCheckHitWheels(void);
+ int32 RcbanditCheck1CarWheels(CPtrList &list);
+ void PlaceOnRoadProperly(void);
+ void dmgDrawCarCollidingParticles(const CVector &pos, float amount);
void PlayHornIfNecessary(void);
void ResetSuspension(void);
void SetupSuspensionLines(void);
@@ -113,7 +148,5 @@ public:
void ReduceHornCounter(void);
static void SetAllTaxiLights(bool set);
-
- CAutomobile* ctor(int, uint8);
};
static_assert(sizeof(CAutomobile) == 0x5A8, "CAutomobile: error");