2019-06-17 08:30:02 +00:00
|
|
|
#pragma once
|
|
|
|
|
2019-06-19 21:41:43 +00:00
|
|
|
#include "Transmission.h"
|
|
|
|
|
|
|
|
enum eHandlingId
|
|
|
|
{
|
|
|
|
HANDLING_LANDSTAL,
|
|
|
|
HANDLING_IDAHO,
|
|
|
|
HANDLING_STINGER,
|
|
|
|
HANDLING_LINERUN,
|
|
|
|
HANDLING_PEREN,
|
|
|
|
HANDLING_SENTINEL,
|
|
|
|
HANDLING_PATRIOT,
|
|
|
|
HANDLING_FIRETRUK,
|
|
|
|
HANDLING_TRASH,
|
|
|
|
HANDLING_STRETCH,
|
|
|
|
HANDLING_MANANA,
|
|
|
|
HANDLING_INFERNUS,
|
|
|
|
HANDLING_BLISTA,
|
|
|
|
HANDLING_PONY,
|
|
|
|
HANDLING_MULE,
|
|
|
|
HANDLING_CHEETAH,
|
|
|
|
HANDLING_AMBULAN,
|
|
|
|
HANDLING_FBICAR,
|
|
|
|
HANDLING_MOONBEAM,
|
|
|
|
HANDLING_ESPERANT,
|
|
|
|
HANDLING_TAXI,
|
|
|
|
HANDLING_KURUMA,
|
|
|
|
HANDLING_BOBCAT,
|
|
|
|
HANDLING_MRWHOOP,
|
|
|
|
HANDLING_BFINJECT,
|
|
|
|
HANDLING_POLICE,
|
|
|
|
HANDLING_ENFORCER,
|
|
|
|
HANDLING_SECURICA,
|
|
|
|
HANDLING_BANSHEE,
|
|
|
|
HANDLING_PREDATOR,
|
|
|
|
HANDLING_BUS,
|
|
|
|
HANDLING_RHINO,
|
|
|
|
HANDLING_BARRACKS,
|
|
|
|
HANDLING_TRAIN,
|
|
|
|
HANDLING_HELI,
|
|
|
|
HANDLING_DODO,
|
|
|
|
HANDLING_COACH,
|
|
|
|
HANDLING_CABBIE,
|
|
|
|
HANDLING_STALLION,
|
|
|
|
HANDLING_RUMPO,
|
|
|
|
HANDLING_RCBANDIT,
|
|
|
|
HANDLING_BELLYUP,
|
|
|
|
HANDLING_MRWONGS,
|
|
|
|
HANDLING_MAFIA,
|
|
|
|
HANDLING_YARDIE,
|
|
|
|
HANDLING_YAKUZA,
|
|
|
|
HANDLING_DIABLOS,
|
|
|
|
HANDLING_COLUMB,
|
|
|
|
HANDLING_HOODS,
|
|
|
|
HANDLING_AIRTRAIN,
|
|
|
|
HANDLING_DEADDODO,
|
|
|
|
HANDLING_SPEEDER,
|
|
|
|
HANDLING_REEFER,
|
|
|
|
HANDLING_PANLANT,
|
|
|
|
HANDLING_FLATBED,
|
|
|
|
HANDLING_YANKEE,
|
|
|
|
HANDLING_BORGNINE
|
|
|
|
};
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
HANDLING_1G_BOOST = 1,
|
|
|
|
HANDLING_2G_BOOST = 2,
|
|
|
|
HANDLING_REV_BONNET = 4,
|
|
|
|
HANDLING_HANGING_BOOT = 8,
|
|
|
|
HANDLING_NO_DOORS = 0x10,
|
|
|
|
HANDLING_IS_VAN = 0x20,
|
|
|
|
HANDLING_IS_BUS = 0x40,
|
|
|
|
HANDLING_IS_LOW = 0x80,
|
|
|
|
HANDLING_DBL_EXHAUST = 0x100,
|
|
|
|
HANDLING_TAILGATE_BOOT = 0x200,
|
|
|
|
HANDLING_NOSWING_BOOT = 0x400,
|
|
|
|
HANDLING_NONPLAYER_STABILISER = 0x800,
|
|
|
|
HANDLING_NEUTRALHANDLING = 0x1000,
|
|
|
|
HANDLING_HAS_NO_ROOF = 0x2000,
|
|
|
|
HANDLING_IS_BIG = 0x4000,
|
|
|
|
HANDLING_HALOGEN_LIGHTS = 0x8000,
|
|
|
|
};
|
|
|
|
|
|
|
|
struct tHandlingData
|
|
|
|
{
|
2019-07-17 21:58:06 +00:00
|
|
|
eHandlingId nIdentifier;
|
2019-06-19 21:41:43 +00:00
|
|
|
float fMass;
|
|
|
|
float fInvMass;
|
|
|
|
float fTurnMass;
|
|
|
|
CVector Dimension;
|
|
|
|
CVector CentreOfMass;
|
|
|
|
int8 nPercentSubmerged;
|
|
|
|
float fBuoyancy;
|
|
|
|
float fTractionMultiplier;
|
2019-07-17 11:19:20 +00:00
|
|
|
cTransmission Transmission;
|
2019-06-19 21:41:43 +00:00
|
|
|
float fBrakeDeceleration;
|
|
|
|
float fBrakeBias;
|
|
|
|
int8 bABS;
|
|
|
|
float fSteeringLock;
|
|
|
|
float fTractionLoss;
|
|
|
|
float fTractionBias;
|
2020-04-19 04:14:13 +00:00
|
|
|
float fABS; // should be VC leftover
|
2019-06-19 21:41:43 +00:00
|
|
|
float fSuspensionForceLevel;
|
|
|
|
float fSuspensionDampingLevel;
|
|
|
|
float fSuspensionUpperLimit;
|
|
|
|
float fSuspensionLowerLimit;
|
|
|
|
float fSuspensionBias;
|
|
|
|
float fCollisionDamageMultiplier;
|
|
|
|
uint32 Flags;
|
|
|
|
float fSeatOffsetDistance;
|
|
|
|
int32 nMonetaryValue;
|
|
|
|
int8 FrontLights;
|
|
|
|
int8 RearLights;
|
|
|
|
};
|
|
|
|
VALIDATE_SIZE(tHandlingData, 0xD8);
|
|
|
|
|
2019-06-17 08:30:02 +00:00
|
|
|
class cHandlingDataMgr
|
|
|
|
{
|
2019-06-19 21:41:43 +00:00
|
|
|
float field_0; // unused it seems
|
2019-07-10 09:05:49 +00:00
|
|
|
public:
|
2019-06-19 21:41:43 +00:00
|
|
|
float field_4; // wheel related
|
2019-07-10 09:05:49 +00:00
|
|
|
private:
|
2019-06-19 21:41:43 +00:00
|
|
|
float field_8; //
|
|
|
|
float field_C; // unused it seems
|
|
|
|
float field_10; //
|
|
|
|
tHandlingData HandlingData[NUMHANDLINGS];
|
2020-04-19 04:14:13 +00:00
|
|
|
uint32 field_302C; // unused it seems
|
2019-06-19 21:41:43 +00:00
|
|
|
|
2019-06-17 08:30:02 +00:00
|
|
|
public:
|
2019-06-19 21:41:43 +00:00
|
|
|
cHandlingDataMgr(void);
|
|
|
|
void Initialise(void);
|
|
|
|
void LoadHandlingData(void);
|
|
|
|
int FindExactWord(const char *word, const char *words, int wordLen, int numWords);
|
|
|
|
void ConvertDataToGameUnits(tHandlingData *handling);
|
2019-06-17 08:30:02 +00:00
|
|
|
int32 GetHandlingId(const char *name);
|
2019-06-19 23:07:57 +00:00
|
|
|
tHandlingData *GetHandlingData(eHandlingId id) { return &HandlingData[id]; }
|
2019-07-17 21:58:06 +00:00
|
|
|
bool HasRearWheelDrive(eHandlingId id) { return HandlingData[id].Transmission.nDriveType == 'R'; }
|
|
|
|
bool HasFrontWheelDrive(eHandlingId id) { return HandlingData[id].Transmission.nDriveType == 'F'; }
|
2019-06-17 08:30:02 +00:00
|
|
|
};
|
2020-04-16 12:30:47 +00:00
|
|
|
extern cHandlingDataMgr mod_HandlingManager;
|