@jtff/miztemplate-lib 3.0.0-rc10 → 3.0.0-rc11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/mizlib.js CHANGED
@@ -9,7 +9,37 @@ const lstat = promisify(fs.lstat);
9
9
 
10
10
  class Mizlib {
11
11
  constructor() {
12
- // no need for initialization
12
+ // no need for initialization
13
+ }
14
+
15
+ injectLuaScriptAndUpdateWorkspace(workspacePath, folderPath, luaScriptsArray, titleString, missionObject, mapResourceObject, timing, colorString) {
16
+ let tuple = this.injectLuaScriptsInMissionObject(
17
+ missionObject['trig'],
18
+ missionObject['trigrules'],
19
+ mapResourceObject,
20
+ titleString,
21
+ luaScriptsArray,
22
+ timing,
23
+ colorString
24
+ );
25
+ for (let luaScript of luaScriptsArray) {
26
+ fs.copyFileSync(
27
+ [
28
+ 'node_modules/@jtff/miztemplate-lib/lua/',
29
+ folderPath,
30
+ '/',
31
+ luaScript
32
+ ].join(""),
33
+ [
34
+ workspacePath,
35
+ "/",
36
+ folderPath,
37
+ "/",
38
+ path.basename(luaScript)
39
+ ].join("")
40
+ );
41
+ }
42
+ return tuple;
13
43
  }
14
44
 
15
45
  injectLuaScriptsInMissionObject(tObject, trObject, mrObject, strTitle, scriptFilesArray, timingInSeconds, hexColor) {
@@ -177,8 +207,7 @@ class Mizlib {
177
207
  for (let file of fs.readdirSync(folderPath).filter(file => file.endsWith(".lua"))) {
178
208
  console.log('injecting up2date ' + folderPath + '/' + file + ' file in archive');
179
209
  this.injectFileIntoZipObject(zip, folderPath + "/" + file);
180
- }
181
- ;
210
+ };
182
211
  }
183
212
 
184
213
 
@@ -258,12 +287,47 @@ class Mizlib {
258
287
  if (fs.existsSync('resources/sounds') && fs.lstatSync('resources/sounds').isDirectory()) {
259
288
  const folderArray = fs.readdirSync('resources/sounds');
260
289
  for (const folder of folderArray) {
261
- await this.mizUpdateSingleSoundFolder(zip, folder);
290
+ await this.injectSingleSoundFolderIntoZipObject(zip, folder);
262
291
  }
263
292
  }
264
293
  }
265
294
 
266
- async mizUpdateSingleSoundFolder(zip, folder) {
295
+ async updateWorkspaceWithSingleSoundFolder(workspacePath, folderString) {
296
+ if (
297
+ fs.existsSync(
298
+ [
299
+ workspacePath,
300
+ "/resources/sounds/",
301
+ folderString
302
+ ].join("")
303
+ ) &&
304
+ fs.lstatSync([
305
+ workspacePath,
306
+ "/resources/sounds/",
307
+ folderString
308
+ ].join("")).isDirectory()
309
+ ) {
310
+ fs.rmSync([
311
+ workspacePath,
312
+ "/resources/sounds/",
313
+ folderString
314
+ ].join(""), {recursive: true});
315
+ }
316
+ if (fs.existsSync('node_modules/@jtff/miztemplate-lib/resources/sounds/' + folderString) && fs.lstatSync('node_modules/@jtff/miztemplate-lib/resources/sounds/' + folderString).isDirectory()) {
317
+ fs.mkdirSync([
318
+ workspacePath,
319
+ "/resources/sounds/",
320
+ folderString
321
+ ].join(""), {recursive: true});
322
+ fs.cpSync('node_modules/@jtff/miztemplate-lib/resources/sounds/' + folderString,[
323
+ workspacePath,
324
+ "/resources/sounds/",
325
+ folderString
326
+ ].join(""), {recursive: true});
327
+ }
328
+ }
329
+
330
+ async injectSingleSoundFolderIntoZipObject(zip, folder) {
267
331
  if (fs.existsSync('resources/sounds/' + folder) && fs.lstatSync('resources/sounds/' + folder).isDirectory()) {
268
332
  console.log('adding sound files from resources/sounds/' + folder + ' folder...');
269
333
  zip = zip.remove(folder).folder(folder);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jtff/miztemplate-lib",
3
- "version": "3.0.0-rc10",
3
+ "version": "3.0.0-rc11",
4
4
  "description": "JTFF mission template library",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -3,7 +3,7 @@ const path = require("path");
3
3
  const prompt = require('prompt');
4
4
 
5
5
  function injectScripts(jtffci, env_mission) {
6
- // create mission folder in dist (general) folder
6
+ // create mission folder in jtffci.config.reneral.missionFolder folder
7
7
  fs.mkdirSync(jtffci.config.general.missionFolder, { recursive: true });
8
8
  if (fs.existsSync([
9
9
  jtffci.config.general.missionFolder,
@@ -13,7 +13,7 @@ function injectScripts(jtffci, env_mission) {
13
13
  // if there is a specific mission folder (dist/env_mission), clean it
14
14
  fs.rmSync([
15
15
  jtffci.config.general.missionFolder,
16
- "/",
16
+ '/',
17
17
  path.parse(env_mission).name
18
18
  ].join(""),
19
19
  { recursive: true }
@@ -37,7 +37,24 @@ function injectScripts(jtffci, env_mission) {
37
37
  ].join(""),
38
38
  { recursive: true }
39
39
  );
40
-
40
+ // create a lib folder
41
+ fs.mkdirSync([
42
+ jtffci.config.general.missionFolder,
43
+ "/",
44
+ path.parse(env_mission).name,
45
+ "/lib"
46
+ ].join(""),
47
+ { recursive: true }
48
+ );
49
+ // create a resources folder
50
+ fs.mkdirSync([
51
+ jtffci.config.general.missionFolder,
52
+ "/",
53
+ path.parse(env_mission).name,
54
+ "/resources"
55
+ ].join(""),
56
+ { recursive: true }
57
+ );
41
58
  const prompt_properties = [
42
59
  {
43
60
  name: 'inject_tankers',
@@ -121,12 +138,65 @@ function injectScripts(jtffci, env_mission) {
121
138
 
122
139
  // open the miz input file for reading
123
140
  const mizObject = await jtffci.mizlib.getZipObjectFromMizPath(env_mission);
141
+ // Open the mission Object and mapResource Object for modification
142
+ const missionObject = await jtffci.mizlib.getMissionObjectFromZipObject(mizObject);
143
+ let mapResourceObject = await jtffci.mizlib.getMapResourceObjectFromZipObject(mizObject);
144
+ // prepare settings array
145
+ let settingsArray = [];
146
+ let scriptsArray = [];
147
+ let libsArray = [];
148
+ if (Array.isArray(mapResourceObject)) {
149
+ if (mapResourceObject.length === 0) {
150
+ mapResourceObject = {};
151
+ }
152
+ }
153
+ // injection des librairies externes
154
+ libsArray.push({
155
+ folder: 'lib',
156
+ scriptTitle: 'SplashDamage 2.0',
157
+ scripts: ['Splash_Damage_2_0.lua'],
158
+ timing: 9,
159
+ color: '0x008000ff'
160
+ });
161
+ libsArray.push({
162
+ folder: 'lib',
163
+ scriptTitle: 'Moose',
164
+ scripts: ['Moose_.lua'],
165
+ timing: 10,
166
+ color: '0x008000ff'
167
+ });
168
+ libsArray.push({
169
+ folder: 'lib',
170
+ scriptTitle: 'Mist',
171
+ scripts: ['mist_4_5_107.lua'],
172
+ timing: 12,
173
+ color: '0x008000ff'
174
+ });
175
+ libsArray.push({
176
+ folder: 'lib',
177
+ scriptTitle: 'Hercules',
178
+ scripts: ['Hercules_Cargo.lua'],
179
+ timing: 14,
180
+ color: '0x008000ff'
181
+ });
182
+ libsArray.push({
183
+ folder: 'lib',
184
+ scriptTitle: 'Skynet',
185
+ scripts: ['skynet-iads-compiled.lua'],
186
+ timing: 15,
187
+ color: '0x008000ff'
188
+ });
124
189
  // inject all the lua files in the src folder into the source zip object
125
- jtffci.mizlib.injectLuaFilesFromFolderIntoZipObject(mizObject, "src");
190
+ // jtffci.mizlib.injectLuaFilesFromFolderIntoZipObject(mizObject, "src");
126
191
  // inject all the lua files in the lib folder into the source zip object
127
- jtffci.mizlib.injectLuaFilesFromFolderIntoZipObject(mizObject, "lib");
192
+ // jtffci.mizlib.injectLuaFilesFromFolderIntoZipObject(mizObject, "lib");
128
193
  // injection des fichiers son Généraux si repertoire resources/sounds/General present
129
- await jtffci.mizlib.mizUpdateSingleSoundFolder(mizObject, 'General');
194
+ await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder([
195
+ jtffci.config.general.missionFolder,
196
+ "/",
197
+ path.parse(env_mission).name
198
+ ].join(""), 'General');
199
+ await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject, 'General');
130
200
  // On fait une sauvegarde dans le folder de destination
131
201
  // fs.writeFileSync([
132
202
  // jtffci.config.general.missionFolder,
@@ -145,7 +215,11 @@ function injectScripts(jtffci, env_mission) {
145
215
  // })
146
216
  // );
147
217
  // injection des fichiers son Misc si repertoire resources/sounds/Misc present
148
- await jtffci.mizlib.mizUpdateSingleSoundFolder(mizObject, 'Misc');
218
+ await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder([jtffci.config.general.missionFolder,
219
+ "/",
220
+ path.parse(env_mission).name
221
+ ].join(""), 'Misc');
222
+ await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject, 'Misc');
149
223
  // On fait une sauvegarde dans le folder de destination
150
224
  // fs.writeFileSync([
151
225
  // jtffci.config.general.missionFolder,
@@ -163,66 +237,7 @@ function injectScripts(jtffci, env_mission) {
163
237
  // }
164
238
  // })
165
239
  // );
166
- const missionObject = await jtffci.mizlib.getMissionObjectFromZipObject(mizObject);
167
- let mapResourceObject = await jtffci.mizlib.getMapResourceObjectFromZipObject(mizObject);
168
- let settingsArray = [];
169
- if (Array.isArray(mapResourceObject)) {
170
- if (mapResourceObject.length === 0) {
171
- mapResourceObject = {};
172
- }
173
- }
174
- // injection SplashDamage
175
- let tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
176
- missionObject['trig'],
177
- missionObject['trigrules'],
178
- mapResourceObject,
179
- 'SplashDamage load',
180
- ['Splash_Damage_2_0.lua'],
181
- 9,
182
- '0x008000ff'
183
- );
184
- missionObject['trig'] = tuple.tObject;
185
- missionObject['trigrules'] = tuple.trObject;
186
- mapResourceObject = tuple.mrObject;
187
- // injection Moose
188
- tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
189
- missionObject['trig'],
190
- missionObject['trigrules'],
191
- mapResourceObject,
192
- 'Moose load',
193
- ['Moose_.lua'],
194
- 10,
195
- '0x008000ff'
196
- );
197
- missionObject['trig'] = tuple.tObject;
198
- missionObject['trigrules'] = tuple.trObject;
199
- mapResourceObject = tuple.mrObject;
200
- // injection Mist
201
- tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
202
- missionObject['trig'],
203
- missionObject['trigrules'],
204
- mapResourceObject,
205
- 'Mist load',
206
- ['mist_4_5_107.lua'],
207
- 13,
208
- '0x008000ff'
209
- );
210
- missionObject['trig'] = tuple.tObject;
211
- missionObject['trigrules'] = tuple.trObject;
212
- mapResourceObject = tuple.mrObject;
213
- // injection Skynet
214
- tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
215
- missionObject['trig'],
216
- missionObject['trigrules'],
217
- mapResourceObject,
218
- 'Skynet load',
219
- ['skynet-iads-compiled.lua'],
220
- 15,
221
- '0x008000ff'
222
- );
223
- missionObject['trig'] = tuple.tObject;
224
- missionObject['trigrules'] = tuple.trObject;
225
- mapResourceObject = tuple.mrObject;
240
+
226
241
  // injection Librairies JTFF
227
242
  settingsArray.push(
228
243
  {
@@ -232,32 +247,47 @@ function injectScripts(jtffci, env_mission) {
232
247
  file: "settings-global.lua",
233
248
  },
234
249
  );
235
- tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
236
- missionObject['trig'],
237
- missionObject['trigrules'],
238
- mapResourceObject,
239
- 'Load JTFF Libraries',
240
- ['010-root_menus.lua', '020-mission_functions.lua', 'gemman.lua'],
241
- 17,
242
- '0xffff00ff'
243
- );
244
- missionObject['trig'] = tuple.tObject;
245
- missionObject['trigrules'] = tuple.trObject;
246
- mapResourceObject = tuple.mrObject;
247
-
250
+ libsArray.push({
251
+ folder: 'lib',
252
+ scriptTitle: 'GemMan',
253
+ scripts: ['gemman.lua'],
254
+ timing: 17,
255
+ color: '0xffff00ff'
256
+ });
257
+ libsArray.push({
258
+ folder: 'src',
259
+ scriptTitle: 'JTFF Libraries',
260
+ scripts: ['010-root_menus.lua', '020-mission_functions.lua'],
261
+ timing: 18,
262
+ color: '0xffff00ff'
263
+ });
264
+ for ( script of libsArray) {
265
+ let tuple = jtffci.mizlib.injectLuaScriptAndUpdateWorkspace(
266
+ [
267
+ jtffci.config.general.missionFolder,
268
+ "/",
269
+ path.parse(env_mission).name,
270
+ ].join(""),
271
+ script.folder,
272
+ script.scripts,
273
+ script.scriptTitle + ' Load',
274
+ missionObject,
275
+ mapResourceObject,
276
+ script.timing,
277
+ script.color
278
+ );
279
+ missionObject['trig'] = tuple.tObject;
280
+ missionObject['trigrules'] = tuple.trObject;
281
+ mapResourceObject = tuple.mrObject;
282
+ }
248
283
  // injection de la gestion des Set_Clients
249
- tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
250
- missionObject['trig'],
251
- missionObject['trigrules'],
252
- mapResourceObject,
253
- 'Set clients',
254
- ['110-set_clients.lua'],
255
- 21,
256
- '0xff0000ff'
257
- );
258
- missionObject['trig'] = tuple.tObject;
259
- missionObject['trigrules'] = tuple.trObject;
260
- mapResourceObject = tuple.mrObject;
284
+ scriptsArray.push({
285
+ folder: 'src',
286
+ scriptTitle: 'Set clients',
287
+ scripts: ['110-set_clients.lua'],
288
+ timing: 21,
289
+ color: '0xff0000ff'
290
+ });
261
291
  // injection des Tankers et OndemandTankers
262
292
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_tankers)) {
263
293
  settingsArray.push(
@@ -270,22 +300,21 @@ function injectScripts(jtffci, env_mission) {
270
300
  objectName: "OnDemandTankersConfig"
271
301
  },
272
302
  );
273
- tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
274
- missionObject['trig'],
275
- missionObject['trigrules'],
276
- mapResourceObject,
277
- 'Tankers',
278
- ['120-tankers.lua'],
279
- 22,
280
- '0xff0000ff'
281
- );
282
- missionObject['trig'] = tuple.tObject;
283
- missionObject['trigrules'] = tuple.trObject;
284
- mapResourceObject = tuple.mrObject;
303
+ scriptsArray.push({
304
+ folder: 'src',
305
+ scriptTitle: 'Tankers',
306
+ scripts: ['120-tankers.lua'],
307
+ timing: 22,
308
+ color: '0xff0000ff'
309
+ });
285
310
  }
286
311
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_airboss)) {
287
312
  // injection des fichiers son Airboss
288
- // await jtffci.mizlib.mizUpdateSingleSoundFolder(mizObject, 'AIRBOSS');
313
+ await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder([jtffci.config.general.missionFolder,
314
+ "/",
315
+ path.parse(env_mission).name
316
+ ].join(""), 'AIRBOSS');
317
+ await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject, 'AIRBOSS');
289
318
  settingsArray.push(
290
319
  {
291
320
  file: "settings-airboss.lua",
@@ -296,18 +325,13 @@ function injectScripts(jtffci, env_mission) {
296
325
  objectName: "PedrosConfig"
297
326
  },
298
327
  );
299
- tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
300
- missionObject['trig'],
301
- missionObject['trigrules'],
302
- mapResourceObject,
303
- 'Airboss',
304
- ['130-airboss.lua', '135-pedro.lua'],
305
- 23,
306
- '0xff0000ff'
307
- );
308
- missionObject['trig'] = tuple.tObject;
309
- missionObject['trigrules'] = tuple.trObject;
310
- mapResourceObject = tuple.mrObject;
328
+ scriptsArray.push({
329
+ folder: 'src',
330
+ scriptTitle: 'Airboss',
331
+ scripts: ['130-airboss.lua', '135-pedro.lua'],
332
+ timing: 23,
333
+ color: '0xff0000ff'
334
+ });
311
335
  }
312
336
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_beacons)) {
313
337
  settingsArray.push(
@@ -316,18 +340,13 @@ function injectScripts(jtffci, env_mission) {
316
340
  objectName: "BeaconsConfig"
317
341
  },
318
342
  );
319
- tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
320
- missionObject['trig'],
321
- missionObject['trigrules'],
322
- mapResourceObject,
323
- 'Beacons',
324
- ['140-beacons.lua'],
325
- 24,
326
- '0xff0000ff'
327
- );
328
- missionObject['trig'] = tuple.tObject;
329
- missionObject['trigrules'] = tuple.trObject;
330
- mapResourceObject = tuple.mrObject;
343
+ scriptsArray.push({
344
+ folder: 'src',
345
+ scriptTitle: 'Beacons',
346
+ scripts: ['140-beacons.lua'],
347
+ timing: 24,
348
+ color: '0xff0000ff'
349
+ });
331
350
  }
332
351
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_awacs)) {
333
352
  settingsArray.push(
@@ -340,18 +359,13 @@ function injectScripts(jtffci, env_mission) {
340
359
  objectName: "AwacsOnDemandConfig"
341
360
  },
342
361
  );
343
- tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
344
- missionObject['trig'],
345
- missionObject['trigrules'],
346
- mapResourceObject,
347
- 'Awacs',
348
- ['150-awacs.lua'],
349
- 25,
350
- '0xff0000ff'
351
- );
352
- missionObject['trig'] = tuple.tObject;
353
- missionObject['trigrules'] = tuple.trObject;
354
- mapResourceObject = tuple.mrObject;
362
+ scriptsArray.push({
363
+ folder: 'src',
364
+ scriptTitle: 'Awacs',
365
+ scripts: ['150-awacs.lua'],
366
+ timing: 25,
367
+ color: '0xff0000ff'
368
+ });
355
369
  }
356
370
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_atis)) {
357
371
  // injection des fichiers son ATIS
@@ -362,18 +376,13 @@ function injectScripts(jtffci, env_mission) {
362
376
  objectName: "AtisConfig"
363
377
  },
364
378
  );
365
- tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
366
- missionObject['trig'],
367
- missionObject['trigrules'],
368
- mapResourceObject,
369
- 'ATIS',
370
- ['160-atis.lua'],
371
- 26,
372
- '0xff0000ff'
373
- );
374
- missionObject['trig'] = tuple.tObject;
375
- missionObject['trigrules'] = tuple.trObject;
376
- mapResourceObject = tuple.mrObject;
379
+ scriptsArray.push({
380
+ folder: 'src',
381
+ scriptTitle: 'ATIS',
382
+ scripts: ['160-atis.lua'],
383
+ timing: 26,
384
+ color: '0xff0000ff'
385
+ });
377
386
  }
378
387
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_A2A)) {
379
388
  settingsArray.push(
@@ -398,40 +407,30 @@ function injectScripts(jtffci, env_mission) {
398
407
  objectName: "InterceptConfig"
399
408
  },
400
409
  );
401
- tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
402
- missionObject['trig'],
403
- missionObject['trigrules'],
404
- mapResourceObject,
405
- 'Air To Air',
406
- ['170-cap_zone_training.lua', '172-cap_zone_war.lua', '173-fox_zone_training.lua', '176-random_air_traffic.lua', '178-training-intercept.lua'],
407
- 27,
408
- '0xff0000ff'
409
- );
410
- missionObject['trig'] = tuple.tObject;
411
- missionObject['trigrules'] = tuple.trObject;
412
- mapResourceObject = tuple.mrObject;
410
+ scriptsArray.push({
411
+ folder: 'src',
412
+ scriptTitle: 'Air To Air',
413
+ scripts: ['170-cap_zone_training.lua', '172-cap_zone_war.lua', '173-fox_zone_training.lua', '176-random_air_traffic.lua', '178-training-intercept.lua'],
414
+ timing: 27,
415
+ color: '0xff0000ff'
416
+ });
413
417
  }
414
418
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_Logistics)) {
415
419
  // injection des fichiers son CTLD
416
- await jtffci.mizlib.mizUpdateSingleSoundFolder(mizObject, 'CTLD');
420
+ await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject, 'CTLD');
417
421
  settingsArray.push(
418
422
  {
419
423
  file: "settings-logistics.lua",
420
424
  objectName: "CTLDConfig"
421
425
  },
422
426
  );
423
- tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
424
- missionObject['trig'],
425
- missionObject['trigrules'],
426
- mapResourceObject,
427
- 'Logistics',
428
- ['180-logistics.lua'],
429
- 28,
430
- '0xff0000ff'
431
- );
432
- missionObject['trig'] = tuple.tObject;
433
- missionObject['trigrules'] = tuple.trObject;
434
- mapResourceObject = tuple.mrObject;
427
+ scriptsArray.push({
428
+ folder: 'src',
429
+ scriptTitle: 'Logistics',
430
+ scripts: ['180-logistics.lua'],
431
+ timing: 28,
432
+ color: '0xff0000ff'
433
+ });
435
434
  }
436
435
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_A2G)) {
437
436
  // injection des fichiers son Range
@@ -462,18 +461,13 @@ function injectScripts(jtffci, env_mission) {
462
461
  objectName: "SkynetConfig"
463
462
  },
464
463
  );
465
- tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
466
- missionObject['trig'],
467
- missionObject['trigrules'],
468
- mapResourceObject,
469
- 'Air To Ground',
470
- ['190-ranges.lua', '191-sams.lua', '193-training_ranges.lua', '195-reaper-ondemand.lua', '196-fac_ranges.lua', '199-skynet.lua'],
471
- 29,
472
- '0xff0000ff'
473
- );
474
- missionObject['trig'] = tuple.tObject;
475
- missionObject['trigrules'] = tuple.trObject;
476
- mapResourceObject = tuple.mrObject;
464
+ scriptsArray.push({
465
+ folder: 'src',
466
+ scriptTitle: 'Air To Ground',
467
+ scripts: ['190-ranges.lua', '191-sams.lua', '193-training_ranges.lua', '195-reaper-ondemand.lua', '196-fac_ranges.lua', '199-skynet.lua'],
468
+ timing: 29,
469
+ color: '0xff0000ff'
470
+ });
477
471
  }
478
472
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_mission)) {
479
473
  // fs.copyFileSync('templates/src/200-mission.lua',
@@ -515,14 +509,28 @@ function injectScripts(jtffci, env_mission) {
515
509
  // path.basename(env_mission)
516
510
  // ].join(""),
517
511
  // inputZip);
518
- tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
519
- missionObject['trig'],
520
- missionObject['trigrules'],
512
+ scriptsArray.push({
513
+ folder: 'src',
514
+ scriptTitle: 'Mission specific',
515
+ scripts: ['200-mission.lua'],
516
+ timing: 30,
517
+ color: '0xff0000ff'
518
+ });
519
+ }
520
+ for ( script of scriptsArray) {
521
+ let tuple = jtffci.mizlib.injectLuaScriptAndUpdateWorkspace(
522
+ [
523
+ jtffci.config.general.missionFolder,
524
+ "/",
525
+ path.parse(env_mission).name,
526
+ ].join(""),
527
+ script.folder,
528
+ script.scripts,
529
+ script.scriptTitle,
530
+ missionObject,
521
531
  mapResourceObject,
522
- 'Mission specific',
523
- ['200-mission.lua'],
524
- 30,
525
- '0xff0000ff'
532
+ script.timing,
533
+ script.color
526
534
  );
527
535
  missionObject['trig'] = tuple.tObject;
528
536
  missionObject['trigrules'] = tuple.trObject;
@@ -564,7 +572,7 @@ function injectScripts(jtffci, env_mission) {
564
572
  ].join("")
565
573
  );
566
574
  if (settingsArray.length > 0) {
567
- tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
575
+ let tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
568
576
  missionObject['trig'],
569
577
  missionObject['trigrules'],
570
578
  mapResourceObject,