mirror of
https://git.rip/DMCA_FUCKER/re3.git
synced 2024-11-18 08:17:46 +00:00
263 lines
5.9 KiB
C++
263 lines
5.9 KiB
C++
#pragma once
|
|
|
|
#include "Transmission.h"
|
|
|
|
enum tVehicleType
|
|
{
|
|
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_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_BUS,
|
|
HANDLING_RHINO,
|
|
HANDLING_BARRACKS,
|
|
HANDLING_TRAIN,
|
|
HANDLING_FERRY,
|
|
HANDLING_HELI,
|
|
HANDLING_DODO,
|
|
HANDLING_COACH,
|
|
HANDLING_CABBIE,
|
|
HANDLING_STALLION,
|
|
HANDLING_RUMPO,
|
|
HANDLING_RCBANDIT,
|
|
HANDLING_MAFIA,
|
|
HANDLING_AIRTRAIN,
|
|
HANDLING_DEADDODO,
|
|
HANDLING_FLATBED,
|
|
HANDLING_YANKEE,
|
|
HANDLING_BLISTA,
|
|
HANDLING_BELLYUP,
|
|
HANDLING_MRWONGS,
|
|
HANDLING_YARDIE,
|
|
HANDLING_YAKUZA,
|
|
HANDLING_DIABLOS,
|
|
HANDLING_COLUMB,
|
|
HANDLING_HOODS,
|
|
HANDLING_PANLANT,
|
|
HANDLING_BORGNINE,
|
|
HANDLING_CAMPVAN,
|
|
HANDLING_BALLOT,
|
|
HANDLING_SPIDER,
|
|
HANDLING_SHELBY,
|
|
HANDLING_PONTIAC,
|
|
HANDLING_ESPRIT,
|
|
HANDLING_MINI,
|
|
HANDLING_HOTROD,
|
|
HANDLING_SINDACCO,
|
|
HANDLING_FORELLI,
|
|
|
|
HANDLING_BIKE,
|
|
HANDLING_MOPED,
|
|
HANDLING_DIRTBIKE,
|
|
HANDLING_ANGEL,
|
|
HANDLING_DIRTBIK2,
|
|
HANDLING_ANGE2,
|
|
HANDLING_FREEWAY,
|
|
|
|
HANDLING_PREDATOR,
|
|
HANDLING_SPEEDER,
|
|
HANDLING_REEFER,
|
|
|
|
HANDLING_MAVERICK,
|
|
HANDLING_COASTMAV,
|
|
HANDLING_POLMAV,
|
|
HANDLING_HUNTER,
|
|
HANDLING_RCGOBLIN,
|
|
HANDLING_RCCOPTER,
|
|
|
|
NUMHANDLINGS,
|
|
|
|
NUMBIKEHANDLINGS = HANDLING_FREEWAY+1 - HANDLING_BIKE,
|
|
NUMFLYINGHANDLINGS = HANDLING_RCCOPTER+1 - HANDLING_MAVERICK,
|
|
NUMBOATHANDLINGS = HANDLING_REEFER+1 - HANDLING_PREDATOR,
|
|
};
|
|
|
|
enum tField // most likely a handling field enum, never used so :shrug:
|
|
{
|
|
|
|
};
|
|
|
|
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,
|
|
HANDLING_IS_BIKE = 0x10000,
|
|
HANDLING_IS_HELI = 0x20000,
|
|
HANDLING_IS_PLANE = 0x40000,
|
|
HANDLING_IS_BOAT = 0x80000,
|
|
HANDLING_NO_EXHAUST = 0x100000,
|
|
HANDLING_REARWHEEL_1ST = 0x200000,
|
|
HANDLING_HANDBRAKE_TYRE = 0x400000,
|
|
HANDLING_SIT_IN_BOAT = 0x800000,
|
|
HANDLING_FAT_REARW = 0x1000000,
|
|
HANDLING_NARROW_FRONTW = 0x2000000,
|
|
HANDLING_GOOD_INSAND = 0x4000000,
|
|
HANDLING_UNKNOWN = 0x8000000, // something for helis and planes
|
|
HANDLING_FORCE_GRND_CLR = 0x10000000
|
|
};
|
|
|
|
struct tHandlingData
|
|
{
|
|
float fMass;
|
|
float fTurnMass;
|
|
float fTractionMultiplier;
|
|
float fCollisionDamageMultiplier;
|
|
tVehicleType nIdentifier;
|
|
float fInvMass;
|
|
float fDragMult;
|
|
CVector CentreOfMass;
|
|
int8 nPercentSubmerged;
|
|
float fBuoyancy;
|
|
cTransmission Transmission;
|
|
float fBrakeDeceleration;
|
|
float fBrakeBias;
|
|
int8 bABS;
|
|
float fSteeringLock;
|
|
float fTractionLoss;
|
|
float fTractionBias;
|
|
float fUnused;
|
|
float fSuspensionForceLevel;
|
|
float fSuspensionDampingLevel;
|
|
float fSuspensionUpperLimit;
|
|
float fSuspensionLowerLimit;
|
|
float fSuspensionBias;
|
|
float fSuspensionAntidiveMultiplier;
|
|
uint32 Flags;
|
|
float fSeatOffsetDistance;
|
|
int32 nMonetaryValue;
|
|
int8 FrontLights;
|
|
int8 RearLights;
|
|
int unk[4];
|
|
|
|
float GetMass(void) const { return fMass; }
|
|
float GetTurnMass(void) const { return fTurnMass; }
|
|
float GetTractionMultiplier(void) const { return fTractionMultiplier; }
|
|
float GetCollisionDamageMultiplier(void) const { return fCollisionDamageMultiplier; }
|
|
};
|
|
|
|
struct tBikeHandlingData
|
|
{
|
|
tVehicleType nIdentifier;
|
|
float fLeanFwdCOM;
|
|
float fLeanFwdForce;
|
|
float fLeanBakCOM;
|
|
float fLeanBackForce;
|
|
float fMaxLean;
|
|
float fFullAnimLean;
|
|
float fDesLean;
|
|
float fSpeedSteer;
|
|
float fSlipSteer;
|
|
float fNoPlayerCOMz;
|
|
float fWheelieAng;
|
|
float fStoppieAng;
|
|
float fWheelieSteer;
|
|
float fWheelieStabMult;
|
|
float fStoppieStabMult;
|
|
};
|
|
|
|
struct tBoatHandlingData
|
|
{
|
|
tVehicleType nIdentifier;
|
|
float fThrustY;
|
|
float fThrustZ;
|
|
float fThrustAppZ;
|
|
float fAqPlaneForce;
|
|
float fAqPlaneLimit;
|
|
float fAqPlaneOffset;
|
|
float fWaveAudioMult;
|
|
float fLook_L_R_BehindCamHeight;
|
|
CVector vecMoveRes;
|
|
CVector vecTurnRes;
|
|
};
|
|
|
|
struct tFlyingHandlingData
|
|
{
|
|
tVehicleType nIdentifier;
|
|
float fThrust;
|
|
float fThrustFallOff;
|
|
float fYaw;
|
|
float fYawStab;
|
|
float fSideSlip;
|
|
float fRoll;
|
|
float fRollStab;
|
|
float fPitch;
|
|
float fPitchStab;
|
|
float fFormLift;
|
|
float fAttackLift;
|
|
float fMoveRes;
|
|
CVector vecTurnRes;
|
|
CVector vecSpeedRes;
|
|
};
|
|
|
|
class CVehicle;
|
|
|
|
class cHandlingDataMgr
|
|
{
|
|
float field_0; // unused it seems
|
|
public:
|
|
float fWheelFriction; // wheel related
|
|
private:
|
|
float field_8; //
|
|
float field_C; // unused it seems
|
|
float field_10; //
|
|
tHandlingData HandlingData[NUMHANDLINGS];
|
|
tBikeHandlingData BikeHandlingData[NUMBIKEHANDLINGS];
|
|
tFlyingHandlingData FlyingHandlingData[NUMFLYINGHANDLINGS];
|
|
tBoatHandlingData BoatHandlingData[NUMBOATHANDLINGS];
|
|
|
|
public:
|
|
cHandlingDataMgr(void);
|
|
void Initialise(void);
|
|
void LoadHandlingData(void);
|
|
int FindExactWord(const char *word, const char *words, int wordLen, int numWords);
|
|
void ConvertDataToWorldUnits(tHandlingData *handling);
|
|
void ConvertDataToGameUnits(tHandlingData *handling);
|
|
void ConvertBikeDataToGameUnits(tBikeHandlingData *handling);
|
|
int32 GetHandlingId(const char *name);
|
|
tHandlingData *GetHandlingData(tVehicleType id) { return &HandlingData[id]; }
|
|
tBikeHandlingData *GetBikePointer(uint8 id) { return &BikeHandlingData[id-HANDLING_BIKE]; }
|
|
tFlyingHandlingData *GetFlyingPointer(uint8 id);
|
|
tBoatHandlingData *GetBoatPointer(uint8 id);
|
|
bool HasRearWheelDrive(tVehicleType id) { return HandlingData[id].Transmission.nDriveType != 'F'; }
|
|
bool HasFrontWheelDrive(tVehicleType id) { return HandlingData[id].Transmission.nDriveType != 'R'; }
|
|
};
|
|
extern cHandlingDataMgr mod_HandlingManager;
|