public:
enum FCCMasterMode {Gun,
Missile, ILS, Nav, AirGroundBomb, AirGroundMissile, AirGroundHARM, AirGroundLaser,
Dogfight,
MissileOverride, AirGroundCamera/* PrevMode, NextModeCmd */ };
enum FCCSubMode {EEGS,
LCOS, Snapshot, SAM, Aim9, Aim120, CCIP, CCRP, LADD, DTOSS, RCKT, STRAF,
PRE,
BSGT, SLAVE, HTS, TargetingPod, TimeToGo, ETE, ETA, /* PrevSub, NextSub
*/ };
enum FCCStptMode {FCCWaypoint, FCCDLinkpoint, FCCMarkpoint};
private:
FCCMasterMode
lastMasterMode;
FCCSubMode
lastSubMode;
int
lastCage, playerFCC, lastDesignate;
int bombReleaseOverride;
// Air - Ground Mode
void AirGroundMode (void);
void DTOSMode(void);
void AirGroundMissileMode
(void);
void MaverickMode (void);
SimObjectType* MavCheckLock (MissileClass*);
void HarmMode (void);
void TargetingPodMode (void);
void NavMode (void);
void CalculateImpactPoint(void);
void CalculateRocketImpactPoint(void);
void FindRelativeImpactPoint(void);
void DelayModePipperCorrection(void);
void CheckForBombRelease(void);
void DesignateGroundTarget(void);
void SetDesignatedTarget
(void);
void CalculateReleaseRange
(void);
void FindTargetError(void);
int FindGroundIntersection
(float el, float az, float* x, float* y, float* z);
void CheckFeatures (MissileClass*
theMissile);
void CheckFeatures (LaserPodClass*
targetingPod);
void UpdateGroundObjectRelativeGeometry
(void);
SimObjectType* TargetStep
(SimObjectType*, int);
// Steerpoints
WayPointClass*
mpSavedWaypoint;
int
mSavedWayNumber;
FCCStptMode
mStptMode;
FCCStptMode
mNewStptMode;
void StepPoint(void);
void InitNewStptMode(void);
void StepNextWayPoint(void);
void StepPrevWayPoint(void);
// Air - Air Mode
void AirAirMode(void);
SimObjectType*
targetPtr;
SimObjectType*
targetList;
SimVehicleClass
*platform;
FCCMasterMode
masterMode;
FCCSubMode
subMode;
void Display(VirtualDisplay*);
void DisplayInit (ImageBuffer*);
float HSDRange;
void NavDisplay(void);
void DrawNavPoints(void);
void DrawWayPoints(void);
void DrawMarkPoints(void);
void DrawLinkPoints(void);
void MapWaypointToDisplay(WayPointClass*,
float*, float*);
void DrawPointPair(WayPointClass*,
float, float, float, float);
void DrawPointSymbol(WayPointClass*,
float, float);
void DrawTGTSymbol(float,
float);
void DrawIPSymbol(float,
float);
void DrawFLOT (void);
void DrawPPThreats(void);
void DrawBullseye(void);
void DrawGhostCursor(void);
void DrawScanVolume(void);
public:
char autoTarget;
char releaseConsent, preDesignate,
postDrop;
char designateCmd, dropTrackCmd;
char groundPipperOnHud,
missileCageCmd;
char bombPickle, missileTarget,
noSolution, waypointStepCmd;
char HSDRangeStepCmd;
signed char cursorXCmd,
cursorYCmd;
FireControlComputer (SimVehicleClass*,
int);
~FireControlComputer (void);
enum TossAnticipation {NoCue,
EarlyPreToss, PreToss, PullUp, AwaitingRelease};
TossAnticipation tossAnticipationCue;
int inRange;
float verticalSteering,
predictedClimbAngle, predictedReleaseAltitude;
float missileTOF;
float lastMissileImpactTime;
float nextMissileImpactTime;
float missileActiveTime,
missileActiveRange;
float missileRMax, missileRMin,
missileRneMax, missileRneMin;
float missileSeekerAz, missileSeekerEl;
float missileWEZDisplayRange;
float airGroundDelayTime,
airGroundRange, airGroundBearing, airGroundMinRange, airGroundMaxRange;
float groundImpactX, groundImpactY,
groundImpactZ, groundImpactTime;
float groundDesignateAz,
groundDesignateEl, groundDesignateDroll;
float groundDesignateX,
groundDesignateY, groundDesignateZ;
float groundPipperAz, groundPipperEl;
char subModeString[8];
SMSClass* Sms;
void ClearOverrideMode (void);
void NextSubMode(void);
void SetMasterMode(FCCMasterMode);
void SetSubMode(FCCSubMode);
void WeaponStep(void);
SimObjectType* Exec (SimObjectType*
curTarget, SimObjectType* targetList, PilotInputs* theInputs);
FCCMasterMode GetMasterMode
(void) {return (masterMode);};
FCCSubMode GetSubMode (void)
{return (subMode);};
int PlayerFCC (void) {return
playerFCC;};
void SetPlayerFCC (int flag);
SimObjectType* TargetPtr(void)
{return targetPtr; };
void ClearCurrentTarget
(void);
void SetTarget (SimObjectType*
newTarget);
void PushButton (int whichButton,
int whichMFD = 0);
void SetStptMode(FCCStptMode);
void SetWaypointNum (int num);
FCCStptMode GetStptMode(void)
{return mStptMode;};
BOOL InTransistion(void)
{return mStptMode != mNewStptMode;};
void SetBombReleaseOverride (int newVal) {bombReleaseOverride
= newVal;};