@bf6mods/sdk 1.0.2 → 1.1.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.
@@ -0,0 +1,431 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __typeError = (msg) => {
3
+ throw TypeError(msg);
4
+ };
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
10
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
11
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
12
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
13
+ var __privateWrapper = (obj, member, setter, getter) => ({
14
+ set _(value) {
15
+ __privateSet(obj, member, value, setter);
16
+ },
17
+ get _() {
18
+ return __privateGet(obj, member, getter);
19
+ }
20
+ });
21
+
22
+ // src/std/message.ts
23
+ var message_exports = {};
24
+ __export(message_exports, {
25
+ MakeMessage: () => MakeMessage
26
+ });
27
+ function MakeMessage(message, ...args) {
28
+ switch (args.length) {
29
+ case 0:
30
+ return mod.Message(message);
31
+ case 1:
32
+ return mod.Message(message, args[0]);
33
+ case 2:
34
+ return mod.Message(message, args[0], args[1]);
35
+ case 3:
36
+ return mod.Message(message, args[0], args[1], args[2]);
37
+ default:
38
+ throw new Error("Invalid number of arguments");
39
+ }
40
+ }
41
+
42
+ // src/std/ui/index.ts
43
+ var ui_exports = {};
44
+ __export(ui_exports, {
45
+ CountdownUI: () => CountdownUI,
46
+ bf6Strings: () => bf6Strings,
47
+ default: () => ui_default
48
+ });
49
+
50
+ // src/std/ui/countdown.ts
51
+ var countdown_exports = {};
52
+ __export(countdown_exports, {
53
+ CountdownUI: () => CountdownUI,
54
+ bf6Strings: () => bf6Strings
55
+ });
56
+
57
+ // src/modlib/index.ts
58
+ var ConditionState = class {
59
+ constructor() {
60
+ this.lastState = false;
61
+ }
62
+ update(newState) {
63
+ if (!newState) {
64
+ this.lastState = false;
65
+ return false;
66
+ }
67
+ if (this.lastState) return false;
68
+ this.lastState = true;
69
+ return true;
70
+ }
71
+ };
72
+ var Conditions = class {
73
+ constructor() {
74
+ this.conditionStates = [];
75
+ }
76
+ getConditionState(n) {
77
+ while (n >= this.conditionStates.length) {
78
+ this.conditionStates.push(new ConditionState());
79
+ }
80
+ return this.conditionStates[n];
81
+ }
82
+ };
83
+ var globalConditions = new Conditions();
84
+ function __asModVector(param) {
85
+ if (Array.isArray(param)) return mod.CreateVector(param[0], param[1], param.length == 2 ? 0 : param[2]);
86
+ else return param;
87
+ }
88
+ function __asModMessage(param) {
89
+ if (typeof param === "string") return mod.Message(param);
90
+ return param;
91
+ }
92
+ function __fillInDefaultArgs(params) {
93
+ if (!params.hasOwnProperty("name")) params.name = "";
94
+ if (!params.hasOwnProperty("position")) params.position = mod.CreateVector(0, 0, 0);
95
+ if (!params.hasOwnProperty("size")) params.size = mod.CreateVector(100, 100, 0);
96
+ if (!params.hasOwnProperty("anchor")) params.anchor = mod.UIAnchor.TopLeft;
97
+ if (!params.hasOwnProperty("parent")) params.parent = mod.GetUIRoot();
98
+ if (!params.hasOwnProperty("visible")) params.visible = true;
99
+ if (!params.hasOwnProperty("padding")) params.padding = params.type == "Container" ? 0 : 8;
100
+ if (!params.hasOwnProperty("bgColor")) params.bgColor = mod.CreateVector(0.25, 0.25, 0.25);
101
+ if (!params.hasOwnProperty("bgAlpha")) params.bgAlpha = 0.5;
102
+ if (!params.hasOwnProperty("bgFill")) params.bgFill = mod.UIBgFill.Solid;
103
+ }
104
+ function __setNameAndGetWidget(uniqueName, params) {
105
+ let widget = mod.FindUIWidgetWithName(uniqueName);
106
+ mod.SetUIWidgetName(widget, params.name);
107
+ return widget;
108
+ }
109
+ var __cUniqueName = "----uniquename----";
110
+ function __addUIContainer(params) {
111
+ __fillInDefaultArgs(params);
112
+ let restrict = params.teamId ?? params.playerId;
113
+ if (restrict) {
114
+ mod.AddUIContainer(
115
+ __cUniqueName,
116
+ __asModVector(params.position),
117
+ __asModVector(params.size),
118
+ params.anchor,
119
+ params.parent,
120
+ params.visible,
121
+ params.padding,
122
+ __asModVector(params.bgColor),
123
+ params.bgAlpha,
124
+ params.bgFill,
125
+ restrict
126
+ );
127
+ } else {
128
+ mod.AddUIContainer(
129
+ __cUniqueName,
130
+ __asModVector(params.position),
131
+ __asModVector(params.size),
132
+ params.anchor,
133
+ params.parent,
134
+ params.visible,
135
+ params.padding,
136
+ __asModVector(params.bgColor),
137
+ params.bgAlpha,
138
+ params.bgFill
139
+ );
140
+ }
141
+ let widget = __setNameAndGetWidget(__cUniqueName, params);
142
+ if (params.children) {
143
+ params.children.forEach((childParams) => {
144
+ childParams.parent = widget;
145
+ __addUIWidget(childParams);
146
+ });
147
+ }
148
+ return widget;
149
+ }
150
+ function __fillInDefaultTextArgs(params) {
151
+ if (!params.hasOwnProperty("textLabel")) params.textLabel = "";
152
+ if (!params.hasOwnProperty("textSize")) params.textSize = 0;
153
+ if (!params.hasOwnProperty("textColor")) params.textColor = mod.CreateVector(1, 1, 1);
154
+ if (!params.hasOwnProperty("textAlpha")) params.textAlpha = 1;
155
+ if (!params.hasOwnProperty("textAnchor")) params.textAnchor = mod.UIAnchor.CenterLeft;
156
+ }
157
+ function __addUIText(params) {
158
+ __fillInDefaultArgs(params);
159
+ __fillInDefaultTextArgs(params);
160
+ let restrict = params.teamId ?? params.playerId;
161
+ if (restrict) {
162
+ mod.AddUIText(
163
+ __cUniqueName,
164
+ __asModVector(params.position),
165
+ __asModVector(params.size),
166
+ params.anchor,
167
+ params.parent,
168
+ params.visible,
169
+ params.padding,
170
+ __asModVector(params.bgColor),
171
+ params.bgAlpha,
172
+ params.bgFill,
173
+ __asModMessage(params.textLabel),
174
+ params.textSize,
175
+ __asModVector(params.textColor),
176
+ params.textAlpha,
177
+ params.textAnchor,
178
+ restrict
179
+ );
180
+ } else {
181
+ mod.AddUIText(
182
+ __cUniqueName,
183
+ __asModVector(params.position),
184
+ __asModVector(params.size),
185
+ params.anchor,
186
+ params.parent,
187
+ params.visible,
188
+ params.padding,
189
+ __asModVector(params.bgColor),
190
+ params.bgAlpha,
191
+ params.bgFill,
192
+ __asModMessage(params.textLabel),
193
+ params.textSize,
194
+ __asModVector(params.textColor),
195
+ params.textAlpha,
196
+ params.textAnchor
197
+ );
198
+ }
199
+ return __setNameAndGetWidget(__cUniqueName, params);
200
+ }
201
+ function __fillInDefaultImageArgs(params) {
202
+ if (!params.hasOwnProperty("imageType")) params.imageType = mod.UIImageType.None;
203
+ if (!params.hasOwnProperty("imageColor")) params.imageColor = mod.CreateVector(1, 1, 1);
204
+ if (!params.hasOwnProperty("imageAlpha")) params.imageAlpha = 1;
205
+ }
206
+ function __addUIImage(params) {
207
+ __fillInDefaultArgs(params);
208
+ __fillInDefaultImageArgs(params);
209
+ let restrict = params.teamId ?? params.playerId;
210
+ if (restrict) {
211
+ mod.AddUIImage(
212
+ __cUniqueName,
213
+ __asModVector(params.position),
214
+ __asModVector(params.size),
215
+ params.anchor,
216
+ params.parent,
217
+ params.visible,
218
+ params.padding,
219
+ __asModVector(params.bgColor),
220
+ params.bgAlpha,
221
+ params.bgFill,
222
+ params.imageType,
223
+ __asModVector(params.imageColor),
224
+ params.imageAlpha,
225
+ restrict
226
+ );
227
+ } else {
228
+ mod.AddUIImage(
229
+ __cUniqueName,
230
+ __asModVector(params.position),
231
+ __asModVector(params.size),
232
+ params.anchor,
233
+ params.parent,
234
+ params.visible,
235
+ params.padding,
236
+ __asModVector(params.bgColor),
237
+ params.bgAlpha,
238
+ params.bgFill,
239
+ params.imageType,
240
+ __asModVector(params.imageColor),
241
+ params.imageAlpha
242
+ );
243
+ }
244
+ return __setNameAndGetWidget(__cUniqueName, params);
245
+ }
246
+ function __fillInDefaultButtonArgs(params) {
247
+ if (!params.hasOwnProperty("buttonEnabled")) params.buttonEnabled = true;
248
+ if (!params.hasOwnProperty("buttonColorBase")) params.buttonColorBase = mod.CreateVector(0.7, 0.7, 0.7);
249
+ if (!params.hasOwnProperty("buttonAlphaBase")) params.buttonAlphaBase = 1;
250
+ if (!params.hasOwnProperty("buttonColorDisabled")) params.buttonColorDisabled = mod.CreateVector(0.2, 0.2, 0.2);
251
+ if (!params.hasOwnProperty("buttonAlphaDisabled")) params.buttonAlphaDisabled = 0.5;
252
+ if (!params.hasOwnProperty("buttonColorPressed")) params.buttonColorPressed = mod.CreateVector(0.25, 0.25, 0.25);
253
+ if (!params.hasOwnProperty("buttonAlphaPressed")) params.buttonAlphaPressed = 1;
254
+ if (!params.hasOwnProperty("buttonColorHover")) params.buttonColorHover = mod.CreateVector(1, 1, 1);
255
+ if (!params.hasOwnProperty("buttonAlphaHover")) params.buttonAlphaHover = 1;
256
+ if (!params.hasOwnProperty("buttonColorFocused")) params.buttonColorFocused = mod.CreateVector(1, 1, 1);
257
+ if (!params.hasOwnProperty("buttonAlphaFocused")) params.buttonAlphaFocused = 1;
258
+ }
259
+ function __addUIButton(params) {
260
+ __fillInDefaultArgs(params);
261
+ __fillInDefaultButtonArgs(params);
262
+ let restrict = params.teamId ?? params.playerId;
263
+ if (restrict) {
264
+ mod.AddUIButton(
265
+ __cUniqueName,
266
+ __asModVector(params.position),
267
+ __asModVector(params.size),
268
+ params.anchor,
269
+ params.parent,
270
+ params.visible,
271
+ params.padding,
272
+ __asModVector(params.bgColor),
273
+ params.bgAlpha,
274
+ params.bgFill,
275
+ params.buttonEnabled,
276
+ __asModVector(params.buttonColorBase),
277
+ params.buttonAlphaBase,
278
+ __asModVector(params.buttonColorDisabled),
279
+ params.buttonAlphaDisabled,
280
+ __asModVector(params.buttonColorPressed),
281
+ params.buttonAlphaPressed,
282
+ __asModVector(params.buttonColorHover),
283
+ params.buttonAlphaHover,
284
+ __asModVector(params.buttonColorFocused),
285
+ params.buttonAlphaFocused,
286
+ restrict
287
+ );
288
+ } else {
289
+ mod.AddUIButton(
290
+ __cUniqueName,
291
+ __asModVector(params.position),
292
+ __asModVector(params.size),
293
+ params.anchor,
294
+ params.parent,
295
+ params.visible,
296
+ params.padding,
297
+ __asModVector(params.bgColor),
298
+ params.bgAlpha,
299
+ params.bgFill,
300
+ params.buttonEnabled,
301
+ __asModVector(params.buttonColorBase),
302
+ params.buttonAlphaBase,
303
+ __asModVector(params.buttonColorDisabled),
304
+ params.buttonAlphaDisabled,
305
+ __asModVector(params.buttonColorPressed),
306
+ params.buttonAlphaPressed,
307
+ __asModVector(params.buttonColorHover),
308
+ params.buttonAlphaHover,
309
+ __asModVector(params.buttonColorFocused),
310
+ params.buttonAlphaFocused
311
+ );
312
+ }
313
+ return __setNameAndGetWidget(__cUniqueName, params);
314
+ }
315
+ function __addUIWidget(params) {
316
+ if (params == null) return void 0;
317
+ if (params.type == "Container") return __addUIContainer(params);
318
+ else if (params.type == "Text") return __addUIText(params);
319
+ else if (params.type == "Image") return __addUIImage(params);
320
+ else if (params.type == "Button") return __addUIButton(params);
321
+ return void 0;
322
+ }
323
+ function ParseUI(...params) {
324
+ let widget;
325
+ for (let a = 0; a < params.length; a++) {
326
+ widget = __addUIWidget(params[a]);
327
+ }
328
+ return widget;
329
+ }
330
+
331
+ // src/std/ui/countdown.ts
332
+ var _uniqueID, _playerId, _playerProfileId;
333
+ var _CountdownUI = class _CountdownUI {
334
+ constructor(playerId) {
335
+ __privateAdd(this, _playerId);
336
+ __privateAdd(this, _playerProfileId);
337
+ __privateSet(this, _playerProfileId, __privateWrapper(_CountdownUI, _uniqueID)._++);
338
+ __privateSet(this, _playerId, playerId);
339
+ const bfBlueColor = [0.678, 0.753, 0.8];
340
+ const height = 125;
341
+ this.headerWidget = ParseUI({
342
+ type: "Container",
343
+ size: [150, height],
344
+ position: [0, 50],
345
+ name: `countdown_${__privateGet(this, _playerProfileId)}`,
346
+ anchor: mod.UIAnchor.TopCenter,
347
+ bgFill: mod.UIBgFill.Blur,
348
+ bgColor: [0.2, 0.2, 0.3],
349
+ bgAlpha: 0.9,
350
+ playerId: __privateGet(this, _playerId),
351
+ visible: false,
352
+ children: [
353
+ {
354
+ type: "Container",
355
+ name: `countdown_line_right_${__privateGet(this, _playerProfileId)}`,
356
+ size: [2, height],
357
+ position: [75, 0],
358
+ anchor: mod.UIAnchor.Center,
359
+ bgFill: mod.UIBgFill.Solid,
360
+ bgColor: bfBlueColor,
361
+ bgAlpha: 1
362
+ },
363
+ {
364
+ type: "Container",
365
+ name: `countdown_line_left_${__privateGet(this, _playerProfileId)}`,
366
+ size: [2, height],
367
+ position: [-75, 0],
368
+ anchor: mod.UIAnchor.Center,
369
+ bgFill: mod.UIBgFill.Solid,
370
+ bgColor: bfBlueColor,
371
+ bgAlpha: 1
372
+ },
373
+ {
374
+ type: "Text",
375
+ name: `countdown_text${__privateGet(this, _playerProfileId)}`,
376
+ size: [100, height],
377
+ position: [0, 0],
378
+ anchor: mod.UIAnchor.Center,
379
+ bgFill: mod.UIBgFill.None,
380
+ textColor: bfBlueColor,
381
+ textAnchor: mod.UIAnchor.Center,
382
+ textLabel: MakeMessage(mod.stringkeys.__sdk__CountdownUI),
383
+ textSize: 85
384
+ }
385
+ ]
386
+ });
387
+ this.textWidget = mod.FindUIWidgetWithName(
388
+ `countdown_text${__privateGet(this, _playerProfileId)}`
389
+ );
390
+ }
391
+ delete() {
392
+ this.headerWidget && mod.DeleteUIWidget(this.headerWidget);
393
+ }
394
+ open(text, countdowntime) {
395
+ this.headerWidget && mod.SetUIWidgetVisible(this.headerWidget, true);
396
+ this.textWidget && mod.SetUITextLabel(this.textWidget, MakeMessage(text, countdowntime));
397
+ }
398
+ update(text, countdowntime) {
399
+ this.textWidget && mod.SetUITextLabel(this.textWidget, MakeMessage(text, countdowntime));
400
+ }
401
+ async close(delayclose = 0) {
402
+ await mod.Wait(delayclose);
403
+ this.headerWidget && mod.SetUIWidgetVisible(this.headerWidget, false);
404
+ }
405
+ };
406
+ _uniqueID = new WeakMap();
407
+ _playerId = new WeakMap();
408
+ _playerProfileId = new WeakMap();
409
+ __privateAdd(_CountdownUI, _uniqueID, 0);
410
+ var CountdownUI = _CountdownUI;
411
+ var bf6Strings = {
412
+ __sdk__CountdownUI: "{}"
413
+ };
414
+
415
+ // src/std/ui/index.ts
416
+ var ui_default = {
417
+ countdown: countdown_exports
418
+ };
419
+
420
+ // src/std/index.ts
421
+ var index_default = {
422
+ message: message_exports,
423
+ ui: ui_exports
424
+ };
425
+ export {
426
+ CountdownUI,
427
+ MakeMessage,
428
+ bf6Strings,
429
+ index_default as default
430
+ };
431
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/std/message.ts","../../src/std/ui/index.ts","../../src/std/ui/countdown.ts","../../src/modlib/index.ts","../../src/std/index.ts"],"sourcesContent":["export function MakeMessage(\r\n\tmessage: string,\r\n\t...args: (string | number | mod.Player)[]\r\n) {\r\n\tswitch (args.length) {\r\n\t\tcase 0:\r\n\t\t\treturn mod.Message(message);\r\n\t\tcase 1:\r\n\t\t\treturn mod.Message(message, args[0]);\r\n\t\tcase 2:\r\n\t\t\treturn mod.Message(message, args[0], args[1]);\r\n\t\tcase 3:\r\n\t\t\treturn mod.Message(message, args[0], args[1], args[2]);\r\n\t\tdefault:\r\n\t\t\tthrow new Error(\"Invalid number of arguments\");\r\n\t}\r\n}\r\n","import * as countdown from \"./countdown.ts\";\n\nexport * from \"./countdown.ts\";\n\nexport default {\n\tcountdown,\n};\n","import { ParseUI } from \"../../modlib/index.ts\";\nimport { MakeMessage } from \"../message.ts\";\n\nexport class CountdownUI {\n\tstatic #uniqueID = 0;\n\t#playerId: mod.Player;\n\t#playerProfileId: number;\n\n\theaderWidget: mod.UIWidget | undefined;\n\ttextWidget: mod.UIWidget | undefined;\n\n\tconstructor(playerId: mod.Player) {\n\t\tthis.#playerProfileId = CountdownUI.#uniqueID++;\n\t\tthis.#playerId = playerId;\n\n\t\tconst bfBlueColor = [0.678, 0.753, 0.8];\n\t\tconst height = 125;\n\t\tthis.headerWidget = ParseUI({\n\t\t\ttype: \"Container\",\n\t\t\tsize: [150, height],\n\t\t\tposition: [0, 50],\n\t\t\tname: `countdown_${this.#playerProfileId}`,\n\t\t\tanchor: mod.UIAnchor.TopCenter,\n\t\t\tbgFill: mod.UIBgFill.Blur,\n\t\t\tbgColor: [0.2, 0.2, 0.3],\n\t\t\tbgAlpha: 0.9,\n\t\t\tplayerId: this.#playerId,\n\t\t\tvisible: false,\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"Container\",\n\t\t\t\t\tname: `countdown_line_right_${this.#playerProfileId}`,\n\t\t\t\t\tsize: [2, height],\n\t\t\t\t\tposition: [75, 0],\n\t\t\t\t\tanchor: mod.UIAnchor.Center,\n\t\t\t\t\tbgFill: mod.UIBgFill.Solid,\n\t\t\t\t\tbgColor: bfBlueColor,\n\t\t\t\t\tbgAlpha: 1,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"Container\",\n\t\t\t\t\tname: `countdown_line_left_${this.#playerProfileId}`,\n\t\t\t\t\tsize: [2, height],\n\t\t\t\t\tposition: [-75, 0],\n\t\t\t\t\tanchor: mod.UIAnchor.Center,\n\t\t\t\t\tbgFill: mod.UIBgFill.Solid,\n\t\t\t\t\tbgColor: bfBlueColor,\n\t\t\t\t\tbgAlpha: 1,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"Text\",\n\t\t\t\t\tname: `countdown_text${this.#playerProfileId}`,\n\t\t\t\t\tsize: [100, height],\n\t\t\t\t\tposition: [0, 0],\n\t\t\t\t\tanchor: mod.UIAnchor.Center,\n\t\t\t\t\tbgFill: mod.UIBgFill.None,\n\t\t\t\t\ttextColor: bfBlueColor,\n\t\t\t\t\ttextAnchor: mod.UIAnchor.Center,\n\t\t\t\t\ttextLabel: MakeMessage(mod.stringkeys.__sdk__CountdownUI),\n\t\t\t\t\ttextSize: 85,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t\tthis.textWidget = mod.FindUIWidgetWithName(\n\t\t\t`countdown_text${this.#playerProfileId}`,\n\t\t);\n\t}\n\n\tdelete() {\n\t\tthis.headerWidget && mod.DeleteUIWidget(this.headerWidget);\n\t\t//this.textWidget && mod.DeleteUIWidget(this.textWidget)\n\t}\n\n\topen(text: string, countdowntime: number) {\n\t\tthis.headerWidget && mod.SetUIWidgetVisible(this.headerWidget, true);\n\t\tthis.textWidget &&\n\t\t\tmod.SetUITextLabel(this.textWidget, MakeMessage(text, countdowntime));\n\t}\n\n\tupdate(text: string, countdowntime: number) {\n\t\tthis.textWidget &&\n\t\t\tmod.SetUITextLabel(this.textWidget, MakeMessage(text, countdowntime));\n\t}\n\n\tasync close(delayclose: number = 0) {\n\t\tawait mod.Wait(delayclose);\n\t\tthis.headerWidget && mod.SetUIWidgetVisible(this.headerWidget, false);\n\t}\n}\n\nexport const bf6Strings = {\n\t__sdk__CountdownUI: \"{}\",\n};\n","// export * from './store';\r\n\r\nexport function Concat(s1: string, s2: string) {\r\n return s1 + s2;\r\n}\r\n\r\nexport function And(...rest: boolean[]): boolean {\r\n for (let i = 0; i < rest.length; i++) {\r\n const cond = rest[i];\r\n if (!cond) return false;\r\n }\r\n return true;\r\n}\r\n\r\ntype ConditionFunction = () => boolean;\r\n\r\nexport function AndFn(...rest: ConditionFunction[]): boolean {\r\n for (let i = 0; i < rest.length; i++) {\r\n const condFn = rest[i];\r\n if (!condFn()) return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport function getPlayerId(player: mod.Player): number {\r\n return mod.GetObjId(player);\r\n}\r\n\r\nexport function getTeamId(team: mod.Team): number {\r\n return mod.GetObjId(team);\r\n}\r\n\r\nexport function ConvertArray(array: mod.Array): any[] {\r\n let v = [];\r\n let n = mod.CountOf(array);\r\n for (let i = 0; i < n; i++) {\r\n let currentElement = mod.ValueInArray(array, i);\r\n v.push(currentElement);\r\n }\r\n return v;\r\n}\r\n\r\nexport function FilteredArray(array: mod.Array, cond: (currentElement: any) => boolean): mod.Array {\r\n const arr = ConvertArray(array);\r\n let v = mod.EmptyArray();\r\n let n = arr.length;\r\n for (let i = 0; i < n; i++) {\r\n let currentElement = arr[i];\r\n if (cond(currentElement)) mod.AppendToArray(v, currentElement);\r\n }\r\n return v;\r\n}\r\n\r\nexport function IndexOfFirstTrue(array: mod.Array, cond: (element: any, arg: any) => boolean, arg: any = null): number {\r\n const arr = ConvertArray(array);\r\n let n = arr.length;\r\n for (let i = 0; i < n; i++) {\r\n let currentArrayElement = arr[i];\r\n if (cond(currentArrayElement, arg)) return i;\r\n }\r\n return -1;\r\n}\r\n\r\nexport function IfThenElse<T>(condition: boolean, ifTrue: () => T, ifFalse: () => T) {\r\n if (condition) return ifTrue();\r\n else return ifFalse();\r\n}\r\n\r\nexport function IsTrueForAll(array: mod.Array, condition: (element: any, arg: any) => boolean, arg: any = null) {\r\n const arr = ConvertArray(array);\r\n let n = arr.length;\r\n for (let i = 0; i < n; i++) {\r\n let currentArrayElement = arr[i];\r\n if (!condition(currentArrayElement, arg)) return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport function IsTrueForAny(array: mod.Array, condition: (element: any, arg: any) => boolean, arg: any = null) {\r\n const arr = ConvertArray(array);\r\n let n = arr.length;\r\n for (let i = 0; i < n; i++) {\r\n let currentArrayElement = arr[i];\r\n if (condition(currentArrayElement, arg)) return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function SortedArray(array: any[], compare: (a: any, b: any) => number) {\r\n let v1 = array.slice();\r\n v1.sort(compare);\r\n let v2 = [];\r\n for (let e of v1) v2.push(e);\r\n return v2;\r\n}\r\n\r\nexport function Equals(a: any, b: any) {\r\n if (a == null || b == null) debugger;\r\n return mod.Equals(a, b);\r\n}\r\n\r\nexport async function WaitUntil(delay: number, cond: () => boolean) {\r\n // complete rush hack. this will likely wait way too long and other problems.\r\n let deltaCount = 10;\r\n let deltaWait = delay / deltaCount;\r\n for (let t = 0; t < deltaCount; t++) {\r\n if (!cond()) break;\r\n await mod.Wait(deltaWait);\r\n }\r\n}\r\n\r\nexport class ConditionState {\r\n lastState: boolean;\r\n\r\n constructor() {\r\n this.lastState = false;\r\n }\r\n\r\n update(newState: boolean): boolean {\r\n // if the new state is false then reset last state and don't trigger action\r\n if (!newState) {\r\n this.lastState = false;\r\n return false;\r\n }\r\n // if last state was already true then don't trigger\r\n if (this.lastState) return false;\r\n // if the state just transitioned to true then trigger\r\n this.lastState = true;\r\n return true;\r\n }\r\n}\r\n\r\nclass Conditions {\r\n constructor() {\r\n this.conditionStates = [];\r\n }\r\n\r\n conditionStates: ConditionState[];\r\n\r\n getConditionState(n: number): ConditionState {\r\n while (n >= this.conditionStates.length) {\r\n this.conditionStates.push(new ConditionState());\r\n }\r\n return this.conditionStates[n];\r\n }\r\n}\r\n\r\nlet playerConditions: Conditions[] = [];\r\nlet teamConditions: Conditions[] = [];\r\nlet capturePointConditions: Conditions[] = [];\r\nlet mcomConditions: Conditions[] = [];\r\nlet vehicleConditions: Conditions[] = [];\r\nlet globalConditions: Conditions = new Conditions();\r\n\r\nfunction getObjectCondition(id: number, objectConditions: Conditions[], n: number) {\r\n while (id >= objectConditions.length) {\r\n objectConditions.push(new Conditions());\r\n }\r\n let conditions = objectConditions[id];\r\n return conditions.getConditionState(n);\r\n}\r\n\r\nexport function getPlayerCondition(obj: mod.Player, n: number) {\r\n let id = getPlayerId(obj);\r\n while (id >= playerConditions.length) {\r\n playerConditions.push(new Conditions());\r\n }\r\n let conditions = playerConditions[id];\r\n return conditions.getConditionState(n);\r\n}\r\n\r\nexport function getTeamCondition(team: mod.Team, n: number) {\r\n let id = getTeamId(team);\r\n while (id >= teamConditions.length) {\r\n teamConditions.push(new Conditions());\r\n }\r\n let conditions = teamConditions[id];\r\n return conditions.getConditionState(n);\r\n}\r\n\r\nexport function getCapturePointCondition(obj: mod.CapturePoint, n: number) {\r\n let id = mod.GetObjId(obj);\r\n return getObjectCondition(id, capturePointConditions, n);\r\n}\r\n\r\nexport function getMCOMCondition(obj: mod.MCOM, n: number) {\r\n let id = mod.GetObjId(obj);\r\n return getObjectCondition(id, mcomConditions, n);\r\n}\r\n\r\nexport function getVehicleCondition(obj: mod.Vehicle, n: number) {\r\n let id = mod.GetObjId(obj);\r\n return getObjectCondition(id, vehicleConditions, n);\r\n}\r\n\r\nexport function getGlobalCondition(n: number) {\r\n return globalConditions.getConditionState(n);\r\n}\r\n\r\nexport function getPlayersInTeam(team: mod.Team) {\r\n const allPlayers = mod.AllPlayers();\r\n const n = mod.CountOf(allPlayers);\r\n let teamMembers = [];\r\n\r\n for (let i = 0; i < n; i++) {\r\n let player = mod.ValueInArray(allPlayers, i) as mod.Player;\r\n if (mod.GetTeam(player) == team) {\r\n teamMembers.push(player);\r\n }\r\n }\r\n return teamMembers;\r\n}\r\n\r\n//-----------------------------------------------------------------------------------------------//\r\n//-----------------------------------------------------------------------------------------------//\r\n//-----------------------------------------------------------------------------------------------//\r\n//-----------------------------------------------------------------------------------------------//\r\n// Helper functions to create UI from a JSON object tree:\r\n//-----------------------------------------------------------------------------------------------//\r\n\r\ntype UIVector = mod.Vector | number[];\r\n\r\ninterface UIParams {\r\n name: string;\r\n type: string;\r\n position: any;\r\n size: any;\r\n anchor: mod.UIAnchor;\r\n parent: mod.UIWidget;\r\n visible: boolean;\r\n textLabel: string;\r\n textColor: UIVector;\r\n textAlpha: number;\r\n textSize: number;\r\n textAnchor: mod.UIAnchor;\r\n padding: number;\r\n bgColor: UIVector;\r\n bgAlpha: number;\r\n bgFill: mod.UIBgFill;\r\n imageType: mod.UIImageType;\r\n imageColor: UIVector;\r\n imageAlpha: number;\r\n teamId?: mod.Team;\r\n playerId?: mod.Player;\r\n children?: any[];\r\n buttonEnabled: boolean;\r\n buttonColorBase: UIVector;\r\n buttonAlphaBase: number;\r\n buttonColorDisabled: UIVector;\r\n buttonAlphaDisabled: number;\r\n buttonColorPressed: UIVector;\r\n buttonAlphaPressed: number;\r\n buttonColorHover: UIVector;\r\n buttonAlphaHover: number;\r\n buttonColorFocused: UIVector;\r\n buttonAlphaFocused: number;\r\n}\r\n\r\nfunction __asModVector(param: number[] | mod.Vector) {\r\n if (Array.isArray(param)) return mod.CreateVector(param[0], param[1], param.length == 2 ? 0 : param[2]);\r\n else return param;\r\n}\r\n\r\nfunction __asModMessage(param: string | mod.Message) {\r\n if (typeof param === 'string') return mod.Message(param);\r\n return param;\r\n}\r\n\r\nfunction __fillInDefaultArgs(params: UIParams) {\r\n if (!params.hasOwnProperty('name')) params.name = '';\r\n if (!params.hasOwnProperty('position')) params.position = mod.CreateVector(0, 0, 0);\r\n if (!params.hasOwnProperty('size')) params.size = mod.CreateVector(100, 100, 0);\r\n if (!params.hasOwnProperty('anchor')) params.anchor = mod.UIAnchor.TopLeft;\r\n if (!params.hasOwnProperty('parent')) params.parent = mod.GetUIRoot();\r\n if (!params.hasOwnProperty('visible')) params.visible = true;\r\n if (!params.hasOwnProperty('padding')) params.padding = params.type == 'Container' ? 0 : 8;\r\n if (!params.hasOwnProperty('bgColor')) params.bgColor = mod.CreateVector(0.25, 0.25, 0.25);\r\n if (!params.hasOwnProperty('bgAlpha')) params.bgAlpha = 0.5;\r\n if (!params.hasOwnProperty('bgFill')) params.bgFill = mod.UIBgFill.Solid;\r\n}\r\n\r\nfunction __setNameAndGetWidget(uniqueName: any, params: any) {\r\n let widget = mod.FindUIWidgetWithName(uniqueName) as mod.UIWidget;\r\n mod.SetUIWidgetName(widget, params.name);\r\n return widget;\r\n}\r\n\r\nconst __cUniqueName = '----uniquename----';\r\n\r\nfunction __addUIContainer(params: UIParams) {\r\n __fillInDefaultArgs(params);\r\n let restrict = params.teamId ?? params.playerId;\r\n if (restrict) {\r\n mod.AddUIContainer(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill,\r\n restrict\r\n );\r\n } else {\r\n mod.AddUIContainer(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill\r\n );\r\n }\r\n let widget = __setNameAndGetWidget(__cUniqueName, params);\r\n if (params.children) {\r\n params.children.forEach((childParams: any) => {\r\n childParams.parent = widget;\r\n __addUIWidget(childParams);\r\n });\r\n }\r\n return widget;\r\n}\r\n\r\nfunction __fillInDefaultTextArgs(params: UIParams) {\r\n if (!params.hasOwnProperty('textLabel')) params.textLabel = '';\r\n if (!params.hasOwnProperty('textSize')) params.textSize = 0;\r\n if (!params.hasOwnProperty('textColor')) params.textColor = mod.CreateVector(1, 1, 1);\r\n if (!params.hasOwnProperty('textAlpha')) params.textAlpha = 1;\r\n if (!params.hasOwnProperty('textAnchor')) params.textAnchor = mod.UIAnchor.CenterLeft;\r\n}\r\n\r\nfunction __addUIText(params: UIParams) {\r\n __fillInDefaultArgs(params);\r\n __fillInDefaultTextArgs(params);\r\n let restrict = params.teamId ?? params.playerId;\r\n if (restrict) {\r\n mod.AddUIText(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill,\r\n __asModMessage(params.textLabel),\r\n params.textSize,\r\n __asModVector(params.textColor),\r\n params.textAlpha,\r\n params.textAnchor,\r\n restrict\r\n );\r\n } else {\r\n mod.AddUIText(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill,\r\n __asModMessage(params.textLabel),\r\n params.textSize,\r\n __asModVector(params.textColor),\r\n params.textAlpha,\r\n params.textAnchor\r\n );\r\n }\r\n return __setNameAndGetWidget(__cUniqueName, params);\r\n}\r\n\r\nfunction __fillInDefaultImageArgs(params: any) {\r\n if (!params.hasOwnProperty('imageType')) params.imageType = mod.UIImageType.None;\r\n if (!params.hasOwnProperty('imageColor')) params.imageColor = mod.CreateVector(1, 1, 1);\r\n if (!params.hasOwnProperty('imageAlpha')) params.imageAlpha = 1;\r\n}\r\n\r\nfunction __addUIImage(params: UIParams) {\r\n __fillInDefaultArgs(params);\r\n __fillInDefaultImageArgs(params);\r\n let restrict = params.teamId ?? params.playerId;\r\n if (restrict) {\r\n mod.AddUIImage(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill,\r\n params.imageType,\r\n __asModVector(params.imageColor),\r\n params.imageAlpha,\r\n restrict\r\n );\r\n } else {\r\n mod.AddUIImage(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill,\r\n params.imageType,\r\n __asModVector(params.imageColor),\r\n params.imageAlpha\r\n );\r\n }\r\n return __setNameAndGetWidget(__cUniqueName, params);\r\n}\r\n\r\nfunction __fillInDefaultArg(params: any, argName: any, defaultValue: any) {\r\n if (!params.hasOwnProperty(argName)) params[argName] = defaultValue;\r\n}\r\n\r\nfunction __fillInDefaultButtonArgs(params: any) {\r\n if (!params.hasOwnProperty('buttonEnabled')) params.buttonEnabled = true;\r\n if (!params.hasOwnProperty('buttonColorBase')) params.buttonColorBase = mod.CreateVector(0.7, 0.7, 0.7);\r\n if (!params.hasOwnProperty('buttonAlphaBase')) params.buttonAlphaBase = 1;\r\n if (!params.hasOwnProperty('buttonColorDisabled')) params.buttonColorDisabled = mod.CreateVector(0.2, 0.2, 0.2);\r\n if (!params.hasOwnProperty('buttonAlphaDisabled')) params.buttonAlphaDisabled = 0.5;\r\n if (!params.hasOwnProperty('buttonColorPressed')) params.buttonColorPressed = mod.CreateVector(0.25, 0.25, 0.25);\r\n if (!params.hasOwnProperty('buttonAlphaPressed')) params.buttonAlphaPressed = 1;\r\n if (!params.hasOwnProperty('buttonColorHover')) params.buttonColorHover = mod.CreateVector(1, 1, 1);\r\n if (!params.hasOwnProperty('buttonAlphaHover')) params.buttonAlphaHover = 1;\r\n if (!params.hasOwnProperty('buttonColorFocused')) params.buttonColorFocused = mod.CreateVector(1, 1, 1);\r\n if (!params.hasOwnProperty('buttonAlphaFocused')) params.buttonAlphaFocused = 1;\r\n}\r\n\r\nfunction __addUIButton(params: UIParams) {\r\n __fillInDefaultArgs(params);\r\n __fillInDefaultButtonArgs(params);\r\n let restrict = params.teamId ?? params.playerId;\r\n if (restrict) {\r\n mod.AddUIButton(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill,\r\n params.buttonEnabled,\r\n __asModVector(params.buttonColorBase),\r\n params.buttonAlphaBase,\r\n __asModVector(params.buttonColorDisabled),\r\n params.buttonAlphaDisabled,\r\n __asModVector(params.buttonColorPressed),\r\n params.buttonAlphaPressed,\r\n __asModVector(params.buttonColorHover),\r\n params.buttonAlphaHover,\r\n __asModVector(params.buttonColorFocused),\r\n params.buttonAlphaFocused,\r\n restrict\r\n );\r\n } else {\r\n mod.AddUIButton(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill,\r\n params.buttonEnabled,\r\n __asModVector(params.buttonColorBase),\r\n params.buttonAlphaBase,\r\n __asModVector(params.buttonColorDisabled),\r\n params.buttonAlphaDisabled,\r\n __asModVector(params.buttonColorPressed),\r\n params.buttonAlphaPressed,\r\n __asModVector(params.buttonColorHover),\r\n params.buttonAlphaHover,\r\n __asModVector(params.buttonColorFocused),\r\n params.buttonAlphaFocused\r\n );\r\n }\r\n return __setNameAndGetWidget(__cUniqueName, params);\r\n}\r\n\r\nfunction __addUIWidget(params: UIParams) {\r\n if (params == null) return undefined;\r\n if (params.type == 'Container') return __addUIContainer(params);\r\n else if (params.type == 'Text') return __addUIText(params);\r\n else if (params.type == 'Image') return __addUIImage(params);\r\n else if (params.type == 'Button') return __addUIButton(params);\r\n return undefined;\r\n}\r\n\r\nexport function ParseUI(...params: any[]) {\r\n let widget: mod.UIWidget | undefined;\r\n for (let a = 0; a < params.length; a++) {\r\n widget = __addUIWidget(params[a] as UIParams);\r\n }\r\n return widget;\r\n}\r\n\r\nexport function DisplayCustomNotificationMessage(msg: mod.Message, custom: mod.CustomNotificationSlots, duration: number, target?: mod.Player | mod.Team) {\r\n const CreateHeader = async (widgetId: string, msg: mod.Message, targetPlayer: mod.Player, slot: number) => {\r\n mod.AddUIText(\r\n widgetId,\r\n mod.CreateVector(50, 250 + slot * (40 + 5), 0),\r\n mod.CreateVector(250, 60, 0),\r\n mod.UIAnchor.TopRight,\r\n mod.GetUIRoot(),\r\n true,\r\n 8,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIBgFill.Blur,\r\n msg,\r\n 30,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIAnchor.Center,\r\n targetPlayer\r\n );\r\n if (duration > 0) {\r\n await mod.Wait(duration);\r\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(widgetId));\r\n }\r\n };\r\n const CreateSubText = async (widgetId: string, msg: mod.Message, targetPlayer: mod.Player, slot: number) => {\r\n mod.AddUIText(\r\n widgetId,\r\n mod.CreateVector(85, 270 + slot * (40 + 3), 0),\r\n mod.CreateVector(125, 40, 0),\r\n mod.UIAnchor.TopRight,\r\n mod.GetUIRoot(),\r\n true,\r\n 8,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIBgFill.Blur,\r\n msg,\r\n 20,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIAnchor.Center,\r\n targetPlayer\r\n );\r\n if (duration > 0) {\r\n await mod.Wait(duration);\r\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(widgetId));\r\n }\r\n };\r\n const createNotificationFunction = custom < 1 ? CreateHeader : CreateSubText;\r\n\r\n if (target) {\r\n // if target is player, fill message in their slot\r\n if (mod.IsType(target, mod.Types.Player)) {\r\n const widgetId = custom + String(target);\r\n createNotificationFunction(widgetId, msg, target as mod.Player, custom);\r\n }\r\n // if target is team, fill message in slot for all players on team\r\n else if (mod.IsType(target, mod.Types.Team)) {\r\n const teamMates = getPlayersInTeam(target as mod.Team);\r\n teamMates.forEach((player) => {\r\n const widgetId = custom + String(player);\r\n createNotificationFunction(widgetId, msg, player, custom);\r\n });\r\n }\r\n } else {\r\n const allPlayers = mod.AllPlayers();\r\n const n = mod.CountOf(allPlayers);\r\n for (let i = 0; i < n; i++) {\r\n let player = mod.ValueInArray(allPlayers, i) as mod.Player;\r\n const widgetId = custom + String(player);\r\n createNotificationFunction(widgetId, msg, player, custom);\r\n }\r\n }\r\n}\r\n\r\nexport function ShowEventGameModeMessage(event: mod.Message, target?: mod.Player | mod.Team) {\r\n //TODO: restore these once DisplayGameModeMessage is fixed\r\n // if (target) {\r\n // mod.DisplayGameModeMessage(event, target as mod.Player );\r\n // } else{\r\n // mod.DisplayGameModeMessage(event);\r\n // }\r\n\r\n const MakeShiftDisplayGameModeMessage = async (message: mod.Message, target?: mod.Player | mod.Team) => {\r\n const widgetId = 'GameModeMessage';\r\n if (target) {\r\n mod.AddUIText(\r\n widgetId,\r\n mod.CreateVector(0, 0, 0),\r\n mod.CreateVector(2500, 80, 0),\r\n mod.UIAnchor.TopCenter,\r\n mod.GetUIRoot(),\r\n true,\r\n 8,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIBgFill.Blur,\r\n message,\r\n 30,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIAnchor.Center,\r\n target as mod.Player\r\n );\r\n } else {\r\n mod.AddUIText(\r\n widgetId,\r\n mod.CreateVector(0, 0, 0),\r\n mod.CreateVector(2500, 80, 0),\r\n mod.UIAnchor.TopCenter,\r\n mod.GetUIRoot(),\r\n true,\r\n 8,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIBgFill.Blur,\r\n message,\r\n 30,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIAnchor.Center\r\n );\r\n }\r\n\r\n await mod.Wait(6);\r\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(widgetId));\r\n };\r\n\r\n if (target) {\r\n MakeShiftDisplayGameModeMessage(event, target as mod.Player);\r\n } else {\r\n MakeShiftDisplayGameModeMessage(event);\r\n }\r\n}\r\n\r\nexport function ShowHighlightedGameModeMessage(event: mod.Message, target?: mod.Player | mod.Team) {\r\n if (target) {\r\n mod.DisplayHighlightedWorldLogMessage(event, target as mod.Player);\r\n } else {\r\n mod.DisplayHighlightedWorldLogMessage(event);\r\n }\r\n}\r\n\r\nexport function ShowNotificationMessage(msg: mod.Message, target?: mod.Player | mod.Team) {\r\n if (target) {\r\n mod.DisplayNotificationMessage(msg, target as mod.Player);\r\n } else {\r\n mod.DisplayNotificationMessage(msg);\r\n }\r\n}\r\n\r\nexport function ClearAllCustomNotificationMessages(target: mod.Player) {\r\n try {\r\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.HeaderText, target);\r\n } catch {}\r\n try {\r\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText1, target);\r\n } catch {}\r\n try {\r\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText2, target);\r\n } catch {}\r\n try {\r\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText3, target);\r\n } catch {}\r\n try {\r\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText4, target);\r\n } catch {}\r\n}\r\n\r\nexport function ClearCustomNotificationMessage(custom: mod.CustomNotificationSlots, target?: mod.Player | mod.Team) {\r\n try {\r\n if (target) {\r\n // if target is player, just delete message in their slot\r\n if (mod.IsType(target, mod.Types.Player)) {\r\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(custom + String(target as mod.Player)));\r\n }\r\n // if target is team, delete message in slot for all players on team\r\n else if (mod.IsType(target, mod.Types.Team)) {\r\n const teamMembers = getPlayersInTeam(target as mod.Team);\r\n for (let i = 0; i < teamMembers.length; i++) {\r\n let player = teamMembers[i];\r\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(custom + String(player)));\r\n }\r\n }\r\n } else {\r\n // if no target, delete for all players\r\n const allPlayers = mod.AllPlayers();\r\n const n = mod.CountOf(allPlayers);\r\n for (let i = 0; i < n; i++) {\r\n let player = mod.ValueInArray(allPlayers, i) as mod.Player;\r\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(custom + String(player)));\r\n }\r\n }\r\n } catch {\r\n console.error('Could not clear custom message for specified target(s)');\r\n }\r\n}\r\n","import * as message from \"./message.ts\";\n\nexport * from \"./message.ts\";\n\nimport * as ui from \"./ui/index.ts\";\n\nexport * from \"./ui/index.ts\";\n\nexport default {\n\tmessage,\n\tui,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,YACf,YACG,MACF;AACD,UAAQ,KAAK,QAAQ;AAAA,IACpB,KAAK;AACJ,aAAO,IAAI,QAAQ,OAAO;AAAA,IAC3B,KAAK;AACJ,aAAO,IAAI,QAAQ,SAAS,KAAK,CAAC,CAAC;AAAA,IACpC,KAAK;AACJ,aAAO,IAAI,QAAQ,SAAS,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,IAC7C,KAAK;AACJ,aAAO,IAAI,QAAQ,SAAS,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,IACtD;AACC,YAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AACD;;;AChBA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;AC+GO,IAAM,iBAAN,MAAqB;AAAA,EAGxB,cAAc;AACV,SAAK,YAAY;AAAA,EACrB;AAAA,EAEA,OAAO,UAA4B;AAE/B,QAAI,CAAC,UAAU;AACX,WAAK,YAAY;AACjB,aAAO;AAAA,IACX;AAEA,QAAI,KAAK,UAAW,QAAO;AAE3B,SAAK,YAAY;AACjB,WAAO;AAAA,EACX;AACJ;AAEA,IAAM,aAAN,MAAiB;AAAA,EACb,cAAc;AACV,SAAK,kBAAkB,CAAC;AAAA,EAC5B;AAAA,EAIA,kBAAkB,GAA2B;AACzC,WAAO,KAAK,KAAK,gBAAgB,QAAQ;AACrC,WAAK,gBAAgB,KAAK,IAAI,eAAe,CAAC;AAAA,IAClD;AACA,WAAO,KAAK,gBAAgB,CAAC;AAAA,EACjC;AACJ;AAOA,IAAI,mBAA+B,IAAI,WAAW;AA0GlD,SAAS,cAAc,OAA8B;AACjD,MAAI,MAAM,QAAQ,KAAK,EAAG,QAAO,IAAI,aAAa,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,UAAU,IAAI,IAAI,MAAM,CAAC,CAAC;AAAA,MACjG,QAAO;AAChB;AAEA,SAAS,eAAe,OAA6B;AACjD,MAAI,OAAO,UAAU,SAAU,QAAO,IAAI,QAAQ,KAAK;AACvD,SAAO;AACX;AAEA,SAAS,oBAAoB,QAAkB;AAC3C,MAAI,CAAC,OAAO,eAAe,MAAM,EAAG,QAAO,OAAO;AAClD,MAAI,CAAC,OAAO,eAAe,UAAU,EAAG,QAAO,WAAW,IAAI,aAAa,GAAG,GAAG,CAAC;AAClF,MAAI,CAAC,OAAO,eAAe,MAAM,EAAG,QAAO,OAAO,IAAI,aAAa,KAAK,KAAK,CAAC;AAC9E,MAAI,CAAC,OAAO,eAAe,QAAQ,EAAG,QAAO,SAAS,IAAI,SAAS;AACnE,MAAI,CAAC,OAAO,eAAe,QAAQ,EAAG,QAAO,SAAS,IAAI,UAAU;AACpE,MAAI,CAAC,OAAO,eAAe,SAAS,EAAG,QAAO,UAAU;AACxD,MAAI,CAAC,OAAO,eAAe,SAAS,EAAG,QAAO,UAAU,OAAO,QAAQ,cAAc,IAAI;AACzF,MAAI,CAAC,OAAO,eAAe,SAAS,EAAG,QAAO,UAAU,IAAI,aAAa,MAAM,MAAM,IAAI;AACzF,MAAI,CAAC,OAAO,eAAe,SAAS,EAAG,QAAO,UAAU;AACxD,MAAI,CAAC,OAAO,eAAe,QAAQ,EAAG,QAAO,SAAS,IAAI,SAAS;AACvE;AAEA,SAAS,sBAAsB,YAAiB,QAAa;AACzD,MAAI,SAAS,IAAI,qBAAqB,UAAU;AAChD,MAAI,gBAAgB,QAAQ,OAAO,IAAI;AACvC,SAAO;AACX;AAEA,IAAM,gBAAgB;AAEtB,SAAS,iBAAiB,QAAkB;AACxC,sBAAoB,MAAM;AAC1B,MAAI,WAAW,OAAO,UAAU,OAAO;AACvC,MAAI,UAAU;AACV,QAAI;AAAA,MACA;AAAA,MACA,cAAc,OAAO,QAAQ;AAAA,MAC7B,cAAc,OAAO,IAAI;AAAA,MACzB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,cAAc,OAAO,OAAO;AAAA,MAC5B,OAAO;AAAA,MACP,OAAO;AAAA,MACP;AAAA,IACJ;AAAA,EACJ,OAAO;AACH,QAAI;AAAA,MACA;AAAA,MACA,cAAc,OAAO,QAAQ;AAAA,MAC7B,cAAc,OAAO,IAAI;AAAA,MACzB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,cAAc,OAAO,OAAO;AAAA,MAC5B,OAAO;AAAA,MACP,OAAO;AAAA,IACX;AAAA,EACJ;AACA,MAAI,SAAS,sBAAsB,eAAe,MAAM;AACxD,MAAI,OAAO,UAAU;AACjB,WAAO,SAAS,QAAQ,CAAC,gBAAqB;AAC1C,kBAAY,SAAS;AACrB,oBAAc,WAAW;AAAA,IAC7B,CAAC;AAAA,EACL;AACA,SAAO;AACX;AAEA,SAAS,wBAAwB,QAAkB;AAC/C,MAAI,CAAC,OAAO,eAAe,WAAW,EAAG,QAAO,YAAY;AAC5D,MAAI,CAAC,OAAO,eAAe,UAAU,EAAG,QAAO,WAAW;AAC1D,MAAI,CAAC,OAAO,eAAe,WAAW,EAAG,QAAO,YAAY,IAAI,aAAa,GAAG,GAAG,CAAC;AACpF,MAAI,CAAC,OAAO,eAAe,WAAW,EAAG,QAAO,YAAY;AAC5D,MAAI,CAAC,OAAO,eAAe,YAAY,EAAG,QAAO,aAAa,IAAI,SAAS;AAC/E;AAEA,SAAS,YAAY,QAAkB;AACnC,sBAAoB,MAAM;AAC1B,0BAAwB,MAAM;AAC9B,MAAI,WAAW,OAAO,UAAU,OAAO;AACvC,MAAI,UAAU;AACV,QAAI;AAAA,MACA;AAAA,MACA,cAAc,OAAO,QAAQ;AAAA,MAC7B,cAAc,OAAO,IAAI;AAAA,MACzB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,cAAc,OAAO,OAAO;AAAA,MAC5B,OAAO;AAAA,MACP,OAAO;AAAA,MACP,eAAe,OAAO,SAAS;AAAA,MAC/B,OAAO;AAAA,MACP,cAAc,OAAO,SAAS;AAAA,MAC9B,OAAO;AAAA,MACP,OAAO;AAAA,MACP;AAAA,IACJ;AAAA,EACJ,OAAO;AACH,QAAI;AAAA,MACA;AAAA,MACA,cAAc,OAAO,QAAQ;AAAA,MAC7B,cAAc,OAAO,IAAI;AAAA,MACzB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,cAAc,OAAO,OAAO;AAAA,MAC5B,OAAO;AAAA,MACP,OAAO;AAAA,MACP,eAAe,OAAO,SAAS;AAAA,MAC/B,OAAO;AAAA,MACP,cAAc,OAAO,SAAS;AAAA,MAC9B,OAAO;AAAA,MACP,OAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO,sBAAsB,eAAe,MAAM;AACtD;AAEA,SAAS,yBAAyB,QAAa;AAC3C,MAAI,CAAC,OAAO,eAAe,WAAW,EAAG,QAAO,YAAY,IAAI,YAAY;AAC5E,MAAI,CAAC,OAAO,eAAe,YAAY,EAAG,QAAO,aAAa,IAAI,aAAa,GAAG,GAAG,CAAC;AACtF,MAAI,CAAC,OAAO,eAAe,YAAY,EAAG,QAAO,aAAa;AAClE;AAEA,SAAS,aAAa,QAAkB;AACpC,sBAAoB,MAAM;AAC1B,2BAAyB,MAAM;AAC/B,MAAI,WAAW,OAAO,UAAU,OAAO;AACvC,MAAI,UAAU;AACV,QAAI;AAAA,MACA;AAAA,MACA,cAAc,OAAO,QAAQ;AAAA,MAC7B,cAAc,OAAO,IAAI;AAAA,MACzB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,cAAc,OAAO,OAAO;AAAA,MAC5B,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,cAAc,OAAO,UAAU;AAAA,MAC/B,OAAO;AAAA,MACP;AAAA,IACJ;AAAA,EACJ,OAAO;AACH,QAAI;AAAA,MACA;AAAA,MACA,cAAc,OAAO,QAAQ;AAAA,MAC7B,cAAc,OAAO,IAAI;AAAA,MACzB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,cAAc,OAAO,OAAO;AAAA,MAC5B,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,cAAc,OAAO,UAAU;AAAA,MAC/B,OAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO,sBAAsB,eAAe,MAAM;AACtD;AAMA,SAAS,0BAA0B,QAAa;AAC5C,MAAI,CAAC,OAAO,eAAe,eAAe,EAAG,QAAO,gBAAgB;AACpE,MAAI,CAAC,OAAO,eAAe,iBAAiB,EAAG,QAAO,kBAAkB,IAAI,aAAa,KAAK,KAAK,GAAG;AACtG,MAAI,CAAC,OAAO,eAAe,iBAAiB,EAAG,QAAO,kBAAkB;AACxE,MAAI,CAAC,OAAO,eAAe,qBAAqB,EAAG,QAAO,sBAAsB,IAAI,aAAa,KAAK,KAAK,GAAG;AAC9G,MAAI,CAAC,OAAO,eAAe,qBAAqB,EAAG,QAAO,sBAAsB;AAChF,MAAI,CAAC,OAAO,eAAe,oBAAoB,EAAG,QAAO,qBAAqB,IAAI,aAAa,MAAM,MAAM,IAAI;AAC/G,MAAI,CAAC,OAAO,eAAe,oBAAoB,EAAG,QAAO,qBAAqB;AAC9E,MAAI,CAAC,OAAO,eAAe,kBAAkB,EAAG,QAAO,mBAAmB,IAAI,aAAa,GAAG,GAAG,CAAC;AAClG,MAAI,CAAC,OAAO,eAAe,kBAAkB,EAAG,QAAO,mBAAmB;AAC1E,MAAI,CAAC,OAAO,eAAe,oBAAoB,EAAG,QAAO,qBAAqB,IAAI,aAAa,GAAG,GAAG,CAAC;AACtG,MAAI,CAAC,OAAO,eAAe,oBAAoB,EAAG,QAAO,qBAAqB;AAClF;AAEA,SAAS,cAAc,QAAkB;AACrC,sBAAoB,MAAM;AAC1B,4BAA0B,MAAM;AAChC,MAAI,WAAW,OAAO,UAAU,OAAO;AACvC,MAAI,UAAU;AACV,QAAI;AAAA,MACA;AAAA,MACA,cAAc,OAAO,QAAQ;AAAA,MAC7B,cAAc,OAAO,IAAI;AAAA,MACzB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,cAAc,OAAO,OAAO;AAAA,MAC5B,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,cAAc,OAAO,eAAe;AAAA,MACpC,OAAO;AAAA,MACP,cAAc,OAAO,mBAAmB;AAAA,MACxC,OAAO;AAAA,MACP,cAAc,OAAO,kBAAkB;AAAA,MACvC,OAAO;AAAA,MACP,cAAc,OAAO,gBAAgB;AAAA,MACrC,OAAO;AAAA,MACP,cAAc,OAAO,kBAAkB;AAAA,MACvC,OAAO;AAAA,MACP;AAAA,IACJ;AAAA,EACJ,OAAO;AACH,QAAI;AAAA,MACA;AAAA,MACA,cAAc,OAAO,QAAQ;AAAA,MAC7B,cAAc,OAAO,IAAI;AAAA,MACzB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,cAAc,OAAO,OAAO;AAAA,MAC5B,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,cAAc,OAAO,eAAe;AAAA,MACpC,OAAO;AAAA,MACP,cAAc,OAAO,mBAAmB;AAAA,MACxC,OAAO;AAAA,MACP,cAAc,OAAO,kBAAkB;AAAA,MACvC,OAAO;AAAA,MACP,cAAc,OAAO,gBAAgB;AAAA,MACrC,OAAO;AAAA,MACP,cAAc,OAAO,kBAAkB;AAAA,MACvC,OAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO,sBAAsB,eAAe,MAAM;AACtD;AAEA,SAAS,cAAc,QAAkB;AACrC,MAAI,UAAU,KAAM,QAAO;AAC3B,MAAI,OAAO,QAAQ,YAAa,QAAO,iBAAiB,MAAM;AAAA,WACrD,OAAO,QAAQ,OAAQ,QAAO,YAAY,MAAM;AAAA,WAChD,OAAO,QAAQ,QAAS,QAAO,aAAa,MAAM;AAAA,WAClD,OAAO,QAAQ,SAAU,QAAO,cAAc,MAAM;AAC7D,SAAO;AACX;AAEO,SAAS,WAAW,QAAe;AACtC,MAAI;AACJ,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACpC,aAAS,cAAc,OAAO,CAAC,CAAa;AAAA,EAChD;AACA,SAAO;AACX;;;ADxgBA;AAGO,IAAM,eAAN,MAAM,aAAY;AAAA,EAQxB,YAAY,UAAsB;AANlC;AACA;AAMC,uBAAK,kBAAmB,+BAAY,WAAZ;AACxB,uBAAK,WAAY;AAEjB,UAAM,cAAc,CAAC,OAAO,OAAO,GAAG;AACtC,UAAM,SAAS;AACf,SAAK,eAAe,QAAQ;AAAA,MAC3B,MAAM;AAAA,MACN,MAAM,CAAC,KAAK,MAAM;AAAA,MAClB,UAAU,CAAC,GAAG,EAAE;AAAA,MAChB,MAAM,aAAa,mBAAK,iBAAgB;AAAA,MACxC,QAAQ,IAAI,SAAS;AAAA,MACrB,QAAQ,IAAI,SAAS;AAAA,MACrB,SAAS,CAAC,KAAK,KAAK,GAAG;AAAA,MACvB,SAAS;AAAA,MACT,UAAU,mBAAK;AAAA,MACf,SAAS;AAAA,MACT,UAAU;AAAA,QACT;AAAA,UACC,MAAM;AAAA,UACN,MAAM,wBAAwB,mBAAK,iBAAgB;AAAA,UACnD,MAAM,CAAC,GAAG,MAAM;AAAA,UAChB,UAAU,CAAC,IAAI,CAAC;AAAA,UAChB,QAAQ,IAAI,SAAS;AAAA,UACrB,QAAQ,IAAI,SAAS;AAAA,UACrB,SAAS;AAAA,UACT,SAAS;AAAA,QACV;AAAA,QACA;AAAA,UACC,MAAM;AAAA,UACN,MAAM,uBAAuB,mBAAK,iBAAgB;AAAA,UAClD,MAAM,CAAC,GAAG,MAAM;AAAA,UAChB,UAAU,CAAC,KAAK,CAAC;AAAA,UACjB,QAAQ,IAAI,SAAS;AAAA,UACrB,QAAQ,IAAI,SAAS;AAAA,UACrB,SAAS;AAAA,UACT,SAAS;AAAA,QACV;AAAA,QACA;AAAA,UACC,MAAM;AAAA,UACN,MAAM,iBAAiB,mBAAK,iBAAgB;AAAA,UAC5C,MAAM,CAAC,KAAK,MAAM;AAAA,UAClB,UAAU,CAAC,GAAG,CAAC;AAAA,UACf,QAAQ,IAAI,SAAS;AAAA,UACrB,QAAQ,IAAI,SAAS;AAAA,UACrB,WAAW;AAAA,UACX,YAAY,IAAI,SAAS;AAAA,UACzB,WAAW,YAAY,IAAI,WAAW,kBAAkB;AAAA,UACxD,UAAU;AAAA,QACX;AAAA,MACD;AAAA,IACD,CAAC;AACD,SAAK,aAAa,IAAI;AAAA,MACrB,iBAAiB,mBAAK,iBAAgB;AAAA,IACvC;AAAA,EACD;AAAA,EAEA,SAAS;AACR,SAAK,gBAAgB,IAAI,eAAe,KAAK,YAAY;AAAA,EAE1D;AAAA,EAEA,KAAK,MAAc,eAAuB;AACzC,SAAK,gBAAgB,IAAI,mBAAmB,KAAK,cAAc,IAAI;AACnE,SAAK,cACJ,IAAI,eAAe,KAAK,YAAY,YAAY,MAAM,aAAa,CAAC;AAAA,EACtE;AAAA,EAEA,OAAO,MAAc,eAAuB;AAC3C,SAAK,cACJ,IAAI,eAAe,KAAK,YAAY,YAAY,MAAM,aAAa,CAAC;AAAA,EACtE;AAAA,EAEA,MAAM,MAAM,aAAqB,GAAG;AACnC,UAAM,IAAI,KAAK,UAAU;AACzB,SAAK,gBAAgB,IAAI,mBAAmB,KAAK,cAAc,KAAK;AAAA,EACrE;AACD;AApFQ;AACP;AACA;AAFA,aADY,cACL,WAAY;AADb,IAAM,cAAN;AAuFA,IAAM,aAAa;AAAA,EACzB,oBAAoB;AACrB;;;ADxFA,IAAO,aAAQ;AAAA,EACd;AACD;;;AGEA,IAAO,gBAAQ;AAAA,EACd;AAAA,EACA;AACD;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bf6mods/sdk",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "description": "TypeScript definitions for the BF6 modding API",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -8,6 +8,10 @@
8
8
  ".": {
9
9
  "types": "./dist/index.d.ts",
10
10
  "import": "./dist/index.js"
11
+ },
12
+ "./std": {
13
+ "types": "./dist/std/index.d.ts",
14
+ "import": "./dist/std/index.js"
11
15
  }
12
16
  },
13
17
  "repository": {