warscript 0.0.1-dev.2cd2e68 → 0.0.1-dev.3030dbc

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.
Files changed (91) hide show
  1. package/attributes.d.ts +1 -0
  2. package/attributes.lua +9 -0
  3. package/core/types/frame.lua +24 -21
  4. package/core/types/player.d.ts +15 -0
  5. package/core/types/player.lua +56 -14
  6. package/core/types/playerCamera.d.ts +2 -0
  7. package/core/types/playerCamera.lua +123 -5
  8. package/core/types/tileCell.d.ts +9 -0
  9. package/core/types/tileCell.lua +92 -0
  10. package/core/types/timer.d.ts +3 -1
  11. package/core/types/timer.lua +27 -2
  12. package/decl/native.d.ts +6 -4
  13. package/engine/behavior.d.ts +5 -0
  14. package/engine/behavior.lua +106 -27
  15. package/engine/behaviour/ability/apply-buff.lua +1 -1
  16. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  17. package/engine/behaviour/ability/emulate-impact.lua +2 -1
  18. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  19. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  20. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  21. package/engine/behaviour/ability/restore-mana.lua +6 -6
  22. package/engine/behaviour/ability.lua +7 -16
  23. package/engine/behaviour/unit/stun-immunity.d.ts +7 -3
  24. package/engine/behaviour/unit/stun-immunity.lua +52 -27
  25. package/engine/behaviour/unit.d.ts +19 -2
  26. package/engine/behaviour/unit.lua +83 -7
  27. package/engine/buff.d.ts +12 -5
  28. package/engine/buff.lua +123 -86
  29. package/engine/internal/ability.d.ts +3 -1
  30. package/engine/internal/ability.lua +34 -11
  31. package/engine/internal/item/ability.lua +51 -1
  32. package/engine/internal/item+owner.lua +12 -6
  33. package/engine/internal/item.d.ts +13 -15
  34. package/engine/internal/item.lua +63 -49
  35. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  36. package/engine/internal/misc/frame-coordinates.lua +21 -0
  37. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  38. package/engine/internal/misc/get-terrain-z.lua +11 -0
  39. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  40. package/engine/internal/misc/player-local-handle.lua +5 -0
  41. package/engine/internal/unit/ability.d.ts +35 -5
  42. package/engine/internal/unit/ability.lua +96 -21
  43. package/engine/internal/unit/main-selected.lua +12 -27
  44. package/engine/internal/unit/order.d.ts +20 -0
  45. package/engine/internal/unit/order.lua +136 -0
  46. package/engine/internal/unit+ability.lua +10 -1
  47. package/engine/internal/unit-missile-launch.lua +45 -14
  48. package/engine/internal/unit.d.ts +19 -12
  49. package/engine/internal/unit.lua +170 -109
  50. package/engine/local-client.d.ts +2 -0
  51. package/engine/local-client.lua +30 -0
  52. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  53. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  54. package/engine/object-data/entry/ability-type.lua +5 -4
  55. package/engine/object-data/entry/unit-type.d.ts +11 -2
  56. package/engine/object-data/entry/unit-type.lua +59 -1
  57. package/engine/object-field/ability.d.ts +3 -3
  58. package/engine/object-field/ability.lua +7 -6
  59. package/engine/object-field/unit.d.ts +11 -0
  60. package/engine/object-field/unit.lua +34 -0
  61. package/engine/object-field.d.ts +11 -3
  62. package/engine/object-field.lua +194 -102
  63. package/engine/random.d.ts +9 -0
  64. package/engine/random.lua +13 -0
  65. package/engine/standard/fields/unit.d.ts +4 -0
  66. package/engine/standard/fields/unit.lua +7 -0
  67. package/engine/synchronization.d.ts +11 -0
  68. package/engine/synchronization.lua +77 -0
  69. package/engine/text-tag.d.ts +36 -2
  70. package/engine/text-tag.lua +250 -10
  71. package/engine/unit.d.ts +1 -0
  72. package/engine/unit.lua +1 -0
  73. package/net/socket.lua +1 -1
  74. package/objutil/buff.lua +1 -1
  75. package/package.json +2 -2
  76. package/patch-lualib.lua +1 -1
  77. package/utility/arrays.d.ts +1 -0
  78. package/utility/arrays.lua +8 -0
  79. package/utility/callback-array.d.ts +17 -0
  80. package/utility/callback-array.lua +61 -0
  81. package/utility/functions.d.ts +7 -0
  82. package/utility/functions.lua +12 -0
  83. package/utility/linked-set.d.ts +1 -0
  84. package/utility/linked-set.lua +19 -1
  85. package/utility/lua-maps.d.ts +12 -2
  86. package/utility/lua-maps.lua +37 -2
  87. package/utility/lua-sets.d.ts +1 -0
  88. package/utility/lua-sets.lua +4 -0
  89. package/utility/types.d.ts +3 -0
  90. package/core/types/order.d.ts +0 -26
  91. package/core/types/order.lua +0 -65
@@ -23,7 +23,9 @@ local ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.Ob
23
23
  local ____linked_2Dset = require("utility.linked-set")
24
24
  local mutableLinkedSet = ____linked_2Dset.mutableLinkedSet
25
25
  local ____lua_2Dmaps = require("utility.lua-maps")
26
+ local emptyLuaMap = ____lua_2Dmaps.emptyLuaMap
26
27
  local getOrPut = ____lua_2Dmaps.getOrPut
28
+ local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
27
29
  local mutableWeakLuaMap = ____lua_2Dmaps.mutableWeakLuaMap
28
30
  local ____arrays = require("utility.arrays")
29
31
  local emptyArray = ____arrays.emptyArray
@@ -38,7 +40,7 @@ local ObjectFieldBase = __TS__Class()
38
40
  ObjectFieldBase.name = "ObjectFieldBase"
39
41
  function ObjectFieldBase.prototype.____constructor(self, id, isGlobal)
40
42
  if isGlobal == nil then
41
- isGlobal = true
43
+ isGlobal = false
42
44
  end
43
45
  self.isGlobal = isGlobal
44
46
  self.valueByInstance = setmetatable({}, {__mode = "k"})
@@ -57,9 +59,9 @@ end
57
59
  function ObjectFieldBase.prototype.supports(self, instance)
58
60
  return __TS__InstanceOf(instance, self.instanceClass)
59
61
  end
60
- function ObjectFieldBase.prototype.hasValue(self, instance)
62
+ function ObjectFieldBase.prototype.hasValue(self, objectDataEntryId)
61
63
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
62
- return self.isGlobal or defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)] ~= nil or self:hasNativeFieldValue(instance)
64
+ return self.isGlobal or defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[objectDataEntryId] ~= nil or self:hasNativeFieldValue(objectDataEntryId)
63
65
  end
64
66
  function ObjectFieldBase.create(self, id, isGlobal)
65
67
  return __TS__New(
@@ -149,7 +151,13 @@ function ObjectField.prototype.applyModifier(self, instance, modifier)
149
151
  originalValueByInstance = mutableWeakLuaMap()
150
152
  self.originalValueByInstance = originalValueByInstance
151
153
  end
152
- originalValueByInstance[instance] = self:getActualValue(instance)
154
+ local ____originalValueByInstance_1 = originalValueByInstance
155
+ local ____instance_2 = instance
156
+ local ____originalValueByInstance_instance_0 = originalValueByInstance[instance]
157
+ if ____originalValueByInstance_instance_0 == nil then
158
+ ____originalValueByInstance_instance_0 = self:getActualValue(instance)
159
+ end
160
+ ____originalValueByInstance_1[____instance_2] = ____originalValueByInstance_instance_0
153
161
  self:setActualValue(
154
162
  instance,
155
163
  self:calculateActualValue(instance)
@@ -192,40 +200,41 @@ function ObjectField.prototype.trySetValue(self, entry, value)
192
200
  end
193
201
  function ObjectField.prototype.getActualValue(self, instance)
194
202
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
195
- if defaultValueByObjectDataEntryId ~= nil then
196
- local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)]
203
+ if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
204
+ local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
197
205
  if defaultValue ~= nil or self.isGlobal then
198
- local ____self_valueByInstance_instance_0 = self.valueByInstance[instance]
199
- if ____self_valueByInstance_instance_0 == nil then
200
- ____self_valueByInstance_instance_0 = defaultValue
206
+ local ____self_valueByInstance_instance_3 = self.valueByInstance[instance]
207
+ if ____self_valueByInstance_instance_3 == nil then
208
+ ____self_valueByInstance_instance_3 = defaultValue
201
209
  end
202
- local ____self_valueByInstance_instance_0_1 = ____self_valueByInstance_instance_0
203
- if ____self_valueByInstance_instance_0_1 == nil then
204
- ____self_valueByInstance_instance_0_1 = self.defaultValue
210
+ local ____self_valueByInstance_instance_3_4 = ____self_valueByInstance_instance_3
211
+ if ____self_valueByInstance_instance_3_4 == nil then
212
+ ____self_valueByInstance_instance_3_4 = self.defaultValue
205
213
  end
206
- return ____self_valueByInstance_instance_0_1
214
+ return ____self_valueByInstance_instance_3_4
207
215
  end
208
216
  end
209
- local ____temp_2 = self:getNativeFieldValue(instance)
210
- if ____temp_2 == nil then
211
- ____temp_2 = self.defaultValue
217
+ local ____temp_5 = self:getNativeFieldValue(instance)
218
+ if ____temp_5 == nil then
219
+ ____temp_5 = self.defaultValue
212
220
  end
213
- return ____temp_2
221
+ return ____temp_5
214
222
  end
215
223
  function ObjectField.prototype.setActualValue(self, instance, value)
216
224
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
217
- if defaultValueByObjectDataEntryId ~= nil then
218
- local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)]
225
+ local objectDataEntryId = self:getObjectDataEntryId(instance)
226
+ if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
227
+ local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[objectDataEntryId]
219
228
  if defaultValue ~= nil or self.isGlobal then
220
- local ____self_valueByInstance_instance_3 = self.valueByInstance[instance]
221
- if ____self_valueByInstance_instance_3 == nil then
222
- ____self_valueByInstance_instance_3 = defaultValue
229
+ local ____self_valueByInstance_instance_6 = self.valueByInstance[instance]
230
+ if ____self_valueByInstance_instance_6 == nil then
231
+ ____self_valueByInstance_instance_6 = defaultValue
223
232
  end
224
- local ____self_valueByInstance_instance_3_4 = ____self_valueByInstance_instance_3
225
- if ____self_valueByInstance_instance_3_4 == nil then
226
- ____self_valueByInstance_instance_3_4 = self.defaultValue
233
+ local ____self_valueByInstance_instance_6_7 = ____self_valueByInstance_instance_6
234
+ if ____self_valueByInstance_instance_6_7 == nil then
235
+ ____self_valueByInstance_instance_6_7 = self.defaultValue
227
236
  end
228
- local previousValue = ____self_valueByInstance_instance_3_4
237
+ local previousValue = ____self_valueByInstance_instance_6_7
229
238
  if value ~= previousValue then
230
239
  self.valueByInstance[instance] = value
231
240
  self:invokeValueChangeEvent(instance, self, previousValue, value)
@@ -233,7 +242,7 @@ function ObjectField.prototype.setActualValue(self, instance, value)
233
242
  return true
234
243
  end
235
244
  end
236
- if not self:hasNativeFieldValue(instance) then
245
+ if not self:hasNativeFieldValue(objectDataEntryId) then
237
246
  return false
238
247
  end
239
248
  local previousValue = self:getNativeFieldValue(instance)
@@ -246,10 +255,10 @@ function ObjectField.prototype.setActualValue(self, instance, value)
246
255
  return true
247
256
  end
248
257
  function ObjectField.prototype.calculateActualValue(self, instance)
249
- local ____opt_5 = self.originalValueByInstance
250
- local originalValue = ____opt_5 and ____opt_5[instance]
251
- local ____opt_7 = self.modifiersByInstance
252
- local modifiers = ____opt_7 and ____opt_7[instance]
258
+ local ____opt_8 = self.originalValueByInstance
259
+ local originalValue = ____opt_8 and ____opt_8[instance]
260
+ local ____opt_10 = self.modifiersByInstance
261
+ local modifiers = ____opt_10 and ____opt_10[instance]
253
262
  if originalValue ~= nil then
254
263
  local value = originalValue
255
264
  if modifiers ~= nil then
@@ -314,37 +323,37 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
314
323
  if defaultValueByObjectDataEntryId ~= nil then
315
324
  local value = defaultValueByObjectDataEntryId[entry.id]
316
325
  if value ~= nil then
317
- local ____temp_10
326
+ local ____temp_13
318
327
  if index == nil then
319
- ____temp_10 = value
328
+ ____temp_13 = value
320
329
  else
321
- local ____value_index_9 = value[index + 1]
322
- if ____value_index_9 == nil then
323
- ____value_index_9 = self.defaultValue
330
+ local ____value_index_12 = value[index + 1]
331
+ if ____value_index_12 == nil then
332
+ ____value_index_12 = self.defaultValue
324
333
  end
325
- ____temp_10 = ____value_index_9
334
+ ____temp_13 = ____value_index_12
326
335
  end
327
- return ____temp_10
336
+ return ____temp_13
328
337
  end
329
338
  end
330
339
  return index == nil and ({}) or self.defaultValue
331
340
  end
332
341
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
333
- if defaultValueByObjectDataEntryId ~= nil then
334
- local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
335
- if defaultValue ~= nil then
336
- local value = self.valueByInstance[entry] or defaultValue
337
- local ____temp_12
342
+ if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
343
+ local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(entry)]
344
+ if defaultValue ~= nil or self.isGlobal then
345
+ local value = self.valueByInstance[entry] or defaultValue or emptyArray()
346
+ local ____temp_15
338
347
  if index == nil then
339
- ____temp_12 = value
348
+ ____temp_15 = value
340
349
  else
341
- local ____value_index_11 = value[index + 1]
342
- if ____value_index_11 == nil then
343
- ____value_index_11 = self.defaultValue
350
+ local ____value_index_14 = value[index + 1]
351
+ if ____value_index_14 == nil then
352
+ ____value_index_14 = self.defaultValue
344
353
  end
345
- ____temp_12 = ____value_index_11
354
+ ____temp_15 = ____value_index_14
346
355
  end
347
- return ____temp_12
356
+ return ____temp_15
348
357
  end
349
358
  end
350
359
  if index ~= nil then
@@ -389,36 +398,16 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
389
398
  if defaultValueByObjectDataEntryId ~= nil then
390
399
  local valueByLevel = defaultValueByObjectDataEntryId[entry.id]
391
400
  if valueByLevel ~= nil then
392
- local ____valueByLevel_index_13 = valueByLevel[level + 1]
393
- if ____valueByLevel_index_13 == nil then
394
- ____valueByLevel_index_13 = self.defaultValue
401
+ local ____valueByLevel_index_16 = valueByLevel[level + 1]
402
+ if ____valueByLevel_index_16 == nil then
403
+ ____valueByLevel_index_16 = self.defaultValue
395
404
  end
396
- return ____valueByLevel_index_13
405
+ return ____valueByLevel_index_16
397
406
  end
398
407
  end
399
408
  return self.defaultValue
400
409
  end
401
- local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
402
- if defaultValueByObjectDataEntryId ~= nil then
403
- local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
404
- if defaultValueByLevel ~= nil or self.isGlobal then
405
- local ____opt_14 = self.valueByInstance[entry]
406
- local ____temp_16 = ____opt_14 and ____opt_14[level + 1]
407
- if ____temp_16 == nil then
408
- ____temp_16 = (defaultValueByLevel or emptyArray())[level + 1]
409
- end
410
- local ____temp_16_17 = ____temp_16
411
- if ____temp_16_17 == nil then
412
- ____temp_16_17 = self.defaultValue
413
- end
414
- return ____temp_16_17
415
- end
416
- end
417
- local ____temp_18 = self:getNativeFieldValue(entry, level)
418
- if ____temp_18 == nil then
419
- ____temp_18 = self.defaultValue
420
- end
421
- return ____temp_18
410
+ return self:getActualValue(entry, level)
422
411
  end
423
412
  function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
424
413
  if value == nil then
@@ -458,28 +447,129 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
458
447
  valueByLevel[level + 1] = value
459
448
  return true
460
449
  end
450
+ local modifiersByInstance = self.modifiersByInstance
451
+ if modifiersByInstance ~= nil then
452
+ local modifiers = modifiersByInstance[entry]
453
+ if modifiers ~= nil and modifiers.size ~= 0 then
454
+ local originalValueByLevelByInstance = self.originalValueByLevelByInstance
455
+ if originalValueByLevelByInstance == nil then
456
+ originalValueByLevelByInstance = mutableWeakLuaMap()
457
+ self.originalValueByLevelByInstance = originalValueByLevelByInstance
458
+ end
459
+ getOrPut(originalValueByLevelByInstance, entry, mutableLuaMap)[level] = value
460
+ value = self:calculateActualValue(entry, level)
461
+ end
462
+ end
463
+ return self:setActualValue(entry, level, value)
464
+ end
465
+ function ObjectLevelField.prototype.applyModifier(self, instance, modifier)
466
+ local modifiersByInstance = self.modifiersByInstance
467
+ if modifiersByInstance == nil then
468
+ modifiersByInstance = mutableWeakLuaMap()
469
+ self.modifiersByInstance = modifiersByInstance
470
+ end
471
+ if getOrPut(modifiersByInstance, instance, mutableLinkedSet):add(modifier) then
472
+ local originalValueByLevelByInstance = self.originalValueByLevelByInstance
473
+ if originalValueByLevelByInstance == nil then
474
+ originalValueByLevelByInstance = mutableWeakLuaMap()
475
+ self.originalValueByLevelByInstance = originalValueByLevelByInstance
476
+ end
477
+ local originalValueByLevel = getOrPut(originalValueByLevelByInstance, instance, mutableLuaMap)
478
+ local levelCount = self:getLevelCount(instance)
479
+ for level = 0, levelCount - 1 do
480
+ local ____originalValueByLevel_level_17 = originalValueByLevel[level]
481
+ if ____originalValueByLevel_level_17 == nil then
482
+ ____originalValueByLevel_level_17 = self:getActualValue(instance, level)
483
+ end
484
+ originalValueByLevel[level] = ____originalValueByLevel_level_17
485
+ self:setActualValue(
486
+ instance,
487
+ level,
488
+ self:calculateActualValue(instance, level)
489
+ )
490
+ end
491
+ end
492
+ end
493
+ function ObjectLevelField.prototype.removeModifier(self, instance, modifier)
494
+ local modifiersByInstance = self.modifiersByInstance
495
+ if modifiersByInstance ~= nil then
496
+ local modifiers = modifiersByInstance[instance]
497
+ if modifiers ~= nil and modifiers:remove(modifier) then
498
+ local levelCount = self:getLevelCount(instance)
499
+ for level = 0, levelCount - 1 do
500
+ self:setActualValue(
501
+ instance,
502
+ level,
503
+ self:calculateActualValue(instance, level)
504
+ )
505
+ end
506
+ return true
507
+ end
508
+ end
509
+ return false
510
+ end
511
+ function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value)
512
+ if value ~= nil then
513
+ if __TS__TypeOf(value) ~= __TS__TypeOf(self.defaultValue) then
514
+ return false
515
+ end
516
+ if type(levelOrValue) ~= "number" then
517
+ return false
518
+ end
519
+ return self:setValue(entry, levelOrValue, value)
520
+ end
521
+ if __TS__TypeOf(levelOrValue) ~= __TS__TypeOf(self.defaultValue) then
522
+ return false
523
+ end
524
+ return self:setValue(entry, levelOrValue)
525
+ end
526
+ function ObjectLevelField.prototype.getActualValue(self, instance, level)
461
527
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
462
- if defaultValueByObjectDataEntryId ~= nil then
463
- local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
528
+ if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
529
+ local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
464
530
  if defaultValueByLevel ~= nil or self.isGlobal then
465
- local valueByLevel = self.valueByInstance[entry]
531
+ local ____opt_18 = self.valueByInstance[instance]
532
+ local ____temp_20 = ____opt_18 and ____opt_18[level + 1]
533
+ if ____temp_20 == nil then
534
+ ____temp_20 = (defaultValueByLevel or emptyArray())[level + 1]
535
+ end
536
+ local ____temp_20_21 = ____temp_20
537
+ if ____temp_20_21 == nil then
538
+ ____temp_20_21 = self.defaultValue
539
+ end
540
+ return ____temp_20_21
541
+ end
542
+ end
543
+ local ____temp_22 = self:getNativeFieldValue(instance, level)
544
+ if ____temp_22 == nil then
545
+ ____temp_22 = self.defaultValue
546
+ end
547
+ return ____temp_22
548
+ end
549
+ function ObjectLevelField.prototype.setActualValue(self, instance, level, value)
550
+ local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
551
+ local objectDataEntryId = self:getObjectDataEntryId(instance)
552
+ if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
553
+ local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[objectDataEntryId]
554
+ if defaultValueByLevel ~= nil or self.isGlobal then
555
+ local valueByLevel = self.valueByInstance[instance]
466
556
  if valueByLevel == nil then
467
557
  valueByLevel = {}
468
- self.valueByInstance[entry] = valueByLevel
558
+ self.valueByInstance[instance] = valueByLevel
469
559
  end
470
- local ____valueByLevel_index_19 = valueByLevel[level + 1]
471
- if ____valueByLevel_index_19 == nil then
472
- ____valueByLevel_index_19 = (defaultValueByLevel or emptyArray())[level + 1]
560
+ local ____valueByLevel_index_23 = valueByLevel[level + 1]
561
+ if ____valueByLevel_index_23 == nil then
562
+ ____valueByLevel_index_23 = (defaultValueByLevel or emptyArray())[level + 1]
473
563
  end
474
- local ____valueByLevel_index_19_20 = ____valueByLevel_index_19
475
- if ____valueByLevel_index_19_20 == nil then
476
- ____valueByLevel_index_19_20 = self.defaultValue
564
+ local ____valueByLevel_index_23_24 = ____valueByLevel_index_23
565
+ if ____valueByLevel_index_23_24 == nil then
566
+ ____valueByLevel_index_23_24 = self.defaultValue
477
567
  end
478
- local previousValue = ____valueByLevel_index_19_20
568
+ local previousValue = ____valueByLevel_index_23_24
479
569
  if value ~= previousValue then
480
570
  valueByLevel[level + 1] = value
481
571
  self:invokeValueChangeEvent(
482
- entry,
572
+ instance,
483
573
  self,
484
574
  level,
485
575
  previousValue,
@@ -489,16 +579,16 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
489
579
  return true
490
580
  end
491
581
  end
492
- if not self:hasNativeFieldValue(entry) then
582
+ if not self:hasNativeFieldValue(objectDataEntryId) then
493
583
  return false
494
584
  end
495
- local previousValue = self:getNativeFieldValue(entry, level)
585
+ local previousValue = self:getNativeFieldValue(instance, level)
496
586
  if value ~= previousValue then
497
- if not self:setNativeFieldValue(entry, level, value) then
587
+ if not self:setNativeFieldValue(instance, level, value) then
498
588
  return false
499
589
  end
500
590
  self:invokeValueChangeEvent(
501
- entry,
591
+ instance,
502
592
  self,
503
593
  level,
504
594
  previousValue,
@@ -507,20 +597,22 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
507
597
  end
508
598
  return true
509
599
  end
510
- function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value)
511
- if value ~= nil then
512
- if __TS__TypeOf(value) ~= __TS__TypeOf(self.defaultValue) then
513
- return false
514
- end
515
- if type(levelOrValue) ~= "number" then
516
- return false
600
+ function ObjectLevelField.prototype.calculateActualValue(self, instance, level)
601
+ local ____opt_27 = self.originalValueByLevelByInstance
602
+ local ____opt_25 = ____opt_27 and ____opt_27[instance]
603
+ local originalValue = ____opt_25 and ____opt_25[level]
604
+ local ____opt_29 = self.modifiersByInstance
605
+ local modifiers = ____opt_29 and ____opt_29[instance]
606
+ if originalValue ~= nil then
607
+ local value = originalValue
608
+ if modifiers ~= nil then
609
+ for modifier in pairs(modifiers) do
610
+ value = modifier(instance, level, value, originalValue)
611
+ end
517
612
  end
518
- return self:setValue(entry, levelOrValue, value)
519
- end
520
- if __TS__TypeOf(levelOrValue) ~= __TS__TypeOf(self.defaultValue) then
521
- return false
613
+ return value
522
614
  end
523
- return self:setValue(entry, levelOrValue)
615
+ return self.defaultValue
524
616
  end
525
617
  function ObjectLevelField.prototype.invokeValueChangeEvent(self, ...)
526
618
  self:invokeValueChangeEventRecursive(
@@ -1,4 +1,5 @@
1
1
  /** @noSelfInFile */
2
+ import { ReadonlyNonEmptyArray } from "../utility/types";
2
3
  export declare const randomAngle: () => number;
3
4
  export declare const randomInteger: {
4
5
  (upperBound?: number): number;
@@ -9,3 +10,11 @@ export declare const randomFloat: {
9
10
  (lowerBound: number, upperBound: number): number;
10
11
  };
11
12
  export declare const randomXY: (centerX: number, centerY: number, range: number) => LuaMultiReturn<[x: number, y: number]>;
13
+ export declare const randomElement: {
14
+ <T>(array: ReadonlyNonEmptyArray<T>): T;
15
+ <T>(array: ReadonlyArray<T>): T | undefined;
16
+ };
17
+ export declare const random: {
18
+ <T>(element: T, ...elements: T[]): T;
19
+ <T>(...elements: T[]): T | undefined;
20
+ };
package/engine/random.lua CHANGED
@@ -4,6 +4,7 @@ local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
4
4
  local PI = ____math.PI
5
5
  local getRandomInt = GetRandomInt
6
6
  local getRandomReal = GetRandomReal
7
+ local select = _G.select
7
8
  local cos = math.cos
8
9
  local sin = math.sin
9
10
  local sqrt = math.sqrt
@@ -15,4 +16,16 @@ ____exports.randomXY = function(centerX, centerY, range)
15
16
  local t = getRandomReal(0, 1) * 2 * PI
16
17
  return centerX + r * cos(t), centerY + r * sin(t)
17
18
  end
19
+ ____exports.randomElement = function(array)
20
+ return array[getRandomInt(1, #array)]
21
+ end
22
+ ____exports.random = function(...)
23
+ return (select(
24
+ getRandomInt(
25
+ 1,
26
+ select("#", ...)
27
+ ),
28
+ ...
29
+ ))
30
+ end
18
31
  return ____exports
@@ -0,0 +1,4 @@
1
+ /** @noSelfInFile */
2
+ import { UnitClassificationsField, UnitPropulsionWindowField } from "../../object-field/unit";
3
+ export declare const PROPULSION_WINDOW_UNIT_FLOAT_FIELD: UnitPropulsionWindowField & symbol;
4
+ export declare const UNIT_CLASSIFICATIONS_FIELD: UnitClassificationsField & symbol;
@@ -0,0 +1,7 @@
1
+ local ____exports = {}
2
+ local ____unit = require("engine.object-field.unit")
3
+ local UnitClassificationsField = ____unit.UnitClassificationsField
4
+ local UnitPropulsionWindowField = ____unit.UnitPropulsionWindowField
5
+ ____exports.PROPULSION_WINDOW_UNIT_FLOAT_FIELD = UnitPropulsionWindowField:create(fourCC("urpw"))
6
+ ____exports.UNIT_CLASSIFICATIONS_FIELD = UnitClassificationsField:create(fourCC("utyp"))
7
+ return ____exports
@@ -0,0 +1,11 @@
1
+ /** @noSelfInFile */
2
+ import { Player } from "../core/types/player";
3
+ import { Event } from "../event";
4
+ export declare const synchronizer: <T, K extends number>(getSyncId: (object: T) => K, getObject: (syncId: K) => T | undefined) => ((player: Player, object: T | undefined) => Promise<T | undefined>);
5
+ export declare class ObjectBus<T, K extends number> {
6
+ private readonly getSyncId;
7
+ readonly event: Event<[Player, T | undefined]>;
8
+ private readonly syncSlider;
9
+ constructor(getSyncId: (object: T) => K, getObject: (syncId: K) => T | undefined);
10
+ send(object: T | undefined): void;
11
+ }
@@ -0,0 +1,77 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__New = ____lualib.__TS__New
3
+ local __TS__Promise = ____lualib.__TS__Promise
4
+ local __TS__Class = ____lualib.__TS__Class
5
+ local ____exports = {}
6
+ local ____player = require("core.types.player")
7
+ local Player = ____player.Player
8
+ local ____math = require("math")
9
+ local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
10
+ local MINIMUM_INTEGER = ____math.MINIMUM_INTEGER
11
+ local ____linked_2Dset = require("utility.linked-set")
12
+ local LinkedSet = ____linked_2Dset.LinkedSet
13
+ local ____event = require("event")
14
+ local Event = ____event.Event
15
+ local eventInvoke = Event.invoke
16
+ local createFrameByType = BlzCreateFrameByType
17
+ local createTrigger = CreateTrigger
18
+ local getOriginFrame = BlzGetOriginFrame
19
+ local getTriggerFrameValue = BlzGetTriggerFrameValue
20
+ local getTriggerPlayer = GetTriggerPlayer
21
+ local frameSetMinMaxValue = BlzFrameSetMinMaxValue
22
+ local frameSetValue = BlzFrameSetValue
23
+ local triggerAddAction = TriggerAddAction
24
+ local triggerRegisterFrameEvent = BlzTriggerRegisterFrameEvent
25
+ ____exports.synchronizer = function(getSyncId, getObject)
26
+ local queue = __TS__New(LinkedSet)
27
+ local socket = __TS__New(____exports.ObjectBus, getSyncId, getObject)
28
+ socket.event:addListener(function(_, object)
29
+ local ____opt_0 = queue:pop()
30
+ if ____opt_0 ~= nil then
31
+ ____opt_0(object)
32
+ end
33
+ end)
34
+ local function executor(____, resolve)
35
+ queue:add(resolve)
36
+ end
37
+ return function(player, object)
38
+ if player.isLocal then
39
+ socket:send(object)
40
+ end
41
+ return __TS__New(__TS__Promise, executor)
42
+ end
43
+ end
44
+ ____exports.ObjectBus = __TS__Class()
45
+ local ObjectBus = ____exports.ObjectBus
46
+ ObjectBus.name = "ObjectBus"
47
+ function ObjectBus.prototype.____constructor(self, getSyncId, getObject)
48
+ self.getSyncId = getSyncId
49
+ local syncSlider = createFrameByType(
50
+ "SLIDER",
51
+ "Synchronizer",
52
+ getOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0),
53
+ "",
54
+ 0
55
+ )
56
+ frameSetMinMaxValue(syncSlider, MINIMUM_INTEGER, MAXIMUM_INTEGER)
57
+ self.syncSlider = syncSlider
58
+ local event = __TS__New(Event)
59
+ local trigger = createTrigger()
60
+ triggerRegisterFrameEvent(trigger, syncSlider, FRAMEEVENT_SLIDER_VALUE_CHANGED)
61
+ triggerAddAction(
62
+ trigger,
63
+ function()
64
+ eventInvoke(
65
+ event,
66
+ Player:of(getTriggerPlayer()),
67
+ getObject(getTriggerFrameValue())
68
+ )
69
+ end
70
+ )
71
+ self.event = event
72
+ end
73
+ function ObjectBus.prototype.send(self, object)
74
+ local syncId = object ~= nil and self.getSyncId(object) or 0
75
+ frameSetValue(self.syncSlider, syncId)
76
+ end
77
+ return ____exports
@@ -1,5 +1,7 @@
1
1
  /** @noSelfInFile */
2
2
  import { Color } from "../core/types/color";
3
+ import { Unit } from "./internal/unit";
4
+ import { AbstractDestroyable, Destructor } from "../destroyable";
3
5
  export type TextTagPreset = {
4
6
  fadepoint: number;
5
7
  lifespan: number;
@@ -10,9 +12,39 @@ export type TextTagPreset = {
10
12
  velocityY: number;
11
13
  color: Color;
12
14
  };
13
- export declare class TextTag {
14
- private readonly handle;
15
+ declare const enum TextTagPropertyKey {
16
+ UNIT = 100,
17
+ HANDLE = 101,
18
+ CONFIGURATION = 102,
19
+ TEXT = 103,
20
+ FONT_SIZE = 104,
21
+ COLOR = 105,
22
+ X = 106,
23
+ Y = 107
24
+ }
25
+ export declare class TextTag extends AbstractDestroyable {
26
+ private [TextTagPropertyKey.HANDLE]?;
27
+ private [TextTagPropertyKey.CONFIGURATION]?;
28
+ private [TextTagPropertyKey.TEXT]?;
29
+ private [TextTagPropertyKey.FONT_SIZE]?;
30
+ private [TextTagPropertyKey.COLOR]?;
31
+ private [TextTagPropertyKey.UNIT]?;
32
+ private [TextTagPropertyKey.X]?;
33
+ private [TextTagPropertyKey.Y]?;
15
34
  private constructor();
35
+ protected onDestroy(): Destructor;
36
+ get text(): string;
37
+ set text(text: string);
38
+ get fontSize(): number;
39
+ set fontSize(fontSize: number);
40
+ get color(): Color;
41
+ set color(color: Color);
42
+ get unit(): Unit | undefined;
43
+ set unit(unit: Unit | undefined);
44
+ get x(): number;
45
+ set x(x: number);
46
+ get y(): number;
47
+ set y(y: number);
16
48
  static BASE: Readonly<TextTagPreset>;
17
49
  static BASH: Readonly<TextTagPreset>;
18
50
  static CRITICAL_STRIKE: Readonly<TextTagPreset>;
@@ -22,4 +54,6 @@ export declare class TextTag {
22
54
  static MISS: Readonly<TextTagPreset>;
23
55
  static SHADOW_STRIKE: Readonly<TextTagPreset>;
24
56
  static flash(configuration: Readonly<TextTagPreset>, text: string, x: number, y: number, z?: number): void;
57
+ static create(configuration: Readonly<TextTagPreset>, text: string, unit: Unit): TextTag;
25
58
  }
59
+ export {};