warscript 0.0.1-dev.66ce6c9 → 0.0.1-dev.6912057

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 (107) hide show
  1. package/attributes.d.ts +5 -0
  2. package/attributes.lua +8 -1
  3. package/core/types/effect.d.ts +1 -3
  4. package/core/types/effect.lua +26 -29
  5. package/core/types/sound.d.ts +17 -25
  6. package/core/types/sound.lua +85 -44
  7. package/core/types/timer.d.ts +8 -8
  8. package/core/types/timer.lua +25 -23
  9. package/decl/native.d.ts +840 -786
  10. package/engine/behavior.d.ts +2 -0
  11. package/engine/behavior.lua +53 -27
  12. package/engine/behaviour/ability/apply-buff.lua +1 -1
  13. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  14. package/engine/behaviour/ability/damage.d.ts +9 -3
  15. package/engine/behaviour/ability/damage.lua +26 -38
  16. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  17. package/engine/behaviour/ability/emulate-impact.lua +18 -3
  18. package/engine/behaviour/ability.d.ts +4 -1
  19. package/engine/behaviour/ability.lua +14 -21
  20. package/engine/behaviour/unit/stun-immunity.d.ts +5 -3
  21. package/engine/behaviour/unit/stun-immunity.lua +43 -27
  22. package/engine/behaviour/unit.d.ts +28 -0
  23. package/engine/behaviour/unit.lua +163 -4
  24. package/engine/buff.d.ts +15 -9
  25. package/engine/buff.lua +90 -53
  26. package/engine/internal/ability.d.ts +4 -0
  27. package/engine/internal/ability.lua +23 -0
  28. package/engine/internal/item/ability.lua +63 -11
  29. package/engine/internal/item.d.ts +5 -2
  30. package/engine/internal/item.lua +75 -3
  31. package/engine/internal/mechanics/ability-duration.lua +1 -1
  32. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  33. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  34. package/engine/internal/unit/ability.d.ts +35 -0
  35. package/engine/internal/unit/ability.lua +62 -0
  36. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  37. package/engine/internal/unit/allowed-targets.lua +9 -1
  38. package/engine/internal/unit/order.d.ts +20 -0
  39. package/engine/internal/unit/order.lua +136 -0
  40. package/engine/internal/unit+damage.d.ts +2 -11
  41. package/engine/internal/unit+damage.lua +10 -14
  42. package/engine/internal/unit+spellSteal.lua +1 -2
  43. package/engine/internal/unit-missile-launch.lua +1 -1
  44. package/engine/internal/unit.d.ts +29 -7
  45. package/engine/internal/unit.lua +239 -94
  46. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  47. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  48. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  49. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  50. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  51. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  52. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  53. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  54. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  55. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  56. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  57. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  58. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  59. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  60. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  61. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  62. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  63. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  64. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  65. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  66. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  67. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  68. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  69. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  70. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  71. package/engine/object-data/entry/ability-type/web.lua +52 -0
  72. package/engine/object-data/entry/ability-type.d.ts +11 -11
  73. package/engine/object-data/entry/ability-type.lua +32 -13
  74. package/engine/object-data/entry/buff-type/applicable.lua +5 -0
  75. package/engine/object-data/entry/buff-type.d.ts +5 -11
  76. package/engine/object-data/entry/buff-type.lua +11 -27
  77. package/engine/object-data/entry/sound-preset.d.ts +17 -0
  78. package/engine/object-data/entry/sound-preset.lua +104 -0
  79. package/engine/object-data/entry/unit-type.d.ts +2 -2
  80. package/engine/object-data/entry/unit-type.lua +94 -84
  81. package/engine/object-field/ability.d.ts +1 -1
  82. package/engine/object-field/unit.d.ts +57 -3
  83. package/engine/object-field/unit.lua +207 -7
  84. package/engine/object-field.d.ts +15 -4
  85. package/engine/object-field.lua +184 -90
  86. package/engine/standard/entries/buff-type.d.ts +3 -0
  87. package/engine/standard/entries/buff-type.lua +3 -0
  88. package/engine/standard/fields/unit.d.ts +4 -0
  89. package/engine/standard/fields/unit.lua +7 -0
  90. package/engine/text-tag.d.ts +36 -2
  91. package/engine/text-tag.lua +175 -10
  92. package/engine/unit.d.ts +1 -0
  93. package/engine/unit.lua +1 -0
  94. package/objutil/buff.lua +1 -2
  95. package/package.json +2 -2
  96. package/utility/arrays.d.ts +1 -0
  97. package/utility/arrays.lua +3 -0
  98. package/utility/functions.d.ts +6 -0
  99. package/utility/functions.lua +6 -0
  100. package/utility/linked-set.d.ts +1 -0
  101. package/utility/linked-set.lua +3 -0
  102. package/utility/lua-maps.d.ts +4 -0
  103. package/utility/lua-maps.lua +20 -0
  104. package/utility/lua-sets.d.ts +1 -0
  105. package/utility/lua-sets.lua +3 -0
  106. package/core/types/order.d.ts +0 -25
  107. package/core/types/order.lua +0 -55
@@ -12,6 +12,9 @@ local implementReadonlyNumberIndexSupplier = ____reflection.implementReadonlyNum
12
12
  local ____combat_2Dclassification = require("engine.object-data.auxiliary.combat-classification")
13
13
  local combatClassificationsToStringArray = ____combat_2Dclassification.combatClassificationsToStringArray
14
14
  local stringArrayToCombatClassifications = ____combat_2Dclassification.stringArrayToCombatClassifications
15
+ local ____movement_2Dtype = require("engine.object-data.auxiliary.movement-type")
16
+ local movementTypeToString = ____movement_2Dtype.movementTypeToString
17
+ local stringToMovementType = ____movement_2Dtype.stringToMovementType
15
18
  local ____unit_2Dclassification = require("engine.object-data.auxiliary.unit-classification")
16
19
  local stringArrayToUnitClassifications = ____unit_2Dclassification.stringArrayToUnitClassifications
17
20
  local unitClassificationsToStringArray = ____unit_2Dclassification.unitClassificationsToStringArray
@@ -19,6 +22,9 @@ local ____entry = require("engine.object-data.entry")
19
22
  local ObjectDataEntry = ____entry.ObjectDataEntry
20
23
  local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
21
24
  local ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.ObjectDataEntryIdGenerator
25
+ local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
26
+ local attackTypeToString = ____attack_2Dtype.attackTypeToString
27
+ local stringToAttackType = ____attack_2Dtype.stringToAttackType
22
28
  local ____config = require("config")
23
29
  local WarscriptConfig = ____config.WarscriptConfig
24
30
  local getOrCreateUnitTypeWeapons
@@ -34,18 +40,19 @@ __TS__SetDescriptor(
34
40
  "attackType",
35
41
  {
36
42
  get = function(self)
43
+ local ____stringToAttackType_1 = stringToAttackType
37
44
  local ____self_0 = self.unitType
38
- return ____self_0.getStringField(
45
+ return ____stringToAttackType_1(____self_0.getStringField(
39
46
  ____self_0,
40
47
  ("ua" .. tostring(self.index)) .. "t"
41
- )
48
+ ))
42
49
  end,
43
50
  set = function(self, attackType)
44
- local ____self_1 = self.unitType
45
- ____self_1.setStringField(
46
- ____self_1,
51
+ local ____self_2 = self.unitType
52
+ ____self_2.setStringField(
53
+ ____self_2,
47
54
  ("ua" .. tostring(self.index)) .. "t",
48
- attackType
55
+ attackTypeToString(attackType)
49
56
  )
50
57
  end
51
58
  },
@@ -56,16 +63,16 @@ __TS__SetDescriptor(
56
63
  "backSwingDuration",
57
64
  {
58
65
  get = function(self)
59
- local ____self_2 = self.unitType
60
- return ____self_2.getNumberField(
61
- ____self_2,
66
+ local ____self_3 = self.unitType
67
+ return ____self_3.getNumberField(
68
+ ____self_3,
62
69
  "ubs" .. tostring(self.index)
63
70
  )
64
71
  end,
65
72
  set = function(self, backSwingDuration)
66
- local ____self_3 = self.unitType
67
- ____self_3.setNumberField(
68
- ____self_3,
73
+ local ____self_4 = self.unitType
74
+ ____self_4.setNumberField(
75
+ ____self_4,
69
76
  "ubs" .. tostring(self.index),
70
77
  backSwingDuration
71
78
  )
@@ -78,16 +85,16 @@ __TS__SetDescriptor(
78
85
  "cooldown",
79
86
  {
80
87
  get = function(self)
81
- local ____self_4 = self.unitType
82
- return ____self_4.getNumberField(
83
- ____self_4,
88
+ local ____self_5 = self.unitType
89
+ return ____self_5.getNumberField(
90
+ ____self_5,
84
91
  ("ua" .. tostring(self.index)) .. "c"
85
92
  )
86
93
  end,
87
94
  set = function(self, cooldown)
88
- local ____self_5 = self.unitType
89
- ____self_5.setNumberField(
90
- ____self_5,
95
+ local ____self_6 = self.unitType
96
+ ____self_6.setNumberField(
97
+ ____self_6,
91
98
  ("ua" .. tostring(self.index)) .. "c",
92
99
  cooldown
93
100
  )
@@ -121,16 +128,16 @@ __TS__SetDescriptor(
121
128
  "damageBase",
122
129
  {
123
130
  get = function(self)
124
- local ____self_6 = self.unitType
125
- return ____self_6.getNumberField(
126
- ____self_6,
131
+ local ____self_7 = self.unitType
132
+ return ____self_7.getNumberField(
133
+ ____self_7,
127
134
  ("ua" .. tostring(self.index)) .. "b"
128
135
  )
129
136
  end,
130
137
  set = function(self, damageBase)
131
- local ____self_7 = self.unitType
132
- ____self_7.setNumberField(
133
- ____self_7,
138
+ local ____self_8 = self.unitType
139
+ ____self_8.setNumberField(
140
+ ____self_8,
134
141
  ("ua" .. tostring(self.index)) .. "b",
135
142
  damageBase
136
143
  )
@@ -143,16 +150,16 @@ __TS__SetDescriptor(
143
150
  "damageDiceCount",
144
151
  {
145
152
  get = function(self)
146
- local ____self_8 = self.unitType
147
- return ____self_8.getNumberField(
148
- ____self_8,
153
+ local ____self_9 = self.unitType
154
+ return ____self_9.getNumberField(
155
+ ____self_9,
149
156
  ("ua" .. tostring(self.index)) .. "d"
150
157
  )
151
158
  end,
152
159
  set = function(self, damageDiceNumber)
153
- local ____self_9 = self.unitType
154
- ____self_9.setNumberField(
155
- ____self_9,
160
+ local ____self_10 = self.unitType
161
+ ____self_10.setNumberField(
162
+ ____self_10,
156
163
  ("ua" .. tostring(self.index)) .. "d",
157
164
  damageDiceNumber
158
165
  )
@@ -165,16 +172,16 @@ __TS__SetDescriptor(
165
172
  "damageDiceSideCount",
166
173
  {
167
174
  get = function(self)
168
- local ____self_10 = self.unitType
169
- return ____self_10.getNumberField(
170
- ____self_10,
175
+ local ____self_11 = self.unitType
176
+ return ____self_11.getNumberField(
177
+ ____self_11,
171
178
  ("ua" .. tostring(self.index)) .. "s"
172
179
  )
173
180
  end,
174
181
  set = function(self, damageDiceSideCount)
175
- local ____self_11 = self.unitType
176
- ____self_11.setNumberField(
177
- ____self_11,
182
+ local ____self_12 = self.unitType
183
+ ____self_12.setNumberField(
184
+ ____self_12,
178
185
  ("ua" .. tostring(self.index)) .. "s",
179
186
  damageDiceSideCount
180
187
  )
@@ -187,16 +194,16 @@ __TS__SetDescriptor(
187
194
  "impactDelay",
188
195
  {
189
196
  get = function(self)
190
- local ____self_12 = self.unitType
191
- return ____self_12.getNumberField(
192
- ____self_12,
197
+ local ____self_13 = self.unitType
198
+ return ____self_13.getNumberField(
199
+ ____self_13,
193
200
  "udp" .. tostring(self.index)
194
201
  )
195
202
  end,
196
203
  set = function(self, impactDelay)
197
- local ____self_13 = self.unitType
198
- ____self_13.setNumberField(
199
- ____self_13,
204
+ local ____self_14 = self.unitType
205
+ ____self_14.setNumberField(
206
+ ____self_14,
200
207
  "udp" .. tostring(self.index),
201
208
  impactDelay
202
209
  )
@@ -209,16 +216,16 @@ __TS__SetDescriptor(
209
216
  "missileModelPath",
210
217
  {
211
218
  get = function(self)
212
- local ____self_14 = self.unitType
213
- return ____self_14.getStringField(
214
- ____self_14,
219
+ local ____self_15 = self.unitType
220
+ return ____self_15.getStringField(
221
+ ____self_15,
215
222
  ("ua" .. tostring(self.index)) .. "m"
216
223
  )
217
224
  end,
218
225
  set = function(self, missileModelPath)
219
- local ____self_15 = self.unitType
220
- ____self_15.setStringField(
221
- ____self_15,
226
+ local ____self_16 = self.unitType
227
+ ____self_16.setStringField(
228
+ ____self_16,
222
229
  ("ua" .. tostring(self.index)) .. "m",
223
230
  missileModelPath
224
231
  )
@@ -231,16 +238,16 @@ __TS__SetDescriptor(
231
238
  "range",
232
239
  {
233
240
  get = function(self)
234
- local ____self_16 = self.unitType
235
- return ____self_16.getNumberField(
236
- ____self_16,
241
+ local ____self_17 = self.unitType
242
+ return ____self_17.getNumberField(
243
+ ____self_17,
237
244
  ("ua" .. tostring(self.index)) .. "r"
238
245
  )
239
246
  end,
240
247
  set = function(self, range)
241
- local ____self_17 = self.unitType
242
- ____self_17.setNumberField(
243
- ____self_17,
248
+ local ____self_18 = self.unitType
249
+ ____self_18.setNumberField(
250
+ ____self_18,
244
251
  ("ua" .. tostring(self.index)) .. "r",
245
252
  range
246
253
  )
@@ -253,16 +260,16 @@ __TS__SetDescriptor(
253
260
  "soundType",
254
261
  {
255
262
  get = function(self)
256
- local ____self_18 = self.unitType
257
- return ____self_18.getStringField(
258
- ____self_18,
263
+ local ____self_19 = self.unitType
264
+ return ____self_19.getStringField(
265
+ ____self_19,
259
266
  "ucs" .. tostring(self.index)
260
267
  )
261
268
  end,
262
269
  set = function(self, soundType)
263
- local ____self_19 = self.unitType
264
- ____self_19.setStringField(
265
- ____self_19,
270
+ local ____self_20 = self.unitType
271
+ ____self_20.setStringField(
272
+ ____self_20,
266
273
  "ucs" .. tostring(self.index),
267
274
  soundType
268
275
  )
@@ -275,16 +282,16 @@ __TS__SetDescriptor(
275
282
  "soundTypeSD",
276
283
  {
277
284
  get = function(self)
278
- local ____self_20 = self.unitType
279
- return ____self_20.getStringField(
280
- ____self_20,
285
+ local ____self_21 = self.unitType
286
+ return ____self_21.getStringField(
287
+ ____self_21,
281
288
  ("ucs" .. tostring(self.index)) .. ":sd"
282
289
  )
283
290
  end,
284
291
  set = function(self, soundTypeSD)
285
- local ____self_21 = self.unitType
286
- ____self_21.setStringField(
287
- ____self_21,
292
+ local ____self_22 = self.unitType
293
+ ____self_22.setStringField(
294
+ ____self_22,
288
295
  ("ucs" .. tostring(self.index)) .. ":sd",
289
296
  soundTypeSD
290
297
  )
@@ -297,16 +304,16 @@ __TS__SetDescriptor(
297
304
  "soundTypeHD",
298
305
  {
299
306
  get = function(self)
300
- local ____self_22 = self.unitType
301
- return ____self_22.getStringField(
302
- ____self_22,
307
+ local ____self_23 = self.unitType
308
+ return ____self_23.getStringField(
309
+ ____self_23,
303
310
  ("ucs" .. tostring(self.index)) .. ":hd"
304
311
  )
305
312
  end,
306
313
  set = function(self, soundTypeHD)
307
- local ____self_23 = self.unitType
308
- ____self_23.setStringField(
309
- ____self_23,
314
+ local ____self_24 = self.unitType
315
+ ____self_24.setStringField(
316
+ ____self_24,
310
317
  ("ucs" .. tostring(self.index)) .. ":hd",
311
318
  soundTypeHD
312
319
  )
@@ -1341,10 +1348,13 @@ __TS__SetDescriptor(
1341
1348
  "movementType",
1342
1349
  {
1343
1350
  get = function(self)
1344
- return self:getStringField("umvt")
1351
+ return stringToMovementType(self:getStringField("umvt"))
1345
1352
  end,
1346
1353
  set = function(self, movementType)
1347
- self:setStringField("umvt", movementType)
1354
+ self:setStringField(
1355
+ "umvt",
1356
+ movementTypeToString(movementType)
1357
+ )
1348
1358
  end
1349
1359
  },
1350
1360
  true
@@ -1612,11 +1622,11 @@ __TS__SetDescriptor(
1612
1622
  implementReadonlyNumberIndexSupplier(
1613
1623
  ____exports.UnitType,
1614
1624
  function(id)
1615
- local ____class_24 = __TS__Class()
1616
- ____class_24.name = ____class_24.name
1617
- __TS__ClassExtends(____class_24, ____exports.UnitType)
1618
- ____class_24.BASE_ID = id
1619
- return ____class_24
1625
+ local ____class_25 = __TS__Class()
1626
+ ____class_25.name = ____class_25.name
1627
+ __TS__ClassExtends(____class_25, ____exports.UnitType)
1628
+ ____class_25.BASE_ID = id
1629
+ return ____class_25
1620
1630
  end
1621
1631
  )
1622
1632
  ____exports.HeroUnitType = __TS__Class()
@@ -1677,11 +1687,11 @@ __TS__SetDescriptor(
1677
1687
  implementReadonlyNumberIndexSupplier(
1678
1688
  ____exports.HeroUnitType,
1679
1689
  function(id)
1680
- local ____class_25 = __TS__Class()
1681
- ____class_25.name = ____class_25.name
1682
- __TS__ClassExtends(____class_25, ____exports.HeroUnitType)
1683
- ____class_25.BASE_ID = id
1684
- return ____class_25
1690
+ local ____class_26 = __TS__Class()
1691
+ ____class_26.name = ____class_26.name
1692
+ __TS__ClassExtends(____class_26, ____exports.HeroUnitType)
1693
+ ____class_26.BASE_ID = id
1694
+ return ____class_26
1685
1695
  end
1686
1696
  )
1687
1697
  return ____exports
@@ -117,7 +117,7 @@ export declare abstract class AbilityEnumLevelField<T extends number> extends Ab
117
117
  protected getNativeFieldById(id: number): jabilityintegerlevelfield;
118
118
  protected getNativeFieldValue(instance: Ability, level: number): T;
119
119
  protected setNativeFieldValue(instance: Ability, level: number, value: T): boolean;
120
- static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<AbilityBooleanLevelField>;
120
+ static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<AbilityEnumLevelField<number>>;
121
121
  }
122
122
  export declare class AbilityBuffPolarityLevelField extends AbilityEnumLevelField<BuffPolarity> {
123
123
  protected values: ReadonlyNonEmptyLinkedSet<BuffPolarity>;
@@ -1,16 +1,70 @@
1
1
  /** @noSelfInFile */
2
2
  import { Unit } from "../internal/unit";
3
- import { ObjectField } from "../object-field";
3
+ import { ObjectField, ObjectLevelField, ObjectLevelFieldValueChangeEvent, ReadonlyObjectLevelFieldType } from "../object-field";
4
4
  import { UnitType, UnitTypeId } from "../object-data/entry/unit-type";
5
+ import { ReadonlyNonEmptyLinkedSet } from "../../utility/linked-set";
6
+ import { AttackType } from "../object-data/auxiliary/attack-type";
7
+ import { UnitClassifications } from "../object-data/auxiliary/unit-classification";
5
8
  export declare abstract class UnitField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = any> extends ObjectField<UnitType, Unit, ValueType, NativeFieldType> {
6
9
  protected get instanceClass(): typeof Unit;
7
10
  protected getObjectDataEntryId(instance: Unit): UnitTypeId;
11
+ protected hasNativeFieldValue(): boolean;
12
+ }
13
+ export declare class UnitBooleanField extends UnitField<boolean, junitbooleanfield> {
14
+ protected get defaultValue(): boolean;
15
+ protected getNativeFieldById(id: number): junitbooleanfield;
16
+ protected getNativeFieldValue(instance: Unit): boolean;
17
+ protected setNativeFieldValue(instance: Unit, value: boolean): boolean;
18
+ }
19
+ export declare class UnitFloatField extends UnitField<number, junitrealfield> {
20
+ protected get defaultValue(): number;
21
+ protected getNativeFieldById(id: number): junitrealfield;
22
+ protected getNativeFieldValue(instance: Unit): number;
23
+ protected setNativeFieldValue(instance: Unit, value: number): boolean;
24
+ }
25
+ export declare class UnitIntegerField extends UnitField<number, junitintegerfield> {
26
+ protected get defaultValue(): number;
27
+ protected getNativeFieldById(id: number): junitintegerfield;
28
+ protected getNativeFieldValue(instance: Unit): number;
29
+ protected setNativeFieldValue(instance: Unit, value: number): boolean;
8
30
  }
9
31
  export declare class UnitStringField extends UnitField<string, junitstringfield> {
10
32
  protected get defaultValue(): string;
11
33
  protected getNativeFieldById(id: number): junitstringfield;
12
- protected hasNativeFieldValue(): boolean;
13
34
  protected getNativeFieldValue(instance: Unit): string;
14
- protected getObjectDataEntryId(instance: Unit): UnitTypeId;
15
35
  protected setNativeFieldValue(instance: Unit, value: string): boolean;
16
36
  }
37
+ type junitweaponfield = junitweaponbooleanfield | junitweaponintegerfield | junitweaponrealfield | junitweaponstringfield;
38
+ export declare abstract class UnitWeaponField<ValueType extends number | string | boolean = number | string | boolean, InputValueType extends ValueType = never, NativeFieldType extends junitweaponfield = junitweaponfield> extends ObjectLevelField<UnitType, Unit, ValueType, InputValueType, NativeFieldType> {
39
+ protected get instanceClass(): typeof Unit;
40
+ protected getLevelCount(): number;
41
+ protected getObjectDataEntryId(instance: Unit): UnitTypeId;
42
+ protected hasNativeFieldValue(): boolean;
43
+ static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<ReadonlyObjectLevelFieldType<UnitWeaponField>>;
44
+ }
45
+ export declare abstract class UnitNumberWeaponField<NativeFieldType extends junitweaponintegerfield | junitweaponrealfield = junitweaponintegerfield | junitweaponrealfield> extends UnitWeaponField<number, number, NativeFieldType> {
46
+ protected get defaultValue(): number;
47
+ static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<UnitNumberWeaponField>;
48
+ }
49
+ export declare abstract class UnitEnumWeaponField<T extends number> extends UnitWeaponField<T, T, junitweaponintegerfield> {
50
+ protected abstract values: ReadonlyNonEmptyLinkedSet<T>;
51
+ protected get defaultValue(): T;
52
+ protected getNativeFieldById(id: number): junitweaponintegerfield;
53
+ protected getNativeFieldValue(instance: Unit, index: number): T;
54
+ protected setNativeFieldValue(instance: Unit, index: number, value: T): boolean;
55
+ static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<UnitEnumWeaponField<number>>;
56
+ }
57
+ export declare class UnitAttackTypeWeaponField extends UnitEnumWeaponField<AttackType> {
58
+ protected values: ReadonlyNonEmptyLinkedSet<AttackType>;
59
+ }
60
+ export declare class UnitClassificationsField extends UnitField<UnitClassifications, junitintegerfield> {
61
+ protected get defaultValue(): UnitClassifications;
62
+ protected getNativeFieldById(id: number): junitintegerfield;
63
+ protected getNativeFieldValue(instance: Unit): UnitClassifications;
64
+ protected setNativeFieldValue(instance: Unit, value: UnitClassifications): boolean;
65
+ }
66
+ export declare class UnitPropulsionWindowField extends UnitFloatField {
67
+ protected getNativeFieldValue(instance: Unit): number;
68
+ protected setNativeFieldValue(instance: Unit, value: number): boolean;
69
+ }
70
+ export {};
@@ -2,11 +2,24 @@ local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
5
6
  local ____exports = {}
6
7
  local ____unit = require("engine.internal.unit")
7
8
  local Unit = ____unit.Unit
8
9
  local ____object_2Dfield = require("engine.object-field")
9
10
  local ObjectField = ____object_2Dfield.ObjectField
11
+ local ObjectLevelField = ____object_2Dfield.ObjectLevelField
12
+ local ____linked_2Dset = require("utility.linked-set")
13
+ local nonEmptyLinkedSetOf = ____linked_2Dset.nonEmptyLinkedSetOf
14
+ local convertUnitBooleanField = ConvertUnitBooleanField
15
+ local convertUnitIntegerField = ConvertUnitIntegerField
16
+ local convertUnitRealField = ConvertUnitRealField
17
+ local convertUnitStringField = ConvertUnitStringField
18
+ local convertUnitWeaponIntegerField = ConvertUnitWeaponIntegerField
19
+ local getUnitWeaponIntegerField = BlzGetUnitWeaponIntegerField
20
+ local setUnitWeaponIntegerField = BlzSetUnitWeaponIntegerField
21
+ local getUnitPropulsionWindow = GetUnitPropWindow
22
+ local setUnitPropulsionWindow = SetUnitPropWindow
10
23
  ____exports.UnitField = __TS__Class()
11
24
  local UnitField = ____exports.UnitField
12
25
  UnitField.name = "UnitField"
@@ -14,6 +27,9 @@ __TS__ClassExtends(UnitField, ObjectField)
14
27
  function UnitField.prototype.getObjectDataEntryId(self, instance)
15
28
  return instance.typeId
16
29
  end
30
+ function UnitField.prototype.hasNativeFieldValue(self)
31
+ return true
32
+ end
17
33
  __TS__SetDescriptor(
18
34
  UnitField.prototype,
19
35
  "instanceClass",
@@ -22,22 +38,79 @@ __TS__SetDescriptor(
22
38
  end},
23
39
  true
24
40
  )
41
+ ____exports.UnitBooleanField = __TS__Class()
42
+ local UnitBooleanField = ____exports.UnitBooleanField
43
+ UnitBooleanField.name = "UnitBooleanField"
44
+ __TS__ClassExtends(UnitBooleanField, ____exports.UnitField)
45
+ function UnitBooleanField.prototype.getNativeFieldById(self, id)
46
+ return convertUnitBooleanField(id)
47
+ end
48
+ function UnitBooleanField.prototype.getNativeFieldValue(self, instance)
49
+ return instance:getField(self.nativeField)
50
+ end
51
+ function UnitBooleanField.prototype.setNativeFieldValue(self, instance, value)
52
+ return instance:setField(self.nativeField, value)
53
+ end
54
+ __TS__SetDescriptor(
55
+ UnitBooleanField.prototype,
56
+ "defaultValue",
57
+ {get = function(self)
58
+ return false
59
+ end},
60
+ true
61
+ )
62
+ ____exports.UnitFloatField = __TS__Class()
63
+ local UnitFloatField = ____exports.UnitFloatField
64
+ UnitFloatField.name = "UnitFloatField"
65
+ __TS__ClassExtends(UnitFloatField, ____exports.UnitField)
66
+ function UnitFloatField.prototype.getNativeFieldById(self, id)
67
+ return convertUnitRealField(id)
68
+ end
69
+ function UnitFloatField.prototype.getNativeFieldValue(self, instance)
70
+ return instance:getField(self.nativeField)
71
+ end
72
+ function UnitFloatField.prototype.setNativeFieldValue(self, instance, value)
73
+ return instance:setField(self.nativeField, value)
74
+ end
75
+ __TS__SetDescriptor(
76
+ UnitFloatField.prototype,
77
+ "defaultValue",
78
+ {get = function(self)
79
+ return 0
80
+ end},
81
+ true
82
+ )
83
+ ____exports.UnitIntegerField = __TS__Class()
84
+ local UnitIntegerField = ____exports.UnitIntegerField
85
+ UnitIntegerField.name = "UnitIntegerField"
86
+ __TS__ClassExtends(UnitIntegerField, ____exports.UnitField)
87
+ function UnitIntegerField.prototype.getNativeFieldById(self, id)
88
+ return convertUnitIntegerField(id)
89
+ end
90
+ function UnitIntegerField.prototype.getNativeFieldValue(self, instance)
91
+ return instance:getField(self.nativeField)
92
+ end
93
+ function UnitIntegerField.prototype.setNativeFieldValue(self, instance, value)
94
+ return instance:setField(self.nativeField, value)
95
+ end
96
+ __TS__SetDescriptor(
97
+ UnitIntegerField.prototype,
98
+ "defaultValue",
99
+ {get = function(self)
100
+ return 0
101
+ end},
102
+ true
103
+ )
25
104
  ____exports.UnitStringField = __TS__Class()
26
105
  local UnitStringField = ____exports.UnitStringField
27
106
  UnitStringField.name = "UnitStringField"
28
107
  __TS__ClassExtends(UnitStringField, ____exports.UnitField)
29
108
  function UnitStringField.prototype.getNativeFieldById(self, id)
30
- return ConvertUnitStringField(id)
31
- end
32
- function UnitStringField.prototype.hasNativeFieldValue(self)
33
- return true
109
+ return convertUnitStringField(id)
34
110
  end
35
111
  function UnitStringField.prototype.getNativeFieldValue(self, instance)
36
112
  return instance:getField(self.nativeField)
37
113
  end
38
- function UnitStringField.prototype.getObjectDataEntryId(self, instance)
39
- return instance.typeId
40
- end
41
114
  function UnitStringField.prototype.setNativeFieldValue(self, instance, value)
42
115
  return instance:setField(self.nativeField, value)
43
116
  end
@@ -49,4 +122,131 @@ __TS__SetDescriptor(
49
122
  end},
50
123
  true
51
124
  )
125
+ ____exports.UnitWeaponField = __TS__Class()
126
+ local UnitWeaponField = ____exports.UnitWeaponField
127
+ UnitWeaponField.name = "UnitWeaponField"
128
+ __TS__ClassExtends(UnitWeaponField, ObjectLevelField)
129
+ function UnitWeaponField.prototype.getLevelCount(self)
130
+ return 2
131
+ end
132
+ function UnitWeaponField.prototype.getObjectDataEntryId(self, instance)
133
+ return instance.typeId
134
+ end
135
+ function UnitWeaponField.prototype.hasNativeFieldValue(self)
136
+ return true
137
+ end
138
+ __TS__SetDescriptor(
139
+ UnitWeaponField.prototype,
140
+ "instanceClass",
141
+ {get = function(self)
142
+ return Unit
143
+ end},
144
+ true
145
+ )
146
+ __TS__ObjectDefineProperty(
147
+ UnitWeaponField,
148
+ "valueChangeEvent",
149
+ {get = function(self)
150
+ return self:getOrCreateValueChangeEvent()
151
+ end}
152
+ )
153
+ ____exports.UnitNumberWeaponField = __TS__Class()
154
+ local UnitNumberWeaponField = ____exports.UnitNumberWeaponField
155
+ UnitNumberWeaponField.name = "UnitNumberWeaponField"
156
+ __TS__ClassExtends(UnitNumberWeaponField, ____exports.UnitWeaponField)
157
+ __TS__SetDescriptor(
158
+ UnitNumberWeaponField.prototype,
159
+ "defaultValue",
160
+ {get = function(self)
161
+ return 0
162
+ end},
163
+ true
164
+ )
165
+ __TS__ObjectDefineProperty(
166
+ UnitNumberWeaponField,
167
+ "valueChangeEvent",
168
+ {get = function(self)
169
+ return self:getOrCreateValueChangeEvent()
170
+ end}
171
+ )
172
+ ____exports.UnitEnumWeaponField = __TS__Class()
173
+ local UnitEnumWeaponField = ____exports.UnitEnumWeaponField
174
+ UnitEnumWeaponField.name = "UnitEnumWeaponField"
175
+ __TS__ClassExtends(UnitEnumWeaponField, ____exports.UnitWeaponField)
176
+ function UnitEnumWeaponField.prototype.getNativeFieldById(self, id)
177
+ return convertUnitWeaponIntegerField(id)
178
+ end
179
+ function UnitEnumWeaponField.prototype.getNativeFieldValue(self, instance, index)
180
+ local value = getUnitWeaponIntegerField(instance.handle, self.nativeField, index)
181
+ if self.values:contains(value) then
182
+ return value
183
+ end
184
+ return self.values:first()
185
+ end
186
+ function UnitEnumWeaponField.prototype.setNativeFieldValue(self, instance, index, value)
187
+ return setUnitWeaponIntegerField(instance.handle, self.nativeField, index, value)
188
+ end
189
+ __TS__SetDescriptor(
190
+ UnitEnumWeaponField.prototype,
191
+ "defaultValue",
192
+ {get = function(self)
193
+ return self.values:first()
194
+ end},
195
+ true
196
+ )
197
+ __TS__ObjectDefineProperty(
198
+ UnitEnumWeaponField,
199
+ "valueChangeEvent",
200
+ {get = function(self)
201
+ return self:getOrCreateValueChangeEvent()
202
+ end}
203
+ )
204
+ ____exports.UnitAttackTypeWeaponField = __TS__Class()
205
+ local UnitAttackTypeWeaponField = ____exports.UnitAttackTypeWeaponField
206
+ UnitAttackTypeWeaponField.name = "UnitAttackTypeWeaponField"
207
+ __TS__ClassExtends(UnitAttackTypeWeaponField, ____exports.UnitEnumWeaponField)
208
+ function UnitAttackTypeWeaponField.prototype.____constructor(self, ...)
209
+ UnitAttackTypeWeaponField.____super.prototype.____constructor(self, ...)
210
+ self.values = nonEmptyLinkedSetOf(
211
+ 1,
212
+ 2,
213
+ 3,
214
+ 0,
215
+ 5,
216
+ 4,
217
+ 6
218
+ )
219
+ end
220
+ ____exports.UnitClassificationsField = __TS__Class()
221
+ local UnitClassificationsField = ____exports.UnitClassificationsField
222
+ UnitClassificationsField.name = "UnitClassificationsField"
223
+ __TS__ClassExtends(UnitClassificationsField, ____exports.UnitField)
224
+ function UnitClassificationsField.prototype.getNativeFieldById(self, id)
225
+ return convertUnitIntegerField(id)
226
+ end
227
+ function UnitClassificationsField.prototype.getNativeFieldValue(self, instance)
228
+ return instance:getField(self.nativeField)
229
+ end
230
+ function UnitClassificationsField.prototype.setNativeFieldValue(self, instance, value)
231
+ return instance:setField(self.nativeField, value)
232
+ end
233
+ __TS__SetDescriptor(
234
+ UnitClassificationsField.prototype,
235
+ "defaultValue",
236
+ {get = function(self)
237
+ return 0
238
+ end},
239
+ true
240
+ )
241
+ ____exports.UnitPropulsionWindowField = __TS__Class()
242
+ local UnitPropulsionWindowField = ____exports.UnitPropulsionWindowField
243
+ UnitPropulsionWindowField.name = "UnitPropulsionWindowField"
244
+ __TS__ClassExtends(UnitPropulsionWindowField, ____exports.UnitFloatField)
245
+ function UnitPropulsionWindowField.prototype.getNativeFieldValue(self, instance)
246
+ return getUnitPropulsionWindow(instance.handle)
247
+ end
248
+ function UnitPropulsionWindowField.prototype.setNativeFieldValue(self, instance, value)
249
+ setUnitPropulsionWindow(instance.handle, value)
250
+ return true
251
+ end
52
252
  return ____exports