Class table entry structure
Falcon4EntityClassType
typedef struct
{
VuEntityType vuClassData;
short
visType[7];
short
vehicleDataIndex;
uchar
dataType;
void*
dataPtr;
} Falcon4EntityClassType;
#pragma pack ()
// ==================================
// Private data data structures
// ==================================
UnitClassDataType
struct UnitClassDataType {
short Index;
// descriptionIndex pointing here
int NumElements[VEHICLES_PER_UNIT];
short VehicleType[VEHICLES_PER_UNIT];
// Class table description index
uchar VehicleClass[VEHICLES_PER_UNIT][8];
// 9 byte class description array
ushort Flags;
// Unit capibility flags (see VEH_ flags in vehicle.h)
_TCHAR Name[20];
// Unit name 'Infantry', 'Armor'
MoveType MovementType;
short MovementSpeed;
short MaxRange;
// Movement/flight range with full supply
long Fuel;
// Fuel (internal)
short Rate;
// Fuel usage- in lbs per minute (cruise speed)
short PtDataIndex;
// Index into pt header data table
uchar Scores[MAXIMUM_ROLES];
// Score for each type of mission or role
uchar Role;
// What sort of mission role is standard
uchar HitChance[MOVEMENT_TYPES];
// Unit hit chances (best hitchance)
uchar Strength[MOVEMENT_TYPES];
// Unit strengths (full strength only)
uchar Range[MOVEMENT_TYPES];
// Firing ranges (maximum range)
uchar Detection[MOVEMENT_TYPES];
// Electronic detection ranges at full strength
uchar DamageMod[OtherDam+1];
// How much each type will hurt me (% of strength applied)
uchar RadarVehicle;
// ID of the radar vehicle for this unit
short SpecialIndex;
// Index into yet another table (max stores for squadrons)
short IconIndex;
// Index to this unit's icon type
};
FeatureEntry
struct FeatureEntry {
short Index;
// Entity class index of feature
ushort Flags;
uchar eClass[8];
// Entity class array of feature
uchar Value;
// % loss in operational status for destruction
vector Offset;
Int16 Facing;
};
ObjClassDataType
struct ObjClassDataType {
short Index;
// descriptionIndex pointing here
_TCHAR Name[20];
short DataRate;
// Sorte Rate and other cool data
short DeagDistance;
// Distance to deaggregate at.
short PtDataIndex;
// Index into pt header data table
uchar Detection[MOVEMENT_TYPES];
// Detection ranges
uchar DamageMod[OtherDam+1];
// How much each type will hurt me (% of strength applied)
short IconIndex;
// Index to this objective's icon type
uchar Features;
// Number of features in this objective
uchar RadarFeature;
// ID of the radar feature for this objective
short FirstFeature;
// Index of first feature entry
};
WeaponClassDataType
struct WeaponClassDataType {
short Index;
// descriptionIndex pointing here
short Strength;
// How much damage it'll do.
DamType DamageType;
// What type of damage it does.
short Range;
// Range, in km.
ushort Flags;
_TCHAR Name[20];
uchar HitChance[MOVEMENT_TYPES];
uchar FireRate;
// # of shots fired per barrage
uchar Rariety;
// % of full supply which is actually provided
ushort GuidanceFlags;
uchar Collective;
short SimweapIndex;
// Index into sim's weapon data tables
short Weight;
// Weight in lbs.
short DragIndex;
short BlastRadius;
// radius in ft.
short RadarType;
// Index into RadarDataTable
short SimDataIdx;
// Index int SimWeaponDataTable
char MaxAlt;
// Maximum altitude it can hit in thousands of feet
};
FeatureClassDataType
struct FeatureClassDataType {
short Index;
// descriptionIndex pointing here
short RepairTime;
// How long it takes to repair
uchar Priority;
// Display priority
ushort Flags;
// See FEAT_ flags in feature.h
_TCHAR Name[20];
// 'Control Tower'
short HitPoints;
// Damage this thing can take
short Height;
// Height of vehicle ramp, if any
float Angle;
// Angle of vehicle ramp, if any
short RadarType;
// Index into RadarDataTable
uchar Detection[MOVEMENT_TYPES];
// Electronic detection ranges
uchar DamageMod[OtherDam+1];
// How much each type will hurt me (% of strength applied)
};
VehicleClassDataType
struct VehicleClassDataType {
short Index;
// descriptionIndex pointing here
short HitPoints;
// Damage this thing can take
unsigned Flags;
// see VEH_ flags in vehicle.h
_TCHAR Name[20];
float RCSfactor;
// log2( 1 + RCS relative to an F16 )
long MaxWt;
// Max loaded weight in lbs.
long EmptyWt;
// Empty weight in lbs.
long FuelWt;
// Weight of max fuel in lbs.
short FuelEcon;
// Fuel usage in lbs./min.
short EngineSound;
// SoundFX sample index of corresponding engine sound
short HighAlt;
// in hundreds of feet
short LowAlt;
// in hundreds of feet
short CruiseAlt;
// in hundreds of feet
short MaxSpeed;
// Maximum vehicle speed, in kph
short RadarType;
// Index into RadarDataTable
short NumberOfPilots;
// # of pilots (for eject)
ushort RackFlags;
//0x01 means hardpoint 0 needs a rack, 0x02 -> hdpt 1, etc
ushort VisibleFlags;
//0x01 means hardpoint 0 is visible, 0x02 -> hdpt 1, etc
uchar CallsignIndex;
uchar CallsignSlots;
uchar HitChance[MOVEMENT_TYPES];
// Vehicle hit chances (best hitchance & bonus)
uchar Strength[MOVEMENT_TYPES];
// Combat strengths (full strength only) (calculated)
uchar Range[MOVEMENT_TYPES];
// Firing ranges (full strength only) (calculated)
uchar Detection[MOVEMENT_TYPES];
// Electronic detection ranges
short Weapon[HARDPOINT_MAX];
// Weapon id of weapons (or weapon list)
uchar Weapons[HARDPOINT_MAX];
// Number of shots each (fully supplied)
uchar DamageMod[OtherDam+1];
// How much each type will hurt me (% of strength applied)
};
SquadronStoresDataType
struct SquadronStoresDataType {
uchar Stores[MAXIMUM_WEAPTYPES];
// Weapon stores (only has meaning for squadrons)
uchar infiniteAG;
// One AG weapon we've chosen to always have available
uchar infiniteAA;
// One AA weapon we've chosen to always have available
uchar infiniteGun;
// Our main gun weapon, which we will always have available
};
PtHeaderDataType
struct PtHeaderDataType {
short objID;
// ID of the objective this belongs to
uchar type;
// The type of pt data this contains
uchar count;
// Number of points
uchar features[MAX_FEAT_DEPEND];
// Features this list depends on (# in objective's feature list)
short data;
// Other data (runway heading, for example)
float sinHeading;
float cosHeading;
short first;
// Index of first point
short texIdx;
// texture to apply to this runway
char runwayNum;
// -1 if not a runway, indicates which runway this list applies to
char ltrt;
// put base pt to rt or left
short nextHeader;
// Index of next header, if any
};
PtDataType
struct PtDataType {
float xOffset,yOffset;
// X and Y offsets of this point (from center of objective tile)
uchar type;
// The type of point this is
uchar flags;
};
SimWeaponDataType
typedef struct SimWeaponDataType
{
int flags;
// Flags for the SMS
float cd;
// Drag coefficient
float weight;
// Weight
float area;
// sirface area for drag calc
float xEjection;
// Body X axis ejection velocity
float yEjection;
// Body Y axis ejection velocity
float zEjection;
// Body Z axis ejection velocity
char mnemonic[8];
// SMS Mnemonic
int weaponClass;
// SMS Weapon Class
int domain;
// SMS Weapon Domain
int weaponType;
// SMS Weapon Type
int dataIdx;
// Aditional characteristics data file
} SimWEaponDataType;
/// bemærkning INT IS 32BITS HERE!
SimACDefType
typedef struct SimACDefType
{
int combatClass;
// What type of combat does it do?
int airframeIdx;
// Index into airframe tables
int signatureIdx;
// Index into signature tables (IR only for now)
int sensorType[5];
// Sensor Types
int sensorIdx[5];
// Index into sensor data tables
} SimACDefType;