Advertisement
Guest User

Untitled

a guest
Jan 5th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 41.36 KB | None | 0 0
  1. #define PI 3.14159265359
  2. #define ANGLEOFINDICENCE 0.0523599
  3.  
  4. #define PosX0Center 0.495 // 502
  5. #define PosY0Center 0.536 // 49
  6. #define PosYCenterHorizont 0.546
  7. #define PosY0CenterAdjust 0.23
  8.  
  9. #define SizeX10deg (0.196*3.1)
  10. #define SizeY10deg (0.175*3.1)
  11. #define SizeX10degHorizon 0.384
  12. #define SizeY10degHorizon 0.380
  13.  
  14. #define Factor 2/3
  15. #define LADDER_SIZE 0.16
  16. #define DEF_HORIZONT_SPACING_Plus(XX) \
  17.     class LevelP##XX: Level0 \
  18.     { \
  19.         type            = line; \
  20.         points[]        = \
  21.         { \
  22.             {LevelP##XX,{-LADDER_SIZE-0.015,0.02},1}, \
  23.             {LevelP##XX,{-LADDER_SIZE-0.015,0},1}, \
  24.             {LevelP##XX,{-0.06,0.001*9},1}, \
  25.             {}, \
  26.             {LevelP##XX,{ 0.06,0.001*9},1}, \
  27.             {LevelP##XX,{+LADDER_SIZE+0.015,0},1}, \
  28.             {LevelP##XX,{+LADDER_SIZE+0.015,0.02},1} \
  29.         };  \
  30.     };  \
  31.     class VALP_1_##XX                                                                   \
  32.     {                                                                                   \
  33.         type            = text;                                                         \
  34.         source          = static;                                                       \
  35.         text            = #XX;                                                          \
  36.         align           = left;                                                         \
  37.         scale           = 1;                                                            \
  38.         sourceScale     = 1;                                                            \
  39.         pos[]           = {LevelP##XX,{__EVAL(-0.21 + 0.02),__EVAL(-0.082+0.065)},1};   \
  40.         right[]         = {LevelP##XX,{__EVAL(-0.15 + 0.02),__EVAL(-0.082+0.065)},1};   \
  41.         down[]          = {LevelP##XX,{__EVAL(-0.21 + 0.02),__EVAL(-0.032+0.065)},1};   \
  42.     };                                                                                  \
  43.     class VALP_1_##XX##_R                                                               \
  44.     {                                                                                   \
  45.         type            = text;                                                         \
  46.         source          = static;                                                       \
  47.         text            = #XX;                                                          \
  48.         align           = right;                                                        \
  49.         scale           = 1;                                                            \
  50.         sourceScale     = 1;                                                            \
  51.         pos[]           = {LevelP##XX,{__EVAL( 0.21 - 0.02),__EVAL(-0.082+0.065)},1};   \
  52.         right[]         = {LevelP##XX,{__EVAL( 0.27 - 0.02),__EVAL(-0.082+0.065)},1};   \
  53.         down[]          = {LevelP##XX,{__EVAL( 0.21 - 0.02),__EVAL(-0.032+0.065)},1};   \
  54.     }
  55.  
  56.  
  57.  
  58. #define DEF_HORIZONT_SPACING_Minus(XX)                                                  \
  59.     class LevelM##XX: Level0                                                            \
  60.     {                                                                                   \
  61.         type            = line;                                                         \
  62.         points[]        =                                                               \
  63.         {                                                                               \
  64.             {LevelM##XX,{__EVAL(-LADDER_SIZE-0.015*1),-0.02},1},                                \
  65.             {LevelM##XX,{__EVAL(-LADDER_SIZE-0.015*1),0},1},    {},                             \
  66.             {LevelM##XX,{__EVAL(-LADDER_SIZE+0.015*0),  -0.001*1},1},                                   \
  67.             {LevelM##XX,{__EVAL(-LADDER_SIZE+0.015*1),  -0.001*2},1},   {},                             \
  68.             {LevelM##XX,{__EVAL(-LADDER_SIZE+0.015*2),  -0.001*3},1},                                   \
  69.             {LevelM##XX,{__EVAL(-LADDER_SIZE+0.015*3),  -0.001*4},1},   {},                             \
  70.             {LevelM##XX,{__EVAL(-LADDER_SIZE+0.015*4),  -0.001*5},1},                                   \
  71.             {LevelM##XX,{__EVAL(-LADDER_SIZE+0.015*5),  -0.001*6},1},   {},                             \
  72.             {LevelM##XX,{__EVAL(-LADDER_SIZE+0.015*6),  -0.001*7},1},                                   \
  73.             {LevelM##XX,{__EVAL(-LADDER_SIZE+0.015*7),  -0.001*8},1},   {},                             \
  74.             {LevelM##XX,{__EVAL(-LADDER_SIZE+0.015*8),  -0.001*9},1},                                   \
  75.             {},                                                                         \
  76.             {LevelM##XX,{__EVAL( LADDER_SIZE+0.015*1),-0.02},1},                                \
  77.             {LevelM##XX,{__EVAL( LADDER_SIZE+0.015*1),0},1},    {},                             \
  78.             {LevelM##XX,{__EVAL( LADDER_SIZE-0.015*0),-0.001*1},1},                                     \
  79.             {LevelM##XX,{__EVAL( LADDER_SIZE-0.015*1),-0.001*2},1},     {},                             \
  80.             {LevelM##XX,{__EVAL( LADDER_SIZE-0.015*2),-0.001*3},1},                                     \
  81.             {LevelM##XX,{__EVAL( LADDER_SIZE-0.015*3),-0.001*4},1},     {},                             \
  82.             {LevelM##XX,{__EVAL( LADDER_SIZE-0.015*4),-0.001*5},1},                                     \
  83.             {LevelM##XX,{__EVAL( LADDER_SIZE-0.015*5),-0.001*6},1}, {},                             \
  84.             {LevelM##XX,{__EVAL( LADDER_SIZE-0.015*6),-0.001*7},1},                                     \
  85.             {LevelM##XX,{__EVAL( LADDER_SIZE-0.015*7),-0.001*8},1},     {},                             \
  86.             {LevelM##XX,{__EVAL( LADDER_SIZE-0.015*8),-0.001*9},1},                                     \
  87.         };                                                                              \
  88.     };                                                                                  \
  89.     class VALM_1_##XX                                                                   \
  90.     {                                                                                   \
  91.         type            = text;                                                         \
  92.         source          = static;                                                       \
  93.         text            = -##XX;                                                        \
  94.         align           = left;                                                         \
  95.         scale           = 1;                                                            \
  96.         sourceScale     = 1;                                                            \
  97.         pos[]           = {LevelM##XX,{__EVAL(-0.21 + 0.02),__EVAL(-0.082+0.05)},1};    \
  98.         right[]         = {LevelM##XX,{__EVAL(-0.15 + 0.02),__EVAL(-0.082+0.05)},1};    \
  99.         down[]          = {LevelM##XX,{__EVAL(-0.21 + 0.02),__EVAL(-0.032+0.05)},1};    \
  100.     };                                                                                  \
  101.     class VALM_1_##XX##_R                                                               \
  102.     {                                                                                   \
  103.         type            = text;                                                         \
  104.         source          = static;                                                       \
  105.         text            = -##XX;                                                        \
  106.         align           = right;                                                        \
  107.         scale           = 1;                                                            \
  108.         sourceScale     = 1;                                                            \
  109.         pos[]           = {LevelM##XX,{__EVAL( 0.21 - 0.02),__EVAL(-0.082+0.05)},1};    \
  110.         right[]         = {LevelM##XX,{__EVAL( 0.27 - 0.02),__EVAL(-0.082+0.05)},1};    \
  111.         down[]          = {LevelM##XX,{__EVAL( 0.21 - 0.02),__EVAL(-0.032+0.05)},1};    \
  112.     }
  113.  
  114. #define DOT(xx,yy) \
  115. POINT2((xx) - 0.0035,yy), \
  116. POINT2((xx) + 0.0035,yy), \
  117. {}, \
  118. POINT2(xx,(yy) - 0.0035), \
  119. POINT2(xx,(yy) + 0.0035), \
  120. {}
  121.  
  122.  
  123.     class AirplaneHUD
  124.     {
  125.         topLeft         = "HUD LH";
  126.         topRight        = "HUD PH";
  127.         bottomLeft      = "HUD LD";
  128.         borderLeft      = 0;
  129.         borderRight     = 0;
  130.         borderTop       = 0;
  131.         borderBottom    = 0.0;
  132.         color[]         = {0.15, 1, 0.15, 1};
  133.         enableParallax  = 1;
  134.         font            = "rhsusf_digital_font_usa";
  135.  
  136.         class Bones
  137.         {
  138.             class PlaneW
  139.             {
  140.                 type            = fixed;
  141.                 pos[]           = {PosX0Center, PosY0Center};
  142.                 pos10[]         = {__EVAL(PosX0Center + SizeX10deg),    __EVAL(PosY0Center + SizeY10deg)};
  143.             };
  144.             class PlaneOrientation
  145.             {
  146.                 type            = vector;
  147.                 source          = forward;
  148.                 pos[]           = {PosX0Center, PosYCenterHorizont};
  149.                 pos0[]          = {PosX0Center, PosY0Center};
  150.                 pos10[]         = {__EVAL(PosX0Center + SizeX10deg),    __EVAL(PosY0Center + SizeY10deg)};
  151.             };
  152.             class Velocity
  153.             {
  154.                 type            = vector;
  155.                 source          = velocity;
  156.                 pos0[]          = {PosX0Center, PosY0Center};
  157.                 pos10[]         = {__EVAL(PosX0Center + SizeX10deg), __EVAL(PosY0Center + SizeY10deg)};
  158.             };
  159.             class WeaponAim
  160.             {
  161.                 type            = vector;
  162.                 source          = weapon;
  163.                 pos0[]          = {PosX0Center, PosY0Center};
  164.                 pos10[]         = {__EVAL(PosX0Center + SizeX10deg),    __EVAL(PosY0Center + SizeY10deg)};
  165.             };
  166.             class ImpactPoint
  167.             {
  168.                 type            = vector;
  169.                 source          = ImpactPointWeaponRelative;
  170.                 pos0[]          = {0.5, __EVAL(PosY0Center)};
  171.                 pos10[]         = {__EVAL(0.5 + SizeX10deg), __EVAL(PosY0Center + SizeY10deg)};
  172.             };
  173.             class NormalizeBombCircle
  174.             {
  175.                 type            = normalizedorsmaller;
  176.                 limit           = 0.08;
  177.                 aspectRatio     = __EVAL(1 / XtoYscale);
  178.             };
  179.             class ImpactPointRelative
  180.             {
  181.                 type            = vector;
  182.                 source          = impactpointweaponRelative;
  183.                 pos0[]          = {0.5, __EVAL(PosY0Center)};
  184.                 pos10[]         = {__EVAL(0.5 + SizeX10deg), __EVAL(PosY0Center + SizeY10deg)};
  185.             };
  186.             class Target
  187.             {
  188.                 source  = target;
  189.                 type    = vector;
  190.                 pos0[]  = {__EVAL(PosX0Center),__EVAL(PosY0Center)};
  191.                 pos10[] = {__EVAL(PosX0Center+SizeX10deg),__EVAL(PosY0Center+SizeY10deg)};
  192.             };
  193.             class TargetingPodDir
  194.             {
  195.                 source  = pilotcamera;
  196.                 type    = vector;
  197.                 pos0[]  = {__EVAL(PosX0Center),__EVAL(PosY0Center)};
  198.                 pos10[] = {__EVAL(PosX0Center+SizeX10deg),__EVAL(PosY0Center+SizeY10deg)};
  199.             };
  200.             class TargetingPodTarget
  201.             {
  202.                 source  = pilotcameratarget;
  203.                 type    = vector;
  204.                 pos0[]  = {__EVAL(PosX0Center),__EVAL(PosY0Center)};
  205.                 pos10[] = {__EVAL(PosX0Center+SizeX10deg),__EVAL(PosY0Center+SizeY10deg)};
  206.             };
  207.             class Limit0109
  208.             {
  209.                 type            = limit;
  210.                 limits[]        = {0.1,0.1,0.9,0.9};
  211.             };
  212.             class LimitWaypoint
  213.             {
  214.                 type            = limit;
  215.                 limits[]        = {0.33,0.1,0.67,0.1};
  216.             };
  217.             class WPPoint
  218.             {
  219.                 type            = vector;
  220.                 source          = WPPoint;
  221.                 pos0[]          = {PosX0Center, __EVAL(PosY0Center)};
  222.                 pos10[]         = {__EVAL(0.5 + SizeX10deg), __EVAL(PosY0Center + SizeY10deg)};
  223.             };
  224.             class ASL_Instrument
  225.             {
  226.                 type            = rotational;
  227.                 source          = altitudeASL;
  228.                 center[]        = {0.90, __EVAL(0.5 / XtoYscale)};
  229.                 min             = 0;
  230.                 max             = 20000;
  231.                 minAngle        = 0;
  232.                 maxAngle        = 72000;
  233.                 aspectRatio     = __EVAL(1 / XtoYscale);
  234.             };
  235.             class Speed_Instrument: ASL_Instrument
  236.             {
  237.                 source          = speed;
  238.                 center[]        = {0.10, __EVAL(0.5 / XtoYscale)};
  239.                 max             = __EVAL(2000 / 3.6);
  240.                 maxAngle        = 7200;
  241.             };
  242.             /* ~~~~ AIRPORT OUTLINES ~~~~ */
  243.             class Airport1
  244.             {
  245.                 type            = vector;
  246.                 source          = airportCorner1;
  247.                 pos0[]          = {0.5, __EVAL(PosY0Center)};
  248.                 pos10[]         = {__EVAL(0.5 + SizeX10deg), __EVAL(PosY0Center + SizeY10deg)};
  249.             };
  250.             class Airport2: Airport1{source = airportCorner2;};
  251.             class Airport3: Airport1{source = airportCorner3;};
  252.             class Airport4: Airport1{source = airportCorner4;};
  253.             class ILS_H
  254.             {
  255.                 type    = ils;
  256.                 pos0[]  = {0.5,__EVAL(PosY0Center)};
  257.                 pos3[]  = {__EVAL(0.5+(SizeX10deg)*3/10),__EVAL(PosY0Center)};
  258.             };
  259.             class ILS_W: ILS_H
  260.             {
  261.                 pos3[]={0.5,__EVAL((PosY0Center)+(SizeY10deg)*3/10)};
  262.             };
  263.             class HorizonBankRot
  264.             {
  265.                 type        = rotational;
  266.                 source      = horizonBank;
  267.                 center[]    = {0.5,0.5};
  268.                 min         = -rad(45);
  269.                 max         = rad(45);
  270.                 minAngle    = 180.25-35.5;
  271.                 maxAngle    = 180.75+35.5;
  272.                 aspectRatio = 0.8;
  273.             };
  274.             class HorizonBankRotFull: HorizonBankRot
  275.             {
  276.                 center[]        = {0, 0};
  277.                 min             = __EVAL(-3.1416);
  278.                 max             = __EVAL(3.1416);
  279.                 minAngle        = __EVAL(-180);
  280.                 maxAngle        = __EVAL(180);
  281.                 aspectRatio     = 1;
  282.             };
  283.             class Level0
  284.             {
  285.                 pos0[]  = {PosX0Center, PosYCenterHorizont};
  286.                 pos10[] = {__EVAL(PosX0Center + SizeX10degHorizon), __EVAL(PosYCenterHorizont + SizeY10degHorizon)};
  287.                 type    = horizon;
  288.                 angle   = 0;
  289.             };
  290.             class LevelP5 : Level0 { angle  = 1.0*5;};
  291.             class LevelM5 : Level0 {angle   = 1.0*-5;};
  292.             class LevelP10 : Level0 {angle  = 1.0*10;};
  293.             class LevelM10 : Level0 {angle  = 1.0*-10;};
  294.             class LevelP15 : Level0 {angle  = 1.0*15;};
  295.             class LevelM15 : Level0 {angle  = 1.0*-15;};
  296.             class LevelP20 : Level0 {angle  = 1.0*20;};
  297.             class LevelM20 : Level0 {angle  = 1.0*-20;};
  298.             class LevelP25 : Level0 {angle  = 1.0*25;};
  299.             class LevelM25 : Level0 {angle  = 1.0*-25;};
  300.             class LevelP30 : Level0 {angle  = 1.0*30;};
  301.             class LevelM30 : Level0 {angle  = 1.0*-30;};
  302.             class LevelP35 : Level0 {angle  = 1.0*35;};
  303.             class LevelM35 : Level0 {angle  = 1.0*-35;};
  304.             class LevelP40 : Level0 {angle  = 1.0*40;};
  305.             class LevelM40 : Level0 {angle  = 1.0*-40;};
  306.             class LevelP45 : Level0 {angle  = 1.0*45;};
  307.             class LevelM45 : Level0 {angle  = 1.0*-45;};
  308.             class LevelP50 : Level0 {angle  = 1.0*50;};
  309.             class LevelM50 : Level0 {angle  = 1.0*-50;};
  310.             class LevelP60 : Level0 {angle  = 1.0*60;};
  311.             class LevelM60 : Level0 {angle  = 1.0*-60;};
  312.             class LevelP70 : Level0 {angle  = 1.0*70;};
  313.             class LevelM70 : Level0 {angle  = 1.0*-70;};
  314.             class LevelP80 : Level0 {angle  = 1.0*80;};
  315.             class LevelM80 : Level0 {angle  = 1.0*-80;};
  316.             class LevelP90 : Level0 {angle  = 1.0*90;};
  317.             class LevelM90 : Level0 {angle  = 1.0*-90;};
  318.             class MissileFlightTimeRot1
  319.             {
  320.                 type            = rotational;
  321.                 source          = MissileFlightTime;
  322.                 sourceScale     = 1.0;
  323.                 center[]        = {0, 0};
  324.                 min             = 0;
  325.                 max             = __EVAL(10 *0.05);
  326.                 minAngle        = 0;
  327.                 maxAngle        = __EVAL(360 * 0.05);
  328.                 aspectRatio     = __EVAL(1 / XtoYscale);
  329.             };
  330.             #define MISSILEFLIGHTTIME_ROT_MACRO(XX)                 \
  331.             class MissileFlightTimeRot##XX##: MissileFlightTimeRot1 \
  332.             {                                                       \
  333.                 maxAngle        = __EVAL(36 * (##XX##/2) );         \
  334.                 max             = __EVAL(1 * (##XX##/2));           \
  335.             };
  336.             MISSILEFLIGHTTIME_ROT_MACRO(2)
  337.             MISSILEFLIGHTTIME_ROT_MACRO(3)
  338.             MISSILEFLIGHTTIME_ROT_MACRO(4)
  339.             MISSILEFLIGHTTIME_ROT_MACRO(5)
  340.             MISSILEFLIGHTTIME_ROT_MACRO(6)
  341.             MISSILEFLIGHTTIME_ROT_MACRO(7)
  342.             MISSILEFLIGHTTIME_ROT_MACRO(8)
  343.             MISSILEFLIGHTTIME_ROT_MACRO(9)
  344.             MISSILEFLIGHTTIME_ROT_MACRO(10)
  345.             MISSILEFLIGHTTIME_ROT_MACRO(11)
  346.             MISSILEFLIGHTTIME_ROT_MACRO(12)
  347.             MISSILEFLIGHTTIME_ROT_MACRO(13)
  348.             MISSILEFLIGHTTIME_ROT_MACRO(14)
  349.             MISSILEFLIGHTTIME_ROT_MACRO(15)
  350.             MISSILEFLIGHTTIME_ROT_MACRO(16)
  351.             MISSILEFLIGHTTIME_ROT_MACRO(17)
  352.             MISSILEFLIGHTTIME_ROT_MACRO(18)
  353.             MISSILEFLIGHTTIME_ROT_MACRO(19)
  354.             MISSILEFLIGHTTIME_ROT_MACRO(20)
  355.             class LarAmmoMax
  356.             {
  357.                 type        = linear;
  358.                 source      = LarAmmoMax;
  359.                 sourceScale = 1.0;
  360.                 min         = 0;
  361.                 max         = 1;
  362.                 minPos[]    = {0.0, 1.0};
  363.                 maxPos[]    = {0.0, 0.0};
  364.             };
  365.             class LarAmmoMin: LarAmmoMax
  366.             {
  367.                 source      = LarAmmoMin;
  368.             };
  369.             class LarTargetDist: LarAmmoMax
  370.             {
  371.                 source      = LarTargetDist;
  372.             };
  373.             class LarAmmoMGunMax
  374.             {
  375.                 type        = rotational;
  376.                 source      = LarAmmoMax;
  377.                 sourceScale = 1.0;
  378.                 center[]    = {0, 0};
  379.                 min             = 0;
  380.                 max             = 1;
  381.                 minAngle        = __EVAL(-180);
  382.                 maxAngle        = __EVAL(180);
  383.                 aspectRatio     = __EVAL(1 / XtoYscale);
  384.             };
  385.             class LarAmmoMGunMin: LarAmmoMGunMax
  386.             {
  387.                 source      = LarAmmoMin;
  388.             };
  389.         };
  390.         class Draw
  391.         {
  392.             color[] = {0.15, 1, 0.15};
  393.             alpha = 1;
  394.             condition = "on";
  395.             //MINIPLANE
  396.             class PlaneW
  397.             {
  398.                 type = line;
  399.                 width = 3.0;
  400.                 points[] =
  401.                 {
  402.                     //boresight indicator
  403.                     {PlaneW,{       -0.02,  0},1},
  404.                     {PlaneW,{        0.02,  0},1},{},
  405.                     {PlaneW,{       -0,     __EVAL(-0.02/XtoYscale)},1},
  406.                     {PlaneW,{        0,     __EVAL( 0.02/XtoYscale)},1},{},
  407.                     // Alpha sign
  408.                     { {__EVAL(-0.01+0.12),      __EVAL(0.557+0.22   + 0)}, 1},
  409.                     { {__EVAL(-0.01+0.1),       __EVAL(0.557+0.2    + 0.003)}, 1},
  410.                     { {__EVAL(-0.01+0.095),     __EVAL(0.557+0.198  + 0.003)}, 1},
  411.                     { {__EVAL(-0.01+0.09),      __EVAL(0.557+0.198  + 0.003)}, 1},
  412.                     { {__EVAL(-0.01+0.085),     __EVAL(0.557+0.20   + 0.003)}, 1},
  413.                     { {__EVAL(-0.01+0.083),     __EVAL(0.557+0.21   + 0)}, 1},
  414.                     { {__EVAL(-0.01+0.085),     __EVAL(0.557+0.22   - 0.003)}, 1},
  415.                     { {__EVAL(-0.01+0.09),      __EVAL(0.557+0.222  - 0.003)}, 1},
  416.                     { {__EVAL(-0.01+0.095),     __EVAL(0.557+0.222  - 0.003)}, 1},
  417.                     { {__EVAL(-0.01+0.1),       __EVAL(0.557+0.22   - 0.003)}, 1},
  418.                     { {__EVAL(-0.01+0.12),      __EVAL(0.557+0.2    + 0)}, 1},
  419.                     {},
  420.                     // nominal throttle
  421.                     {PlaneW,{       -0.4-0.01,  __EVAL(-0.25+0.0/XtoYscale)},1},
  422.                     {PlaneW,{       -0.4-0,     __EVAL(-0.25+0.01/XtoYscale)},1},
  423.                     {PlaneW,{       -0.4-0.01,  __EVAL(-0.25+0.02/XtoYscale)},1},{},
  424.                     {},
  425.                     // bank lines
  426.                     CIRCLE_MARK_CENTER(PosX0Center, 0.3, 0.62, 0.64, 180 - 90 * 4 / 12),{},
  427.                     CIRCLE_MARK_CENTER(PosX0Center, 0.3, 0.62, 0.64, 180 - 90 * 3 / 12),{},
  428.                     CIRCLE_MARK_CENTER(PosX0Center, 0.3, 0.62, 0.64, 180 - 90 * 2 / 12),{},
  429.                     CIRCLE_MARK_CENTER(PosX0Center, 0.3, 0.62, 0.64, 180 - 90 * 1 / 12),{},
  430.                     CIRCLE_MARK_CENTER(PosX0Center, 0.3, 0.62, 0.64, 180),{},
  431.                     CIRCLE_MARK_CENTER(PosX0Center, 0.3, 0.62, 0.64, 180 + 90 * 1 / 12),{},
  432.                     CIRCLE_MARK_CENTER(PosX0Center, 0.3, 0.62, 0.64, 180 + 90 * 2 / 12),{},
  433.                     CIRCLE_MARK_CENTER(PosX0Center, 0.3, 0.62, 0.64, 180 + 90 * 3 / 12),{},
  434.                     CIRCLE_MARK_CENTER(PosX0Center, 0.3, 0.62, 0.64, 180 + 90 * 4 / 12),{},
  435.                     {HorizonBankRot, {XY_Scaled( 0.00, 0.37+0.12)}, 1},
  436.                     {HorizonBankRot, {XY_Scaled( 0.01, 0.35+0.12)}, 1},
  437.                     {HorizonBankRot, {XY_Scaled(-0.01, 0.35+0.12)}, 1},
  438.                     {HorizonBankRot, {XY_Scaled( 0.00, 0.37+0.12)}, 1},{},
  439.                     // FPM
  440.                     {Velocity, {0, -0.02}, 1},
  441.                     {Velocity, {0.01, -0.01732}, 1},
  442.                     {Velocity, {0.01732, -0.01}, 1},
  443.                     {Velocity, {0.02, 0}, 1},
  444.                     {Velocity, {0.01732, 0.01}, 1},
  445.                     {Velocity, {0.01, 0.01732}, 1},
  446.                     {Velocity, {0, 0.02}, 1},
  447.                     {Velocity, {-0.01, 0.01732}, 1},
  448.                     {Velocity, {-0.01732, 0.01}, 1},
  449.                     {Velocity, {-0.02, 0}, 1},
  450.                     {Velocity, {-0.01732, -0.01}, 1},
  451.                     {Velocity, {-0.01, -0.01732}, 1},
  452.                     {Velocity, {0, -0.02}, 1}, {},
  453.                     {Velocity, {0.04, 0}, 1},
  454.                     {Velocity, {0.02, 0}, 1}, {},
  455.                     {Velocity, {-0.04, 0}, 1},
  456.                     {Velocity, {-0.02, 0}, 1}, {},
  457.                     {Velocity, {0, -0.04}, 1},
  458.                     {Velocity, {0, -0.02}, 1}
  459.                 };
  460.             };
  461.             class Static_Bold
  462.             {
  463.                 type = line;
  464.                 width = 5.0;
  465.                 points[] =
  466.                 {
  467.                     // Speed dial circle
  468.                     INSTRUMENT(0.10, 0.5, 0.0725),
  469.                     // Speed dial line
  470.                     {Speed_Instrument, {0, __EVAL(0.055)}, 1},
  471.                     {Speed_Instrument, {0, __EVAL(0.075)}, 1},
  472.                     {},
  473.                     // Altitude dial circle
  474.                     INSTRUMENT(0.90, 0.5, 0.0725),
  475.                     // Altitude dial line
  476.                     {ASL_Instrument, {0, __EVAL(0.055)}, 1},
  477.                     {ASL_Instrument, {0, __EVAL(0.075)}, 1},
  478.                     {},
  479.                 };
  480.             };
  481.             class AfterBurner
  482.             {
  483.                 condition = "throttle >=1";
  484.                 class PlaneW
  485.                 {
  486.                     type = line;
  487.                     width = 3.0;
  488.                     points[] =
  489.                     {
  490.                         // nominal throttle
  491.                         {PlaneW,{       -0.38-0.01, __EVAL(-0.25+0.0/XtoYscale)},1},
  492.                         {PlaneW,{       -0.38-0,        __EVAL(-0.25+0.01/XtoYscale)},1},
  493.                         {PlaneW,{       -0.38-0.01,     __EVAL(-0.25+0.02/XtoYscale)},1},{},
  494.                     };
  495.                 };
  496.             };
  497.             class Horizont
  498.             {
  499.                 clipTL[] = {0.1, 0.15};
  500.                 clipBR[] = {0.85, 0.99};
  501.  
  502.                 class Dimmed
  503.                 {
  504.                     class Level0
  505.                     {
  506.                         type            = line;
  507.                         width           = 3.0;
  508.                         points[]        =
  509.                         {
  510.                             {Level0, {0.25, 0.0}, 1},
  511.                             {Level0, {0.065, 0.0}, 1},
  512.                             {},
  513.                             {Level0, {-0.065, 0.0}, 1},
  514.                             {Level0, {-0.25, 0.0}, 1}
  515.                         };
  516.                     };
  517.                 };
  518.                 class Level0
  519.                 {
  520.                     type            = line;
  521.                     width           = 2.0;
  522.                     points[]        = {};
  523.                 };
  524.                 DEF_HORIZONT_SPACING_Minus(5);
  525.                 DEF_HORIZONT_SPACING_Plus(5);
  526.                 DEF_HORIZONT_SPACING_Minus(10);
  527.                 DEF_HORIZONT_SPACING_Plus(10);
  528.                 DEF_HORIZONT_SPACING_Minus(15);
  529.                 DEF_HORIZONT_SPACING_Plus(15);
  530.                 DEF_HORIZONT_SPACING_Minus(20);
  531.                 DEF_HORIZONT_SPACING_Plus(20);
  532.                 DEF_HORIZONT_SPACING_Minus(25);
  533.                 DEF_HORIZONT_SPACING_Plus(25);
  534.                 DEF_HORIZONT_SPACING_Minus(30);
  535.                 DEF_HORIZONT_SPACING_Plus(30);
  536.                 DEF_HORIZONT_SPACING_Minus(35);
  537.                 DEF_HORIZONT_SPACING_Plus(35);
  538.                 DEF_HORIZONT_SPACING_Minus(40);
  539.                 DEF_HORIZONT_SPACING_Plus(40);
  540.                 DEF_HORIZONT_SPACING_Minus(45);
  541.                 DEF_HORIZONT_SPACING_Plus(45);
  542.                 DEF_HORIZONT_SPACING_Minus(50);
  543.                 DEF_HORIZONT_SPACING_Plus(50);
  544.                 DEF_HORIZONT_SPACING_Minus(60);
  545.                 DEF_HORIZONT_SPACING_Plus(60);
  546.                 DEF_HORIZONT_SPACING_Minus(70);
  547.                 DEF_HORIZONT_SPACING_Plus(70);
  548.                 DEF_HORIZONT_SPACING_Minus(80);
  549.                 DEF_HORIZONT_SPACING_Plus(80);
  550.                 DEF_HORIZONT_SPACING_Minus(90);
  551.                 DEF_HORIZONT_SPACING_Plus(90);
  552.             };
  553.  
  554.  
  555.             class SpeedNumber
  556.             {
  557.                 type            = text;
  558.                 source          = speed;
  559.                 sourceScale     = 3.6;
  560.  
  561.                 align           = center;
  562.                 scale           = 1;
  563.                 pos[]           = {{XY_Scaled(0.10 + 0.00, 0.50 - 0.025)}, 1};
  564.                 right[]         = {{XY_Scaled(0.10 + 0.06, 0.50 - 0.025)}, 1};
  565.                 down[]          = {{XY_Scaled(0.10 + 0.00, 0.50 + 0.025)}, 1};
  566.             };
  567.             class AltNumber: SpeedNumber
  568.             {
  569.                 source          = altitudeASL;
  570.                 sourceScale     = 1;
  571.  
  572.                 pos[]           = {{XY_Scaled(0.90 + 0.00, 0.50 - 0.025)}, 1};
  573.                 right[]         = {{XY_Scaled(0.90 + 0.06, 0.50 - 0.025)}, 1};
  574.                 down[]          = {{XY_Scaled(0.90 + 0.00, 0.50 + 0.025)}, 1};
  575.             };
  576.  
  577.             //PITCH, ROLL, CLIMB INDICATOR DISPLAYS
  578.             class MachText
  579.             {
  580.                 type    = text;
  581.                 source  = static;
  582.                 align   = left;
  583.                 text    = "M";
  584.                 scale   = 1;
  585.                 TEXT_SIZEPOS(0.1,0.63,0.05,0.05)
  586.             };
  587.             class MachNumber
  588.             {
  589.                 type            = text;
  590.                 source          = speed;
  591.                 sourceScale     = 0.002939;
  592.                 sourcePrecision = 2;
  593.                 align           = right;
  594.                 scale           = 1;
  595.                 TEXT_SIZEPOS(0.12,0.63,0.05,0.05)
  596.             };
  597.  
  598.             class GmeterText
  599.             {
  600.                 type    = text;
  601.                 source  = static;
  602.                 align   = left;
  603.                 text    = "G";
  604.                 scale   = 1;
  605.                 TEXT_SIZEPOS(0.1,0.7,0.05,0.05)
  606.             };
  607.  
  608.             class GmeterNumber
  609.             {
  610.                 type            = text;
  611.                 source          = gmeter;
  612.                 sourceScale     = 0.3;
  613.                 sourcePrecision = 1;
  614.                 refreshRate     = 0.4;
  615.                 align           = right;
  616.                 scale           = 1;
  617.                 TEXT_SIZEPOS(0.12,0.7,0.05,0.05)
  618.             };
  619.             class PitchNumber
  620.             {
  621.                 type            = text;
  622.                 source          = aoa;
  623.                 sourceScale     = 57.2958;
  624.                 sourcePrecision = 1;
  625.                 refreshRate     = 0.4;
  626.                 align           = right;
  627.                 scale           = 1;
  628.                 TEXT_SIZEPOS(0.12,0.74,0.05,0.05)
  629.             };
  630.             class RadarATLText
  631.             {
  632.                 type    = text;
  633.                 source  = static;
  634.                 align   = left;
  635.                 text    = "R";
  636.                 scale   = 1;
  637.                 TEXT_SIZEPOS(0.85,0.55,0.05,0.05)
  638.             };
  639.             class RadarATLNumber
  640.             {
  641.                 type            = text;
  642.                 source          = altitudeAGL;
  643.                 sourceScale     = 1;
  644.                 sourceLength    = 4;
  645.                 sourceOffset    = -2;
  646.                 sourcePrecision = 0;
  647.                 refreshRate     = 0.01;
  648.                 align           = right;
  649.                 scale           = 1;
  650.                 TEXT_SIZEPOS(0.87,0.55,0.05,0.05)
  651.             };
  652.  
  653.             // Arrows above and below heading scale
  654.             class HeadingNumber
  655.             {
  656.                 type            = text;
  657.                 source          = heading;
  658.                 sourceScale     = 1;
  659.  
  660.  
  661.                 align           = center;
  662.                 scale           = 1;
  663.                 TEXT_SIZEPOS(0.5,0.14,0.07,0.07)
  664.             };
  665.             class HeadingArrows
  666.             {
  667.                 type            = line;
  668.                 width           = 3.0;
  669.                 points[]        =
  670.                 {
  671.                     POINT2(0.00 + 0.45, 0.20 + 0.024),
  672.                     POINT2(0.10 + 0.45, 0.20 + 0.024),
  673.                     POINT2(0.10 + 0.45, 0.20 - 0.024),
  674.                     POINT2(0.00 + 0.45, 0.20 - 0.024),
  675.                     POINT2(0.00 + 0.45, 0.20 + 0.024),{},
  676.                 // Bottom arrow for heading scale
  677.                     {WPPoint, 1, LimitWaypoint, 1,{ __EVAL(0.0 - 0.011),  __EVAL(0.13 + 0.000)}, 1},
  678.                     {WPPoint, 1, LimitWaypoint, 1,{ __EVAL(0.0 - 0.011),  __EVAL(0.13 + 0.022)}, 1},
  679.                     {},
  680.                     {WPPoint, 1, LimitWaypoint, 1,{ __EVAL(0.0 + 0.011),  __EVAL(0.13 + 0.000)}, 1},
  681.                     {WPPoint, 1, LimitWaypoint, 1,{ __EVAL(0.0 + 0.011),  __EVAL(0.13 + 0.022)}, 1}
  682.                 };
  683.             };
  684.             class HeadingScale
  685.             {
  686.                 type            = scale;
  687.                 horizontal      = true;
  688.                 source          = heading;
  689.                 sourceScale     = 0.1;
  690.                 sourceLength    = 2;
  691.                 width           = 4.0;
  692.  
  693.                 top             = 0.3;
  694.                 center          = 0.5;
  695.                 bottom          = 0.7;
  696.  
  697.                 lineXleft       = 0.22;
  698.                 lineYright      = 0.20;
  699.                 lineXleftMajor  = 0.23;
  700.                 lineYrightMajor = 0.20;
  701.                 majorLineEach   = 2;
  702.                 numberEach      = 0;
  703.                 step            = __EVAL(5*0.1);
  704.                 stepSize        = __EVAL(1/18);
  705.  
  706.                 align           = center;
  707.                 scale           = 1.0;
  708.                 pos[]           = {__EVAL(0.05+0.245), __EVAL(0.20-0.035)};
  709.                 right[]         = {__EVAL(0.09+0.245), __EVAL(0.20-0.035)};
  710.                 down[]          = {__EVAL(0.05+0.245), __EVAL(0.24-0.035)};
  711.             };
  712.             class HeadingScale_Left
  713.             {
  714.                 clipTL[]={0,0};
  715.                 clipBR[]={0.45,1};
  716.                 class HeadingScale: HeadingScale
  717.                 {
  718.                     lineXleft       = 0.0;
  719.                     lineYright      = 0.0;
  720.                     lineXleftMajor  = 0.0;
  721.                     lineYrightMajor = 0.0;
  722.                     numberEach      = 2;
  723.                 };
  724.             };
  725.             class HeadingScale_Right
  726.             {
  727.                 clipTL[]={0.55,0};
  728.                 clipBR[]={1,1};
  729.                 class HeadingScale: HeadingScale
  730.                 {
  731.                     lineXleft       = 0.0;
  732.                     lineYright      = 0.0;
  733.                     lineXleftMajor  = 0.0;
  734.                     lineYrightMajor = 0.0;
  735.                     numberEach      = 2;
  736.                 };
  737.             };
  738.             class ThrustNumber
  739.             {
  740.                 type            = text;
  741.                 source          = throttle;
  742.                 sourceScale     = 100;
  743.                 sourceLength    = 3;
  744.                 sourceOffset    = 0;
  745.                 sourcePrecision = 0;
  746.                 refreshRate     = 0.01;
  747.                 align           = left;
  748.                 scale           = 1;
  749.                 TEXT_SIZEPOS(0.15,0.89,0.05,0.05)
  750.             };
  751.             class NavigationMode
  752.             {
  753.                 condition = "1-(AAmissile+mgun+bomb)";
  754.                 class ModeText
  755.                 {
  756.                     type    = text;
  757.                     source  = static;
  758.                     align   = left;
  759.                     text    = "NAV";
  760.                     scale   = 1;
  761.                     TEXT_SIZEPOS(0.15,0.85,0.05,0.05)
  762.                 };
  763.                 class WP
  764.                 {
  765.                     condition       = wpvalid;
  766.                     class WPdist
  767.                     {
  768.                         type            = text;
  769.                         source          = wpdist;
  770.                         sourceScale     = 0.001;
  771.                         sourcePrecision = 1;
  772.  
  773.                         align           = right;
  774.                         scale           = 1;
  775.                         TEXT_SIZEPOS(0.795,0.820,0.06,0.06)
  776.                     };
  777.                     class WPIndex
  778.                     {
  779.                         type            = text;
  780.                         source          = wpIndex;
  781.                         sourceScale     = 1;
  782.                         sourceLength    = 2;
  783.  
  784.                         align           = right;
  785.                         scale           = 1;
  786.                         TEXT_SIZEPOS(0.725,0.820,0.06,0.06)
  787.                     };
  788.                     HUD_TEXT_STATIC(0.765,0.820,0.06,0.06,right,"/",WPstatic)
  789.                     HUD_TEXT_STATIC(0.725,0.865,0.06,0.06,right,":14:36/-00:0",WPTime)
  790.                     class WPCurrentTime: WPdist
  791.                     {
  792.                         source          = time;
  793.                         text            = "%X";
  794.                         align           = right;
  795.                         TEXT_SIZEPOS(0.725,0.910,0.06,0.06)
  796.                     };
  797.                     class WP
  798.                     {
  799.                         width           = 1;
  800.                         type            = line;
  801.                         points[]        =
  802.                         {
  803.                             CIRCLE(wppoint,0.01),{},
  804.                             {wppoint, 1, {HorizonBankRotFull, 0, -0.01}, 1},
  805.                             {wppoint, 1, {HorizonBankRotFull, 0, -0.023}, 1},
  806.                         };
  807.                     };
  808.                 };
  809.             };
  810.             // Group to condition AAMissileCrosshair by AA missile being the selected weapon
  811.             class AAMissileCrosshairGroup
  812.             {
  813.                 type            = group;
  814.                 condition       = AAmissile;
  815.  
  816.                 class ModeText
  817.                 {
  818.                     type    = text;
  819.                     source  = static;
  820.                     align   = left;
  821.                     text    = "MSL";
  822.                     scale   = 1;
  823.                     TEXT_SIZEPOS(0.15,0.85,0.05,0.05)
  824.                 };
  825.                 // AA missile crosshair
  826.                 class AAMissileCrosshair
  827.                 {
  828.                     type            = line;
  829.                     width           = 4.0;
  830.                     points[]        =
  831.                     {
  832.                         CIRCLE_BIG_SPACE(PlaneW,0.28)
  833.                     };
  834.                 };
  835.                 class AmmoCount
  836.                 {
  837.                     type            = text;
  838.                     source          = ammoFormat;
  839.                     sourceScale     = 1;
  840.  
  841.                     align           = right;
  842.                     scale           = 1;
  843.                     TEXT_SIZEPOS(0.74,0.9,0.06,0.06)
  844.                 };
  845.                 #define LARSize 0.16
  846.                 #define LARXPos 0.85
  847.                 #define LARYPos 0.18
  848.                 // launch acceptability region
  849.                 class Lines
  850.                 {
  851.                     type    = line;
  852.                     width   = 4.0;
  853.                     points[]  =
  854.                     {
  855.                         {{__EVAL(LARXPos+0.02),__EVAL(LARYPos)},1},
  856.                         {{__EVAL(LARXPos+0.00),__EVAL(LARYPos)},1},
  857.                         {{__EVAL(LARXPos+0.00),__EVAL(LARYPos+LARSize)},1},
  858.                         {{__EVAL(LARXPos+0.02),__EVAL(LARYPos+LARSize)},1},{},
  859.                         {{__EVAL(LARXPos+0.02),__EVAL(LARYPos+LARSize*0.75)},1},{{__EVAL(LARXPos),__EVAL(LARYPos+LARSize*0.75)},1},{},
  860.                         {{__EVAL(LARXPos+0.02),__EVAL(LARYPos+LARSize*0.50)},1},{{__EVAL(LARXPos),__EVAL(LARYPos+LARSize*0.50)},1},{},
  861.                         {{__EVAL(LARXPos+0.02),__EVAL(LARYPos+LARSize*0.25)},1},{{__EVAL(LARXPos),__EVAL(LARYPos+LARSize*0.25)},1},{},
  862.                         {LarTargetDist,__EVAL(-LARSize),{__EVAL(LARXPos-0.02),__EVAL(LARYPos+LARSize+0.02)},1},{LarTargetDist,__EVAL(-LARSize),{__EVAL(LARXPos),__EVAL(LARYPos+LARSize)},1},{LarTargetDist,__EVAL(-LARSize),{__EVAL(LARXPos-0.02),__EVAL(LARYPos+LARSize-0.02)},1},{}
  863.                     };
  864.                 };
  865.                 class Poly
  866.                 {
  867.                     type   = polygon;
  868.                     points[]  =
  869.                     {
  870.                         {
  871.                             {LarAmmoMin,__EVAL(-LARSize),{__EVAL(LARXPos+0.001),__EVAL(LARYPos+LARSize)},1},
  872.                             {LarAmmoMax,__EVAL(-LARSize),{__EVAL(LARXPos+0.001),__EVAL(LARYPos+LARSize)},1},
  873.                             {LarAmmoMax,__EVAL(-LARSize),{__EVAL(LARXPos+0.018),__EVAL(LARYPos+LARSize)},1},
  874.                             {LarAmmoMin,__EVAL(-LARSize),{__EVAL(LARXPos+0.018),__EVAL(LARYPos+LARSize)},1}
  875.                         }
  876.                     };
  877.                 };
  878.                 class TopText
  879.                 {
  880.                     type        = text;
  881.                     source      = LarTop;
  882.                     sourceScale = 0.001;
  883.  
  884.                     scale       = 1;
  885.                     pos[]       = {{__EVAL(LARXPos+0.03), __EVAL(LARYPos-0.02)}, 1};
  886.                     right[]     = {{__EVAL(LARXPos+0.07), __EVAL(LARYPos-0.02)}, 1};
  887.                     down[]      = {{__EVAL(LARXPos+0.03), __EVAL(LARYPos+0.02)}, 1};
  888.                     align       = right;
  889.                 };
  890.                 class MiddleText: TopText
  891.                 {
  892.                     source          = LarTop;
  893.                     sourcePrecision = -1;
  894.                     sourceScale     = 0.0005;
  895.                     pos[]           = {{__EVAL(LARXPos+0.03), __EVAL(LARYPos-0.02+LARSize*0.5)}, 1};
  896.                     right[]         = {{__EVAL(LARXPos+0.07), __EVAL(LARYPos-0.02+LARSize*0.5)}, 1};
  897.                     down[]          = {{__EVAL(LARXPos+0.03), __EVAL(LARYPos+0.02+LARSize*0.5)}, 1};
  898.                 }
  899.                 class SpeedText: TopText
  900.                 {
  901.                     source      = LarTargetSpeed;
  902.                     align       = left;
  903.                     sourceScale = 3.6;
  904.                     pos[]       = {LarTargetDist,__EVAL(-LARSize),{__EVAL(LARXPos-0.03), __EVAL(LARYPos+LARSize-0.02)},1};
  905.                     right[]     = {LarTargetDist,__EVAL(-LARSize),{__EVAL(LARXPos+0.01), __EVAL(LARYPos+LARSize-0.02)},1};
  906.                     down[]      = {LarTargetDist,__EVAL(-LARSize),{__EVAL(LARXPos-0.03), __EVAL(LARYPos+LARSize+0.02)},1};
  907.                 };
  908.             };
  909.             // Group to condition BombCrosshair by bomb being the selected weapon
  910.             class BombCrosshairGroup
  911.             {
  912.                 type            = group;
  913.                 condition       = bomb;
  914.  
  915.                 class BombCrosshair
  916.                 {
  917.                     width           = 4.0;
  918.                     type            = line;
  919.                     points[]        =
  920.                     {
  921.                         // main cross
  922.                         //{ImpactPoint,{ 0.0, __EVAL(-0.09/XtoYscale)}, 1},
  923.                         //{ImpactPoint,{ 0.0, __EVAL(-0.08/XtoYscale)}, 1},
  924.                         //{},
  925.                         {ImpactPoint,{ 0.0,  __EVAL(0.09/XtoYscale)}, 1},
  926.                         {ImpactPoint,{ 0.0,  __EVAL(0.08/XtoYscale)}, 1},
  927.                         {},
  928.                         {ImpactPoint,{-0.09,  0.0}, 1},
  929.                         {ImpactPoint,{-0.08,  0.0}, 1},
  930.                         {},
  931.                         {ImpactPoint,{ 0.09,  0.0}, 1},
  932.                         {ImpactPoint,{ 0.08,  0.0}, 1},
  933.                         {},
  934.                         //middle dot
  935.                         {ImpactPoint,{ 0.0, __EVAL(-0.002/XtoYscale)}, 1},
  936.                         {ImpactPoint,{ 0.0,  __EVAL(0.002/XtoYscale)}, 1},
  937.                         {},
  938.                         {ImpactPoint,{-0.002, 0.0}, 1},
  939.                         {ImpactPoint,{ 0.002, 0.0}, 1},
  940.                         {},
  941.                         CIRCLE_BIG(ImpactPoint, 0.08),{},
  942.                         //CIRCLE_LIMIT(Limit0109, ImpactPoint, 0.02),
  943.                         {},
  944.                         {ImpactPoint, -1, Velocity, 1, NormalizeBombCircle, 1, ImpactPoint, 1, {0.0, 0.0}, 1},
  945.                         {Velocity, 1, Limit0109, 1, {0.0, 0.0}, 1}
  946.                     };
  947.                 };
  948.                 class Circle
  949.                 {
  950.                     type            = line;
  951.                     width           = 6.0;
  952.                     points[]        =
  953.                     {
  954.                         CIRCLE_LOCK_TIME(ImpactPoint, MissileFlightTimeRot, 0.08)
  955.                     };
  956.                 };
  957.                 class Distance
  958.                 {
  959.                     type            = text;
  960.                     source          = ImpactDistance;
  961.                     sourceScale     = 0.001;
  962.                     sourcePrecision = 1;
  963.                     max             = 15;
  964.  
  965.                     align           = center;
  966.                     scale           = 1;
  967.                     pos[]           = {ImpactPoint, {-0.002,  0.11}, 1};
  968.                     right[]         = {ImpactPoint, { 0.045,  0.11}, 1};
  969.                     down[]          = {ImpactPoint, {-0.002,  0.15}, 1};
  970.                 };
  971.             };
  972.             class MGun
  973.             {
  974.                 condition       = "(mgun+rocket)";
  975.                 class ModeText
  976.                 {
  977.                     type    = text;
  978.                     source  = static;
  979.                     align   = left;
  980.                     text    = "GUN";
  981.                     scale   = 1;
  982.                     TEXT_SIZEPOS(0.15,0.85,0.05,0.05)
  983.                 };
  984.                 class AmmoCounter
  985.                 {
  986.                     type            = text;
  987.                     source          = ammo;
  988.                     sourceScale     = 1;
  989.  
  990.                     align           = right;
  991.                     scale           = 1;
  992.                     TEXT_SIZEPOS(0.78,0.9,0.06,0.06)
  993.                 };
  994.             };
  995.             class MGunCross
  996.             {
  997.                 condition       = "-1+(mgun+rocket)*impactDistance";
  998.                 class Cross
  999.                 {
  1000.                     type            = line;
  1001.                     width           = 3.0;
  1002.                     points[]        =
  1003.                     {
  1004.                         // main cross
  1005.                         {ImpactPointRelative,{ 0.0, -0.07}, 1},
  1006.                         {ImpactPointRelative,{ 0.0, -0.03}, 1},
  1007.                         {},
  1008.                         {ImpactPointRelative,{ 0.0,  0.045}, 1},
  1009.                         {ImpactPointRelative,{ 0.0,  0.03}, 1},
  1010.                         {},
  1011.                         {ImpactPointRelative,{-0.045,  0.0}, 1},
  1012.                         {ImpactPointRelative,{-0.03,  0.0}, 1},
  1013.                         {},
  1014.                         {ImpactPointRelative,{ 0.045,  0.0}, 1},
  1015.                         {ImpactPointRelative,{ 0.03,  0.0}, 1},
  1016.                         {},
  1017.                         //middle dot
  1018.                         {ImpactPointRelative,{ 0.0, -0.002}, 1},
  1019.                         {ImpactPointRelative,{ 0.0,  0.002}, 1},
  1020.                         {},
  1021.                         {ImpactPointRelative,{-0.002, 0.0}, 1},
  1022.                         {ImpactPointRelative,{ 0.002, 0.0}, 1},
  1023.                         {}
  1024.                     };
  1025.                 };
  1026.                 class Circle
  1027.                 {
  1028.                     type            = line;
  1029.                     width           = 6.0;
  1030.                     points[]        =
  1031.                     {
  1032.                         CIRCLE_LOCK_TIME(ImpactPointRelative, MissileFlightTimeRot, 0.05)
  1033.                     };
  1034.                 };
  1035.                 class Circle_LAR
  1036.                 {
  1037.                     type            = line;
  1038.                     width           = 5.0;
  1039.                     points[]        =
  1040.                     {
  1041.                         CIRCLE_MARK_2B(ImpactPointRelative,LarAmmoMGunMin,0.06,0.05,0),{},
  1042.                         CIRCLE_MARK_2B(ImpactPointRelative,LarAmmoMGunMax,0.06,0.05,0),{}
  1043.                     };
  1044.                 };
  1045.                 class Distance
  1046.                 {
  1047.                     type            = text;
  1048.                     source          = ImpactDistance;
  1049.                     sourceScale     = 0.001;
  1050.                     sourcePrecision = 1;
  1051.                     max             = 15;
  1052.  
  1053.                     align           = center;
  1054.                     scale           = 1;
  1055.                     pos[]           = {ImpactPointRelative, {-0.002, -0.10}, 1};
  1056.                     right[]         = {ImpactPointRelative, { 0.045, -0.10}, 1};
  1057.                     down[]          = {ImpactPointRelative, {-0.002, -0.06}, 1};
  1058.                 };
  1059.             };
  1060.             class TargetInfo
  1061.             {
  1062.                 condition = "targetDist";
  1063.                 class TargetDist
  1064.                 {
  1065.                     type        = text;
  1066.                     source      = targetDist;
  1067.                     sourceScale = 1;
  1068.                     align       = right;
  1069.                     scale       = 1;
  1070.                     TEXT_SIZEPOS(0.83,0.86,0.06,0.06)
  1071.                 };
  1072.                 class TargetHeight
  1073.                 {
  1074.                     type        = text;
  1075.                     source      = targetHeight;
  1076.                     sourceScale = 1;
  1077.                     align       = right;
  1078.                     scale       = 1;
  1079.                     TEXT_SIZEPOS(0.83,0.82,0.06,0.06)
  1080.                 };
  1081.             };
  1082.             class StallGroup
  1083.             {
  1084.                 condition       = stall;
  1085.                 blinkingPattern[]   = {0.2, 0.2};
  1086.                 blinkingStartsOn    = true;
  1087.  
  1088.                 class StallText
  1089.                 {
  1090.                     type            = text;
  1091.                     source          = static;
  1092.                     text            = "STALL";
  1093.  
  1094.                     align           = center;
  1095.                     scale           = 1;
  1096.                     TEXT_SIZEPOS(0.5,0.32,0.07,0.07)
  1097.                 };
  1098.             };
  1099.             class WeaponsLocking
  1100.             {
  1101.                 condition       = "missilelocking";
  1102.                 blinkingPattern[]   = {0.2, 0.2};
  1103.                 blinkingStartsOn    = true;
  1104.                 class Text
  1105.                 {
  1106.                     type            = text;
  1107.                     source          = static;
  1108.                     text            = "LOCKING";
  1109.                     align           = center;
  1110.                     scale           = 1;
  1111.                     TEXT_SIZEPOS(0.5,0.87,0.07,0.07)
  1112.                 };
  1113.             };
  1114.             class WeaponsLocked
  1115.             {
  1116.                 condition       = "missilelocked";
  1117.                 class Text
  1118.                 {
  1119.                     type            = text;
  1120.                     source          = static;
  1121.                     text            = "SHOOT";
  1122.                     align           = center;
  1123.                     scale           = 1;
  1124.                     TEXT_SIZEPOS(0.5,0.87,0.07,0.07)
  1125.                 };
  1126.             };
  1127.             class IncomingMissile
  1128.             {
  1129.                 condition       = "incomingmissile";
  1130.                 blinkingPattern[]   = {0.3, 0.3};
  1131.                 blinkingStartsOn    = true;
  1132.                 class Text
  1133.                 {
  1134.                     type            = text;
  1135.                     source          = static;
  1136.                     text            = "INCOMING MISSILE";
  1137.                     align           = center;
  1138.                     scale           = 1;
  1139.                     TEXT_SIZEPOS(0.5,0.32,0.07,0.07)
  1140.                 };
  1141.             };
  1142.             class RadarGroup
  1143.             {
  1144.                 condition = activeSensorsOn;
  1145.                 class Text
  1146.                 {
  1147.                     type            = text;
  1148.                     source          = static;
  1149.                     text            = "RADAR";
  1150.  
  1151.                     align           = left;
  1152.                     scale           = 1;
  1153.                     TEXT_SIZEPOS(0.94,0.62,0.06,0.06)
  1154.                 };
  1155.             };
  1156.             class FlapsGroup
  1157.             {
  1158.                 condition = flaps;
  1159.                 class GearText
  1160.                 {
  1161.                     type            = text;
  1162.                     source          = static;
  1163.                     text            = "FLAPS";
  1164.  
  1165.                     align           = left;
  1166.                     scale           = 1;
  1167.                     TEXT_SIZEPOS(0.94,0.7,0.06,0.06)
  1168.                 };
  1169.             };
  1170.             #define SCALE 0.3
  1171.             class ILS
  1172.             {
  1173.                 condition       = ils;
  1174.  
  1175.                 // "GEAR" on gear indicator
  1176.                 class GearText
  1177.                 {
  1178.                     type            = text;
  1179.                     source          = static;
  1180.                     text            = "GEAR";
  1181.  
  1182.                     align           = left;
  1183.                     scale           = 1;
  1184.                     TEXT_SIZEPOS(0.94,0.66,0.06,0.06)
  1185.                 };
  1186.                 // Glideslope
  1187.                 class Glideslope
  1188.                 {
  1189.                     clipTL[]        = {0.0,0.0};
  1190.                     clipBR[]        = {1.0,1.0};
  1191.  
  1192.                     class ILS
  1193.                     {
  1194.                         type            = line;
  1195.                         width           = 2.0;
  1196.                         points[]        =
  1197.                         {
  1198.                             POINT(ILS_W, -0.4 * SCALE, 0 * SCALE),
  1199.                             POINT(ILS_W, +0.4 * SCALE, 0 * SCALE),
  1200.                             {},
  1201.  
  1202.                             POINT(ILS_W, -0.4 * SCALE, -0.04 * SCALE),
  1203.                             POINT(ILS_W, -0.4 * SCALE, +0.04 * SCALE),
  1204.                             {},
  1205.                             POINT(ILS_W, -0.2 * SCALE, -0.03 * SCALE),
  1206.                             POINT(ILS_W, -0.2 * SCALE, +0.03 * SCALE),
  1207.                             {},
  1208.                             POINT(ILS_W, 0 * SCALE, -0.04 * SCALE),
  1209.                             POINT(ILS_W, 0 * SCALE, +0.04 * SCALE),
  1210.                             {},
  1211.                             POINT(ILS_W, 0.2 * SCALE, -0.03 * SCALE),
  1212.                             POINT(ILS_W, 0.2 * SCALE, +0.03 * SCALE),
  1213.                             {},
  1214.                             POINT(ILS_W, 0.4 * SCALE, -0.04 * SCALE),
  1215.                             POINT(ILS_W, 0.4 * SCALE, +0.04 * SCALE),
  1216.                             {},
  1217.  
  1218.                             POINT(ILS_H, 0 * SCALE, -0.4 * SCALE),
  1219.                             POINT(ILS_H, 0 * SCALE, +0.4 * SCALE),
  1220.                             {},
  1221.  
  1222.                             POINT(ILS_H, -0.04 * SCALE, -0.4 * SCALE),
  1223.                             POINT(ILS_H, +0.04 * SCALE, -0.4 * SCALE),
  1224.                             {},
  1225.                             POINT(ILS_H, -0.03 * SCALE, -0.2 * SCALE),
  1226.                             POINT(ILS_H, +0.03 * SCALE, -0.2 * SCALE),
  1227.                             {},
  1228.                             POINT(ILS_H, -0.04 * SCALE, 0 * SCALE),
  1229.                             POINT(ILS_H, +0.04 * SCALE, 0 * SCALE),
  1230.                             {},
  1231.                             POINT(ILS_H, -0.03 * SCALE, 0.2 * SCALE),
  1232.                             POINT(ILS_H, +0.03 * SCALE, 0.2 * SCALE),
  1233.                             {},
  1234.                             POINT(ILS_H, -0.04 * SCALE, 0.4 * SCALE),
  1235.                             POINT(ILS_H, +0.04 * SCALE, 0.4 * SCALE)
  1236.                         };
  1237.                     };
  1238.                     // Airport outlines
  1239.                     class airport
  1240.                     {
  1241.                         type            = line;
  1242.                         points[]        =
  1243.                         {
  1244.                             {airport1,1},{airport2,1},{airport4,1},{airport3,1},{airport1,1}
  1245.                         };
  1246.                     };
  1247.                 };
  1248.             };
  1249.             //RADRAR TARGET BOXES
  1250.             class RadarBoxes
  1251.             {
  1252.                 type    = radar;
  1253.                 pos0[]  = {__EVAL(PosX0Center),__EVAL(PosY0Center)};
  1254.                 pos10[] = {__EVAL(PosX0Center+SizeX10deg),__EVAL(PosY0Center+SizeY10deg)};
  1255.                 width = 4;
  1256.                 #define POLYGON_BOX(sizeX,sizeY,posX,posY)\
  1257.                 {{__EVAL(posX           ), __EVAL(posY)}, 1},\
  1258.                 {{__EVAL(posX + sizeX   ), __EVAL(posY)}, 1},\
  1259.                 {{__EVAL(posX + sizeX   ), __EVAL(posY + sizeY)}, 1},\
  1260.                 {{__EVAL(posX           ), __EVAL(posY + sizeY)}, 1}
  1261.                 #define POLYGON_CIRCLE(STEP_INIT,STEP_SIZE)                     \
  1262.                 {                                                               \
  1263.                     {1,{0,0}, 1},                               \
  1264.                     {   {__EVAL((0.015) * sin(0+STEP_SIZE*(STEP_INIT+0))),  __EVAL(-(0.015) * cos(0+STEP_SIZE*(STEP_INIT+0)) / XtoYscale)}, 1}, \
  1265.                     {   {__EVAL((0.015) * sin(0+STEP_SIZE*(STEP_INIT+1))),  __EVAL(-(0.015) * cos(0+STEP_SIZE*(STEP_INIT+1)) / XtoYscale)}, 1}, \
  1266.                     {   {__EVAL((0.015) * sin(0+STEP_SIZE*(STEP_INIT+2))),  __EVAL(-(0.015) * cos(0+STEP_SIZE*(STEP_INIT+2)) / XtoYscale)}, 1}, \
  1267.                 }
  1268.                 class points
  1269.                 {
  1270.                     class Draw
  1271.                     {
  1272.                         type        = line;
  1273.                         width       = 4;
  1274.                         lineType    = 2;
  1275.                         points[]=
  1276.                         {
  1277.                             CIRCLE_BIG_NB(0.03),{},
  1278.                         };
  1279.                     };
  1280.                 };
  1281.                 class pointsUnknown: points
  1282.                 {
  1283.                     class Draw: Draw
  1284.                     {
  1285.                         type        = polygon;
  1286.                         points[]=
  1287.                         {
  1288.                             {
  1289.                                 POLYGON_BOX(0.02,0.02,0,-0.01)
  1290.                             }
  1291.                         };
  1292.                     };
  1293.                 };
  1294.                 class pointsUnknownEnemy: pointsUnknown {class Draw: Draw {};};
  1295.                 class pointsUnknownFriend: pointsUnknown {class Draw: Draw {};};
  1296.                 class pointsUnknownCiv: pointsUnknown {class Draw: Draw {};};
  1297.                 class pointsCar: points
  1298.                 {
  1299.                     class Draw: Draw
  1300.                     {
  1301.                         type        = polygon;
  1302.                         points[]=
  1303.                         {
  1304.                             POLYGON_CIRCLE(1,10),
  1305.                             POLYGON_CIRCLE(3,10),
  1306.                             POLYGON_CIRCLE(5,10),
  1307.                             POLYGON_CIRCLE(7,10),
  1308.                             POLYGON_CIRCLE(9,10),
  1309.                             POLYGON_CIRCLE(11,10),
  1310.                             POLYGON_CIRCLE(13,10),
  1311.                             POLYGON_CIRCLE(15,10),
  1312.                             POLYGON_CIRCLE(17,10),
  1313.                             POLYGON_CIRCLE(19,10),
  1314.                             POLYGON_CIRCLE(21,10),
  1315.                             POLYGON_CIRCLE(23,10),
  1316.                             POLYGON_CIRCLE(25,10),
  1317.                             POLYGON_CIRCLE(27,10),
  1318.                             POLYGON_CIRCLE(29,10),
  1319.                             POLYGON_CIRCLE(31,10),
  1320.                             POLYGON_CIRCLE(33,10),
  1321.                             POLYGON_CIRCLE(35,10),
  1322.                         };
  1323.                     };
  1324.                 };
  1325.                 class pointsCarEnemy: pointsCar {class Draw: Draw {};};
  1326.                 class pointsCarFriend: pointsCar {class Draw: Draw {};};
  1327.                 class pointsCarCiv: pointsCar {class Draw: Draw {};};
  1328.                 class pointsCarNeutral: pointsCar {class Draw: Draw {};};
  1329.                 class pointsTank: points {class Draw: Draw {};};
  1330.                 class pointsTankEnemy: pointsTank {class Draw: Draw {};};
  1331.                 class pointsTankFriend: pointsTank {class Draw: Draw {};};
  1332.                 class pointsTankCiv: pointsTank {class Draw: Draw {};};
  1333.                 class pointsTankNeutral: pointsTank {class Draw: Draw {};};
  1334.                 class pointsAirplane
  1335.                 {
  1336.                     class Draw
  1337.                     {
  1338.                         type        = line;
  1339.                         width       = 4;
  1340.                         lineType    = 2;
  1341.                         points[]=
  1342.                         {
  1343.                             CIRCLE_BIG_NB(0.03),{},
  1344.                         };
  1345.                     };
  1346.                 };
  1347.                 class pointsAirplaneEnemy
  1348.                 {
  1349.                     class Draw
  1350.                     {
  1351.                         type        = line;
  1352.                         width       = 4;
  1353.                         points[]=
  1354.                         {
  1355.                             POINT2(+0.03,-0.00),
  1356.                             POINT2(-0.00,+0.03),
  1357.                             POINT2(-0.03,+0.00),
  1358.                             POINT2(+0.00,-0.03),
  1359.                             POINT2(+0.03,-0.00)
  1360.                         };
  1361.                     };
  1362.                 };
  1363.                 class pointsAirplaneFriend
  1364.                 {
  1365.                     class Draw
  1366.                     {
  1367.                         type        = line;
  1368.                         width       = 4;
  1369.                         points[]=
  1370.                         {
  1371.                             CIRCLE_BIG_NB(0.03),{},
  1372.                             POINT_MARK_NB(0.03, 45),
  1373.                             POINT_MARK_NB(0.03, 45+180),{},
  1374.                             POINT_MARK_NB(0.03, 90+45),
  1375.                             POINT_MARK_NB(0.03, 90+45+180),{}
  1376.                         };
  1377.                     };
  1378.                 };
  1379.                 class pointsHeli
  1380.                 {
  1381.                     class Draw
  1382.                     {
  1383.                         type        = line;
  1384.                         width       = 2;
  1385.                         points[]=
  1386.                         {
  1387.                             {{ 0.00, 0.00}, 1},
  1388.                             {{ 0.01, 0.015}, 1},
  1389.                             {{-0.01, 0.015}, 1},{},
  1390.                             {{ 0.00, 0.00}, 1},
  1391.                             {{ 0.01,-0.015}, 1},
  1392.                             {{-0.01,-0.015}, 1}
  1393.                         };
  1394.                     };
  1395.                 };
  1396.                 class pointsHeliEnemy
  1397.                 {
  1398.                     class Draw
  1399.                     {
  1400.                         type        = polygon;
  1401.                         points[]=
  1402.                         {
  1403.                             {
  1404.                                 {{ 0.00, 0.00}, 1},
  1405.                                 {{ 0.01, 0.015}, 1},
  1406.                                 {{-0.01, 0.015}, 1}
  1407.                             },
  1408.                             {
  1409.                                 {{ 0.00, 0.00}, 1},
  1410.                                 {{ 0.01,-0.015}, 1},
  1411.                                 {{-0.01,-0.015}, 1}
  1412.                             }
  1413.                         };
  1414.                     };
  1415.                 };
  1416.                 class pointsHeliFriend
  1417.                 {
  1418.                     class Draw
  1419.                     {
  1420.                         type        = polygon;
  1421.                         points[]=
  1422.                         {
  1423.                             {
  1424.                                 {{ 0.00, 0.00}, 1},
  1425.                                 {{ 0.01, 0.015}, 1},
  1426.                                 {{-0.01, 0.015}, 1}
  1427.                             },
  1428.                             {
  1429.                                 {{ 0.00, 0.00}, 1},
  1430.                                 {{ 0.01,-0.015}, 1},
  1431.                                 {{-0.01,-0.015}, 1}
  1432.                             }
  1433.                         };
  1434.                     };
  1435.                     class DrawLine
  1436.                     {
  1437.                         type        = line;
  1438.                         width       = 4;
  1439.                         points[]=
  1440.                         {
  1441.                             //POINT_MARK_NB(0.03, 45),
  1442.                             //POINT_MARK_NB(0.03, 45+180),{},
  1443.                             //POINT_MARK_NB(0.03, 90+45),
  1444.                             //POINT_MARK_NB(0.03, 90+45+180),{}
  1445.                         };
  1446.                     };
  1447.                     HUD_TEXT_STATIC(0.0,0.01,0.04,0.04,center,"ALLY",IFF_Text)
  1448.                 };
  1449.                 class pointsLaser
  1450.                 {
  1451.                     class Draw
  1452.                     {
  1453.                         type        = line;
  1454.                         width       = 4;
  1455.                         points[]=
  1456.                         {
  1457.                             POINT_MARK_NB(0.02, 0),
  1458.                             POINT_MARK_NB(0.02, 180),{},
  1459.                             POINT_MARK_NB(0.02, 90),
  1460.                             POINT_MARK_NB(0.02, 270),{},
  1461.                             POINT_MARK_NB(0.015, 45),
  1462.                             POINT_MARK_NB(0.015, 45+180),{},
  1463.                             POINT_MARK_NB(0.015, 90+45),
  1464.                             POINT_MARK_NB(0.015, 90+45+180),{}
  1465.                         };
  1466.                     };
  1467.                 };
  1468.                 class pointsNVG: pointsLaser {};
  1469.                 class pointsStatic
  1470.                 {
  1471.                     class Draw
  1472.                     {
  1473.                         type        = polygon;
  1474.                         width       = 4;
  1475.                         points[]=
  1476.                         {
  1477.                             {
  1478.                                 {{ 0.00, 0.00}, 1},
  1479.                                 {{ 0.01, 0.015}, 1},
  1480.                                 {{-0.01, 0.015}, 1}
  1481.                             }
  1482.                         };
  1483.                     };
  1484.                 };
  1485.                 class pointsStaticEnemy: pointsStatic {};
  1486.                 class pointsStaticFriend: pointsStatic {};
  1487.                 class pointsStaticCiv: pointsStatic {};
  1488.                 class pointsStaticNeutral: pointsStatic {};
  1489.             };
  1490.             class TargetDiamond
  1491.             {
  1492.                 class shape
  1493.                 {
  1494.                     type=line;
  1495.                     width = 4;
  1496.                     points[]=
  1497.                     {
  1498.                         POINT_2B(Target,Limit0109,-0.002,-0.002),
  1499.                         POINT_2B(Target,Limit0109,+0.002,-0.002),
  1500.                         POINT_2B(Target,Limit0109,+0.002,+0.002),
  1501.                         POINT_2B(Target,Limit0109,-0.002,+0.002),
  1502.                         POINT_2B(Target,Limit0109,-0.002,-0.002),{},
  1503.                         {Target, 1, Limit0109, 1, {XY_Scaled(0.02, 0.02)}, 1},
  1504.                         {Target, 1, Limit0109, 1, {XY_Scaled(-0.02, 0.02)}, 1},
  1505.                         {Target, 1, Limit0109, 1, {XY_Scaled(-0.02, -0.02)}, 1},
  1506.                         {Target, 1, Limit0109, 1, {XY_Scaled(0.02, -0.02)}, 1},
  1507.                         {Target, 1, Limit0109, 1, {XY_Scaled(0.02, 0.02)}, 1}
  1508.                     };
  1509.                 };
  1510.             };
  1511.         };
  1512.     };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement