@jtff/miztemplate-lib 2.1.6 → 2.2.0
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/index.js +2 -1
- package/lib/jtff-lib-ci.js +177 -173
- package/package.json +4 -4
- package/scripts/build.js +1 -1
- package/scripts/inject-scripts.js +50 -37
- package/scripts/template-update.js +1 -1
package/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const MizTemplateCI = require("./lib/jtff-lib-ci.js");
|
|
1
|
+
const {MizTemplateCI,MizLib} = require("./lib/jtff-lib-ci.js");
|
|
2
2
|
const build = require("./scripts/build.js");
|
|
3
3
|
const clean = require("./scripts/clean.js");
|
|
4
4
|
const ftpupload = require("./scripts/ftpupload.js");
|
|
@@ -12,6 +12,7 @@ const templateUpdate = require("./scripts/template-update.js");
|
|
|
12
12
|
|
|
13
13
|
module.exports = {
|
|
14
14
|
MizTemplateCI: MizTemplateCI,
|
|
15
|
+
MizLib: MizLib,
|
|
15
16
|
build:build,
|
|
16
17
|
clean:clean,
|
|
17
18
|
ftpupload:ftpupload,
|
package/lib/jtff-lib-ci.js
CHANGED
|
@@ -10,51 +10,9 @@ const { format, parse } = require("lua-json");
|
|
|
10
10
|
const ftpClient = require('ftp');
|
|
11
11
|
|
|
12
12
|
class MizTemplateCI{
|
|
13
|
-
|
|
14
13
|
constructor(config) {
|
|
15
14
|
this.config = config
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
injectScripts(tObject, trObject, mrObject, strTitle, scriptFilesArray, timingInSeconds, hexColor) {
|
|
19
|
-
let nextIndex = Object.keys(trObject).length + 1;
|
|
20
|
-
if (nextIndex === 1) {
|
|
21
|
-
tObject['actions'] = {};
|
|
22
|
-
tObject['func'] = {};
|
|
23
|
-
tObject['conditions'] = {};
|
|
24
|
-
tObject['flag'] = {};
|
|
25
|
-
trObject = {};
|
|
26
|
-
}
|
|
27
|
-
let actionSentence = "";
|
|
28
|
-
let actionsObject = {};
|
|
29
|
-
for (const [index, scriptFile] of scriptFilesArray.entries()) {
|
|
30
|
-
actionSentence += "a_do_script_file(getValueResourceByKey(\"" + scriptFile + "\")); "
|
|
31
|
-
actionsObject[index + 1] = {
|
|
32
|
-
file: scriptFile,
|
|
33
|
-
predicate: 'a_do_script_file',
|
|
34
|
-
};
|
|
35
|
-
mrObject[scriptFile] = scriptFile;
|
|
36
|
-
}
|
|
37
|
-
actionSentence += "mission.trig.func[" + nextIndex + "]=nil;"
|
|
38
|
-
tObject['actions'][nextIndex] = actionSentence;
|
|
39
|
-
tObject['func'][nextIndex] = "if mission.trig.conditions[" + nextIndex + "]() then mission.trig.actions[" + nextIndex + "]() end";
|
|
40
|
-
tObject['conditions'][nextIndex] = "return(c_time_after(" + timingInSeconds + ") )";
|
|
41
|
-
tObject['flag'][nextIndex] = true;
|
|
42
|
-
trObject[nextIndex] = {
|
|
43
|
-
rules: {
|
|
44
|
-
1: {
|
|
45
|
-
coalitionlist: 'red',
|
|
46
|
-
seconds: timingInSeconds,
|
|
47
|
-
predicate: 'c_time_after',
|
|
48
|
-
zone: ''
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
eventlist: '',
|
|
52
|
-
comment: strTitle,
|
|
53
|
-
actions: actionsObject,
|
|
54
|
-
predicate: 'triggerOnce',
|
|
55
|
-
colorItem: hexColor
|
|
56
|
-
};
|
|
57
|
-
return { tObject: tObject, trObject: trObject, mrObject: mrObject };
|
|
15
|
+
this.mizlib = new MizLib()
|
|
58
16
|
}
|
|
59
17
|
|
|
60
18
|
getVersion() {
|
|
@@ -104,6 +62,181 @@ class MizTemplateCI{
|
|
|
104
62
|
return newVersionObject;
|
|
105
63
|
}
|
|
106
64
|
|
|
65
|
+
getDestinationMizFilePaths() {
|
|
66
|
+
const returnArray = this.config.missionTemplates.map(missionTemplate => {
|
|
67
|
+
return this.config.general.missionFolder + '/'
|
|
68
|
+
+ this.config.general.missionPrefix + '_'
|
|
69
|
+
+ missionTemplate.theatre + '_'
|
|
70
|
+
+ this.config.general.missionSuffix
|
|
71
|
+
+ '_' + this.config.general.missionVersion + '.miz'
|
|
72
|
+
});
|
|
73
|
+
return returnArray;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
getGeneratedMizFilePaths() {
|
|
77
|
+
return fs.readdirSync(this.config.general.missionFolder + '/')
|
|
78
|
+
.filter(file => file.endsWith((".miz")))
|
|
79
|
+
.map(mizFile => {
|
|
80
|
+
return this.config.general.missionFolder + '/' + mizFile;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
uploadMizFiles(credentials) {
|
|
85
|
+
const destFtpServer = new ftpClient();
|
|
86
|
+
const configObject = this.config;
|
|
87
|
+
|
|
88
|
+
destFtpServer.connect({
|
|
89
|
+
host: credentials.host,
|
|
90
|
+
secure: false,
|
|
91
|
+
user: credentials.user,
|
|
92
|
+
password: credentials.password
|
|
93
|
+
});
|
|
94
|
+
destFtpServer.on('ready', function () {
|
|
95
|
+
destFtpServer.cwd(credentials.folder, function (err, curDir) {
|
|
96
|
+
if (err) throw err;
|
|
97
|
+
Promise.all(
|
|
98
|
+
fs.readdirSync(configObject.general.missionFolder)
|
|
99
|
+
.filter(file => file.endsWith('.pub.json'))
|
|
100
|
+
.map(file => {
|
|
101
|
+
return new Promise((resolve, reject) => {
|
|
102
|
+
// console.log(configObject.general.missionFolder+'/'+file);
|
|
103
|
+
fs.readFile(configObject.general.missionFolder + '/' + file, function (err, data) {
|
|
104
|
+
if (err) reject(err);
|
|
105
|
+
data = JSON.parse(data.toString());
|
|
106
|
+
// console.log(data);
|
|
107
|
+
destFtpServer.put(data.mizFiles, path.basename(data.mizFiles), false, function (err) {
|
|
108
|
+
if (err) reject(err);
|
|
109
|
+
console.log('file ' + path.basename(data.mizFiles) + ' uploaded on DCS Server');
|
|
110
|
+
resolve(path.basename(data.mizFiles));
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
})
|
|
114
|
+
})
|
|
115
|
+
).then(() => {
|
|
116
|
+
destFtpServer.end();
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
publishMizFiles(credentials) {
|
|
123
|
+
const configObject = this.config;
|
|
124
|
+
const jwtClient = new google.auth.JWT(
|
|
125
|
+
credentials.client_email,
|
|
126
|
+
null,
|
|
127
|
+
credentials.private_key,
|
|
128
|
+
configObject.google.scopes
|
|
129
|
+
);
|
|
130
|
+
jwtClient.authorize(function (err, tokens) {
|
|
131
|
+
if (err) {
|
|
132
|
+
console.log(err);
|
|
133
|
+
throw err;
|
|
134
|
+
} else {
|
|
135
|
+
console.log("Successfully connected!");
|
|
136
|
+
const drive = google.drive({ version: 'v3', jwtClient });
|
|
137
|
+
fs.readdirSync(configObject.general.missionFolder)
|
|
138
|
+
.filter(file => file.endsWith('.pub.json'))
|
|
139
|
+
.map(file => {
|
|
140
|
+
// console.log(configObject.general.missionFolder+'/'+file);
|
|
141
|
+
fs.readFile(configObject.general.missionFolder + '/' + file, function (err, data) {
|
|
142
|
+
if (err) throw err;
|
|
143
|
+
data = JSON.parse(data.toString());
|
|
144
|
+
// console.log(data);
|
|
145
|
+
drive.files.list({
|
|
146
|
+
q: `'${data.gdriveFolder}' in parents and trashed = false and name = '${path.basename(data.mizFiles)}'`,
|
|
147
|
+
auth: jwtClient
|
|
148
|
+
}).then(rsp => {
|
|
149
|
+
// console.log(rsp.data.files);
|
|
150
|
+
// console.log(path.basename(data.mizFiles));
|
|
151
|
+
const fileMetadata = {
|
|
152
|
+
'name': path.basename(data.mizFiles),
|
|
153
|
+
parents: [data.gdriveFolder]
|
|
154
|
+
};
|
|
155
|
+
const media = {
|
|
156
|
+
mimeType: 'application/zip',
|
|
157
|
+
body: fs.createReadStream(data.mizFiles)
|
|
158
|
+
};
|
|
159
|
+
if (rsp.data.files.length > 0) {
|
|
160
|
+
drive.files.update({
|
|
161
|
+
fileId: rsp.data.files[0].id,
|
|
162
|
+
auth: jwtClient,
|
|
163
|
+
media: media
|
|
164
|
+
}, (err, file) => {
|
|
165
|
+
if (err) {
|
|
166
|
+
// Handle error
|
|
167
|
+
console.error(err);
|
|
168
|
+
} else {
|
|
169
|
+
console.log('File updated Id: ', file.id);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
} else {
|
|
173
|
+
drive.files.create({
|
|
174
|
+
resource: fileMetadata,
|
|
175
|
+
media: media,
|
|
176
|
+
auth: jwtClient,
|
|
177
|
+
fields: 'id'
|
|
178
|
+
}, (err, file) => {
|
|
179
|
+
if (err) {
|
|
180
|
+
// Handle error
|
|
181
|
+
console.error(err);
|
|
182
|
+
} else {
|
|
183
|
+
console.log('File created Id: ', file.id);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
class MizLib{
|
|
196
|
+
constructor() {
|
|
197
|
+
}
|
|
198
|
+
injectScripts(tObject, trObject, mrObject, strTitle, scriptFilesArray, timingInSeconds, hexColor) {
|
|
199
|
+
let nextIndex = Object.keys(trObject).length + 1;
|
|
200
|
+
if (nextIndex === 1) {
|
|
201
|
+
tObject['actions'] = {};
|
|
202
|
+
tObject['func'] = {};
|
|
203
|
+
tObject['conditions'] = {};
|
|
204
|
+
tObject['flag'] = {};
|
|
205
|
+
trObject = {};
|
|
206
|
+
}
|
|
207
|
+
let actionSentence = "";
|
|
208
|
+
let actionsObject = {};
|
|
209
|
+
for (const [index, scriptFile] of scriptFilesArray.entries()) {
|
|
210
|
+
actionSentence += "a_do_script_file(getValueResourceByKey(\"" + scriptFile + "\")); "
|
|
211
|
+
actionsObject[index + 1] = {
|
|
212
|
+
file: scriptFile,
|
|
213
|
+
predicate: 'a_do_script_file',
|
|
214
|
+
};
|
|
215
|
+
mrObject[scriptFile] = scriptFile;
|
|
216
|
+
}
|
|
217
|
+
actionSentence += "mission.trig.func[" + nextIndex + "]=nil;"
|
|
218
|
+
tObject['actions'][nextIndex] = actionSentence;
|
|
219
|
+
tObject['func'][nextIndex] = "if mission.trig.conditions[" + nextIndex + "]() then mission.trig.actions[" + nextIndex + "]() end";
|
|
220
|
+
tObject['conditions'][nextIndex] = "return(c_time_after(" + timingInSeconds + ") )";
|
|
221
|
+
tObject['flag'][nextIndex] = true;
|
|
222
|
+
trObject[nextIndex] = {
|
|
223
|
+
rules: {
|
|
224
|
+
1: {
|
|
225
|
+
coalitionlist: 'red',
|
|
226
|
+
seconds: timingInSeconds,
|
|
227
|
+
predicate: 'c_time_after',
|
|
228
|
+
zone: ''
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
eventlist: '',
|
|
232
|
+
comment: strTitle,
|
|
233
|
+
actions: actionsObject,
|
|
234
|
+
predicate: 'triggerOnce',
|
|
235
|
+
colorItem: hexColor
|
|
236
|
+
};
|
|
237
|
+
return { tObject: tObject, trObject: trObject, mrObject: mrObject };
|
|
238
|
+
}
|
|
239
|
+
|
|
107
240
|
async mizOpen(mizPath) {
|
|
108
241
|
var MizFile = new jszip();
|
|
109
242
|
const mizData = fs.readFileSync(mizPath);
|
|
@@ -360,135 +493,6 @@ class MizTemplateCI{
|
|
|
360
493
|
let luaTable = 'return { \n' + await this.mizOpenMapResource(await this.mizOpen(MizPath)) + ' }';
|
|
361
494
|
return parse(luaTable).mapResource;
|
|
362
495
|
}
|
|
363
|
-
|
|
364
|
-
getDestinationMizFilePaths() {
|
|
365
|
-
const returnArray = this.config.missionTemplates.map(missionTemplate => {
|
|
366
|
-
return this.config.general.missionFolder + '/'
|
|
367
|
-
+ this.config.general.missionPrefix + '_'
|
|
368
|
-
+ missionTemplate.theatre + '_'
|
|
369
|
-
+ this.config.general.missionSuffix
|
|
370
|
-
+ '_' + this.config.general.missionVersion + '.miz'
|
|
371
|
-
});
|
|
372
|
-
return returnArray;
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
getGeneratedMizFilePaths() {
|
|
376
|
-
return fs.readdirSync(this.config.general.missionFolder + '/')
|
|
377
|
-
.filter(file => file.endsWith((".miz")))
|
|
378
|
-
.map(mizFile => {
|
|
379
|
-
return this.config.general.missionFolder + '/' + mizFile;
|
|
380
|
-
});
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
uploadMizFiles(credentials) {
|
|
384
|
-
const destFtpServer = new ftpClient();
|
|
385
|
-
const configObject = this.config;
|
|
386
|
-
|
|
387
|
-
destFtpServer.connect({
|
|
388
|
-
host: credentials.host,
|
|
389
|
-
secure: false,
|
|
390
|
-
user: credentials.user,
|
|
391
|
-
password: credentials.password
|
|
392
|
-
});
|
|
393
|
-
destFtpServer.on('ready', function () {
|
|
394
|
-
destFtpServer.cwd(credentials.folder, function (err, curDir) {
|
|
395
|
-
if (err) throw err;
|
|
396
|
-
Promise.all(
|
|
397
|
-
fs.readdirSync(configObject.general.missionFolder)
|
|
398
|
-
.filter(file => file.endsWith('.pub.json'))
|
|
399
|
-
.map(file => {
|
|
400
|
-
return new Promise((resolve, reject) => {
|
|
401
|
-
// console.log(configObject.general.missionFolder+'/'+file);
|
|
402
|
-
fs.readFile(configObject.general.missionFolder + '/' + file, function (err, data) {
|
|
403
|
-
if (err) reject(err);
|
|
404
|
-
data = JSON.parse(data.toString());
|
|
405
|
-
// console.log(data);
|
|
406
|
-
destFtpServer.put(data.mizFiles, path.basename(data.mizFiles), false, function (err) {
|
|
407
|
-
if (err) reject(err);
|
|
408
|
-
console.log('file ' + path.basename(data.mizFiles) + ' uploaded on DCS Server');
|
|
409
|
-
resolve(path.basename(data.mizFiles));
|
|
410
|
-
});
|
|
411
|
-
});
|
|
412
|
-
})
|
|
413
|
-
})
|
|
414
|
-
).then(() => {
|
|
415
|
-
destFtpServer.end();
|
|
416
|
-
});
|
|
417
|
-
});
|
|
418
|
-
});
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
publishMizFiles(credentials) {
|
|
422
|
-
const configObject = this.config;
|
|
423
|
-
const jwtClient = new google.auth.JWT(
|
|
424
|
-
credentials.client_email,
|
|
425
|
-
null,
|
|
426
|
-
credentials.private_key,
|
|
427
|
-
configObject.google.scopes
|
|
428
|
-
);
|
|
429
|
-
jwtClient.authorize(function (err, tokens) {
|
|
430
|
-
if (err) {
|
|
431
|
-
console.log(err);
|
|
432
|
-
throw err;
|
|
433
|
-
} else {
|
|
434
|
-
console.log("Successfully connected!");
|
|
435
|
-
const drive = google.drive({ version: 'v3', jwtClient });
|
|
436
|
-
fs.readdirSync(configObject.general.missionFolder)
|
|
437
|
-
.filter(file => file.endsWith('.pub.json'))
|
|
438
|
-
.map(file => {
|
|
439
|
-
// console.log(configObject.general.missionFolder+'/'+file);
|
|
440
|
-
fs.readFile(configObject.general.missionFolder + '/' + file, function (err, data) {
|
|
441
|
-
if (err) throw err;
|
|
442
|
-
data = JSON.parse(data.toString());
|
|
443
|
-
// console.log(data);
|
|
444
|
-
drive.files.list({
|
|
445
|
-
q: `'${data.gdriveFolder}' in parents and trashed = false and name = '${path.basename(data.mizFiles)}'`,
|
|
446
|
-
auth: jwtClient
|
|
447
|
-
}).then(rsp => {
|
|
448
|
-
// console.log(rsp.data.files);
|
|
449
|
-
// console.log(path.basename(data.mizFiles));
|
|
450
|
-
const fileMetadata = {
|
|
451
|
-
'name': path.basename(data.mizFiles),
|
|
452
|
-
parents: [data.gdriveFolder]
|
|
453
|
-
};
|
|
454
|
-
const media = {
|
|
455
|
-
mimeType: 'application/zip',
|
|
456
|
-
body: fs.createReadStream(data.mizFiles)
|
|
457
|
-
};
|
|
458
|
-
if (rsp.data.files.length > 0) {
|
|
459
|
-
drive.files.update({
|
|
460
|
-
fileId: rsp.data.files[0].id,
|
|
461
|
-
auth: jwtClient,
|
|
462
|
-
media: media
|
|
463
|
-
}, (err, file) => {
|
|
464
|
-
if (err) {
|
|
465
|
-
// Handle error
|
|
466
|
-
console.error(err);
|
|
467
|
-
} else {
|
|
468
|
-
console.log('File updated Id: ', file.id);
|
|
469
|
-
}
|
|
470
|
-
});
|
|
471
|
-
} else {
|
|
472
|
-
drive.files.create({
|
|
473
|
-
resource: fileMetadata,
|
|
474
|
-
media: media,
|
|
475
|
-
auth: jwtClient,
|
|
476
|
-
fields: 'id'
|
|
477
|
-
}, (err, file) => {
|
|
478
|
-
if (err) {
|
|
479
|
-
// Handle error
|
|
480
|
-
console.error(err);
|
|
481
|
-
} else {
|
|
482
|
-
console.log('File created Id: ', file.id);
|
|
483
|
-
}
|
|
484
|
-
});
|
|
485
|
-
}
|
|
486
|
-
});
|
|
487
|
-
});
|
|
488
|
-
});
|
|
489
|
-
}
|
|
490
|
-
});
|
|
491
|
-
}
|
|
492
496
|
}
|
|
493
497
|
|
|
494
|
-
module.exports = MizTemplateCI;
|
|
498
|
+
module.exports = {MizTemplateCI, MizLib};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jtff/miztemplate-lib",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "JTFF mission template library",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"files": [
|
|
@@ -31,10 +31,10 @@
|
|
|
31
31
|
"fs": "^0.0.1-security",
|
|
32
32
|
"ftp": "^0.3.10",
|
|
33
33
|
"googleapis": "^92.0.0",
|
|
34
|
-
"jszip": "^3.
|
|
35
|
-
"lua-json": "^1.0.
|
|
34
|
+
"jszip": "^3.10.1",
|
|
35
|
+
"lua-json": "^1.0.1",
|
|
36
36
|
"path": "^0.12.7",
|
|
37
37
|
"prompt": "^1.3.0",
|
|
38
|
-
"util": "^0.12.
|
|
38
|
+
"util": "^0.12.5"
|
|
39
39
|
}
|
|
40
40
|
}
|
package/scripts/build.js
CHANGED
|
@@ -3,7 +3,7 @@ const fs = require("fs");
|
|
|
3
3
|
function build(jtffci) {
|
|
4
4
|
fs.mkdirSync(jtffci.config.general.missionFolder, { recursive: true });
|
|
5
5
|
jtffci.config.missionTemplates.forEach(async missionTemplate => {
|
|
6
|
-
await jtffci.mizUpdate([
|
|
6
|
+
await jtffci.mizlib.mizUpdate([
|
|
7
7
|
missionTemplate.prefix,
|
|
8
8
|
'_',
|
|
9
9
|
missionTemplate.theatre,
|
|
@@ -116,15 +116,15 @@ function injectScripts(jtffci, env_mission) {
|
|
|
116
116
|
console.log(' inject_mission specific scripts: ' + (/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_mission));
|
|
117
117
|
console.log(' inject_radio_presets scripts: ' + (/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_radio_presets));
|
|
118
118
|
|
|
119
|
-
const zip = await jtffci.mizOpen(env_mission);
|
|
120
|
-
jtffci.mizUpdateSrcLuaFiles(zip);
|
|
121
|
-
jtffci.mizUpdateLibLuaFiles(zip);
|
|
119
|
+
const zip = await jtffci.mizlib.mizOpen(env_mission);
|
|
120
|
+
jtffci.mizlib.mizUpdateSrcLuaFiles(zip);
|
|
121
|
+
jtffci.mizlib.mizUpdateLibLuaFiles(zip);
|
|
122
122
|
// injection des fichiers son Generaux
|
|
123
123
|
// const generalSoundFolder = zip.remove('General').folder('General');
|
|
124
|
-
// await jtffci.addFilesToZip(generalSoundFolder, 'resources/sounds/General', fs.readdirSync('resources/sounds/General'));
|
|
124
|
+
// await jtffci.mizlib.addFilesToZip(generalSoundFolder, 'resources/sounds/General', fs.readdirSync('resources/sounds/General'));
|
|
125
125
|
// injection des fichiers son Misc
|
|
126
126
|
const generalSoundFolder = zip.remove('Misc').folder('Misc');
|
|
127
|
-
await jtffci.addFilesToZip(generalSoundFolder, 'resources/sounds/Misc', fs.readdirSync('resources/sounds/Misc'));
|
|
127
|
+
await jtffci.mizlib.addFilesToZip(generalSoundFolder, 'resources/sounds/Misc', fs.readdirSync('resources/sounds/Misc'));
|
|
128
128
|
|
|
129
129
|
const inputZip = await zip.generateAsync({
|
|
130
130
|
type: 'nodebuffer',
|
|
@@ -144,7 +144,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
144
144
|
inputZip);
|
|
145
145
|
|
|
146
146
|
|
|
147
|
-
const missionObject = await jtffci.getMissionObjectFromMiz(
|
|
147
|
+
const missionObject = await jtffci.mizlib.getMissionObjectFromMiz(
|
|
148
148
|
[
|
|
149
149
|
jtffci.config.general.missionFolder,
|
|
150
150
|
"/",
|
|
@@ -153,7 +153,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
153
153
|
path.basename(env_mission)
|
|
154
154
|
].join("")
|
|
155
155
|
);
|
|
156
|
-
let mapResourceObject = await jtffci.getMapResourceObjectFromMiz(
|
|
156
|
+
let mapResourceObject = await jtffci.mizlib.getMapResourceObjectFromMiz(
|
|
157
157
|
[
|
|
158
158
|
jtffci.config.general.missionFolder,
|
|
159
159
|
"/",
|
|
@@ -167,8 +167,21 @@ function injectScripts(jtffci, env_mission) {
|
|
|
167
167
|
mapResourceObject = {};
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
|
+
// injection SplashDamage
|
|
171
|
+
let tuple = jtffci.mizlib.injectScripts(
|
|
172
|
+
missionObject['trig'],
|
|
173
|
+
missionObject['trigrules'],
|
|
174
|
+
mapResourceObject,
|
|
175
|
+
'SplashDamage load',
|
|
176
|
+
['Splash_Damage_2_0.lua'],
|
|
177
|
+
9,
|
|
178
|
+
'0x008000ff'
|
|
179
|
+
);
|
|
180
|
+
missionObject['trig'] = tuple.tObject;
|
|
181
|
+
missionObject['trigrules'] = tuple.trObject;
|
|
182
|
+
mapResourceObject = tuple.mrObject;
|
|
170
183
|
// injection Moose
|
|
171
|
-
|
|
184
|
+
tuple = jtffci.mizlib.injectScripts(
|
|
172
185
|
missionObject['trig'],
|
|
173
186
|
missionObject['trigrules'],
|
|
174
187
|
mapResourceObject,
|
|
@@ -181,7 +194,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
181
194
|
missionObject['trigrules'] = tuple.trObject;
|
|
182
195
|
mapResourceObject = tuple.mrObject;
|
|
183
196
|
// injection Mist
|
|
184
|
-
tuple = jtffci.injectScripts(
|
|
197
|
+
tuple = jtffci.mizlib.injectScripts(
|
|
185
198
|
missionObject['trig'],
|
|
186
199
|
missionObject['trigrules'],
|
|
187
200
|
mapResourceObject,
|
|
@@ -194,7 +207,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
194
207
|
missionObject['trigrules'] = tuple.trObject;
|
|
195
208
|
mapResourceObject = tuple.mrObject;
|
|
196
209
|
// injection Skynet
|
|
197
|
-
tuple = jtffci.injectScripts(
|
|
210
|
+
tuple = jtffci.mizlib.injectScripts(
|
|
198
211
|
missionObject['trig'],
|
|
199
212
|
missionObject['trigrules'],
|
|
200
213
|
mapResourceObject,
|
|
@@ -207,7 +220,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
207
220
|
missionObject['trigrules'] = tuple.trObject;
|
|
208
221
|
mapResourceObject = tuple.mrObject;
|
|
209
222
|
// injection Librairies JTFF
|
|
210
|
-
tuple = jtffci.injectScripts(
|
|
223
|
+
tuple = jtffci.mizlib.injectScripts(
|
|
211
224
|
missionObject['trig'],
|
|
212
225
|
missionObject['trigrules'],
|
|
213
226
|
mapResourceObject,
|
|
@@ -227,7 +240,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
227
240
|
},
|
|
228
241
|
);
|
|
229
242
|
// injection de la gestion des Set_Clients
|
|
230
|
-
tuple = jtffci.injectScripts(
|
|
243
|
+
tuple = jtffci.mizlib.injectScripts(
|
|
231
244
|
missionObject['trig'],
|
|
232
245
|
missionObject['trigrules'],
|
|
233
246
|
mapResourceObject,
|
|
@@ -251,7 +264,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
251
264
|
objectName: "OnDemandTankersConfig"
|
|
252
265
|
},
|
|
253
266
|
);
|
|
254
|
-
tuple = jtffci.injectScripts(
|
|
267
|
+
tuple = jtffci.mizlib.injectScripts(
|
|
255
268
|
missionObject['trig'],
|
|
256
269
|
missionObject['trigrules'],
|
|
257
270
|
mapResourceObject,
|
|
@@ -266,7 +279,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
266
279
|
}
|
|
267
280
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_airboss)) {
|
|
268
281
|
// injection des fichiers son Airboss
|
|
269
|
-
const zip = await jtffci.mizOpen([
|
|
282
|
+
const zip = await jtffci.mizlib.mizOpen([
|
|
270
283
|
jtffci.config.general.missionFolder,
|
|
271
284
|
"/",
|
|
272
285
|
path.parse(env_mission).name,
|
|
@@ -274,7 +287,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
274
287
|
path.basename(env_mission)
|
|
275
288
|
].join(""));
|
|
276
289
|
const airbossSoundFolder = zip.remove('AIRBOSS').folder('AIRBOSS');
|
|
277
|
-
await jtffci.addFilesToZip(airbossSoundFolder, 'resources/sounds/AIRBOSS', fs.readdirSync('resources/sounds/AIRBOSS'));
|
|
290
|
+
await jtffci.mizlib.addFilesToZip(airbossSoundFolder, 'resources/sounds/AIRBOSS', fs.readdirSync('resources/sounds/AIRBOSS'));
|
|
278
291
|
const inputZip = await zip.generateAsync({
|
|
279
292
|
type: 'nodebuffer',
|
|
280
293
|
streamFiles: true,
|
|
@@ -301,7 +314,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
301
314
|
objectName: "PedrosConfig"
|
|
302
315
|
},
|
|
303
316
|
);
|
|
304
|
-
tuple = jtffci.injectScripts(
|
|
317
|
+
tuple = jtffci.mizlib.injectScripts(
|
|
305
318
|
missionObject['trig'],
|
|
306
319
|
missionObject['trigrules'],
|
|
307
320
|
mapResourceObject,
|
|
@@ -321,7 +334,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
321
334
|
objectName: "BeaconsConfig"
|
|
322
335
|
},
|
|
323
336
|
);
|
|
324
|
-
tuple = jtffci.injectScripts(
|
|
337
|
+
tuple = jtffci.mizlib.injectScripts(
|
|
325
338
|
missionObject['trig'],
|
|
326
339
|
missionObject['trigrules'],
|
|
327
340
|
mapResourceObject,
|
|
@@ -345,7 +358,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
345
358
|
objectName: "AwacsOnDemandConfig"
|
|
346
359
|
},
|
|
347
360
|
);
|
|
348
|
-
tuple = jtffci.injectScripts(
|
|
361
|
+
tuple = jtffci.mizlib.injectScripts(
|
|
349
362
|
missionObject['trig'],
|
|
350
363
|
missionObject['trigrules'],
|
|
351
364
|
mapResourceObject,
|
|
@@ -360,7 +373,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
360
373
|
}
|
|
361
374
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_atis)) {
|
|
362
375
|
// injection des fichiers son ATIS
|
|
363
|
-
// const zip = await jtffci.mizOpen([
|
|
376
|
+
// const zip = await jtffci.mizlib.mizOpen([
|
|
364
377
|
// jtffci.config.general.missionFolder,
|
|
365
378
|
// "/",
|
|
366
379
|
// path.parse(env_mission).name,
|
|
@@ -368,7 +381,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
368
381
|
// path.basename(env_mission)
|
|
369
382
|
// ].join(""));
|
|
370
383
|
// const atisSoundFolder = zip.remove('ATIS').folder('ATIS');
|
|
371
|
-
// await jtffci.addFilesToZip(atisSoundFolder, 'resources/sounds/ATIS', fs.readdirSync('resources/sounds/ATIS'));
|
|
384
|
+
// await jtffci.mizlib.addFilesToZip(atisSoundFolder, 'resources/sounds/ATIS', fs.readdirSync('resources/sounds/ATIS'));
|
|
372
385
|
// const inputZip = await zip.generateAsync({
|
|
373
386
|
// type: 'nodebuffer',
|
|
374
387
|
// streamFiles: true,
|
|
@@ -391,7 +404,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
391
404
|
objectName: "AtisConfig"
|
|
392
405
|
},
|
|
393
406
|
);
|
|
394
|
-
tuple = jtffci.injectScripts(
|
|
407
|
+
tuple = jtffci.mizlib.injectScripts(
|
|
395
408
|
missionObject['trig'],
|
|
396
409
|
missionObject['trigrules'],
|
|
397
410
|
mapResourceObject,
|
|
@@ -427,7 +440,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
427
440
|
objectName: "InterceptConfig"
|
|
428
441
|
},
|
|
429
442
|
);
|
|
430
|
-
tuple = jtffci.injectScripts(
|
|
443
|
+
tuple = jtffci.mizlib.injectScripts(
|
|
431
444
|
missionObject['trig'],
|
|
432
445
|
missionObject['trigrules'],
|
|
433
446
|
mapResourceObject,
|
|
@@ -442,7 +455,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
442
455
|
}
|
|
443
456
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_Logistics)) {
|
|
444
457
|
// injection des fichiers son CTLD
|
|
445
|
-
const zip = await jtffci.mizOpen([
|
|
458
|
+
const zip = await jtffci.mizlib.mizOpen([
|
|
446
459
|
jtffci.config.general.missionFolder,
|
|
447
460
|
"/",
|
|
448
461
|
path.parse(env_mission).name,
|
|
@@ -450,7 +463,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
450
463
|
path.basename(env_mission)
|
|
451
464
|
].join(""));
|
|
452
465
|
const rangeSoundFolder = zip.remove('CTLD').folder('CTLD');
|
|
453
|
-
await jtffci.addFilesToZip(rangeSoundFolder, 'resources/sounds/CTLD', fs.readdirSync('resources/sounds/CTLD'));
|
|
466
|
+
await jtffci.mizlib.addFilesToZip(rangeSoundFolder, 'resources/sounds/CTLD', fs.readdirSync('resources/sounds/CTLD'));
|
|
454
467
|
const inputZip = await zip.generateAsync({
|
|
455
468
|
type: 'nodebuffer',
|
|
456
469
|
streamFiles: true,
|
|
@@ -473,7 +486,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
473
486
|
objectName: "CTLDConfig"
|
|
474
487
|
},
|
|
475
488
|
);
|
|
476
|
-
tuple = jtffci.injectScripts(
|
|
489
|
+
tuple = jtffci.mizlib.injectScripts(
|
|
477
490
|
missionObject['trig'],
|
|
478
491
|
missionObject['trigrules'],
|
|
479
492
|
mapResourceObject,
|
|
@@ -488,7 +501,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
488
501
|
}
|
|
489
502
|
if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_A2G)) {
|
|
490
503
|
// injection des fichiers son Range
|
|
491
|
-
// const zip = await jtffci.mizOpen([
|
|
504
|
+
// const zip = await jtffci.mizlib.mizOpen([
|
|
492
505
|
// jtffci.config.general.missionFolder,
|
|
493
506
|
// "/",
|
|
494
507
|
// path.parse(env_mission).name,
|
|
@@ -496,7 +509,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
496
509
|
// path.basename(env_mission)
|
|
497
510
|
// ].join(""));
|
|
498
511
|
// const rangeSoundFolder = zip.remove('RANGE').folder('RANGE');
|
|
499
|
-
// await jtffci.addFilesToZip(rangeSoundFolder, 'resources/sounds/RANGE', fs.readdirSync('resources/sounds/RANGE'));
|
|
512
|
+
// await jtffci.mizlib.addFilesToZip(rangeSoundFolder, 'resources/sounds/RANGE', fs.readdirSync('resources/sounds/RANGE'));
|
|
500
513
|
// const inputZip = await zip.generateAsync({
|
|
501
514
|
// type: 'nodebuffer',
|
|
502
515
|
// streamFiles: true,
|
|
@@ -539,7 +552,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
539
552
|
objectName: "SkynetConfig"
|
|
540
553
|
},
|
|
541
554
|
);
|
|
542
|
-
tuple = jtffci.injectScripts(
|
|
555
|
+
tuple = jtffci.mizlib.injectScripts(
|
|
543
556
|
missionObject['trig'],
|
|
544
557
|
missionObject['trigrules'],
|
|
545
558
|
mapResourceObject,
|
|
@@ -561,7 +574,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
561
574
|
"/src/200-mission.lua"
|
|
562
575
|
].join("")
|
|
563
576
|
);
|
|
564
|
-
const zip = await jtffci.mizOpen([
|
|
577
|
+
const zip = await jtffci.mizlib.mizOpen([
|
|
565
578
|
jtffci.config.general.missionFolder,
|
|
566
579
|
"/",
|
|
567
580
|
path.parse(env_mission).name,
|
|
@@ -569,7 +582,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
569
582
|
path.basename(env_mission)
|
|
570
583
|
].join(""));
|
|
571
584
|
|
|
572
|
-
jtffci.mizUpdateLuaFile(zip, [
|
|
585
|
+
jtffci.mizlib.mizUpdateLuaFile(zip, [
|
|
573
586
|
jtffci.config.general.missionFolder,
|
|
574
587
|
"/",
|
|
575
588
|
path.parse(env_mission).name,
|
|
@@ -592,7 +605,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
592
605
|
path.basename(env_mission)
|
|
593
606
|
].join(""),
|
|
594
607
|
inputZip);
|
|
595
|
-
tuple = jtffci.injectScripts(
|
|
608
|
+
tuple = jtffci.mizlib.injectScripts(
|
|
596
609
|
missionObject['trig'],
|
|
597
610
|
missionObject['trigrules'],
|
|
598
611
|
mapResourceObject,
|
|
@@ -614,14 +627,14 @@ function injectScripts(jtffci, env_mission) {
|
|
|
614
627
|
"/",
|
|
615
628
|
path.basename(env_mission)
|
|
616
629
|
].join("") + ": injecting radio presets declared in resources/radios/" + path.parse(env_mission).name);
|
|
617
|
-
const zip = await jtffci.mizOpen([
|
|
630
|
+
const zip = await jtffci.mizlib.mizOpen([
|
|
618
631
|
jtffci.config.general.missionFolder,
|
|
619
632
|
"/",
|
|
620
633
|
path.parse(env_mission).name,
|
|
621
634
|
"/",
|
|
622
635
|
path.basename(env_mission)
|
|
623
636
|
].join(""));
|
|
624
|
-
await jtffci.mizUpdateRadioPresets(zip, 'resources/radios/' + path.parse(env_mission).name);
|
|
637
|
+
await jtffci.mizlib.mizUpdateRadioPresets(zip, 'resources/radios/' + path.parse(env_mission).name);
|
|
625
638
|
}
|
|
626
639
|
for (let settingsObject of settingsArray) {
|
|
627
640
|
fs.copyFileSync(
|
|
@@ -638,7 +651,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
638
651
|
].join("")
|
|
639
652
|
);
|
|
640
653
|
}
|
|
641
|
-
await jtffci.mizInjectSettingsFolder(
|
|
654
|
+
await jtffci.mizlib.mizInjectSettingsFolder(
|
|
642
655
|
[
|
|
643
656
|
jtffci.config.general.missionFolder,
|
|
644
657
|
"/",
|
|
@@ -654,7 +667,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
654
667
|
].join("")
|
|
655
668
|
);
|
|
656
669
|
if (settingsArray.length > 0) {
|
|
657
|
-
tuple = jtffci.injectScripts(
|
|
670
|
+
tuple = jtffci.mizlib.injectScripts(
|
|
658
671
|
missionObject['trig'],
|
|
659
672
|
missionObject['trigrules'],
|
|
660
673
|
mapResourceObject,
|
|
@@ -668,7 +681,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
668
681
|
mapResourceObject = tuple.mrObject;
|
|
669
682
|
}
|
|
670
683
|
// Sauvegarde de la mission avec scripts injectés
|
|
671
|
-
await jtffci.mizInjectMissionDataFile(
|
|
684
|
+
await jtffci.mizlib.mizInjectMissionDataFile(
|
|
672
685
|
[
|
|
673
686
|
jtffci.config.general.missionFolder,
|
|
674
687
|
"/",
|
|
@@ -678,7 +691,7 @@ function injectScripts(jtffci, env_mission) {
|
|
|
678
691
|
].join(""),
|
|
679
692
|
{ mission: missionObject }
|
|
680
693
|
);
|
|
681
|
-
await jtffci.mizInjectMapResourceFile(
|
|
694
|
+
await jtffci.mizlib.mizInjectMapResourceFile(
|
|
682
695
|
[
|
|
683
696
|
jtffci.config.general.missionFolder,
|
|
684
697
|
"/",
|
|
@@ -3,7 +3,7 @@ const fs = require("fs");
|
|
|
3
3
|
function templateUpdate(jtffci) {
|
|
4
4
|
fs.mkdirSync(jtffci.config.general.missionFolder, { recursive: true });
|
|
5
5
|
jtffci.config.missionTemplates.map(async missionTemplate => {
|
|
6
|
-
await jtffci.mizUpdate([
|
|
6
|
+
await jtffci.mizlib.mizUpdate([
|
|
7
7
|
missionTemplate.prefix,
|
|
8
8
|
'_',
|
|
9
9
|
missionTemplate.theatre,
|