warscript 0.0.1-dev.6f7008d → 0.0.1-dev.6fc443a

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.
@@ -62,6 +62,8 @@ local ____attributes = require("attributes")
62
62
  local isAttribute = ____attributes.isAttribute
63
63
  local ____ability = require("engine.internal.item.ability")
64
64
  local doUnitAbilityAction = ____ability.doUnitAbilityAction
65
+ local ____synchronization = require("engine.synchronization")
66
+ local synchronizer = ____synchronization.synchronizer
65
67
  local match = string.match
66
68
  local ____tostring = _G.tostring
67
69
  local setUnitAnimation = SetUnitAnimation
@@ -657,15 +659,15 @@ for ____, player in ipairs(Player.all) do
657
659
  dummies[player] = dummy
658
660
  end
659
661
  local function delayHealthChecksCallback(unit)
660
- local counter = (unit[103] or 0) - 1
662
+ local counter = (unit[104] or 0) - 1
661
663
  if counter ~= 0 then
662
- unit[103] = counter
664
+ unit[104] = counter
663
665
  return
664
666
  end
665
- unit[103] = nil
666
- local healthBonus = unit[104]
667
+ unit[104] = nil
668
+ local healthBonus = unit[105]
667
669
  if healthBonus ~= nil then
668
- unit[104] = nil
670
+ unit[105] = nil
669
671
  local handle = unit.handle
670
672
  BlzSetUnitMaxHP(
671
673
  handle,
@@ -725,8 +727,8 @@ function Unit.prototype.getEvent(self, event, collector)
725
727
  end
726
728
  function Unit.prototype.onDestroy(self)
727
729
  local handle = self.handle
728
- self[107] = getUnitX(handle)
729
- self[108] = getUnitY(handle)
730
+ self[108] = getUnitX(handle)
731
+ self[109] = getUnitY(handle)
730
732
  if not self._owner then
731
733
  self._owner = Player:of(getOwningPlayer(handle))
732
734
  end
@@ -860,7 +862,7 @@ function Unit.prototype.chooseWeapon(self, target)
860
862
  return nil
861
863
  end
862
864
  function Unit.prototype.delayHealthChecks(self)
863
- self[103] = (self[103] or 0) + 1
865
+ self[104] = (self[104] or 0) + 1
864
866
  Timer:run(delayHealthChecksCallback, self)
865
867
  end
866
868
  function Unit.prototype.setPosition(self, x, y)
@@ -1066,18 +1068,44 @@ function Unit.prototype.unpauseEx(self)
1066
1068
  end
1067
1069
  function Unit.prototype.incrementStunCounter(self)
1068
1070
  local stunCounter = self[102] or 0
1069
- if not self[101] or stunCounter >= 0 then
1071
+ if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
1070
1072
  BlzPauseUnitEx(self.handle, true)
1071
1073
  end
1072
1074
  self[102] = stunCounter + 1
1073
1075
  end
1074
1076
  function Unit.prototype.decrementStunCounter(self)
1075
1077
  local stunCounter = self[102] or 0
1076
- if not self[101] or stunCounter >= 1 then
1078
+ if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
1077
1079
  BlzPauseUnitEx(self.handle, false)
1078
1080
  end
1079
1081
  self[102] = stunCounter - 1
1080
1082
  end
1083
+ function Unit.prototype.incrementForceStunCounter(self)
1084
+ local forceStunCounter = self[103] or 0
1085
+ if forceStunCounter == 0 then
1086
+ local handle = self.handle
1087
+ if not self[101] then
1088
+ for _ = self[102] or 0, -1 do
1089
+ BlzPauseUnitEx(handle, true)
1090
+ end
1091
+ end
1092
+ BlzPauseUnitEx(handle, true)
1093
+ end
1094
+ self[103] = forceStunCounter + 1
1095
+ end
1096
+ function Unit.prototype.decrementForceStunCounter(self)
1097
+ local forceStunCounter = self[103] or 0
1098
+ if forceStunCounter == 1 then
1099
+ local handle = self.handle
1100
+ if not self[101] then
1101
+ for _ = self[102] or 0, -1 do
1102
+ BlzPauseUnitEx(handle, false)
1103
+ end
1104
+ end
1105
+ BlzPauseUnitEx(handle, false)
1106
+ end
1107
+ self[103] = forceStunCounter - 1
1108
+ end
1081
1109
  function Unit.create(self, owner, id, x, y, facing, skinId)
1082
1110
  local handle = skinId and BlzCreateUnitWithSkin(
1083
1111
  owner.handle,
@@ -1485,7 +1513,7 @@ __TS__SetDescriptor(
1485
1513
  "isTeamGlowVisible",
1486
1514
  {
1487
1515
  get = function(self)
1488
- return not self[106]
1516
+ return not self[107]
1489
1517
  end,
1490
1518
  set = function(self, isTeamGlowVisible)
1491
1519
  BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
@@ -1495,7 +1523,7 @@ __TS__SetDescriptor(
1495
1523
  else
1496
1524
  ____temp_7 = nil
1497
1525
  end
1498
- self[106] = ____temp_7
1526
+ self[107] = ____temp_7
1499
1527
  end
1500
1528
  },
1501
1529
  true
@@ -1505,7 +1533,7 @@ __TS__SetDescriptor(
1505
1533
  "color",
1506
1534
  {set = function(self, color)
1507
1535
  SetUnitColor(self.handle, color.handle)
1508
- if self[106] then
1536
+ if self[107] then
1509
1537
  BlzShowUnitTeamGlow(self.handle, false)
1510
1538
  end
1511
1539
  end},
@@ -1529,14 +1557,14 @@ __TS__SetDescriptor(
1529
1557
  "maxHealth",
1530
1558
  {
1531
1559
  get = function(self)
1532
- return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
1560
+ return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
1533
1561
  end,
1534
1562
  set = function(self, maxHealth)
1535
- if maxHealth < 1 and self[103] ~= nil then
1536
- self[104] = (self[104] or 0) + (1 - maxHealth)
1563
+ if maxHealth < 1 and self[104] ~= nil then
1564
+ self[105] = (self[105] or 0) + (1 - maxHealth)
1537
1565
  maxHealth = 1
1538
1566
  end
1539
- BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
1567
+ BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
1540
1568
  end
1541
1569
  },
1542
1570
  true
@@ -1578,10 +1606,10 @@ __TS__SetDescriptor(
1578
1606
  "health",
1579
1607
  {
1580
1608
  get = function(self)
1581
- return GetWidgetLife(self.handle) - (self[105] or 0)
1609
+ return GetWidgetLife(self.handle) - (self[106] or 0)
1582
1610
  end,
1583
1611
  set = function(self, health)
1584
- SetWidgetLife(self.handle, health + (self[105] or 0))
1612
+ SetWidgetLife(self.handle, health + (self[106] or 0))
1585
1613
  end
1586
1614
  },
1587
1615
  true
@@ -1657,25 +1685,12 @@ __TS__SetDescriptor(
1657
1685
  },
1658
1686
  true
1659
1687
  )
1660
- __TS__SetDescriptor(
1661
- Unit.prototype,
1662
- "flyHeight",
1663
- {
1664
- get = function(self)
1665
- return getUnitFlyHeight(self.handle)
1666
- end,
1667
- set = function(self, v)
1668
- SetUnitFlyHeight(self.handle, v, 100000)
1669
- end
1670
- },
1671
- true
1672
- )
1673
1688
  __TS__SetDescriptor(
1674
1689
  Unit.prototype,
1675
1690
  "x",
1676
1691
  {
1677
1692
  get = function(self)
1678
- return self[107] or getUnitX(self.handle)
1693
+ return self[108] or getUnitX(self.handle)
1679
1694
  end,
1680
1695
  set = function(self, v)
1681
1696
  SetUnitX(self.handle, v)
@@ -1688,7 +1703,7 @@ __TS__SetDescriptor(
1688
1703
  "y",
1689
1704
  {
1690
1705
  get = function(self)
1691
- return self[108] or getUnitY(self.handle)
1706
+ return self[109] or getUnitY(self.handle)
1692
1707
  end,
1693
1708
  set = function(self, v)
1694
1709
  SetUnitY(self.handle, v)
@@ -1793,14 +1808,18 @@ __TS__SetDescriptor(
1793
1808
  local handle = self.handle
1794
1809
  if isPaused and not IsUnitPaused(handle) then
1795
1810
  self[101] = true
1796
- for _ = self[102] or 0, -1 do
1797
- BlzPauseUnitEx(handle, true)
1811
+ if (self[103] or 0) <= 0 then
1812
+ for _ = self[102] or 0, -1 do
1813
+ BlzPauseUnitEx(handle, true)
1814
+ end
1798
1815
  end
1799
1816
  PauseUnit(handle, true)
1800
1817
  elseif not isPaused and IsUnitPaused(handle) then
1801
1818
  PauseUnit(handle, false)
1802
- for _ = self[102] or 0, -1 do
1803
- BlzPauseUnitEx(handle, false)
1819
+ if (self[103] or 0) <= 0 then
1820
+ for _ = self[102] or 0, -1 do
1821
+ BlzPauseUnitEx(handle, false)
1822
+ end
1804
1823
  end
1805
1824
  self[101] = nil
1806
1825
  end
@@ -1858,20 +1877,6 @@ __TS__SetDescriptor(
1858
1877
  },
1859
1878
  true
1860
1879
  )
1861
- __TS__SetDescriptor(
1862
- Unit.prototype,
1863
- "scale",
1864
- {
1865
- get = function(self)
1866
- return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
1867
- end,
1868
- set = function(self, v)
1869
- setUnitScale(self.handle, v, v, v)
1870
- setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
1871
- end
1872
- },
1873
- true
1874
- )
1875
1880
  __TS__SetDescriptor(
1876
1881
  Unit.prototype,
1877
1882
  "timeScale",
@@ -2628,7 +2633,7 @@ Unit.onDamage = __TS__New(
2628
2633
  invoke(event, source, target, evData)
2629
2634
  if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2630
2635
  local bonusHealth = math.ceil(evData.amount)
2631
- target[105] = (target[105] or 0) + bonusHealth
2636
+ target[106] = (target[106] or 0) + bonusHealth
2632
2637
  BlzSetUnitMaxHP(
2633
2638
  target.handle,
2634
2639
  BlzGetUnitMaxHP(target.handle) + bonusHealth
@@ -2642,7 +2647,7 @@ Unit.onDamage = __TS__New(
2642
2647
  evData[0],
2643
2648
  table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
2644
2649
  )
2645
- target[105] = (target[105] or 0) - bonusHealth
2650
+ target[106] = (target[106] or 0) - bonusHealth
2646
2651
  SetWidgetLife(
2647
2652
  target.handle,
2648
2653
  GetWidgetLife(target.handle) - bonusHealth
@@ -2792,6 +2797,10 @@ __TS__ObjectDefineProperty(
2792
2797
  rawset(self, "destroyEvent", destroyEvent)
2793
2798
  return destroyEvent
2794
2799
  end}
2800
+ )
2801
+ Unit.synchronize = synchronizer(
2802
+ function(unit) return unit.syncId end,
2803
+ function(syncId) return unitBySyncId[syncId] end
2795
2804
  );
2796
2805
  (function(self)
2797
2806
  local leaveAbilityIds = postcompile(function()
@@ -3,6 +3,7 @@ import { Unit } from "../core/types/unit";
3
3
  import { Async } from "../core/types/async";
4
4
  import { Event, TriggerEvent } from "../event";
5
5
  import { GraphicsMode } from "./index";
6
+ import { Color } from "../core/types/color";
6
7
  export declare class LocalClient {
7
8
  private constructor();
8
9
  static readonly locale: string;
@@ -11,6 +12,7 @@ export declare class LocalClient {
11
12
  static get isHD(): boolean;
12
13
  static get graphicsMode(): GraphicsMode;
13
14
  static get isActive(): boolean;
15
+ static pingMinimap(x: number, y: number, duration: number, ...parameters: [] | [red: number, green: number, blue: number, extraEffects?: boolean] | [color: Color, extraEffects?: boolean]): void;
14
16
  static get mouseFocusUnit(): Async<Unit> | undefined;
15
17
  static get mainSelectedUnit(): Async<Unit> | undefined;
16
18
  static get mainSelectedUnitChangeEvent(): Event<[
@@ -1,6 +1,7 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__ArrayMap = ____lualib.__TS__ArrayMap
3
3
  local __TS__Class = ____lualib.__TS__Class
4
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
4
5
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
5
6
  local __TS__New = ____lualib.__TS__New
6
7
  local ____exports = {}
@@ -15,6 +16,8 @@ local ____player = require("core.types.player")
15
16
  local Player = ____player.Player
16
17
  local ____timer = require("core.types.timer")
17
18
  local Timer = ____timer.Timer
19
+ local ____color = require("core.types.color")
20
+ local Color = ____color.Color
18
21
  local loadTOCFile = BlzLoadTOCFile
19
22
  local getLocalClientWidth = BlzGetLocalClientWidth
20
23
  local getLocalClientHeight = BlzGetLocalClientHeight
@@ -25,6 +28,8 @@ local getMouseFocusUnit = BlzGetMouseFocusUnit
25
28
  local getUnitRealField = BlzGetUnitRealField
26
29
  local getUnitTypeId = GetUnitTypeId
27
30
  local getLocale = BlzGetLocale
31
+ local pingMinimap = PingMinimap
32
+ local pingMinimapEx = PingMinimapEx
28
33
  local tableSort = table.sort
29
34
  local tocPath = "_warscript\\IsHD.toc"
30
35
  compiletime(function()
@@ -62,6 +67,31 @@ local LocalClient = ____exports.LocalClient
62
67
  LocalClient.name = "LocalClient"
63
68
  function LocalClient.prototype.____constructor(self)
64
69
  end
70
+ function LocalClient.pingMinimap(self, x, y, duration, redOrColor, greenOrExtraEffects, blue, extraEffects)
71
+ if redOrColor == nil then
72
+ pingMinimap(x, y, duration)
73
+ elseif __TS__InstanceOf(redOrColor, Color) then
74
+ pingMinimapEx(
75
+ x,
76
+ y,
77
+ duration,
78
+ redOrColor.r,
79
+ redOrColor.g,
80
+ redOrColor.b,
81
+ greenOrExtraEffects or false
82
+ )
83
+ else
84
+ pingMinimapEx(
85
+ x,
86
+ y,
87
+ duration,
88
+ redOrColor,
89
+ greenOrExtraEffects,
90
+ blue,
91
+ extraEffects or false
92
+ )
93
+ end
94
+ end
65
95
  LocalClient.locale = getLocale()
66
96
  __TS__ObjectDefineProperty(
67
97
  LocalClient,
@@ -1,6 +1,6 @@
1
1
  /** @noSelfInFile */
2
2
  import { Unit } from "../internal/unit";
3
- import { ObjectField, ObjectLevelField, ObjectLevelFieldValueChangeEvent, ReadonlyObjectLevelFieldType } from "../object-field";
3
+ import { ObjectField, ObjectFieldValueChangeEvent, ObjectLevelField, ObjectLevelFieldValueChangeEvent, ReadonlyObjectFieldType, ReadonlyObjectLevelFieldType } from "../object-field";
4
4
  import { UnitType, UnitTypeId } from "../object-data/entry/unit-type";
5
5
  import { ReadonlyNonEmptyLinkedSet } from "../../utility/linked-set";
6
6
  import { AttackType } from "../object-data/auxiliary/attack-type";
@@ -9,30 +9,35 @@ export declare abstract class UnitField<ValueType extends number | string | bool
9
9
  protected get instanceClass(): typeof Unit;
10
10
  protected getObjectDataEntryId(instance: Unit): UnitTypeId;
11
11
  protected hasNativeFieldValue(): boolean;
12
+ static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitField>>;
12
13
  }
13
14
  export declare class UnitBooleanField extends UnitField<boolean, junitbooleanfield> {
14
15
  protected get defaultValue(): boolean;
15
16
  protected getNativeFieldById(id: number): junitbooleanfield;
16
17
  protected getNativeFieldValue(instance: Unit): boolean;
17
18
  protected setNativeFieldValue(instance: Unit, value: boolean): boolean;
19
+ static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitBooleanField>>;
18
20
  }
19
21
  export declare class UnitFloatField extends UnitField<number, junitrealfield> {
20
22
  protected get defaultValue(): number;
21
23
  protected getNativeFieldById(id: number): junitrealfield;
22
24
  protected getNativeFieldValue(instance: Unit): number;
23
25
  protected setNativeFieldValue(instance: Unit, value: number): boolean;
26
+ static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitFloatField>>;
24
27
  }
25
28
  export declare class UnitIntegerField extends UnitField<number, junitintegerfield> {
26
29
  protected get defaultValue(): number;
27
30
  protected getNativeFieldById(id: number): junitintegerfield;
28
31
  protected getNativeFieldValue(instance: Unit): number;
29
32
  protected setNativeFieldValue(instance: Unit, value: number): boolean;
33
+ static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitIntegerField>>;
30
34
  }
31
35
  export declare class UnitStringField extends UnitField<string, junitstringfield> {
32
36
  protected get defaultValue(): string;
33
37
  protected getNativeFieldById(id: number): junitstringfield;
34
38
  protected getNativeFieldValue(instance: Unit): string;
35
39
  protected setNativeFieldValue(instance: Unit, value: string): boolean;
40
+ static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitStringField>>;
36
41
  }
37
42
  type junitweaponfield = junitweaponbooleanfield | junitweaponintegerfield | junitweaponrealfield | junitweaponstringfield;
38
43
  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> {
@@ -63,8 +68,15 @@ export declare class UnitClassificationsField extends UnitField<UnitClassificati
63
68
  protected getNativeFieldValue(instance: Unit): UnitClassifications;
64
69
  protected setNativeFieldValue(instance: Unit, value: UnitClassifications): boolean;
65
70
  }
71
+ export declare class UnitFlyHeightField extends UnitFloatField {
72
+ protected getNativeFieldValue(instance: Unit): number;
73
+ protected setNativeFieldValue(instance: Unit, value: number): boolean;
74
+ }
66
75
  export declare class UnitPropulsionWindowField extends UnitFloatField {
67
76
  protected getNativeFieldValue(instance: Unit): number;
68
77
  protected setNativeFieldValue(instance: Unit, value: number): boolean;
69
78
  }
79
+ export declare class UnitScalingValueField extends UnitFloatField {
80
+ protected setNativeFieldValue(instance: Unit, value: number): boolean;
81
+ }
70
82
  export {};
@@ -18,8 +18,11 @@ local convertUnitStringField = ConvertUnitStringField
18
18
  local convertUnitWeaponIntegerField = ConvertUnitWeaponIntegerField
19
19
  local getUnitWeaponIntegerField = BlzGetUnitWeaponIntegerField
20
20
  local setUnitWeaponIntegerField = BlzSetUnitWeaponIntegerField
21
+ local getUnitFlyHeight = GetUnitFlyHeight
22
+ local setUnitFlyHeight = SetUnitFlyHeight
21
23
  local getUnitPropulsionWindow = GetUnitPropWindow
22
24
  local setUnitPropulsionWindow = SetUnitPropWindow
25
+ local setUnitScale = SetUnitScale
23
26
  ____exports.UnitField = __TS__Class()
24
27
  local UnitField = ____exports.UnitField
25
28
  UnitField.name = "UnitField"
@@ -38,6 +41,13 @@ __TS__SetDescriptor(
38
41
  end},
39
42
  true
40
43
  )
44
+ __TS__ObjectDefineProperty(
45
+ UnitField,
46
+ "valueChangeEvent",
47
+ {get = function(self)
48
+ return self:getOrCreateValueChangeEvent()
49
+ end}
50
+ )
41
51
  ____exports.UnitBooleanField = __TS__Class()
42
52
  local UnitBooleanField = ____exports.UnitBooleanField
43
53
  UnitBooleanField.name = "UnitBooleanField"
@@ -59,6 +69,13 @@ __TS__SetDescriptor(
59
69
  end},
60
70
  true
61
71
  )
72
+ __TS__ObjectDefineProperty(
73
+ UnitBooleanField,
74
+ "valueChangeEvent",
75
+ {get = function(self)
76
+ return self:getOrCreateValueChangeEvent()
77
+ end}
78
+ )
62
79
  ____exports.UnitFloatField = __TS__Class()
63
80
  local UnitFloatField = ____exports.UnitFloatField
64
81
  UnitFloatField.name = "UnitFloatField"
@@ -80,6 +97,13 @@ __TS__SetDescriptor(
80
97
  end},
81
98
  true
82
99
  )
100
+ __TS__ObjectDefineProperty(
101
+ UnitFloatField,
102
+ "valueChangeEvent",
103
+ {get = function(self)
104
+ return self:getOrCreateValueChangeEvent()
105
+ end}
106
+ )
83
107
  ____exports.UnitIntegerField = __TS__Class()
84
108
  local UnitIntegerField = ____exports.UnitIntegerField
85
109
  UnitIntegerField.name = "UnitIntegerField"
@@ -101,6 +125,13 @@ __TS__SetDescriptor(
101
125
  end},
102
126
  true
103
127
  )
128
+ __TS__ObjectDefineProperty(
129
+ UnitIntegerField,
130
+ "valueChangeEvent",
131
+ {get = function(self)
132
+ return self:getOrCreateValueChangeEvent()
133
+ end}
134
+ )
104
135
  ____exports.UnitStringField = __TS__Class()
105
136
  local UnitStringField = ____exports.UnitStringField
106
137
  UnitStringField.name = "UnitStringField"
@@ -122,6 +153,13 @@ __TS__SetDescriptor(
122
153
  end},
123
154
  true
124
155
  )
156
+ __TS__ObjectDefineProperty(
157
+ UnitStringField,
158
+ "valueChangeEvent",
159
+ {get = function(self)
160
+ return self:getOrCreateValueChangeEvent()
161
+ end}
162
+ )
125
163
  ____exports.UnitWeaponField = __TS__Class()
126
164
  local UnitWeaponField = ____exports.UnitWeaponField
127
165
  UnitWeaponField.name = "UnitWeaponField"
@@ -238,6 +276,17 @@ __TS__SetDescriptor(
238
276
  end},
239
277
  true
240
278
  )
279
+ ____exports.UnitFlyHeightField = __TS__Class()
280
+ local UnitFlyHeightField = ____exports.UnitFlyHeightField
281
+ UnitFlyHeightField.name = "UnitFlyHeightField"
282
+ __TS__ClassExtends(UnitFlyHeightField, ____exports.UnitFloatField)
283
+ function UnitFlyHeightField.prototype.getNativeFieldValue(self, instance)
284
+ return getUnitFlyHeight(instance.handle)
285
+ end
286
+ function UnitFlyHeightField.prototype.setNativeFieldValue(self, instance, value)
287
+ setUnitFlyHeight(instance.handle, value, 100000)
288
+ return true
289
+ end
241
290
  ____exports.UnitPropulsionWindowField = __TS__Class()
242
291
  local UnitPropulsionWindowField = ____exports.UnitPropulsionWindowField
243
292
  UnitPropulsionWindowField.name = "UnitPropulsionWindowField"
@@ -249,4 +298,12 @@ function UnitPropulsionWindowField.prototype.setNativeFieldValue(self, instance,
249
298
  setUnitPropulsionWindow(instance.handle, value)
250
299
  return true
251
300
  end
301
+ ____exports.UnitScalingValueField = __TS__Class()
302
+ local UnitScalingValueField = ____exports.UnitScalingValueField
303
+ UnitScalingValueField.name = "UnitScalingValueField"
304
+ __TS__ClassExtends(UnitScalingValueField, ____exports.UnitFloatField)
305
+ function UnitScalingValueField.prototype.setNativeFieldValue(self, instance, value)
306
+ setUnitScale(instance.handle, value, value, value)
307
+ return UnitScalingValueField.____super.prototype.setNativeFieldValue(self, instance, value)
308
+ end
252
309
  return ____exports
@@ -36,7 +36,8 @@ export type ObjectFieldValueChangeEvent<T extends ObjectField<any, any, any, any
36
36
  ]> : never;
37
37
  export type ReadonlyObjectFieldType<T extends ObjectField<any, any, any, any>> = Omit<T, "setValue" | "removeValue" | "trySetValue">;
38
38
  type ReadonlyObjectFieldConstructor<T extends ObjectField> = OmitConstructor<typeof ObjectField> & (abstract new (...args: any[]) => ReadonlyObjectFieldType<T>);
39
- type ObjectFieldModifier<InstanceType extends AnyNotNil, ValueType extends number | string | boolean> = (instance: InstanceType, currentValue: ValueType, originalValue: ValueType) => ValueType;
39
+ export type ObjectFieldModifier<InstanceType extends AnyNotNil, ValueType extends number | string | boolean> = (instance: InstanceType, currentValue: ValueType, originalValue: ValueType) => ValueType;
40
+ export type ObjectLevelFieldModifier<InstanceType extends AnyNotNil, ValueType extends number | string | boolean> = (instance: InstanceType, level: number, currentValue: ValueType, originalValue: ValueType) => ValueType;
40
41
  export declare abstract class ObjectField<ObjectDataEntryType extends ObjectDataEntry = ObjectDataEntry, InstanceType extends AnyNotNil = AnyNotNil, ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = unknown> extends ObjectFieldBase<ObjectDataEntryType, InstanceType, ValueType, NativeFieldType> {
41
42
  protected abstract readonly defaultValue: ValueType;
42
43
  protected abstract getNativeFieldValue(instance: InstanceType): ValueType;
@@ -88,7 +89,12 @@ export declare abstract class ObjectLevelField<ObjectDataEntryType extends Objec
88
89
  protected abstract getLevelCount(entry: ObjectDataEntryType | InstanceType): number;
89
90
  getValue<LevelType extends [number] | []>(entry: ObjectDataEntryType | InstanceType, ...[level]: LevelType): LevelType extends [number] ? ValueType : ValueType[];
90
91
  setValue(entry: ObjectDataEntryType | InstanceType, ...[levelOrValue, value]: [value: ObjectDataEntryLevelFieldValueSupplier<InputValueType, ValueType>] | [level: number, value: InputValueType]): boolean;
92
+ applyModifier(instance: InstanceType, modifier: ObjectLevelFieldModifier<InstanceType, ValueType>): void;
93
+ removeModifier(instance: InstanceType, modifier: ObjectLevelFieldModifier<InstanceType, ValueType>): boolean;
91
94
  trySetValue(entry: ObjectDataEntryType | InstanceType, levelOrValue: number | unknown, value?: unknown): boolean;
95
+ private getActualValue;
96
+ private setActualValue;
97
+ private calculateActualValue;
92
98
  private invokeValueChangeEvent;
93
99
  private invokeValueChangeEventRecursive;
94
100
  protected static getOrCreateValueChangeEvent<T extends ObjectLevelField, R extends ReadonlyObjectLevelFieldType<T>>(this: ReadonlyObjectLevelFieldConstructor<T>): ObjectLevelFieldValueChangeEvent<R>;