-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDCS_F-14B_Tomcat_main.tmc
More file actions
492 lines (406 loc) · 21.8 KB
/
DCS_F-14B_Tomcat_main.tmc
File metadata and controls
492 lines (406 loc) · 21.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
// DCS F-14B Tomcat Thrustmaster Warthog/AVA/MFD Script by Astro
// TARGET version 3.0.25.127
// version 2.2, Jan 2026
// ------------------------- INCLUDE --------------------------------
include "target.tmh"
include "DCS_F-14B_Tomcat_PILOT.tmc" // all PILOT controls
include "DCS_F-14B_Tomcat_RIO.tmc" // all RIO controls
include "DCS_F-14B_Tomcat_JESTER.tmc" // all JESTER controls
include "DCS_F-14B_Tomcat_macros.ttm" // definitions
include "DCS_Fighter_Common.tmc" // all dcs fighter COMMON controls
// ------------------------- INITIALISE -----------------------------
int autopilot;
int extlight_posdim;
int steercmdlist, index_stcmd = 0; // (start with second element after increment, element 0 is first element in list)
int radarrangelist, index_range = 2; // (current is middle of five (assumption 100 nm), element 2, element 0 is first element in list)
int radarelevlist, index_elev = 2; // (current is middle of five, element 2, element 0 is first element in list)
int radarazlist, index_az = 2; // (current is middle of five, element 2, element 0 is first element in list)
int steerpointlist_aa, index_stpt_aa = -1; // (start with first element after increment, wp1, element 0 is first element in list)
int steerpointlist_ag, index_stpt_ag = -1; // (start with first element after increment, wp1, element 0 is first element in list)
int lantirn_q_stptlist;
int JSTR_rdr_mode_auto;
int JSTR_rdr_mode_TWS;
int JSTR_rdr_mode_RWS;
int JSTR_toggle_PD_P_STT;
int JSTR_rdr_off;
int JSTR_rdr_on;
int JSTR_rdr_range_auto;
int JSTR_rdr_range_25;
int JSTR_rdr_range_50;
int JSTR_rdr_ac_stab;
int JSTR_rdr_ground_stab;
int JSTR_rdr_az_elev_auto;
int JSTR_lock_enemy_ahead;
int JSTR_lock_friend_ahead;
int JSTR_lock_ahead;
int JSTR_break_lock;
int JSTR_lock_TWS_tgt_1;
int JSTR_lock_TWS_tgt_2;
int JSTR_lock_TWS_tgt_3;
int JSTR_lock_TWS_tgt_4;
int JSTR_rwr_norm;
int JSTR_rwr_ai;
int JSTR_rwr_aaa;
int JSTR_rwr_unknown;
int JSTR_nav_wp1;
int JSTR_nav_wp2;
int JSTR_nav_wp3;
int JSTR_nav_ip;
int JSTR_nav_surftgt;
int JSTR_nav_homebase;
int JSTR_nav_fixpt;
int JSTR_lntrn_q_des;
int JSTR_lntrn_q_eyeballs;
int JSTR_lntrn_q_headctrl;
int JSTR_lntrn_q_hud;
int JSTR_lntrn_designate;
int JSTR_lntrn_undesignate;
int JSTR_lntrn_stblarea;
int JSTR_lntrn_srch_anyactive;
int JSTR_lntrn_srch_aircraftall;
int JSTR_lntrn_srch_samactive;
int JSTR_lntrn_srch_armoractive;
int JSTR_lntrn_nexttgt;
int JSTR_lntrn_prevtgt;
int JSTR_agwpn_comptgt;
int JSTR_agwpn_comppilot;
int JSTR_startup;
int JSTR_loudclear;
int JSTR_ins_fine;
int JSTR_ins_wpn;
int JSTR_jett_droptanks;
int JSTR_jammer_onoff;
int JSTR_spot;
int JSTR_check;
int JSTR_menu;
//int JSTR_tcs_menu;
char LTRN_mode = 0;
int JSTR_toggle_RWS_TWS;
int JSTR_ground_ac_stbl;
int JSTR_rdr_range_50_25;
int JSTR_rdr_range_50_25_auto;
int JSTR_rdr_offon;
int JSTR_rwr_ai_norm;
int JSTR_rwr_unknown_norm;
int JSTR_WHDN_startup;
int JSTR_nav_wp123;
define AB 75 // detent position at AB% of full throttle reach (80% for F-14B, 75% for F-14A)
// ------------------------------ MAIN F-14B ------------------------------------------------------
int main()
{
// -------------------- COMMON CONFIGURATION --------------------
dcs_fighter_common_configuration(); // load dcs COMMON config
// -------------------- COMMON FUNCTIONS ------------------------
dcs_fighter_common_functions(); // load dcs COMMON functions
// -------------------- AIRCRAFT FUNCTIONS ----------------------
// ------------------------- LISTS ------------------------------
// List items are defined in DCS_F-14B_Tomcat_macros.ttm
// Steer CMD select
steercmdlist = SEQ( Steer_CMD_TACAN,
Steer_CMD_Destination,
Steer_CMD_AWLPCD,
Steer_CMD_VEC,
Steer_CMD_MAN );
// Radar range select
radarrangelist = SEQ( JSTR_rdr_range_25_list,
JSTR_rdr_range_50_list,
JSTR_rdr_range_100_list,
JSTR_rdr_range_200_list,
JSTR_rdr_range_400_list );
// Radar elevation select
radarelevlist = SEQ( JSTR_rdr_elev_low,
JSTR_rdr_elev_lowmid,
JSTR_rdr_elev_middle,
JSTR_rdr_elev_highmid,
JSTR_rdr_elev_high );
// Radar azimuth select
radarazlist = SEQ( JSTR_rdr_az_left,
JSTR_rdr_az_leftcntr,
JSTR_rdr_az_center,
JSTR_rdr_az_rightcntr,
JSTR_rdr_az_right );
// Navigation Steerpoint select
steerpointlist_aa = SEQ( JSTR_nav_wp1_list,
JSTR_nav_wp2_list,
JSTR_nav_wp3_list );
steerpointlist_ag = SEQ( JSTR_nav_wp1_list,
JSTR_nav_wp2_list,
JSTR_nav_ip_list,
JSTR_nav_surftgt_list,
JSTR_nav_wp3_list );
// LANTIRN Cue Steerpoint select
lantirn_q_stptlist = SEQ( JSTR_lntrn_q_wp1_list,
JSTR_lntrn_q_wp2_list,
JSTR_lntrn_q_ip_list,
JSTR_lntrn_q_surftgt_list,
JSTR_lntrn_q_wp3_list );
// ------------------------- FUNCTIONS --------------------------
// Autopilot function
autopilot = SEQ( CHAIN( EXEC( "autopilot_mode();" ), D(200), // Set autopilot mode
DOWN+L_ALT+L_SHIFT, D(10), PULSE+'p', D(), UP+L_ALT+L_SHIFT ), // Autopilot on
CHAIN( DOWN+L_ALT+L_CTL, D(10), PULSE+'p', D(), UP+L_ALT+L_CTL )); // Autopilot off
// Ground Crew Start-up
groundcrew = SEQ( CHAIN( PULSE+USB[0x31], D(100), PULSE+F8, D(100), PULSE+F4, D(100), PULSE+F1, D(10000), // Radio menu (\), Ground crew, Wheel Chocks, Place
PULSE+USB[0x31], D(100), PULSE+F8, D(100), PULSE+F2, D(100), PULSE+F1, D(13000), // Radio menu (\), Ground crew, Ground Electric Power, On
PULSE+USB[0x31], D(100), PULSE+F8, D(100), PULSE+F5, D(100), PULSE+F1, D(13000) ), // Radio menu (\), Ground crew, Ground Air Supply, Connect
CHAIN( PULSE+USB[0x31], D(100), PULSE+F8, D(100), PULSE+F5, D(100), PULSE+F2, D(13000), // Radio menu (\), Ground crew, Ground Air Supply, Disconnect
PULSE+USB[0x31], D(100), PULSE+F8, D(100), PULSE+F2, D(100), PULSE+F2, D(13000), // Radio menu (\), Ground crew, Ground Electric Power, Off
PULSE+USB[0x31], D(100), PULSE+F8, D(100), PULSE+F4, D(100), PULSE+F2 )); // Radio menu (\), Ground crew, Wheel Chocks, Remove
// Exterior Lighting - Full
extlight_full = CHAIN( DOWN+L_SHIFT+R_SHIFT, D(10), PULSE+'l', D(), UP+L_SHIFT+R_SHIFT, D(100), // Lights Anti Collision ON
DOWN+L_CTL+R_SHIFT, D(10), PULSE+'l', D(), UP+L_CTL+R_SHIFT, D(100), // Lights Position Wing BRT
DOWN+L_ALT+R_SHIFT, D(10), PULSE+'l', D(), UP+L_ALT+R_SHIFT, D(100), // Lights Position Tail BRT
PULSE+'l', D(100), // Exterior Lights Master Switch ON
REXEC( 0, 100, "ActKey( PULSE+KEYON+R_CTL+'l' );", RNOSTOP ), // Lights Formation Brightnes Down
D(800), // loop 8x
EXEC( "StopAutoRepeat(0);" )); // stop loop
// Exterior Lighting - Position Dim
extlight_posdim = CHAIN( DOWN+L_SHIFT+R_CTL, D(10), PULSE+'l', D(), UP+L_SHIFT+R_CTL, D(100), // Lights Anti Collision OFF
DOWN+L_CTL+L_ALT, D(10), PULSE+'l', D(), UP+L_CTL+L_ALT, D(100), // Lights Position Wing DIM
DOWN+L_ALT+L_SHIFT, D(10), PULSE+'l', D(), UP+L_ALT+L_SHIFT, D(100), // Lights Position Tail DIM
PULSE+'l', D(100), // Exterior Lights Master Switch ON
REXEC( 1, 100, "ActKey( PULSE+KEYON+R_CTL+'l' );", RNOSTOP ), // Lights Formation Brightnes Down
D(800), // loop 8x
EXEC( "StopAutoRepeat(1);" )); // stop loop
// Exterior Lighting - Formation
extlight_formation = CHAIN( DOWN+L_SHIFT+R_CTL, D(10), PULSE+'l', D(), UP+L_SHIFT+R_CTL, D(100), // Lights Anti Collision OFF
DOWN+L_CTL+R_CTL, D(10), PULSE+'l', D(), UP+L_CTL+R_CTL, D(100), // Lights Position Wing OFF
DOWN+L_ALT+R_CTL, D(10), PULSE+'l', D(), UP+L_ALT+R_CTL, D(100), // Lights Position Tail OFF
PULSE+'l', D(100), // Exterior Lights Master Switch ON
REXEC( 2, 100, "ActKey( PULSE+KEYON+R_SHIFT+'l' );", RNOSTOP ), // Lights Formation Brightnes Up
D(800), // loop 8x
EXEC( "StopAutoRepeat(2);" )); // stop loop
// Exterior Lighting - Covert
extlight_covert = CHAIN( DOWN+L_CTL, D(10), PULSE+'l', D(), UP+L_CTL ); // Exterior Lights Master Switch OFF
// Air-to-Air Refuelling
// Master Arm Off
// Speedbrake functions
speedbrakes_open = PULSE+'b'; // speedbrake extend
speedbrakes_close = CHAIN( D(100), DOWN+L_CTL, D(10), PULSE+'b', D(), UP+L_CTL ); // speedbrake fully retract
// JESTER calls
// Radar - Radar Mode
JSTR_rdr_mode_auto = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'5', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'1', D(), UP+L_CTL );
JSTR_rdr_mode_TWS = CHAIN( DOWN+L_CTL+R_SHIFT, D(10), PULSE+'6', D(), UP+L_CTL+R_SHIFT );
JSTR_rdr_mode_RWS = CHAIN( DOWN+L_CTL+R_SHIFT, D(10), PULSE+'7', D(), UP+L_CTL+R_SHIFT );
JSTR_toggle_PD_P_STT = CHAIN( DOWN+L_CTL+R_SHIFT, D(10), PULSE+'4', D(), UP+L_CTL+R_SHIFT );
// Radar - Silent/Active
JSTR_rdr_off = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'7', D(), UP+L_CTL );
JSTR_rdr_on = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL );
// Radar - Range
JSTR_rdr_range_auto = CHAIN( DOWN+L_CTL+L_ALT, D(10), PULSE+'0', D(), UP+L_CTL+L_ALT );
JSTR_rdr_range_25 = CHAIN( DOWN+L_CTL+L_ALT, D(10), PULSE+'1', D(), UP+L_CTL+L_ALT );
JSTR_rdr_range_50 = CHAIN( DOWN+L_CTL+L_ALT, D(10), PULSE+'2', D(), UP+L_CTL+L_ALT );
// Radar - Stabilise
JSTR_rdr_ac_stab = CHAIN( DOWN+L_CTL+R_SHIFT, D(10), PULSE+'8', D(), UP+L_CTL+R_SHIFT );
JSTR_rdr_ground_stab = CHAIN( DOWN+L_CTL+R_SHIFT, D(10), PULSE+'9', D(), UP+L_CTL+R_SHIFT );
// Radar – Auto Azimuth and Elevation Radar
JSTR_rdr_az_elev_auto = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'3', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'1', D(), UP+L_CTL );
// Radar – STT Lock
JSTR_lock_enemy_ahead = CHAIN( DOWN+L_CTL+R_SHIFT, D(10), PULSE+'1', D(), UP+L_CTL+R_SHIFT );
JSTR_lock_friend_ahead = CHAIN( DOWN+L_CTL+R_SHIFT, D(10), PULSE+'2', D(), UP+L_CTL+R_SHIFT );
JSTR_lock_ahead = CHAIN( DOWN+L_CTL+R_SHIFT, D(10), PULSE+'3', D(), UP+L_CTL+R_SHIFT );
JSTR_break_lock = CHAIN( DOWN+L_CTL+R_SHIFT, D(10), PULSE+'5', D(), UP+L_CTL+R_SHIFT );
JSTR_lock_TWS_tgt_1 = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'1', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'1', D(), UP+L_CTL );
JSTR_lock_TWS_tgt_2 = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'1', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL );
JSTR_lock_TWS_tgt_3 = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'1', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'3', D(), UP+L_CTL );
JSTR_lock_TWS_tgt_4 = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'1', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'4', D(), UP+L_CTL );
// RWR
JSTR_rwr_norm = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200), // Normal
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'1', D(), UP+L_CTL );
JSTR_rwr_ai = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200), // AI - Airborne Interceptor
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL );
JSTR_rwr_aaa = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200), // AAA
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'3', D(), UP+L_CTL );
JSTR_rwr_unknown = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200), // Unknown
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'4', D(), UP+L_CTL );
// Navigation
JSTR_nav_wp1 = CHAIN( DOWN+L_CTL+L_SHIFT, D(10), PULSE+'1', D(), UP+L_CTL+L_SHIFT );
JSTR_nav_wp2 = CHAIN( DOWN+L_CTL+L_SHIFT, D(10), PULSE+'2', D(), UP+L_CTL+L_SHIFT );
JSTR_nav_wp3 = CHAIN( DOWN+L_CTL+L_SHIFT, D(10), PULSE+'3', D(), UP+L_CTL+L_SHIFT );
JSTR_nav_ip = CHAIN( DOWN+L_CTL+L_SHIFT, D(10), PULSE+'4', D(), UP+L_CTL+L_SHIFT );
JSTR_nav_surftgt = CHAIN( DOWN+L_CTL+L_SHIFT, D(10), PULSE+'5', D(), UP+L_CTL+L_SHIFT );
JSTR_nav_homebase = CHAIN( DOWN+L_CTL+L_SHIFT, D(10), PULSE+'6', D(), UP+L_CTL+L_SHIFT );
JSTR_nav_fixpt = CHAIN( DOWN+L_CTL+L_SHIFT, D(10), PULSE+'7', D(), UP+L_CTL+L_SHIFT );
// LANTIRN
// JSTR_tcs_menu = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200),
// DOWN+L_CTL, D(10), PULSE+'4', D(), UP+L_CTL, D(200),
// DOWN+L_CTL, D(10), PULSE+'8', D(), UP+L_CTL, D(200) );
JSTR_lntrn_q_des = CHAIN( PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'4', D(), UP+L_CTL );
JSTR_lntrn_q_eyeballs = CHAIN( PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'1', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'1', D(), UP+L_CTL );
JSTR_lntrn_q_headctrl = CHAIN( PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'1', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL );
JSTR_lntrn_q_hud = CHAIN( PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'1', D(), UP+L_CTL );
JSTR_lntrn_designate = CHAIN( PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'7', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'3', D(), UP+L_CTL );
JSTR_lntrn_undesignate = CHAIN( PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'7', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'4', D(), UP+L_CTL );
JSTR_lntrn_stblarea = CHAIN( PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'3', D(), UP+L_CTL );
JSTR_lntrn_srch_anyactive = CHAIN( PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'4', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL );
JSTR_lntrn_srch_aircraftall = CHAIN( PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'4', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'3', D(), UP+L_CTL );
JSTR_lntrn_srch_samactive = CHAIN( PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'4', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'5', D(), UP+L_CTL );
JSTR_lntrn_srch_armoractive = CHAIN( PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'4', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL );
JSTR_lntrn_nexttgt = CHAIN( PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'5', D(), UP+L_CTL );
JSTR_lntrn_prevtgt = CHAIN( PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL );
// A-G Weapons (4 A-G Weapons / 2 Bomb Delivery Mode)
JSTR_agwpn_comptgt = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200), // 1 CMP/TGT
DOWN+L_CTL, D(10), PULSE+'4', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'1', D(), UP+L_CTL, D(200) );
JSTR_agwpn_comppilot = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200), // 2 CMP/PLT
DOWN+L_CTL, D(10), PULSE+'4', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'2', D(), UP+L_CTL, D(200) );
// Start-up
JSTR_startup = CHAIN( PULSE+'a', D(200), DOWN+L_CTL, D(10), PULSE+'3', D(), UP+L_CTL );
JSTR_loudclear = CHAIN( PULSE+'a', D(200), DOWN+L_CTL, D(10), PULSE+'4', D(), UP+L_CTL );
JSTR_ins_fine = CHAIN( PULSE+'a', D(200), DOWN+L_CTL, D(10), PULSE+'4', D(), UP+L_CTL );
JSTR_ins_wpn = CHAIN( PULSE+'a', D(200), DOWN+L_CTL, D(10), PULSE+'5', D(), UP+L_CTL );
// General
JSTR_jett_droptanks = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'3', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'1', D(), UP+L_CTL );
JSTR_jammer_onoff = CHAIN( PULSE+'a', D(200), PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'6', D(), UP+L_CTL, D(200),
DOWN+L_CTL, D(10), PULSE+'7', D(), UP+L_CTL );
JSTR_spot = CHAIN( PULSE+'a', D(200),
DOWN+L_CTL, D(10), PULSE+'1', D(), UP+L_CTL );
JSTR_check = CHAIN( DOWN+L_CTL+L_ALT, D(10), PULSE+'7', D(), UP+L_CTL+L_ALT );
JSTR_menu = PULSE+'a';
// ----- JSTR functions ----------- define sequences here, are remembered when switching controls
JSTR_rdr_offon = SEQ( JSTR_rdr_off, // Radar - Silent/Active
JSTR_rdr_on );
JSTR_rdr_range_50_25 = SEQ( JSTR_rdr_range_50, // Radar - Range 50/25
JSTR_rdr_range_25 );
JSTR_rdr_range_50_25_auto = SEQ( JSTR_rdr_range_50, // Radar - Range 50/25/auto
JSTR_rdr_range_25,
JSTR_rdr_range_auto );
JSTR_ground_ac_stbl = SEQ( JSTR_rdr_ground_stab, // Radar - Ground/Aircraft Stabilize
JSTR_rdr_ac_stab );
JSTR_toggle_RWS_TWS = SEQ( JSTR_rdr_mode_RWS, // Radar - RWS/TWS Mode
JSTR_rdr_mode_TWS );
JSTR_rwr_ai_norm = SEQ( JSTR_rwr_ai, // RWR - Airborne Interceptor / Normal
JSTR_rwr_norm );
JSTR_rwr_unknown_norm = SEQ( JSTR_rwr_unknown, // RWR - Unknown / Normal
JSTR_rwr_norm );
JSTR_WHDN_startup = SEQ( JSTR_startup, // Start-up/Loud&Clear/INS Fine
JSTR_loudclear,
JSTR_ins_fine );
JSTR_nav_wp123 = SEQ( JSTR_nav_wp1, // Nav - Set Steerpoint WP 1/2/3
JSTR_nav_wp2,
JSTR_nav_wp3 );
// -------------------- AIRCRAFT CONTROLS -----------------------
// ------------------ INITIAL MODE VALUES -----------------------
printf("LTRN_mode = %i\xa", LTRN_mode); // write to output window
// -------------------- PILOT CONTROLS --------------------------
dcs_f14_pilot_controls(); // PILOT controls (loaded first, assumimg player starts as pilot)
// -------------------- SEAT CONTROLS ---------------------------
// Engine Override Left
// EFLNORM
MapKeyIO(&Throttle, EFLNORM, 0, // I -
CHAIN( PULSE+'1', D(100), // O - Switch to PILOT cockpit
EXEC( "dcs_f14_pilot_controls_switch();" // switch to PILOT controls
"printf(\"PILOT controls\\xa\");" ))); // print state to output window
// EFLOVER
MapKeyIO(&Throttle, EFLOVER, 0, // I -
CHAIN( PULSE+'2', D(100), // O - Switch to RIO cockpit
EXEC( "dcs_f14_rio_controls();" // load RIO controls
"printf(\"RIO controls\\xa\");" ))); // print state to output window
MapKeyRIO(&Throttle, EFLOVER, 0, // I -
0 ); // O -
} // ===== end main() =========================================================================
// ------------------------- AUTOPILOT MODE -------------------------
int autopilot_mode()
{
if (Throttle[APPAT]) ActKey(KEYON+PULSE+L_ALT+R_SHIFT+'a'); // Autopilot - Heading Hold
else if (Throttle[APALT]) ActKey(KEYON+PULSE+L_ALT+R_CTL+'p'); // Autopilot - Vector ACL
else ActKey(KEYON+PULSE+L_ALT+L_SHIFT+'a'); // Autopilot - Altitude Hold
}
// ------------------------- TCS MENU -------------------------------
//int checktcsmenu()
//{
// if (!tcs_menu_on) {
// ActKey(KEYON+PULSE+JSTR_TCS_menu); // Turn on TCS menu (when not already on)
// tcs_menu_on = 1;
// LTRN_mode = 1; // LTRN_mode ON
// dcs_f14_jester_lantirn_controls(); // Load JESTER LANTIRN controls
// }
//}
// -------------------- AFTERBURNER DETENT --------------------------
int afterburnerdetent(int x)
{
if (x == 1) { // Activate detent
SetCustomCurve(&Throttle, THR_LEFT, LIST(0,0, 25,25, 50,50, AB,AB, 100,AB));
SetCustomCurve(&Throttle, THR_RIGHT, LIST(0,0, 25,25, 50,50, AB,AB, 100,AB));
}
else { // Throttle back to full reach
SetSCurve(&Throttle, THR_LEFT, 0, 0, 0, 0, 0);
SetSCurve(&Throttle, THR_RIGHT, 0, 0, 0, 0, 0);
}
}
// -------------------- EVENTHANDLE ---------------------------------
int EventHandle(int type, alias o, int x)
{
if ((&o == &Throttle) & (x == THR_LEFT)) { // Detect left throttle position for afterburner detent
if (afterburnerdetent_present & afterburnerdetent_lifted) { // If afterburnerdetent present and detent is lifted
if (Throttle[THR_LEFT] < (100-AB)*(2*AMAX)/100) { // If left throttle below afterburner detent value of AB%
afterburnerdetent(1); // Re-engage detent
afterburnerdetent_lifted = 0; // Detent is no longer lifted
}
}
}
DefaultMapping(&o, x);
}