@jtff/miztemplate-lib 3.0.0-rc11 → 3.0.0-rc13
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 +48 -6
- package/package.json +1 -1
- package/scripts/inject-scripts.js +84 -193
package/lib/mizlib.js
CHANGED
|
@@ -12,6 +12,23 @@ class Mizlib {
|
|
|
12
12
|
// no need for initialization
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
async injectLuaScriptIntoZipObjectAndUpdateWorkspace(workspacePath, folderPath, luaScriptsArray, titleString, zipObject, timing, colorString) {
|
|
16
|
+
let missionObject = await this.getMissionObjectFromZipObject(zipObject);
|
|
17
|
+
let mapResourceObject = await this.getMapResourceObjectFromZipObject(zipObject);
|
|
18
|
+
let tuple = this.injectLuaScriptAndUpdateWorkspace(workspacePath, folderPath, luaScriptsArray, titleString, missionObject, mapResourceObject, timing, colorString);
|
|
19
|
+
for (let luaScript of luaScriptsArray) {
|
|
20
|
+
this.injectFileIntoZipObject(zipObject, [
|
|
21
|
+
workspacePath,
|
|
22
|
+
"/",
|
|
23
|
+
folderPath,
|
|
24
|
+
"/",
|
|
25
|
+
path.basename(luaScript)
|
|
26
|
+
].join("")
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
return {tuple, zipObject};
|
|
30
|
+
}
|
|
31
|
+
|
|
15
32
|
injectLuaScriptAndUpdateWorkspace(workspacePath, folderPath, luaScriptsArray, titleString, missionObject, mapResourceObject, timing, colorString) {
|
|
16
33
|
let tuple = this.injectLuaScriptsInMissionObject(
|
|
17
34
|
missionObject['trig'],
|
|
@@ -98,7 +115,7 @@ class Mizlib {
|
|
|
98
115
|
// TODO: Inject fake data
|
|
99
116
|
console.log("NO THEATRE SPECIFIED. RADIO PRESETS WILL NOT BE AVAILABLE !");
|
|
100
117
|
} else {
|
|
101
|
-
await this.
|
|
118
|
+
await this.injectRadioPresetsFromFolderIntoZipObject(zip, 'resources/radios/' + strTheatreSettings);
|
|
102
119
|
}
|
|
103
120
|
this.mizUpdateSettingsLuaFiles(zip, strTheatreSettings);
|
|
104
121
|
await this.mizUpdateSoundFolders(zip);
|
|
@@ -211,7 +228,7 @@ class Mizlib {
|
|
|
211
228
|
}
|
|
212
229
|
|
|
213
230
|
|
|
214
|
-
async
|
|
231
|
+
async injectRadioPresetsFromFolderIntoZipObject(zip, preset_folder) {
|
|
215
232
|
// Create folder Avionics to make sure it exists then delete it to remove any old preset in the template
|
|
216
233
|
// Allows adding presets for A-10C
|
|
217
234
|
zip.folder("Avionics");
|
|
@@ -327,11 +344,11 @@ class Mizlib {
|
|
|
327
344
|
}
|
|
328
345
|
}
|
|
329
346
|
|
|
330
|
-
async injectSingleSoundFolderIntoZipObject(zip, folder) {
|
|
331
|
-
if (fs.existsSync('resources/sounds/' + folder) && fs.lstatSync('resources/sounds/' + folder).isDirectory()) {
|
|
332
|
-
console.log('adding sound files from resources/sounds/' + folder + ' folder...');
|
|
347
|
+
async injectSingleSoundFolderIntoZipObject(zip, workspacePath, folder) {
|
|
348
|
+
if (fs.existsSync(workspacePath + '/resources/sounds/' + folder) && fs.lstatSync(workspacePath + '/resources/sounds/' + folder).isDirectory()) {
|
|
349
|
+
console.log('adding sound files from '+workspacePath+'/resources/sounds/' + folder + ' folder...');
|
|
333
350
|
zip = zip.remove(folder).folder(folder);
|
|
334
|
-
await this.addFilesToZip(zip, 'resources/sounds/' + folder, fs.readdirSync('resources/sounds/' + folder));
|
|
351
|
+
await this.addFilesToZip(zip, workspacePath + '/resources/sounds/' + folder, fs.readdirSync(workspacePath + '/resources/sounds/' + folder));
|
|
335
352
|
}
|
|
336
353
|
}
|
|
337
354
|
|
|
@@ -380,6 +397,31 @@ class Mizlib {
|
|
|
380
397
|
let luaTable = 'return { \n' + await this.getMapResourceLuaStringFromZipObject(zip) + ' }';
|
|
381
398
|
return parse(luaTable).mapResource;
|
|
382
399
|
}
|
|
400
|
+
|
|
401
|
+
async generateConfigJsonFile(zip) {
|
|
402
|
+
let theatreString = (await this.getMissionObjectFromZipObject(zip)).theatre;
|
|
403
|
+
return {
|
|
404
|
+
"general": {
|
|
405
|
+
"missionFolder": "dist",
|
|
406
|
+
"missionPrefix": "Theatre",
|
|
407
|
+
"missionSuffix": "JTFF",
|
|
408
|
+
"missionVersion": "1.0.0-snapshot"
|
|
409
|
+
},
|
|
410
|
+
"google": {
|
|
411
|
+
"scopes": [
|
|
412
|
+
"https://www.googleapis.com/auth/drive"
|
|
413
|
+
],
|
|
414
|
+
"tokenPath": "dist/gtoken.json"
|
|
415
|
+
},
|
|
416
|
+
"missionTemplates": [
|
|
417
|
+
{
|
|
418
|
+
"theatre": theatreString,
|
|
419
|
+
"prefix": "template",
|
|
420
|
+
"destFolderId": "15CrplYJsmv8GNu2obuX-TuCWLrUff1NS"
|
|
421
|
+
}
|
|
422
|
+
]
|
|
423
|
+
};
|
|
424
|
+
}
|
|
383
425
|
}
|
|
384
426
|
|
|
385
427
|
module.exports = Mizlib
|
package/package.json
CHANGED
|
@@ -3,54 +3,46 @@ const path = require("path");
|
|
|
3
3
|
const prompt = require('prompt');
|
|
4
4
|
|
|
5
5
|
function injectScripts(jtffci, env_mission) {
|
|
6
|
-
|
|
7
|
-
fs.mkdirSync(jtffci.config.general.missionFolder, { recursive: true });
|
|
8
|
-
if (fs.existsSync([
|
|
6
|
+
const workspacePath = [
|
|
9
7
|
jtffci.config.general.missionFolder,
|
|
10
8
|
"/",
|
|
11
9
|
path.parse(env_mission).name
|
|
12
|
-
].join("")
|
|
10
|
+
].join("");
|
|
11
|
+
const destinationMizFilePath = [
|
|
12
|
+
workspacePath,
|
|
13
|
+
'/',
|
|
14
|
+
path.basename(env_mission)
|
|
15
|
+
].join("");
|
|
16
|
+
// create mission folder in jtffci.config.reneral.missionFolder folder
|
|
17
|
+
fs.mkdirSync(jtffci.config.general.missionFolder, { recursive: true });
|
|
18
|
+
if (fs.existsSync(workspacePath)) {
|
|
13
19
|
// if there is a specific mission folder (dist/env_mission), clean it
|
|
14
|
-
fs.rmSync(
|
|
15
|
-
jtffci.config.general.missionFolder,
|
|
16
|
-
'/',
|
|
17
|
-
path.parse(env_mission).name
|
|
18
|
-
].join(""),
|
|
19
|
-
{ recursive: true }
|
|
20
|
-
);
|
|
20
|
+
fs.rmSync(workspacePath,{ recursive: true });
|
|
21
21
|
}
|
|
22
22
|
// create a settings folder
|
|
23
23
|
fs.mkdirSync([
|
|
24
|
-
|
|
25
|
-
"/",
|
|
26
|
-
path.parse(env_mission).name,
|
|
24
|
+
workspacePath,
|
|
27
25
|
"/settings"
|
|
28
26
|
].join(""),
|
|
29
27
|
{ recursive: true }
|
|
30
28
|
);
|
|
31
29
|
// create a src folder
|
|
32
30
|
fs.mkdirSync([
|
|
33
|
-
|
|
34
|
-
"/",
|
|
35
|
-
path.parse(env_mission).name,
|
|
31
|
+
workspacePath,
|
|
36
32
|
"/src"
|
|
37
33
|
].join(""),
|
|
38
34
|
{ recursive: true }
|
|
39
35
|
);
|
|
40
36
|
// create a lib folder
|
|
41
37
|
fs.mkdirSync([
|
|
42
|
-
|
|
43
|
-
"/",
|
|
44
|
-
path.parse(env_mission).name,
|
|
38
|
+
workspacePath,
|
|
45
39
|
"/lib"
|
|
46
40
|
].join(""),
|
|
47
41
|
{ recursive: true }
|
|
48
42
|
);
|
|
49
43
|
// create a resources folder
|
|
50
44
|
fs.mkdirSync([
|
|
51
|
-
|
|
52
|
-
"/",
|
|
53
|
-
path.parse(env_mission).name,
|
|
45
|
+
workspacePath,
|
|
54
46
|
"/resources"
|
|
55
47
|
].join(""),
|
|
56
48
|
{ recursive: true }
|
|
@@ -135,9 +127,10 @@ function injectScripts(jtffci, env_mission) {
|
|
|
135
127
|
console.log(' inject_A2G scripts: ' + (/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_A2G));
|
|
136
128
|
console.log(' inject_mission specific scripts: ' + (/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_mission));
|
|
137
129
|
console.log(' inject_radio_presets scripts: ' + (/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_radio_presets));
|
|
138
|
-
|
|
139
130
|
// open the miz input file for reading
|
|
140
|
-
const
|
|
131
|
+
const originalMizObject = await jtffci.mizlib.getZipObjectFromMizPath(env_mission);
|
|
132
|
+
// copie de l'objet pour modification
|
|
133
|
+
let mizObject = originalMizObject;
|
|
141
134
|
// Open the mission Object and mapResource Object for modification
|
|
142
135
|
const missionObject = await jtffci.mizlib.getMissionObjectFromZipObject(mizObject);
|
|
143
136
|
let mapResourceObject = await jtffci.mizlib.getMapResourceObjectFromZipObject(mizObject);
|
|
@@ -150,7 +143,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
150
143
|
mapResourceObject = {};
|
|
151
144
|
}
|
|
152
145
|
}
|
|
153
|
-
//
|
|
146
|
+
// insertion des librairies externes dans la file d'attente
|
|
154
147
|
libsArray.push({
|
|
155
148
|
folder: 'lib',
|
|
156
149
|
scriptTitle: 'SplashDamage 2.0',
|
|
@@ -186,59 +179,13 @@ function injectScripts(jtffci, env_mission) {
|
|
|
186
179
|
timing: 15,
|
|
187
180
|
color: '0x008000ff'
|
|
188
181
|
});
|
|
189
|
-
// inject all the lua files in the src folder into the source zip object
|
|
190
|
-
// jtffci.mizlib.injectLuaFilesFromFolderIntoZipObject(mizObject, "src");
|
|
191
|
-
// inject all the lua files in the lib folder into the source zip object
|
|
192
|
-
// jtffci.mizlib.injectLuaFilesFromFolderIntoZipObject(mizObject, "lib");
|
|
193
182
|
// injection des fichiers son Généraux si repertoire resources/sounds/General present
|
|
194
|
-
await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(
|
|
195
|
-
|
|
196
|
-
"/",
|
|
197
|
-
path.parse(env_mission).name
|
|
198
|
-
].join(""), 'General');
|
|
199
|
-
await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject, 'General');
|
|
200
|
-
// On fait une sauvegarde dans le folder de destination
|
|
201
|
-
// fs.writeFileSync([
|
|
202
|
-
// jtffci.config.general.missionFolder,
|
|
203
|
-
// "/",
|
|
204
|
-
// path.parse(env_mission).name,
|
|
205
|
-
// "/",
|
|
206
|
-
// path.basename(env_mission)
|
|
207
|
-
// ].join(""),
|
|
208
|
-
// await mizObject.generateAsync({
|
|
209
|
-
// type: 'nodebuffer',
|
|
210
|
-
// streamFiles: true,
|
|
211
|
-
// compression: "DEFLATE",
|
|
212
|
-
// compressionOptions: {
|
|
213
|
-
// level: 9
|
|
214
|
-
// }
|
|
215
|
-
// })
|
|
216
|
-
// );
|
|
183
|
+
await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'General');
|
|
184
|
+
await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'General');
|
|
217
185
|
// injection des fichiers son Misc si repertoire resources/sounds/Misc present
|
|
218
|
-
await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
].join(""), 'Misc');
|
|
222
|
-
await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject, 'Misc');
|
|
223
|
-
// On fait une sauvegarde dans le folder de destination
|
|
224
|
-
// fs.writeFileSync([
|
|
225
|
-
// jtffci.config.general.missionFolder,
|
|
226
|
-
// "/",
|
|
227
|
-
// path.parse(env_mission).name,
|
|
228
|
-
// "/",
|
|
229
|
-
// path.basename(env_mission)
|
|
230
|
-
// ].join(""),
|
|
231
|
-
// await mizObject.generateAsync({
|
|
232
|
-
// type: 'nodebuffer',
|
|
233
|
-
// streamFiles: true,
|
|
234
|
-
// compression: "DEFLATE",
|
|
235
|
-
// compressionOptions: {
|
|
236
|
-
// level: 9
|
|
237
|
-
// }
|
|
238
|
-
// })
|
|
239
|
-
// );
|
|
240
|
-
|
|
241
|
-
// injection Librairies JTFF
|
|
186
|
+
await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'Misc');
|
|
187
|
+
await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'Misc');
|
|
188
|
+
// insertion des Librairies JTFF dans la file d'attente
|
|
242
189
|
settingsArray.push(
|
|
243
190
|
{
|
|
244
191
|
file: "settings-gemman.lua",
|
|
@@ -261,26 +208,24 @@ function injectScripts(jtffci, env_mission) {
|
|
|
261
208
|
timing: 18,
|
|
262
209
|
color: '0xffff00ff'
|
|
263
210
|
});
|
|
211
|
+
// traitement de la file d'attente des librairies (injection des triggers et des fichiers lua)
|
|
264
212
|
for ( script of libsArray) {
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
"/",
|
|
269
|
-
path.parse(env_mission).name,
|
|
270
|
-
].join(""),
|
|
213
|
+
console.log(['adding library',script.scripts.join(' and '),'from',workspacePath + '/' + script.folder, 'folder...'].join(' '));
|
|
214
|
+
let {tuple, zipObject} = await jtffci.mizlib.injectLuaScriptIntoZipObjectAndUpdateWorkspace(
|
|
215
|
+
workspacePath,
|
|
271
216
|
script.folder,
|
|
272
217
|
script.scripts,
|
|
273
218
|
script.scriptTitle + ' Load',
|
|
274
|
-
|
|
275
|
-
mapResourceObject,
|
|
219
|
+
mizObject,
|
|
276
220
|
script.timing,
|
|
277
221
|
script.color
|
|
278
222
|
);
|
|
279
223
|
missionObject['trig'] = tuple.tObject;
|
|
280
224
|
missionObject['trigrules'] = tuple.trObject;
|
|
281
225
|
mapResourceObject = tuple.mrObject;
|
|
226
|
+
mizObject = zipObject;
|
|
282
227
|
}
|
|
283
|
-
// injection de la gestion des Set_Clients
|
|
228
|
+
// injection de la gestion des Set_Clients dans la file d'attente
|
|
284
229
|
scriptsArray.push({
|
|
285
230
|
folder: 'src',
|
|
286
231
|
scriptTitle: 'Set clients',
|
|
@@ -288,7 +233,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
288
233
|
timing: 21,
|
|
289
234
|
color: '0xff0000ff'
|
|
290
235
|
});
|
|
291
|
-
// injection des Tankers et OndemandTankers
|
|
236
|
+
// injection des Tankers et OndemandTankers dans la file d'attente
|
|
292
237
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_tankers)) {
|
|
293
238
|
settingsArray.push(
|
|
294
239
|
{
|
|
@@ -308,13 +253,11 @@ function injectScripts(jtffci, env_mission) {
|
|
|
308
253
|
color: '0xff0000ff'
|
|
309
254
|
});
|
|
310
255
|
}
|
|
256
|
+
// injection des Airboss et Pedros dans la file d'attente
|
|
311
257
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_airboss)) {
|
|
312
258
|
// injection des fichiers son Airboss
|
|
313
|
-
await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(
|
|
314
|
-
|
|
315
|
-
path.parse(env_mission).name
|
|
316
|
-
].join(""), 'AIRBOSS');
|
|
317
|
-
await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject, 'AIRBOSS');
|
|
259
|
+
await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'AIRBOSS');
|
|
260
|
+
await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'AIRBOSS');
|
|
318
261
|
settingsArray.push(
|
|
319
262
|
{
|
|
320
263
|
file: "settings-airboss.lua",
|
|
@@ -333,6 +276,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
333
276
|
color: '0xff0000ff'
|
|
334
277
|
});
|
|
335
278
|
}
|
|
279
|
+
// injection des Beacons dans la file d'attente
|
|
336
280
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_beacons)) {
|
|
337
281
|
settingsArray.push(
|
|
338
282
|
{
|
|
@@ -348,6 +292,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
348
292
|
color: '0xff0000ff'
|
|
349
293
|
});
|
|
350
294
|
}
|
|
295
|
+
// injection des AWACS et OnDemandAwacs dans la file d'attente
|
|
351
296
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_awacs)) {
|
|
352
297
|
settingsArray.push(
|
|
353
298
|
{
|
|
@@ -367,9 +312,11 @@ function injectScripts(jtffci, env_mission) {
|
|
|
367
312
|
color: '0xff0000ff'
|
|
368
313
|
});
|
|
369
314
|
}
|
|
315
|
+
// injection des ATIS dans la file d'attente
|
|
370
316
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_atis)) {
|
|
371
317
|
// injection des fichiers son ATIS
|
|
372
|
-
|
|
318
|
+
await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'ATIS');
|
|
319
|
+
await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'ATIS');
|
|
373
320
|
settingsArray.push(
|
|
374
321
|
{
|
|
375
322
|
file: "settings-atis.lua",
|
|
@@ -384,6 +331,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
384
331
|
color: '0xff0000ff'
|
|
385
332
|
});
|
|
386
333
|
}
|
|
334
|
+
// injection des scripts A2A dans la file d'attente
|
|
387
335
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_A2A)) {
|
|
388
336
|
settingsArray.push(
|
|
389
337
|
{
|
|
@@ -415,9 +363,11 @@ function injectScripts(jtffci, env_mission) {
|
|
|
415
363
|
color: '0xff0000ff'
|
|
416
364
|
});
|
|
417
365
|
}
|
|
366
|
+
// injection des CTLD dans la file d'attente
|
|
418
367
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_Logistics)) {
|
|
419
368
|
// injection des fichiers son CTLD
|
|
420
|
-
await jtffci.mizlib.
|
|
369
|
+
await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'CTLD');
|
|
370
|
+
await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'CTLD');
|
|
421
371
|
settingsArray.push(
|
|
422
372
|
{
|
|
423
373
|
file: "settings-logistics.lua",
|
|
@@ -432,9 +382,11 @@ function injectScripts(jtffci, env_mission) {
|
|
|
432
382
|
color: '0xff0000ff'
|
|
433
383
|
});
|
|
434
384
|
}
|
|
385
|
+
// injection des scripts A2G dans la file d'attente
|
|
435
386
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_A2G)) {
|
|
436
387
|
// injection des fichiers son Range
|
|
437
|
-
|
|
388
|
+
await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'RANGE');
|
|
389
|
+
await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'RANGE');
|
|
438
390
|
settingsArray.push(
|
|
439
391
|
{
|
|
440
392
|
file: "settings-ranges.lua",
|
|
@@ -469,46 +421,8 @@ function injectScripts(jtffci, env_mission) {
|
|
|
469
421
|
color: '0xff0000ff'
|
|
470
422
|
});
|
|
471
423
|
}
|
|
424
|
+
// injection du script spécifique de mission dans la file d'attente
|
|
472
425
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_mission)) {
|
|
473
|
-
// fs.copyFileSync('templates/src/200-mission.lua',
|
|
474
|
-
// [
|
|
475
|
-
// jtffci.config.general.missionFolder,
|
|
476
|
-
// "/",
|
|
477
|
-
// path.parse(env_mission).name,
|
|
478
|
-
// "/src/200-mission.lua"
|
|
479
|
-
// ].join("")
|
|
480
|
-
// );
|
|
481
|
-
// const zip = await jtffci.mizlib.getZipObjectFromMizPath([
|
|
482
|
-
// jtffci.config.general.missionFolder,
|
|
483
|
-
// "/",
|
|
484
|
-
// path.parse(env_mission).name,
|
|
485
|
-
// "/",
|
|
486
|
-
// path.basename(env_mission)
|
|
487
|
-
// ].join(""));
|
|
488
|
-
//
|
|
489
|
-
// jtffci.mizlib.injectFileIntoZipObject(zip, [
|
|
490
|
-
// jtffci.config.general.missionFolder,
|
|
491
|
-
// "/",
|
|
492
|
-
// path.parse(env_mission).name,
|
|
493
|
-
// "/src/200-mission.lua"
|
|
494
|
-
// ].join("")
|
|
495
|
-
// );
|
|
496
|
-
// const inputZip = await zip.generateAsync({
|
|
497
|
-
// type: 'nodebuffer',
|
|
498
|
-
// streamFiles: true,
|
|
499
|
-
// compression: "DEFLATE",
|
|
500
|
-
// compressionOptions: {
|
|
501
|
-
// level: 9
|
|
502
|
-
// }
|
|
503
|
-
// });
|
|
504
|
-
// fs.writeFileSync([
|
|
505
|
-
// jtffci.config.general.missionFolder,
|
|
506
|
-
// "/",
|
|
507
|
-
// path.parse(env_mission).name,
|
|
508
|
-
// "/",
|
|
509
|
-
// path.basename(env_mission)
|
|
510
|
-
// ].join(""),
|
|
511
|
-
// inputZip);
|
|
512
426
|
scriptsArray.push({
|
|
513
427
|
folder: 'src',
|
|
514
428
|
scriptTitle: 'Mission specific',
|
|
@@ -517,95 +431,72 @@ function injectScripts(jtffci, env_mission) {
|
|
|
517
431
|
color: '0xff0000ff'
|
|
518
432
|
});
|
|
519
433
|
}
|
|
434
|
+
// traitement de la file d'attente des scripts (injection des triggers et des fichiers lua)
|
|
520
435
|
for ( script of scriptsArray) {
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
"/",
|
|
525
|
-
path.parse(env_mission).name,
|
|
526
|
-
].join(""),
|
|
436
|
+
console.log(['adding script',script.scripts.join(' and '),'from',workspacePath + '/' + script.folder, 'folder...'].join(' '));
|
|
437
|
+
let {tuple, zipObject} = await jtffci.mizlib.injectLuaScriptIntoZipObjectAndUpdateWorkspace(
|
|
438
|
+
workspacePath,
|
|
527
439
|
script.folder,
|
|
528
440
|
script.scripts,
|
|
529
441
|
script.scriptTitle,
|
|
530
|
-
|
|
531
|
-
mapResourceObject,
|
|
442
|
+
mizObject,
|
|
532
443
|
script.timing,
|
|
533
444
|
script.color
|
|
534
445
|
);
|
|
535
446
|
missionObject['trig'] = tuple.tObject;
|
|
536
447
|
missionObject['trigrules'] = tuple.trObject;
|
|
537
448
|
mapResourceObject = tuple.mrObject;
|
|
449
|
+
mizObject = zipObject;
|
|
538
450
|
}
|
|
451
|
+
// injection des preset radio dans les avions humains
|
|
539
452
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_radio_presets)) {
|
|
540
453
|
// injection des preset radio
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
path.parse(env_mission).name,
|
|
545
|
-
"/",
|
|
546
|
-
path.basename(env_mission)
|
|
547
|
-
].join("") + ": injecting radio presets declared in resources/radios/" + path.parse(env_mission).name);
|
|
548
|
-
await jtffci.mizlib.mizUpdateRadioPresets(mizObject, 'resources/radios/' + path.parse(env_mission).name);
|
|
549
|
-
}
|
|
550
|
-
//injection du trigger des settings
|
|
551
|
-
for (let settingsObject of settingsArray) {
|
|
552
|
-
fs.copyFileSync(
|
|
553
|
-
[
|
|
554
|
-
'templates/settings/',
|
|
555
|
-
settingsObject.file
|
|
556
|
-
].join(""),
|
|
557
|
-
[
|
|
558
|
-
jtffci.config.general.missionFolder,
|
|
559
|
-
"/",
|
|
560
|
-
path.parse(env_mission).name,
|
|
561
|
-
"/settings/",
|
|
562
|
-
settingsObject.file
|
|
563
|
-
].join("")
|
|
564
|
-
);
|
|
454
|
+
fs.mkdirSync(workspacePath + '/resources/radios',{recursive: true});
|
|
455
|
+
console.log(destinationMizFilePath + ": injecting radio presets declared in resources/radios/" + path.parse(env_mission).name);
|
|
456
|
+
await jtffci.mizlib.injectRadioPresetsFromFolderIntoZipObject(mizObject, workspacePath + '/resources/radios');
|
|
565
457
|
}
|
|
566
|
-
|
|
567
|
-
[
|
|
568
|
-
jtffci.config.general.missionFolder,
|
|
569
|
-
"/",
|
|
570
|
-
path.parse(env_mission).name,
|
|
571
|
-
"/settings"
|
|
572
|
-
].join("")
|
|
573
|
-
);
|
|
458
|
+
// traitement de la file d'attente des settings (injection des triggers et des fichiers lua)
|
|
574
459
|
if (settingsArray.length > 0) {
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
460
|
+
console.log(['adding settings files',settingsArray.map(a => a.file).join(' and '),'from',workspacePath + '/settings', 'folder...'].join(' '));
|
|
461
|
+
let {tuple, zipObject} = await jtffci.mizlib.injectLuaScriptIntoZipObjectAndUpdateWorkspace(
|
|
462
|
+
workspacePath,
|
|
463
|
+
'settings',
|
|
464
|
+
settingsArray.map(a => a.file),
|
|
579
465
|
'Mission Settings',
|
|
580
|
-
|
|
466
|
+
mizObject,
|
|
581
467
|
15,
|
|
582
468
|
'0xffff00ff'
|
|
583
469
|
);
|
|
584
470
|
missionObject['trig'] = tuple.tObject;
|
|
585
471
|
missionObject['trigrules'] = tuple.trObject;
|
|
586
472
|
mapResourceObject = tuple.mrObject;
|
|
473
|
+
mizObject = zipObject;
|
|
587
474
|
}
|
|
475
|
+
// creation du cichier miz dans l'espace de travail
|
|
476
|
+
await fs.closeSync(fs.openSync(destinationMizFilePath, 'a'));
|
|
477
|
+
// On fait une sauvegarde dans le folder de destination
|
|
478
|
+
fs.writeFileSync(
|
|
479
|
+
destinationMizFilePath,
|
|
480
|
+
await mizObject.generateAsync({
|
|
481
|
+
type: 'nodebuffer',
|
|
482
|
+
streamFiles: true,
|
|
483
|
+
compression: "DEFLATE",
|
|
484
|
+
compressionOptions: {
|
|
485
|
+
level: 9
|
|
486
|
+
}
|
|
487
|
+
})
|
|
488
|
+
);
|
|
588
489
|
// Sauvegarde de la mission avec scripts injectés
|
|
589
490
|
await jtffci.mizlib.mizInjectMissionDataFile(
|
|
590
|
-
|
|
591
|
-
jtffci.config.general.missionFolder,
|
|
592
|
-
"/",
|
|
593
|
-
path.parse(env_mission).name,
|
|
594
|
-
"/",
|
|
595
|
-
path.basename(env_mission)
|
|
596
|
-
].join(""),
|
|
491
|
+
destinationMizFilePath,
|
|
597
492
|
{ mission: missionObject }
|
|
598
493
|
);
|
|
599
494
|
await jtffci.mizlib.mizInjectMapResourceFile(
|
|
600
|
-
|
|
601
|
-
jtffci.config.general.missionFolder,
|
|
602
|
-
"/",
|
|
603
|
-
path.parse(env_mission).name,
|
|
604
|
-
"/",
|
|
605
|
-
path.basename(env_mission)
|
|
606
|
-
].join(""),
|
|
495
|
+
destinationMizFilePath,
|
|
607
496
|
{ mapResource: mapResourceObject }
|
|
608
497
|
);
|
|
498
|
+
// generation des outils CI JTFF
|
|
499
|
+
fs.writeFileSync(workspacePath + 'config.json', await jtffci.mizlib.generateConfigJsonFile(mizObject));
|
|
609
500
|
console.log('...Done...');
|
|
610
501
|
return 0;
|
|
611
502
|
});
|