warscript 0.0.1-dev.eda504c → 0.0.1-dev.edf7fad

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 (104) hide show
  1. package/core/types/frame.lua +47 -1
  2. package/core/types/player.d.ts +16 -0
  3. package/core/types/player.lua +57 -14
  4. package/core/types/sound.lua +1 -1
  5. package/core/types/tileCell.d.ts +2 -1
  6. package/core/types/tileCell.lua +5 -0
  7. package/destroyable.d.ts +1 -0
  8. package/destroyable.lua +9 -0
  9. package/engine/behavior.d.ts +10 -2
  10. package/engine/behavior.lua +157 -76
  11. package/engine/behaviour/ability/apply-buff.lua +4 -4
  12. package/engine/behaviour/ability/damage.d.ts +3 -0
  13. package/engine/behaviour/ability/damage.lua +8 -2
  14. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  15. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  16. package/engine/behaviour/ability.d.ts +11 -6
  17. package/engine/behaviour/ability.lua +31 -1
  18. package/engine/behaviour/unit/stun-immunity.d.ts +7 -5
  19. package/engine/behaviour/unit/stun-immunity.lua +6 -5
  20. package/engine/behaviour/unit.d.ts +7 -3
  21. package/engine/behaviour/unit.lua +101 -24
  22. package/engine/buff.d.ts +65 -18
  23. package/engine/buff.lua +356 -152
  24. package/engine/internal/mechanics/cast-ability.lua +6 -3
  25. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  26. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  27. package/engine/internal/object-data/health-bonus.lua +16 -0
  28. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  29. package/engine/internal/object-data/mana-bonus.lua +16 -0
  30. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  31. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  32. package/engine/internal/unit/attributes.d.ts +17 -0
  33. package/engine/internal/unit/attributes.lua +46 -0
  34. package/engine/internal/unit/bonus.d.ts +6 -0
  35. package/engine/internal/unit/bonus.lua +33 -3
  36. package/engine/internal/unit/fly-height.d.ts +7 -0
  37. package/engine/internal/unit/fly-height.lua +20 -0
  38. package/engine/internal/unit/interrupts.d.ts +12 -0
  39. package/engine/internal/unit/interrupts.lua +28 -0
  40. package/engine/internal/unit/main-selected.lua +12 -27
  41. package/engine/internal/unit/range-event.d.ts +12 -0
  42. package/engine/internal/unit/range-event.lua +90 -0
  43. package/engine/internal/unit/scale.d.ts +7 -0
  44. package/engine/internal/unit/scale.lua +20 -0
  45. package/engine/internal/unit+bonus.lua +3 -3
  46. package/engine/internal/unit-missile-launch.lua +16 -6
  47. package/engine/internal/unit.d.ts +13 -19
  48. package/engine/internal/unit.lua +140 -173
  49. package/engine/local-client.d.ts +7 -0
  50. package/engine/local-client.lua +79 -1
  51. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  52. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  53. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  54. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  55. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  56. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  57. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  58. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  59. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  60. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  61. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  62. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  63. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  64. package/engine/object-data/entry/ability-type.d.ts +2 -0
  65. package/engine/object-data/entry/ability-type.lua +84 -4
  66. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  67. package/engine/object-data/entry/destructible-type.d.ts +27 -1
  68. package/engine/object-data/entry/destructible-type.lua +155 -0
  69. package/engine/object-data/entry/unit-type.d.ts +4 -0
  70. package/engine/object-data/entry/unit-type.lua +76 -32
  71. package/engine/object-field/ability.lua +2 -2
  72. package/engine/object-field/unit.d.ts +20 -5
  73. package/engine/object-field/unit.lua +61 -0
  74. package/engine/object-field.d.ts +10 -2
  75. package/engine/object-field.lua +268 -123
  76. package/engine/random.d.ts +1 -0
  77. package/engine/random.lua +8 -0
  78. package/engine/standard/fields/ability.d.ts +2 -2
  79. package/engine/standard/fields/ability.lua +2 -2
  80. package/engine/standard/fields/unit.d.ts +11 -3
  81. package/engine/standard/fields/unit.lua +15 -2
  82. package/engine/synchronization.d.ts +11 -0
  83. package/engine/synchronization.lua +77 -0
  84. package/engine/text-tag.lua +2 -1
  85. package/engine/unit.d.ts +5 -0
  86. package/engine/unit.lua +5 -0
  87. package/lualib_bundle.lua +1 -1
  88. package/math.d.ts +2 -0
  89. package/math.lua +14 -0
  90. package/net/socket.lua +1 -1
  91. package/objutil/buff.lua +9 -7
  92. package/objutil/object.lua +1 -1
  93. package/operation.lua +1 -4
  94. package/package.json +5 -5
  95. package/patch-lua.lua +15 -0
  96. package/utility/linked-map.d.ts +34 -0
  97. package/utility/linked-map.lua +101 -0
  98. package/utility/linked-set.d.ts +3 -1
  99. package/utility/linked-set.lua +38 -0
  100. package/utility/records.lua +20 -1
  101. /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.d.ts} +0 -0
  102. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  103. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  104. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -24,11 +24,23 @@ local frameCoordinatesToWorld = ____playerCamera.frameCoordinatesToWorld
24
24
  local worldCoordinatesToFrame = ____playerCamera.worldCoordinatesToFrame
25
25
  local ____get_2Dterrain_2Dz = require("engine.internal.misc.get-terrain-z")
26
26
  local getTerrainZ = ____get_2Dterrain_2Dz.getTerrainZ
27
+ local ____lua_2Dsets = require("utility.lua-sets")
28
+ local mutableLuaSet = ____lua_2Dsets.mutableLuaSet
29
+ local ____socket = require("net.socket")
30
+ local Socket = ____socket.Socket
31
+ local ____lua_2Dmaps = require("utility.lua-maps")
32
+ local getOrPut = ____lua_2Dmaps.getOrPut
33
+ local luaMapInvert = ____lua_2Dmaps.luaMapInvert
34
+ local luaMapOf = ____lua_2Dmaps.luaMapOf
35
+ local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
27
36
  local frameClick = BlzFrameClick
28
37
  local frameGetEnable = BlzFrameGetEnable
29
38
  local frameIsVisible = BlzFrameIsVisible
30
39
  local frameSetEnable = BlzFrameSetEnable
31
40
  local frameSetScale = BlzFrameSetScale
41
+ local getHandleId = GetHandleId
42
+ local getOriginFrame = BlzGetOriginFrame
43
+ local location = Location
32
44
  local ____rawget = _G.rawget
33
45
  local rawset = _G.rawset
34
46
  local invoke = Event.invoke
@@ -130,6 +142,30 @@ do
130
142
  FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
131
143
  end
132
144
  local tooltipByFrame = setmetatable({}, {__mode = "k"})
145
+ local keyByAsyncInitOriginFrameType = luaMapOf(ORIGIN_FRAME_PORTRAIT_HP_TEXT, "hp", ORIGIN_FRAME_PORTRAIT_MANA_TEXT, "mana")
146
+ local asyncInitOriginFrameTypeByKey = luaMapInvert(keyByAsyncInitOriginFrameType)
147
+ local seenAsyncInitOriginFrameTypes = mutableLuaSet()
148
+ local seenAsyncInitOriginFrameTypesSocket = __TS__New(Socket)
149
+ local seenPlayersByAsyncInitOriginFrameType = mutableLuaMap()
150
+ seenAsyncInitOriginFrameTypesSocket.onMessage:addListener(function(player, key)
151
+ local asyncInitOriginFrameType = asyncInitOriginFrameTypeByKey[key]
152
+ if asyncInitOriginFrameType ~= nil then
153
+ getOrPut(seenPlayersByAsyncInitOriginFrameType, asyncInitOriginFrameType, mutableLuaSet)[player] = true
154
+ end
155
+ end)
156
+ local function haveAllPlayersSeenAsyncInitOriginFrameType(frame)
157
+ local players = seenPlayersByAsyncInitOriginFrameType[frame]
158
+ if players == nil then
159
+ return false
160
+ end
161
+ for ____, player in ipairs(Player.all) do
162
+ if player.isUser and player.isPlaying and not (players[player] ~= nil) then
163
+ return false
164
+ end
165
+ end
166
+ keyByAsyncInitOriginFrameType[frame] = nil
167
+ return true
168
+ end
133
169
  ____exports.Frame = __TS__Class()
134
170
  local Frame = ____exports.Frame
135
171
  Frame.name = "Frame"
@@ -308,7 +344,17 @@ function Frame.byOrigin(self, frameType, index)
308
344
  if index == nil then
309
345
  index = 0
310
346
  end
311
- return self:of(BlzGetOriginFrame(frameType, index))
347
+ local frame = getOriginFrame(frameType, index)
348
+ local asyncInitOriginFrameTypeKey = keyByAsyncInitOriginFrameType[frameType]
349
+ if index == 0 and asyncInitOriginFrameTypeKey ~= nil and not haveAllPlayersSeenAsyncInitOriginFrameType(frameType) then
350
+ if getHandleId(frame) == 0 or seenAsyncInitOriginFrameTypes[frameType] ~= nil then
351
+ location(0, 0)
352
+ else
353
+ seenAsyncInitOriginFrameTypes[frameType] = true
354
+ seenAsyncInitOriginFrameTypesSocket:send(asyncInitOriginFrameTypeKey)
355
+ end
356
+ end
357
+ return self:of(frame)
312
358
  end
313
359
  Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
314
360
  Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
@@ -7,6 +7,18 @@ import { UpgradeId } from "../../engine/object-data/entry/upgrade";
7
7
  interface Unit {
8
8
  handle: junit;
9
9
  }
10
+ export declare const enum PlayerAllianceType {
11
+ PASSIVE = 0,
12
+ RESCUABLE = 1,
13
+ HELP_REQUEST = 2,
14
+ HELP_RESPONSE = 3,
15
+ SHARED_XP = 4,
16
+ SHARED_SPELLS = 5,
17
+ SHARED_VISION = 6,
18
+ SHARED_VISION_FORCED = 7,
19
+ SHARED_CONTROL = 8,
20
+ SHARED_ADVANCED_CONTROL = 9
21
+ }
10
22
  export declare class Player extends Handle<jplayer> {
11
23
  static readonly all: Player[];
12
24
  static readonly local: Player;
@@ -42,6 +54,8 @@ export declare class Player extends Handle<jplayer> {
42
54
  forceUICancel(): void;
43
55
  isAllyOf(other: Player): boolean;
44
56
  isEnemyOf(other: Player): boolean;
57
+ setAlliance(other: Player, type: PlayerAllianceType, value: boolean): void;
58
+ getAlliance(other: Player, type: PlayerAllianceType): boolean;
45
59
  setAbilityAvailable(abilityId: number, available: boolean): void;
46
60
  getMaximumUpgradeLevel(upgradeId: UpgradeId): number;
47
61
  setMaximumUpgradeLevel(upgradeId: UpgradeId, maximumLevel: number): void;
@@ -50,6 +64,7 @@ export declare class Player extends Handle<jplayer> {
50
64
  setUpgradeLevel(upgradeId: UpgradeId, level: number): void;
51
65
  private static getEvent;
52
66
  private static getMouseEvent;
67
+ static get allianceChangedEvent(): Readonly<Record<PlayerAllianceType, Event<[Player]>>>;
53
68
  static get onLeave(): Event<[Player]>;
54
69
  static get onMouseDown(): Event<[Player, jmousebuttontype]>;
55
70
  static get onMouseUp(): Event<[Player, jmousebuttontype]>;
@@ -66,6 +81,7 @@ export declare class Player extends Handle<jplayer> {
66
81
  };
67
82
  };
68
83
  static get onChat(): Event<[player: Player, message: string]>;
84
+ static readonly colorChangedEvent: Event<[Player]>;
69
85
  static byId(id: number): Player | undefined;
70
86
  }
71
87
  export {};
@@ -1,7 +1,7 @@
1
1
  local ____lualib = require("lualib_bundle")
2
+ local __TS__New = ____lualib.__TS__New
2
3
  local __TS__Class = ____lualib.__TS__Class
3
4
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
- local __TS__New = ____lualib.__TS__New
5
5
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
6
6
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
7
7
  local ____exports = {}
@@ -23,14 +23,33 @@ local ____math = require("math")
23
23
  local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
24
24
  local ____player_2Dlocal_2Dhandle = require("engine.internal.misc.player-local-handle")
25
25
  local PLAYER_LOCAL_HANDLE = ____player_2Dlocal_2Dhandle.PLAYER_LOCAL_HANDLE
26
+ local ____lazy = require("utility.lazy")
27
+ local lazyRecord = ____lazy.lazyRecord
28
+ local getPlayerAlliance = GetPlayerAlliance
26
29
  local getPlayerColor = GetPlayerColor
27
30
  local getPlayerName = GetPlayerName
28
31
  local getPlayerTechCount = GetPlayerTechCount
29
32
  local getPlayerTechMaxAllowed = GetPlayerTechMaxAllowed
33
+ local getTriggerPlayer = GetTriggerPlayer
34
+ local setPlayerAlliance = SetPlayerAlliance
30
35
  local setPlayerTechMaxAllowed = SetPlayerTechMaxAllowed
31
36
  local setPlayerTechResearched = SetPlayerTechResearched
32
37
  local setPlayerAbilityAvailable = SetPlayerAbilityAvailable
38
+ local triggerRegisterPlayerAllianceChange = TriggerRegisterPlayerAllianceChange
33
39
  local playerNative = _G.Player
40
+ local nativeByPlayerAllianceType = {
41
+ [0] = ALLIANCE_PASSIVE,
42
+ [1] = ALLIANCE_RESCUABLE,
43
+ [2] = ALLIANCE_HELP_REQUEST,
44
+ [3] = ALLIANCE_HELP_RESPONSE,
45
+ [4] = ALLIANCE_SHARED_XP,
46
+ [5] = ALLIANCE_SHARED_SPELLS,
47
+ [6] = ALLIANCE_SHARED_VISION,
48
+ [7] = ALLIANCE_SHARED_VISION_FORCED,
49
+ [8] = ALLIANCE_SHARED_CONTROL,
50
+ [9] = ALLIANCE_SHARED_ADVANCED_CONTROL
51
+ }
52
+ local playerColorChangedEvent = __TS__New(Event)
34
53
  ____exports.Player = __TS__Class()
35
54
  local Player = ____exports.Player
36
55
  Player.name = "Player"
@@ -85,6 +104,12 @@ end
85
104
  function Player.prototype.isEnemyOf(self, other)
86
105
  return IsPlayerEnemy(self.handle, other.handle)
87
106
  end
107
+ function Player.prototype.setAlliance(self, other, ____type, value)
108
+ setPlayerAlliance(self.handle, other.handle, nativeByPlayerAllianceType[____type], value)
109
+ end
110
+ function Player.prototype.getAlliance(self, other, ____type)
111
+ return getPlayerAlliance(self.handle, other.handle, nativeByPlayerAllianceType[____type])
112
+ end
88
113
  function Player.prototype.setAbilityAvailable(self, abilityId, available)
89
114
  setPlayerAbilityAvailable(self.handle, abilityId, available)
90
115
  end
@@ -124,14 +149,11 @@ function Player.getMouseEvent(self, event, collector)
124
149
  self.events[eventId] = __TS__New(
125
150
  TriggerEvent,
126
151
  function(trigger)
127
- Timer:simple(
128
- 0,
129
- function()
130
- for ____, player in ipairs(____exports.Player.all) do
131
- TriggerRegisterPlayerEvent(trigger, player.handle, event)
132
- end
152
+ Timer:run(function()
153
+ for ____, player in ipairs(____exports.Player.all) do
154
+ TriggerRegisterPlayerEvent(trigger, player.handle, event)
133
155
  end
134
- )
156
+ end)
135
157
  end,
136
158
  collector or (function() return {} end)
137
159
  )
@@ -180,7 +202,7 @@ function Player.getKeyEvent(self, isDown)
180
202
  TriggerAddCondition(
181
203
  trigger,
182
204
  Condition(function()
183
- local player = ____exports.Player:of(GetTriggerPlayer())
205
+ local player = ____exports.Player:of(getTriggerPlayer())
184
206
  local key = BlzGetTriggerPlayerKey()
185
207
  local metaKey = BlzGetTriggerPlayerMetaKey()
186
208
  Event.invoke(event, player, key, metaKey)
@@ -279,6 +301,7 @@ __TS__SetDescriptor(
279
301
  end,
280
302
  set = function(self, color)
281
303
  SetPlayerColor(self.handle, color.handle)
304
+ Event.invoke(playerColorChangedEvent, self)
282
305
  end
283
306
  },
284
307
  true
@@ -369,13 +392,32 @@ __TS__SetDescriptor(
369
392
  end},
370
393
  true
371
394
  )
395
+ __TS__ObjectDefineProperty(
396
+ Player,
397
+ "allianceChangedEvent",
398
+ {get = function(self)
399
+ local event = lazyRecord(function(____type)
400
+ return __TS__New(
401
+ TriggerEvent,
402
+ function(trigger)
403
+ for ____, player in ipairs(____exports.Player.all) do
404
+ triggerRegisterPlayerAllianceChange(trigger, player.handle, nativeByPlayerAllianceType[____type])
405
+ end
406
+ end,
407
+ function() return ____exports.Player:of(getTriggerPlayer()) end
408
+ )
409
+ end)
410
+ rawset(self, "allianceChangedEvent", event)
411
+ return event
412
+ end}
413
+ )
372
414
  __TS__ObjectDefineProperty(
373
415
  Player,
374
416
  "onLeave",
375
417
  {get = function(self)
376
418
  return ____exports.Player:getEvent(
377
419
  EVENT_PLAYER_LEAVE,
378
- function() return ____exports.Player:of(GetTriggerPlayer()) end
420
+ function() return ____exports.Player:of(getTriggerPlayer()) end
379
421
  )
380
422
  end}
381
423
  )
@@ -385,7 +427,7 @@ __TS__ObjectDefineProperty(
385
427
  {get = function(self)
386
428
  return ____exports.Player:getMouseEvent(
387
429
  EVENT_PLAYER_MOUSE_DOWN,
388
- function() return ____exports.Player:of(GetTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
430
+ function() return ____exports.Player:of(getTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
389
431
  )
390
432
  end}
391
433
  )
@@ -395,7 +437,7 @@ __TS__ObjectDefineProperty(
395
437
  {get = function(self)
396
438
  return ____exports.Player:getMouseEvent(
397
439
  EVENT_PLAYER_MOUSE_UP,
398
- function() return ____exports.Player:of(GetTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
440
+ function() return ____exports.Player:of(getTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
399
441
  )
400
442
  end}
401
443
  )
@@ -405,7 +447,7 @@ __TS__ObjectDefineProperty(
405
447
  {get = function(self)
406
448
  return ____exports.Player:getMouseEvent(
407
449
  EVENT_PLAYER_MOUSE_MOVE,
408
- function() return ____exports.Player:of(GetTriggerPlayer()), vec2(
450
+ function() return ____exports.Player:of(getTriggerPlayer()), vec2(
409
451
  BlzGetTriggerPlayerMouseX(),
410
452
  BlzGetTriggerPlayerMouseY()
411
453
  ) end
@@ -441,10 +483,11 @@ __TS__ObjectDefineProperty(
441
483
  TriggerRegisterPlayerChatEvent(trigger, player.handle, "", false)
442
484
  end
443
485
  end,
444
- function() return ____exports.Player:of(GetTriggerPlayer()), GetEventPlayerChatString() end
486
+ function() return ____exports.Player:of(getTriggerPlayer()), GetEventPlayerChatString() end
445
487
  )
446
488
  rawset(self, "onChat", event)
447
489
  return event
448
490
  end}
449
491
  )
492
+ Player.colorChangedEvent = playerColorChangedEvent
450
493
  return ____exports
@@ -22,7 +22,7 @@ local setSoundPlayPosition = SetSoundPlayPosition
22
22
  local stopSound = StopSound
23
23
  local attachSoundToUnit = AttachSoundToUnit
24
24
  local killSoundWhenDone = KillSoundWhenDone
25
- ____exports.SoundChannel = SoundChannel or ({})
25
+ ____exports.SoundChannel = ____exports.SoundChannel or ({})
26
26
  ____exports.SoundChannel.General = 0
27
27
  ____exports.SoundChannel[____exports.SoundChannel.General] = "General"
28
28
  ____exports.SoundChannel.UnitSelection = 1
@@ -1,5 +1,6 @@
1
1
  /** @noSelfInFile */
2
- export declare class TileCell implements Readonly<Vec2> {
2
+ import { AttributesHolder } from "../../attributes";
3
+ export declare class TileCell extends AttributesHolder implements Readonly<Vec2> {
3
4
  private readonly id;
4
5
  readonly x: number;
5
6
  readonly y: number;
@@ -1,8 +1,11 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
3
4
  local __TS__New = ____lualib.__TS__New
4
5
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
6
  local ____exports = {}
7
+ local ____attributes = require("attributes")
8
+ local AttributesHolder = ____attributes.AttributesHolder
6
9
  local getTerrainType = GetTerrainType
7
10
  local setTerrainType = SetTerrainType
8
11
  local getTerrainVariance = GetTerrainVariance
@@ -13,7 +16,9 @@ local tileCellById = {}
13
16
  ____exports.TileCell = __TS__Class()
14
17
  local TileCell = ____exports.TileCell
15
18
  TileCell.name = "TileCell"
19
+ __TS__ClassExtends(TileCell, AttributesHolder)
16
20
  function TileCell.prototype.____constructor(self, id, x, y, z)
21
+ AttributesHolder.prototype.____constructor(self)
17
22
  self.id = id
18
23
  self.x = x
19
24
  self.y = y
package/destroyable.d.ts CHANGED
@@ -10,6 +10,7 @@ export interface Destroyable {
10
10
  destroy(): void;
11
11
  }
12
12
  export declare abstract class AbstractDestroyable implements Destroyable {
13
+ get isDestroyed(): boolean;
13
14
  /**
14
15
  * An overriding function should always call the super one at the end of it,
15
16
  * in the following manner: `return super.onDestroy()`.
package/destroyable.lua CHANGED
@@ -1,6 +1,7 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__New = ____lualib.__TS__New
4
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
4
5
  local ____exports = {}
5
6
  local ____exception = require("exception")
6
7
  local IllegalStateException = ____exception.IllegalStateException
@@ -28,4 +29,12 @@ function AbstractDestroyable.prototype.destroy(self)
28
29
  end
29
30
  return true
30
31
  end
32
+ __TS__SetDescriptor(
33
+ AbstractDestroyable.prototype,
34
+ "isDestroyed",
35
+ {get = function(self)
36
+ return stateByDestroyable[self] ~= nil
37
+ end},
38
+ true
39
+ )
31
40
  return ____exports
@@ -1,6 +1,11 @@
1
1
  /** @noSelfInFile */
2
2
  import { AbstractDestroyable, Destructor } from "../destroyable";
3
3
  import { Event } from "../event";
4
+ export declare const enum BehaviorPriority {
5
+ HIGH = 0,
6
+ MEDIUM = 1,
7
+ LOW = 2
8
+ }
4
9
  export type BehaviorConstructor<T extends Behavior<AnyNotNil>, Parameters extends any[] = any[]> = OmitConstructor<typeof Behavior<any>> & (abstract new (...parameters: Parameters) => T);
5
10
  declare const enum BehaviorPropertyKey {
6
11
  PREVIOUS_BEHAVIOR = 0,
@@ -9,12 +14,15 @@ declare const enum BehaviorPropertyKey {
9
14
  }
10
15
  export declare abstract class Behavior<T extends AnyNotNil, PeriodicActionParameters extends any[] = any[]> extends AbstractDestroyable {
11
16
  protected readonly object: T;
17
+ readonly priority: BehaviorPriority;
12
18
  private [BehaviorPropertyKey.PREVIOUS_BEHAVIOR]?;
13
19
  private [BehaviorPropertyKey.NEXT_BEHAVIOR]?;
14
20
  private [BehaviorPropertyKey.TIMER]?;
15
- protected constructor(object: T);
21
+ constructor(object: T, priority?: BehaviorPriority);
16
22
  protected onDestroy(): Destructor;
17
- protected registerEvent<K extends string, Args extends any[]>(this: Behavior<any, PeriodicActionParameters> & Record<K, (this: this, ...args: Args) => unknown>, event: Event<[...Args]>, listener: K): void;
23
+ protected registerGlobalEvent<K extends string, Args extends any[]>(this: Behavior<any, PeriodicActionParameters> & Record<K, (this: this, ...args: Args) => unknown>, event: Event<[...Args]>, listener: K): void;
24
+ protected deregisterGlobalEvent(event: Event<any>): boolean;
25
+ protected registerEvent<K extends string, Args extends any[]>(this: Behavior<any, PeriodicActionParameters> & Record<K, (this: this, ...args: Args) => unknown>, event: Event<[...Args]>, extractObject: (...args: Args) => T | undefined, listener: K): void;
18
26
  protected deregisterEvent(event: Event<any>): boolean;
19
27
  protected onPeriod(...parameters: PeriodicActionParameters): void;
20
28
  protected startPeriodicAction(interval: number, ...parameters: PeriodicActionParameters): void;