unit uLazFormationGlobals;

{$mode Delphi}
//{$mode objfpc}{$H+}

interface

uses
  Generics.Collections, Generics.Defaults, uHCTypeDefs, uHCAnnexDefs,
  uHCAnnexHelpers;

type
    // ALE 20170222 2018.001 Reworking formation-keeping
    THCFORMATION_POSITION = packed record
      Range: Double;   // nautical miles
      Bearing: Double; // degrees
      xOff: long; // TODO ALE 20180410 testing storing main body offsets
      yOff: long; // TODO ALE 20180410 testing storing main body offsets
    end;

    THCFORMATION = packed record
      UUID: HCUUID;
      Activity: UInt64; // Bitfield (0 = unassigned, 1 = Hold, 2 = Reform, 4 = Spring, 8 = drift, etc.
      PositionNow: THCFORMATION_POSITION;
      PositionGoal: THCFORMATION_POSITION;
    end;

    THCFORMATIONC = class
      UUID: HCUUID;
      Activity: UInt64; // Bitfield (0 = unassigned, 1 = Hold, 2 = Reform, 4 = Spring, 8 = drift, etc.
      PositionNow: THCFORMATION_POSITION;
      PositionGoal: THCFORMATION_POSITION;
    end;

var
  blnInvestigatingStructs: Boolean;
  PGEClosing: Pointer; // ALE 20130812 Pointer to a SmallInt
  PDLLBusy: Pointer; // ALE 20130816 Pointer to a Byte
  intGameTime: Long;
  intGameTimeLeft: Long;
  AnnexData: PHCAnnexes_disk;
  DatabaseVersionDB: PHCDATABASE_VERSION;
  ScenData: PHCSCENARIO_DATA;
  ScenSaveData: PHCSCENARIO_SAVE_DATA;
  HCAnnexHelper: IHCAnnexHelper;
  intVerInterface: NativeInt;
  intVerSaveGame: NativeInt;
  HCEffect02: THCEffectVoid;
  HCResetGroupCenter: THCResetGroupCenter;
  HCSetCourseGroup_Raw: THCSetCourseGroup_Raw;
  HCSetCourseUnit_Raw: THCSetCourseUnit_Raw;
  PActGroup: PHCGroup;
  PActUnit: PHCUnit;
  PStartGroup: PHCGroup;
  UnitFormationList: TDictionary<HCUUID, THCFORMATIONC>;

implementation

end.

