@jtff/miztemplate-lib 3.0.0-rc10 → 3.0.0-rc12
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 +91 -10
- package/package.json +1 -1
- package/scripts/inject-scripts.js +237 -340
package/lib/mizlib.js
CHANGED
|
@@ -9,7 +9,54 @@ const lstat = promisify(fs.lstat);
|
|
|
9
9
|
|
|
10
10
|
class Mizlib {
|
|
11
11
|
constructor() {
|
|
12
|
-
|
|
12
|
+
// no need for initialization
|
|
13
|
+
}
|
|
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
|
+
|
|
32
|
+
injectLuaScriptAndUpdateWorkspace(workspacePath, folderPath, luaScriptsArray, titleString, missionObject, mapResourceObject, timing, colorString) {
|
|
33
|
+
let tuple = this.injectLuaScriptsInMissionObject(
|
|
34
|
+
missionObject['trig'],
|
|
35
|
+
missionObject['trigrules'],
|
|
36
|
+
mapResourceObject,
|
|
37
|
+
titleString,
|
|
38
|
+
luaScriptsArray,
|
|
39
|
+
timing,
|
|
40
|
+
colorString
|
|
41
|
+
);
|
|
42
|
+
for (let luaScript of luaScriptsArray) {
|
|
43
|
+
fs.copyFileSync(
|
|
44
|
+
[
|
|
45
|
+
'node_modules/@jtff/miztemplate-lib/lua/',
|
|
46
|
+
folderPath,
|
|
47
|
+
'/',
|
|
48
|
+
luaScript
|
|
49
|
+
].join(""),
|
|
50
|
+
[
|
|
51
|
+
workspacePath,
|
|
52
|
+
"/",
|
|
53
|
+
folderPath,
|
|
54
|
+
"/",
|
|
55
|
+
path.basename(luaScript)
|
|
56
|
+
].join("")
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
return tuple;
|
|
13
60
|
}
|
|
14
61
|
|
|
15
62
|
injectLuaScriptsInMissionObject(tObject, trObject, mrObject, strTitle, scriptFilesArray, timingInSeconds, hexColor) {
|
|
@@ -68,7 +115,7 @@ class Mizlib {
|
|
|
68
115
|
// TODO: Inject fake data
|
|
69
116
|
console.log("NO THEATRE SPECIFIED. RADIO PRESETS WILL NOT BE AVAILABLE !");
|
|
70
117
|
} else {
|
|
71
|
-
await this.
|
|
118
|
+
await this.injectRadioPresetsFromFolderIntoZipObject(zip, 'resources/radios/' + strTheatreSettings);
|
|
72
119
|
}
|
|
73
120
|
this.mizUpdateSettingsLuaFiles(zip, strTheatreSettings);
|
|
74
121
|
await this.mizUpdateSoundFolders(zip);
|
|
@@ -177,12 +224,11 @@ class Mizlib {
|
|
|
177
224
|
for (let file of fs.readdirSync(folderPath).filter(file => file.endsWith(".lua"))) {
|
|
178
225
|
console.log('injecting up2date ' + folderPath + '/' + file + ' file in archive');
|
|
179
226
|
this.injectFileIntoZipObject(zip, folderPath + "/" + file);
|
|
180
|
-
}
|
|
181
|
-
;
|
|
227
|
+
};
|
|
182
228
|
}
|
|
183
229
|
|
|
184
230
|
|
|
185
|
-
async
|
|
231
|
+
async injectRadioPresetsFromFolderIntoZipObject(zip, preset_folder) {
|
|
186
232
|
// Create folder Avionics to make sure it exists then delete it to remove any old preset in the template
|
|
187
233
|
// Allows adding presets for A-10C
|
|
188
234
|
zip.folder("Avionics");
|
|
@@ -258,16 +304,51 @@ class Mizlib {
|
|
|
258
304
|
if (fs.existsSync('resources/sounds') && fs.lstatSync('resources/sounds').isDirectory()) {
|
|
259
305
|
const folderArray = fs.readdirSync('resources/sounds');
|
|
260
306
|
for (const folder of folderArray) {
|
|
261
|
-
await this.
|
|
307
|
+
await this.injectSingleSoundFolderIntoZipObject(zip, folder);
|
|
262
308
|
}
|
|
263
309
|
}
|
|
264
310
|
}
|
|
265
311
|
|
|
266
|
-
async
|
|
267
|
-
if (
|
|
268
|
-
|
|
312
|
+
async updateWorkspaceWithSingleSoundFolder(workspacePath, folderString) {
|
|
313
|
+
if (
|
|
314
|
+
fs.existsSync(
|
|
315
|
+
[
|
|
316
|
+
workspacePath,
|
|
317
|
+
"/resources/sounds/",
|
|
318
|
+
folderString
|
|
319
|
+
].join("")
|
|
320
|
+
) &&
|
|
321
|
+
fs.lstatSync([
|
|
322
|
+
workspacePath,
|
|
323
|
+
"/resources/sounds/",
|
|
324
|
+
folderString
|
|
325
|
+
].join("")).isDirectory()
|
|
326
|
+
) {
|
|
327
|
+
fs.rmSync([
|
|
328
|
+
workspacePath,
|
|
329
|
+
"/resources/sounds/",
|
|
330
|
+
folderString
|
|
331
|
+
].join(""), {recursive: true});
|
|
332
|
+
}
|
|
333
|
+
if (fs.existsSync('node_modules/@jtff/miztemplate-lib/resources/sounds/' + folderString) && fs.lstatSync('node_modules/@jtff/miztemplate-lib/resources/sounds/' + folderString).isDirectory()) {
|
|
334
|
+
fs.mkdirSync([
|
|
335
|
+
workspacePath,
|
|
336
|
+
"/resources/sounds/",
|
|
337
|
+
folderString
|
|
338
|
+
].join(""), {recursive: true});
|
|
339
|
+
fs.cpSync('node_modules/@jtff/miztemplate-lib/resources/sounds/' + folderString,[
|
|
340
|
+
workspacePath,
|
|
341
|
+
"/resources/sounds/",
|
|
342
|
+
folderString
|
|
343
|
+
].join(""), {recursive: true});
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
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...');
|
|
269
350
|
zip = zip.remove(folder).folder(folder);
|
|
270
|
-
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));
|
|
271
352
|
}
|
|
272
353
|
}
|
|
273
354
|
|
package/package.json
CHANGED
|
@@ -3,41 +3,50 @@ 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
|
|
37
|
+
fs.mkdirSync([
|
|
38
|
+
workspacePath,
|
|
39
|
+
"/lib"
|
|
40
|
+
].join(""),
|
|
41
|
+
{ recursive: true }
|
|
42
|
+
);
|
|
43
|
+
// create a resources folder
|
|
44
|
+
fs.mkdirSync([
|
|
45
|
+
workspacePath,
|
|
46
|
+
"/resources"
|
|
47
|
+
].join(""),
|
|
48
|
+
{ recursive: true }
|
|
49
|
+
);
|
|
41
50
|
const prompt_properties = [
|
|
42
51
|
{
|
|
43
52
|
name: 'inject_tankers',
|
|
@@ -118,112 +127,65 @@ function injectScripts(jtffci, env_mission) {
|
|
|
118
127
|
console.log(' inject_A2G scripts: ' + (/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_A2G));
|
|
119
128
|
console.log(' inject_mission specific scripts: ' + (/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_mission));
|
|
120
129
|
console.log(' inject_radio_presets scripts: ' + (/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_radio_presets));
|
|
121
|
-
|
|
122
130
|
// open the miz input file for reading
|
|
123
|
-
const
|
|
124
|
-
//
|
|
125
|
-
|
|
126
|
-
//
|
|
127
|
-
jtffci.mizlib.injectLuaFilesFromFolderIntoZipObject(mizObject, "lib");
|
|
128
|
-
// injection des fichiers son Généraux si repertoire resources/sounds/General present
|
|
129
|
-
await jtffci.mizlib.mizUpdateSingleSoundFolder(mizObject, 'General');
|
|
130
|
-
// On fait une sauvegarde dans le folder de destination
|
|
131
|
-
// fs.writeFileSync([
|
|
132
|
-
// jtffci.config.general.missionFolder,
|
|
133
|
-
// "/",
|
|
134
|
-
// path.parse(env_mission).name,
|
|
135
|
-
// "/",
|
|
136
|
-
// path.basename(env_mission)
|
|
137
|
-
// ].join(""),
|
|
138
|
-
// await mizObject.generateAsync({
|
|
139
|
-
// type: 'nodebuffer',
|
|
140
|
-
// streamFiles: true,
|
|
141
|
-
// compression: "DEFLATE",
|
|
142
|
-
// compressionOptions: {
|
|
143
|
-
// level: 9
|
|
144
|
-
// }
|
|
145
|
-
// })
|
|
146
|
-
// );
|
|
147
|
-
// injection des fichiers son Misc si repertoire resources/sounds/Misc present
|
|
148
|
-
await jtffci.mizlib.mizUpdateSingleSoundFolder(mizObject, 'Misc');
|
|
149
|
-
// On fait une sauvegarde dans le folder de destination
|
|
150
|
-
// fs.writeFileSync([
|
|
151
|
-
// jtffci.config.general.missionFolder,
|
|
152
|
-
// "/",
|
|
153
|
-
// path.parse(env_mission).name,
|
|
154
|
-
// "/",
|
|
155
|
-
// path.basename(env_mission)
|
|
156
|
-
// ].join(""),
|
|
157
|
-
// await mizObject.generateAsync({
|
|
158
|
-
// type: 'nodebuffer',
|
|
159
|
-
// streamFiles: true,
|
|
160
|
-
// compression: "DEFLATE",
|
|
161
|
-
// compressionOptions: {
|
|
162
|
-
// level: 9
|
|
163
|
-
// }
|
|
164
|
-
// })
|
|
165
|
-
// );
|
|
131
|
+
const originalMizObject = await jtffci.mizlib.getZipObjectFromMizPath(env_mission);
|
|
132
|
+
// copie de l'objet pour modification
|
|
133
|
+
let mizObject = originalMizObject;
|
|
134
|
+
// Open the mission Object and mapResource Object for modification
|
|
166
135
|
const missionObject = await jtffci.mizlib.getMissionObjectFromZipObject(mizObject);
|
|
167
136
|
let mapResourceObject = await jtffci.mizlib.getMapResourceObjectFromZipObject(mizObject);
|
|
137
|
+
// prepare settings array
|
|
168
138
|
let settingsArray = [];
|
|
139
|
+
let scriptsArray = [];
|
|
140
|
+
let libsArray = [];
|
|
169
141
|
if (Array.isArray(mapResourceObject)) {
|
|
170
142
|
if (mapResourceObject.length === 0) {
|
|
171
143
|
mapResourceObject = {};
|
|
172
144
|
}
|
|
173
145
|
}
|
|
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
|
-
'0x008000ff'
|
|
209
|
-
);
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
// injection
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
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;
|
|
226
|
-
// injection Librairies JTFF
|
|
146
|
+
// insertion des librairies externes dans la file d'attente
|
|
147
|
+
libsArray.push({
|
|
148
|
+
folder: 'lib',
|
|
149
|
+
scriptTitle: 'SplashDamage 2.0',
|
|
150
|
+
scripts: ['Splash_Damage_2_0.lua'],
|
|
151
|
+
timing: 9,
|
|
152
|
+
color: '0x008000ff'
|
|
153
|
+
});
|
|
154
|
+
libsArray.push({
|
|
155
|
+
folder: 'lib',
|
|
156
|
+
scriptTitle: 'Moose',
|
|
157
|
+
scripts: ['Moose_.lua'],
|
|
158
|
+
timing: 10,
|
|
159
|
+
color: '0x008000ff'
|
|
160
|
+
});
|
|
161
|
+
libsArray.push({
|
|
162
|
+
folder: 'lib',
|
|
163
|
+
scriptTitle: 'Mist',
|
|
164
|
+
scripts: ['mist_4_5_107.lua'],
|
|
165
|
+
timing: 12,
|
|
166
|
+
color: '0x008000ff'
|
|
167
|
+
});
|
|
168
|
+
libsArray.push({
|
|
169
|
+
folder: 'lib',
|
|
170
|
+
scriptTitle: 'Hercules',
|
|
171
|
+
scripts: ['Hercules_Cargo.lua'],
|
|
172
|
+
timing: 14,
|
|
173
|
+
color: '0x008000ff'
|
|
174
|
+
});
|
|
175
|
+
libsArray.push({
|
|
176
|
+
folder: 'lib',
|
|
177
|
+
scriptTitle: 'Skynet',
|
|
178
|
+
scripts: ['skynet-iads-compiled.lua'],
|
|
179
|
+
timing: 15,
|
|
180
|
+
color: '0x008000ff'
|
|
181
|
+
});
|
|
182
|
+
// injection des fichiers son Généraux si repertoire resources/sounds/General present
|
|
183
|
+
await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'General');
|
|
184
|
+
await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'General');
|
|
185
|
+
// injection des fichiers son Misc si repertoire resources/sounds/Misc present
|
|
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
|
|
227
189
|
settingsArray.push(
|
|
228
190
|
{
|
|
229
191
|
file: "settings-gemman.lua",
|
|
@@ -232,33 +194,46 @@ function injectScripts(jtffci, env_mission) {
|
|
|
232
194
|
file: "settings-global.lua",
|
|
233
195
|
},
|
|
234
196
|
);
|
|
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
|
-
|
|
197
|
+
libsArray.push({
|
|
198
|
+
folder: 'lib',
|
|
199
|
+
scriptTitle: 'GemMan',
|
|
200
|
+
scripts: ['gemman.lua'],
|
|
201
|
+
timing: 17,
|
|
202
|
+
color: '0xffff00ff'
|
|
203
|
+
});
|
|
204
|
+
libsArray.push({
|
|
205
|
+
folder: 'src',
|
|
206
|
+
scriptTitle: 'JTFF Libraries',
|
|
207
|
+
scripts: ['010-root_menus.lua', '020-mission_functions.lua'],
|
|
208
|
+
timing: 18,
|
|
209
|
+
color: '0xffff00ff'
|
|
210
|
+
});
|
|
211
|
+
// traitement de la file d'attente des librairies (injection des triggers et des fichiers lua)
|
|
212
|
+
for ( script of libsArray) {
|
|
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,
|
|
216
|
+
script.folder,
|
|
217
|
+
script.scripts,
|
|
218
|
+
script.scriptTitle + ' Load',
|
|
219
|
+
mizObject,
|
|
220
|
+
script.timing,
|
|
221
|
+
script.color
|
|
222
|
+
);
|
|
223
|
+
missionObject['trig'] = tuple.tObject;
|
|
224
|
+
missionObject['trigrules'] = tuple.trObject;
|
|
225
|
+
mapResourceObject = tuple.mrObject;
|
|
226
|
+
mizObject = zipObject;
|
|
227
|
+
}
|
|
228
|
+
// injection de la gestion des Set_Clients dans la file d'attente
|
|
229
|
+
scriptsArray.push({
|
|
230
|
+
folder: 'src',
|
|
231
|
+
scriptTitle: 'Set clients',
|
|
232
|
+
scripts: ['110-set_clients.lua'],
|
|
233
|
+
timing: 21,
|
|
234
|
+
color: '0xff0000ff'
|
|
235
|
+
});
|
|
236
|
+
// injection des Tankers et OndemandTankers dans la file d'attente
|
|
262
237
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_tankers)) {
|
|
263
238
|
settingsArray.push(
|
|
264
239
|
{
|
|
@@ -270,22 +245,19 @@ function injectScripts(jtffci, env_mission) {
|
|
|
270
245
|
objectName: "OnDemandTankersConfig"
|
|
271
246
|
},
|
|
272
247
|
);
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
'0xff0000ff'
|
|
281
|
-
);
|
|
282
|
-
missionObject['trig'] = tuple.tObject;
|
|
283
|
-
missionObject['trigrules'] = tuple.trObject;
|
|
284
|
-
mapResourceObject = tuple.mrObject;
|
|
248
|
+
scriptsArray.push({
|
|
249
|
+
folder: 'src',
|
|
250
|
+
scriptTitle: 'Tankers',
|
|
251
|
+
scripts: ['120-tankers.lua'],
|
|
252
|
+
timing: 22,
|
|
253
|
+
color: '0xff0000ff'
|
|
254
|
+
});
|
|
285
255
|
}
|
|
256
|
+
// injection des Airboss et Pedros dans la file d'attente
|
|
286
257
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_airboss)) {
|
|
287
258
|
// injection des fichiers son Airboss
|
|
288
|
-
|
|
259
|
+
await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'AIRBOSS');
|
|
260
|
+
await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'AIRBOSS');
|
|
289
261
|
settingsArray.push(
|
|
290
262
|
{
|
|
291
263
|
file: "settings-airboss.lua",
|
|
@@ -296,19 +268,15 @@ function injectScripts(jtffci, env_mission) {
|
|
|
296
268
|
objectName: "PedrosConfig"
|
|
297
269
|
},
|
|
298
270
|
);
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
'0xff0000ff'
|
|
307
|
-
);
|
|
308
|
-
missionObject['trig'] = tuple.tObject;
|
|
309
|
-
missionObject['trigrules'] = tuple.trObject;
|
|
310
|
-
mapResourceObject = tuple.mrObject;
|
|
271
|
+
scriptsArray.push({
|
|
272
|
+
folder: 'src',
|
|
273
|
+
scriptTitle: 'Airboss',
|
|
274
|
+
scripts: ['130-airboss.lua', '135-pedro.lua'],
|
|
275
|
+
timing: 23,
|
|
276
|
+
color: '0xff0000ff'
|
|
277
|
+
});
|
|
311
278
|
}
|
|
279
|
+
// injection des Beacons dans la file d'attente
|
|
312
280
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_beacons)) {
|
|
313
281
|
settingsArray.push(
|
|
314
282
|
{
|
|
@@ -316,19 +284,15 @@ function injectScripts(jtffci, env_mission) {
|
|
|
316
284
|
objectName: "BeaconsConfig"
|
|
317
285
|
},
|
|
318
286
|
);
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
'0xff0000ff'
|
|
327
|
-
);
|
|
328
|
-
missionObject['trig'] = tuple.tObject;
|
|
329
|
-
missionObject['trigrules'] = tuple.trObject;
|
|
330
|
-
mapResourceObject = tuple.mrObject;
|
|
287
|
+
scriptsArray.push({
|
|
288
|
+
folder: 'src',
|
|
289
|
+
scriptTitle: 'Beacons',
|
|
290
|
+
scripts: ['140-beacons.lua'],
|
|
291
|
+
timing: 24,
|
|
292
|
+
color: '0xff0000ff'
|
|
293
|
+
});
|
|
331
294
|
}
|
|
295
|
+
// injection des AWACS et OnDemandAwacs dans la file d'attente
|
|
332
296
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_awacs)) {
|
|
333
297
|
settingsArray.push(
|
|
334
298
|
{
|
|
@@ -340,41 +304,34 @@ function injectScripts(jtffci, env_mission) {
|
|
|
340
304
|
objectName: "AwacsOnDemandConfig"
|
|
341
305
|
},
|
|
342
306
|
);
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
'0xff0000ff'
|
|
351
|
-
);
|
|
352
|
-
missionObject['trig'] = tuple.tObject;
|
|
353
|
-
missionObject['trigrules'] = tuple.trObject;
|
|
354
|
-
mapResourceObject = tuple.mrObject;
|
|
307
|
+
scriptsArray.push({
|
|
308
|
+
folder: 'src',
|
|
309
|
+
scriptTitle: 'Awacs',
|
|
310
|
+
scripts: ['150-awacs.lua'],
|
|
311
|
+
timing: 25,
|
|
312
|
+
color: '0xff0000ff'
|
|
313
|
+
});
|
|
355
314
|
}
|
|
315
|
+
// injection des ATIS dans la file d'attente
|
|
356
316
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_atis)) {
|
|
357
317
|
// injection des fichiers son ATIS
|
|
358
|
-
|
|
318
|
+
await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'ATIS');
|
|
319
|
+
await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'ATIS');
|
|
359
320
|
settingsArray.push(
|
|
360
321
|
{
|
|
361
322
|
file: "settings-atis.lua",
|
|
362
323
|
objectName: "AtisConfig"
|
|
363
324
|
},
|
|
364
325
|
);
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
'0xff0000ff'
|
|
373
|
-
);
|
|
374
|
-
missionObject['trig'] = tuple.tObject;
|
|
375
|
-
missionObject['trigrules'] = tuple.trObject;
|
|
376
|
-
mapResourceObject = tuple.mrObject;
|
|
326
|
+
scriptsArray.push({
|
|
327
|
+
folder: 'src',
|
|
328
|
+
scriptTitle: 'ATIS',
|
|
329
|
+
scripts: ['160-atis.lua'],
|
|
330
|
+
timing: 26,
|
|
331
|
+
color: '0xff0000ff'
|
|
332
|
+
});
|
|
377
333
|
}
|
|
334
|
+
// injection des scripts A2A dans la file d'attente
|
|
378
335
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_A2A)) {
|
|
379
336
|
settingsArray.push(
|
|
380
337
|
{
|
|
@@ -398,44 +355,38 @@ function injectScripts(jtffci, env_mission) {
|
|
|
398
355
|
objectName: "InterceptConfig"
|
|
399
356
|
},
|
|
400
357
|
);
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
'0xff0000ff'
|
|
409
|
-
);
|
|
410
|
-
missionObject['trig'] = tuple.tObject;
|
|
411
|
-
missionObject['trigrules'] = tuple.trObject;
|
|
412
|
-
mapResourceObject = tuple.mrObject;
|
|
358
|
+
scriptsArray.push({
|
|
359
|
+
folder: 'src',
|
|
360
|
+
scriptTitle: 'Air To Air',
|
|
361
|
+
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'],
|
|
362
|
+
timing: 27,
|
|
363
|
+
color: '0xff0000ff'
|
|
364
|
+
});
|
|
413
365
|
}
|
|
366
|
+
// injection des CTLD dans la file d'attente
|
|
414
367
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_Logistics)) {
|
|
415
368
|
// injection des fichiers son CTLD
|
|
416
|
-
await jtffci.mizlib.
|
|
369
|
+
await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'CTLD');
|
|
370
|
+
await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'CTLD');
|
|
417
371
|
settingsArray.push(
|
|
418
372
|
{
|
|
419
373
|
file: "settings-logistics.lua",
|
|
420
374
|
objectName: "CTLDConfig"
|
|
421
375
|
},
|
|
422
376
|
);
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
'0xff0000ff'
|
|
431
|
-
);
|
|
432
|
-
missionObject['trig'] = tuple.tObject;
|
|
433
|
-
missionObject['trigrules'] = tuple.trObject;
|
|
434
|
-
mapResourceObject = tuple.mrObject;
|
|
377
|
+
scriptsArray.push({
|
|
378
|
+
folder: 'src',
|
|
379
|
+
scriptTitle: 'Logistics',
|
|
380
|
+
scripts: ['180-logistics.lua'],
|
|
381
|
+
timing: 28,
|
|
382
|
+
color: '0xff0000ff'
|
|
383
|
+
});
|
|
435
384
|
}
|
|
385
|
+
// injection des scripts A2G dans la file d'attente
|
|
436
386
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_A2G)) {
|
|
437
387
|
// injection des fichiers son Range
|
|
438
|
-
|
|
388
|
+
await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'RANGE');
|
|
389
|
+
await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'RANGE');
|
|
439
390
|
settingsArray.push(
|
|
440
391
|
{
|
|
441
392
|
file: "settings-ranges.lua",
|
|
@@ -462,140 +413,86 @@ function injectScripts(jtffci, env_mission) {
|
|
|
462
413
|
objectName: "SkynetConfig"
|
|
463
414
|
},
|
|
464
415
|
);
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
'0xff0000ff'
|
|
473
|
-
);
|
|
474
|
-
missionObject['trig'] = tuple.tObject;
|
|
475
|
-
missionObject['trigrules'] = tuple.trObject;
|
|
476
|
-
mapResourceObject = tuple.mrObject;
|
|
416
|
+
scriptsArray.push({
|
|
417
|
+
folder: 'src',
|
|
418
|
+
scriptTitle: 'Air To Ground',
|
|
419
|
+
scripts: ['190-ranges.lua', '191-sams.lua', '193-training_ranges.lua', '195-reaper-ondemand.lua', '196-fac_ranges.lua', '199-skynet.lua'],
|
|
420
|
+
timing: 29,
|
|
421
|
+
color: '0xff0000ff'
|
|
422
|
+
});
|
|
477
423
|
}
|
|
424
|
+
// injection du script spécifique de mission dans la file d'attente
|
|
478
425
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_mission)) {
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
// path.parse(env_mission).name,
|
|
499
|
-
// "/src/200-mission.lua"
|
|
500
|
-
// ].join("")
|
|
501
|
-
// );
|
|
502
|
-
// const inputZip = await zip.generateAsync({
|
|
503
|
-
// type: 'nodebuffer',
|
|
504
|
-
// streamFiles: true,
|
|
505
|
-
// compression: "DEFLATE",
|
|
506
|
-
// compressionOptions: {
|
|
507
|
-
// level: 9
|
|
508
|
-
// }
|
|
509
|
-
// });
|
|
510
|
-
// fs.writeFileSync([
|
|
511
|
-
// jtffci.config.general.missionFolder,
|
|
512
|
-
// "/",
|
|
513
|
-
// path.parse(env_mission).name,
|
|
514
|
-
// "/",
|
|
515
|
-
// path.basename(env_mission)
|
|
516
|
-
// ].join(""),
|
|
517
|
-
// inputZip);
|
|
518
|
-
tuple = jtffci.mizlib.injectLuaScriptsInMissionObject(
|
|
519
|
-
missionObject['trig'],
|
|
520
|
-
missionObject['trigrules'],
|
|
521
|
-
mapResourceObject,
|
|
522
|
-
'Mission specific',
|
|
523
|
-
['200-mission.lua'],
|
|
524
|
-
30,
|
|
525
|
-
'0xff0000ff'
|
|
426
|
+
scriptsArray.push({
|
|
427
|
+
folder: 'src',
|
|
428
|
+
scriptTitle: 'Mission specific',
|
|
429
|
+
scripts: ['200-mission.lua'],
|
|
430
|
+
timing: 30,
|
|
431
|
+
color: '0xff0000ff'
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
// traitement de la file d'attente des scripts (injection des triggers et des fichiers lua)
|
|
435
|
+
for ( script of scriptsArray) {
|
|
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,
|
|
439
|
+
script.folder,
|
|
440
|
+
script.scripts,
|
|
441
|
+
script.scriptTitle,
|
|
442
|
+
mizObject,
|
|
443
|
+
script.timing,
|
|
444
|
+
script.color
|
|
526
445
|
);
|
|
527
446
|
missionObject['trig'] = tuple.tObject;
|
|
528
447
|
missionObject['trigrules'] = tuple.trObject;
|
|
529
448
|
mapResourceObject = tuple.mrObject;
|
|
449
|
+
mizObject = zipObject;
|
|
530
450
|
}
|
|
451
|
+
// injection des preset radio dans les avions humains
|
|
531
452
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_radio_presets)) {
|
|
532
453
|
// injection des preset radio
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
path.parse(env_mission).name,
|
|
537
|
-
"/",
|
|
538
|
-
path.basename(env_mission)
|
|
539
|
-
].join("") + ": injecting radio presets declared in resources/radios/" + path.parse(env_mission).name);
|
|
540
|
-
await jtffci.mizlib.mizUpdateRadioPresets(mizObject, 'resources/radios/' + path.parse(env_mission).name);
|
|
541
|
-
}
|
|
542
|
-
//injection du trigger des settings
|
|
543
|
-
for (let settingsObject of settingsArray) {
|
|
544
|
-
fs.copyFileSync(
|
|
545
|
-
[
|
|
546
|
-
'templates/settings/',
|
|
547
|
-
settingsObject.file
|
|
548
|
-
].join(""),
|
|
549
|
-
[
|
|
550
|
-
jtffci.config.general.missionFolder,
|
|
551
|
-
"/",
|
|
552
|
-
path.parse(env_mission).name,
|
|
553
|
-
"/settings/",
|
|
554
|
-
settingsObject.file
|
|
555
|
-
].join("")
|
|
556
|
-
);
|
|
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');
|
|
557
457
|
}
|
|
558
|
-
|
|
559
|
-
[
|
|
560
|
-
jtffci.config.general.missionFolder,
|
|
561
|
-
"/",
|
|
562
|
-
path.parse(env_mission).name,
|
|
563
|
-
"/settings"
|
|
564
|
-
].join("")
|
|
565
|
-
);
|
|
458
|
+
// traitement de la file d'attente des settings (injection des triggers et des fichiers lua)
|
|
566
459
|
if (settingsArray.length > 0) {
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
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),
|
|
571
465
|
'Mission Settings',
|
|
572
|
-
|
|
466
|
+
mizObject,
|
|
573
467
|
15,
|
|
574
468
|
'0xffff00ff'
|
|
575
469
|
);
|
|
576
470
|
missionObject['trig'] = tuple.tObject;
|
|
577
471
|
missionObject['trigrules'] = tuple.trObject;
|
|
578
472
|
mapResourceObject = tuple.mrObject;
|
|
473
|
+
mizObject = zipObject;
|
|
579
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
|
+
);
|
|
580
489
|
// Sauvegarde de la mission avec scripts injectés
|
|
581
490
|
await jtffci.mizlib.mizInjectMissionDataFile(
|
|
582
|
-
|
|
583
|
-
jtffci.config.general.missionFolder,
|
|
584
|
-
"/",
|
|
585
|
-
path.parse(env_mission).name,
|
|
586
|
-
"/",
|
|
587
|
-
path.basename(env_mission)
|
|
588
|
-
].join(""),
|
|
491
|
+
destinationMizFilePath,
|
|
589
492
|
{ mission: missionObject }
|
|
590
493
|
);
|
|
591
494
|
await jtffci.mizlib.mizInjectMapResourceFile(
|
|
592
|
-
|
|
593
|
-
jtffci.config.general.missionFolder,
|
|
594
|
-
"/",
|
|
595
|
-
path.parse(env_mission).name,
|
|
596
|
-
"/",
|
|
597
|
-
path.basename(env_mission)
|
|
598
|
-
].join(""),
|
|
495
|
+
destinationMizFilePath,
|
|
599
496
|
{ mapResource: mapResourceObject }
|
|
600
497
|
);
|
|
601
498
|
console.log('...Done...');
|