warscript 0.0.1-dev.46e7a52 → 0.0.1-dev.4724d95
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.
- package/core/types/frame.d.ts +1 -0
- package/core/types/frame.lua +112 -37
- package/core/types/handle.lua +6 -9
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +2 -1
- package/core/types/player.lua +16 -12
- package/core/types/sound.lua +1 -1
- package/core/types/tileCell.d.ts +2 -1
- package/core/types/tileCell.lua +5 -0
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +10 -2
- package/engine/behavior.lua +157 -76
- package/engine/behaviour/ability/apply-buff.lua +4 -4
- package/engine/behaviour/ability/damage.d.ts +3 -0
- package/engine/behaviour/ability/damage.lua +8 -2
- package/engine/behaviour/ability/emulate-impact.lua +5 -4
- package/engine/behaviour/ability.d.ts +11 -6
- package/engine/behaviour/ability.lua +31 -1
- package/engine/behaviour/unit/stun-immunity.d.ts +7 -5
- package/engine/behaviour/unit/stun-immunity.lua +6 -5
- package/engine/behaviour/unit.d.ts +7 -3
- package/engine/behaviour/unit.lua +101 -24
- package/engine/buff.d.ts +65 -18
- package/engine/buff.lua +351 -147
- package/engine/internal/ability.lua +15 -15
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item.d.ts +4 -5
- package/engine/internal/item.lua +37 -40
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.lua +12 -2
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +6 -0
- package/engine/internal/unit/bonus.lua +33 -3
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
- package/engine/internal/unit/pseudo-passive-abilities.lua +8 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit-missile-launch.lua +12 -5
- package/engine/internal/unit.d.ts +2 -13
- package/engine/internal/unit.lua +79 -148
- package/engine/local-client.d.ts +6 -1
- package/engine/local-client.lua +60 -5
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +29 -0
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type.d.ts +2 -0
- package/engine/object-data/entry/ability-type.lua +84 -4
- package/engine/object-data/entry/buff-type/applicable.lua +113 -109
- package/engine/object-data/entry/destructible-type.d.ts +27 -1
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/unit-type.d.ts +4 -0
- package/engine/object-data/entry/unit-type.lua +76 -32
- package/engine/object-field/ability.lua +2 -2
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +20 -5
- package/engine/object-field/unit.lua +61 -0
- package/engine/object-field.d.ts +10 -2
- package/engine/object-field.lua +268 -123
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +8 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/standard/fields/unit.d.ts +11 -3
- package/engine/standard/fields/unit.lua +15 -2
- package/engine/text-tag.lua +2 -1
- package/engine/unit.d.ts +5 -0
- package/engine/unit.lua +5 -0
- package/event.d.ts +1 -1
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/network.lua +25 -1
- package/objutil/buff.lua +9 -7
- package/objutil/object.lua +1 -1
- package/operation.d.ts +8 -1
- package/operation.lua +38 -18
- package/package.json +5 -5
- package/patch-lua.lua +15 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +3 -1
- package/utility/linked-set.lua +27 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/core/types/frame.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ export declare class Frame extends Handle<jframehandle> {
|
|
|
80
80
|
get onMouseLeave(): FrameEvent;
|
|
81
81
|
get onMouseUp(): FrameEvent;
|
|
82
82
|
get onMouseWheel(): FrameEvent<[number]>;
|
|
83
|
+
private trackMouseLocally;
|
|
83
84
|
get mouseEnterLocalEvent(): Event;
|
|
84
85
|
get mouseLeaveLocalEvent(): Event;
|
|
85
86
|
get popupMenuItemChangeEvent(): FrameEvent<[
|
package/core/types/frame.lua
CHANGED
|
@@ -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,79 @@ do
|
|
|
130
142
|
FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
|
|
131
143
|
end
|
|
132
144
|
local tooltipByFrame = setmetatable({}, {__mode = "k"})
|
|
145
|
+
local isMouseInsideLocallyByFrame = mutableLuaMap()
|
|
146
|
+
local mouseEnterLocalEventByFrame = mutableLuaMap()
|
|
147
|
+
local mouseLeaveLocalEventByFrame = mutableLuaMap()
|
|
148
|
+
local isLocalMouseTrackingStarted = false
|
|
149
|
+
--- Reused across ticks to avoid per-tick allocations: only the first `leftFrameCount` /
|
|
150
|
+
-- `enteredFrameCount` entries are meaningful, stale entries beyond them are never read and are
|
|
151
|
+
-- kept collectable by the weak values mode.
|
|
152
|
+
local leftFrames = setmetatable({}, {__mode = "v"})
|
|
153
|
+
local enteredFrames = setmetatable({}, {__mode = "v"})
|
|
154
|
+
--- All frames share a single poll which invokes every mouse leave event before any mouse enter
|
|
155
|
+
-- event within the same tick. With a poll per event, the invocation order would depend on the
|
|
156
|
+
-- event creation order instead, breaking listeners relying on the natural "leave the old frame,
|
|
157
|
+
-- then enter the new frame" order.
|
|
158
|
+
local function startLocalMouseTracking()
|
|
159
|
+
if isLocalMouseTrackingStarted then
|
|
160
|
+
return
|
|
161
|
+
end
|
|
162
|
+
isLocalMouseTrackingStarted = true
|
|
163
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
164
|
+
local leftFrameCount = 0
|
|
165
|
+
local enteredFrameCount = 0
|
|
166
|
+
for frame, wasMouseInside in pairs(isMouseInsideLocallyByFrame) do
|
|
167
|
+
local tooltip = tooltipByFrame[frame]
|
|
168
|
+
local isMouseInside = tooltip ~= nil and tooltip.visible
|
|
169
|
+
if isMouseInside ~= wasMouseInside then
|
|
170
|
+
isMouseInsideLocallyByFrame[frame] = isMouseInside
|
|
171
|
+
if isMouseInside then
|
|
172
|
+
enteredFrames[enteredFrameCount + 1] = frame
|
|
173
|
+
enteredFrameCount = enteredFrameCount + 1
|
|
174
|
+
else
|
|
175
|
+
leftFrames[leftFrameCount + 1] = frame
|
|
176
|
+
leftFrameCount = leftFrameCount + 1
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
for i = 1, leftFrameCount do
|
|
181
|
+
local event = mouseLeaveLocalEventByFrame[leftFrames[i]]
|
|
182
|
+
if event ~= nil then
|
|
183
|
+
Event.invoke(event)
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
for i = 1, enteredFrameCount do
|
|
187
|
+
local event = mouseEnterLocalEventByFrame[enteredFrames[i]]
|
|
188
|
+
if event ~= nil then
|
|
189
|
+
Event.invoke(event)
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
end)
|
|
193
|
+
end
|
|
194
|
+
local keyByAsyncInitOriginFrameType = luaMapOf(ORIGIN_FRAME_PORTRAIT_HP_TEXT, "hp", ORIGIN_FRAME_PORTRAIT_MANA_TEXT, "mana")
|
|
195
|
+
local asyncInitOriginFrameTypeByKey = luaMapInvert(keyByAsyncInitOriginFrameType)
|
|
196
|
+
local seenAsyncInitOriginFrameTypes = mutableLuaSet()
|
|
197
|
+
local seenAsyncInitOriginFrameTypesSocket = __TS__New(Socket)
|
|
198
|
+
local seenPlayersByAsyncInitOriginFrameType = mutableLuaMap()
|
|
199
|
+
seenAsyncInitOriginFrameTypesSocket.onMessage:addListener(function(player, key)
|
|
200
|
+
local asyncInitOriginFrameType = asyncInitOriginFrameTypeByKey[key]
|
|
201
|
+
if asyncInitOriginFrameType ~= nil then
|
|
202
|
+
getOrPut(seenPlayersByAsyncInitOriginFrameType, asyncInitOriginFrameType, mutableLuaSet)[player] = true
|
|
203
|
+
end
|
|
204
|
+
end)
|
|
205
|
+
local function haveAllPlayersSeenAsyncInitOriginFrameType(frame)
|
|
206
|
+
local players = seenPlayersByAsyncInitOriginFrameType[frame]
|
|
207
|
+
if players == nil then
|
|
208
|
+
return false
|
|
209
|
+
end
|
|
210
|
+
for ____, player in ipairs(Player.all) do
|
|
211
|
+
if player.isUser and player.isPlaying and not (players[player] ~= nil) then
|
|
212
|
+
return false
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
keyByAsyncInitOriginFrameType[frame] = nil
|
|
216
|
+
return true
|
|
217
|
+
end
|
|
133
218
|
____exports.Frame = __TS__Class()
|
|
134
219
|
local Frame = ____exports.Frame
|
|
135
220
|
Frame.name = "Frame"
|
|
@@ -162,6 +247,18 @@ function Frame.prototype.getEvent(self, eventType, c)
|
|
|
162
247
|
end
|
|
163
248
|
return self.events[eventId]
|
|
164
249
|
end
|
|
250
|
+
function Frame.prototype.trackMouseLocally(self)
|
|
251
|
+
if not (tooltipByFrame[self] ~= nil) then
|
|
252
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
|
|
253
|
+
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
254
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
255
|
+
self:setTooltip(tooltip)
|
|
256
|
+
end
|
|
257
|
+
if not (isMouseInsideLocallyByFrame[self] ~= nil) then
|
|
258
|
+
isMouseInsideLocallyByFrame[self] = false
|
|
259
|
+
startLocalMouseTracking()
|
|
260
|
+
end
|
|
261
|
+
end
|
|
165
262
|
function Frame.prototype.hide(self)
|
|
166
263
|
self.hideCounter = self.hideCounter + 1
|
|
167
264
|
if self.hideCounter > 0 then
|
|
@@ -308,7 +405,17 @@ function Frame.byOrigin(self, frameType, index)
|
|
|
308
405
|
if index == nil then
|
|
309
406
|
index = 0
|
|
310
407
|
end
|
|
311
|
-
|
|
408
|
+
local frame = getOriginFrame(frameType, index)
|
|
409
|
+
local asyncInitOriginFrameTypeKey = keyByAsyncInitOriginFrameType[frameType]
|
|
410
|
+
if index == 0 and asyncInitOriginFrameTypeKey ~= nil and not haveAllPlayersSeenAsyncInitOriginFrameType(frameType) then
|
|
411
|
+
if getHandleId(frame) == 0 or seenAsyncInitOriginFrameTypes[frameType] ~= nil then
|
|
412
|
+
location(0, 0)
|
|
413
|
+
else
|
|
414
|
+
seenAsyncInitOriginFrameTypes[frameType] = true
|
|
415
|
+
seenAsyncInitOriginFrameTypesSocket:send(asyncInitOriginFrameTypeKey)
|
|
416
|
+
end
|
|
417
|
+
end
|
|
418
|
+
return self:of(frame)
|
|
312
419
|
end
|
|
313
420
|
Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
|
|
314
421
|
Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
|
|
@@ -627,24 +734,8 @@ __TS__SetDescriptor(
|
|
|
627
734
|
"mouseEnterLocalEvent",
|
|
628
735
|
{get = function(self)
|
|
629
736
|
local event = __TS__New(Event)
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
633
|
-
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
634
|
-
self:setTooltip(tooltip)
|
|
635
|
-
end
|
|
636
|
-
local isMouseInside = false
|
|
637
|
-
Timer.onPeriod[1 / 64]:addListener(function()
|
|
638
|
-
local tooltip = tooltipByFrame[self]
|
|
639
|
-
if tooltip and tooltip.visible then
|
|
640
|
-
if not isMouseInside then
|
|
641
|
-
isMouseInside = true
|
|
642
|
-
Event.invoke(event)
|
|
643
|
-
end
|
|
644
|
-
else
|
|
645
|
-
isMouseInside = false
|
|
646
|
-
end
|
|
647
|
-
end)
|
|
737
|
+
self:trackMouseLocally()
|
|
738
|
+
mouseEnterLocalEventByFrame[self] = event
|
|
648
739
|
rawset(self, "mouseEnterLocalEvent", event)
|
|
649
740
|
return event
|
|
650
741
|
end},
|
|
@@ -655,24 +746,8 @@ __TS__SetDescriptor(
|
|
|
655
746
|
"mouseLeaveLocalEvent",
|
|
656
747
|
{get = function(self)
|
|
657
748
|
local event = __TS__New(Event)
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
661
|
-
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
662
|
-
self:setTooltip(tooltip)
|
|
663
|
-
end
|
|
664
|
-
local isMouseInside = false
|
|
665
|
-
Timer.onPeriod[1 / 64]:addListener(function()
|
|
666
|
-
local tooltip = tooltipByFrame[self]
|
|
667
|
-
if tooltip and tooltip.visible then
|
|
668
|
-
isMouseInside = true
|
|
669
|
-
else
|
|
670
|
-
if isMouseInside then
|
|
671
|
-
isMouseInside = false
|
|
672
|
-
Event.invoke(event)
|
|
673
|
-
end
|
|
674
|
-
end
|
|
675
|
-
end)
|
|
749
|
+
self:trackMouseLocally()
|
|
750
|
+
mouseLeaveLocalEventByFrame[self] = event
|
|
676
751
|
rawset(self, "mouseLeaveLocalEvent", event)
|
|
677
752
|
return event
|
|
678
753
|
end},
|
package/core/types/handle.lua
CHANGED
|
@@ -15,6 +15,8 @@ local ____exception = require("exception")
|
|
|
15
15
|
local IllegalStateException = ____exception.IllegalStateException
|
|
16
16
|
local ____attributes = require("attributes")
|
|
17
17
|
local AttributesHolder = ____attributes.AttributesHolder
|
|
18
|
+
local ____preconditions = require("utility.preconditions")
|
|
19
|
+
local checkNotNull = ____preconditions.checkNotNull
|
|
18
20
|
local getHandleId = GetHandleId
|
|
19
21
|
local onCreateEventByHandleConstructor = {}
|
|
20
22
|
local onDestroyEventByHandleConstructor = {}
|
|
@@ -66,17 +68,12 @@ function Handle.prototype.onDestroy(self, ...)
|
|
|
66
68
|
return nil
|
|
67
69
|
end
|
|
68
70
|
function Handle.prototype.destroy(self, ...)
|
|
71
|
+
if self[0] == 2 or self[0] == 3 then
|
|
72
|
+
return nil
|
|
73
|
+
end
|
|
69
74
|
local clazz = self.constructor
|
|
70
75
|
local id = getHandleId(self.handle)
|
|
71
|
-
|
|
72
|
-
error(
|
|
73
|
-
__TS__New(
|
|
74
|
-
IllegalStateException,
|
|
75
|
-
"Double-destroy run for handle " .. tostring(id)
|
|
76
|
-
),
|
|
77
|
-
0
|
|
78
|
-
)
|
|
79
|
-
end
|
|
76
|
+
checkNotNull(clazz.memoized[id])
|
|
80
77
|
self[0] = 2
|
|
81
78
|
if self.onDestroyEvent then
|
|
82
79
|
Event.invoke(self.onDestroyEvent)
|
package/core/types/item.d.ts
CHANGED
package/core/types/item.lua
CHANGED
package/core/types/player.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export declare class Player extends Handle<jplayer> {
|
|
|
28
28
|
static readonly neutralExtra: Player;
|
|
29
29
|
private static events;
|
|
30
30
|
readonly id: number;
|
|
31
|
+
readonly slotState: jplayerslotstate;
|
|
31
32
|
constructor(handle: jplayer);
|
|
32
33
|
onDestroy(): HandleDestructor;
|
|
33
34
|
toString(): string;
|
|
@@ -45,7 +46,6 @@ export declare class Player extends Handle<jplayer> {
|
|
|
45
46
|
get isUser(): boolean;
|
|
46
47
|
get isPlaying(): boolean;
|
|
47
48
|
get controller(): jmapcontrol;
|
|
48
|
-
get slotState(): jplayerslotstate;
|
|
49
49
|
clearSelection(): void;
|
|
50
50
|
selectSingle(unit: Unit): void;
|
|
51
51
|
select(unit: Unit): void;
|
|
@@ -81,6 +81,7 @@ export declare class Player extends Handle<jplayer> {
|
|
|
81
81
|
};
|
|
82
82
|
};
|
|
83
83
|
static get onChat(): Event<[player: Player, message: string]>;
|
|
84
|
+
static readonly colorChangedEvent: Event<[Player]>;
|
|
84
85
|
static byId(id: number): Player | undefined;
|
|
85
86
|
}
|
|
86
87
|
export {};
|
package/core/types/player.lua
CHANGED
|
@@ -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 = {}
|
|
@@ -49,12 +49,14 @@ local nativeByPlayerAllianceType = {
|
|
|
49
49
|
[8] = ALLIANCE_SHARED_CONTROL,
|
|
50
50
|
[9] = ALLIANCE_SHARED_ADVANCED_CONTROL
|
|
51
51
|
}
|
|
52
|
+
local playerColorChangedEvent = __TS__New(Event)
|
|
52
53
|
____exports.Player = __TS__Class()
|
|
53
54
|
local Player = ____exports.Player
|
|
54
55
|
Player.name = "Player"
|
|
55
56
|
__TS__ClassExtends(Player, Handle)
|
|
56
57
|
function Player.prototype.____constructor(self, handle)
|
|
57
58
|
Handle.prototype.____constructor(self, handle)
|
|
59
|
+
self.slotState = GetPlayerSlotState(self.handle)
|
|
58
60
|
self.id = GetPlayerId(handle)
|
|
59
61
|
end
|
|
60
62
|
function Player.prototype.onDestroy(self)
|
|
@@ -300,6 +302,7 @@ __TS__SetDescriptor(
|
|
|
300
302
|
end,
|
|
301
303
|
set = function(self, color)
|
|
302
304
|
SetPlayerColor(self.handle, color.handle)
|
|
305
|
+
Event.invoke(playerColorChangedEvent, self)
|
|
303
306
|
end
|
|
304
307
|
},
|
|
305
308
|
true
|
|
@@ -362,7 +365,7 @@ __TS__SetDescriptor(
|
|
|
362
365
|
Player.prototype,
|
|
363
366
|
"isUser",
|
|
364
367
|
{get = function(self)
|
|
365
|
-
return
|
|
368
|
+
return self.controller == MAP_CONTROL_USER
|
|
366
369
|
end},
|
|
367
370
|
true
|
|
368
371
|
)
|
|
@@ -370,7 +373,7 @@ __TS__SetDescriptor(
|
|
|
370
373
|
Player.prototype,
|
|
371
374
|
"isPlaying",
|
|
372
375
|
{get = function(self)
|
|
373
|
-
return
|
|
376
|
+
return self.slotState == PLAYER_SLOT_STATE_PLAYING
|
|
374
377
|
end},
|
|
375
378
|
true
|
|
376
379
|
)
|
|
@@ -378,15 +381,9 @@ __TS__SetDescriptor(
|
|
|
378
381
|
Player.prototype,
|
|
379
382
|
"controller",
|
|
380
383
|
{get = function(self)
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
)
|
|
385
|
-
__TS__SetDescriptor(
|
|
386
|
-
Player.prototype,
|
|
387
|
-
"slotState",
|
|
388
|
-
{get = function(self)
|
|
389
|
-
return GetPlayerSlotState(self.handle)
|
|
384
|
+
local controller = GetPlayerController(self.handle)
|
|
385
|
+
rawset(self, "controller", controller)
|
|
386
|
+
return controller
|
|
390
387
|
end},
|
|
391
388
|
true
|
|
392
389
|
)
|
|
@@ -487,4 +484,11 @@ __TS__ObjectDefineProperty(
|
|
|
487
484
|
return event
|
|
488
485
|
end}
|
|
489
486
|
)
|
|
487
|
+
Player.colorChangedEvent = playerColorChangedEvent
|
|
488
|
+
____exports.Player.onLeave:addListener(
|
|
489
|
+
999999,
|
|
490
|
+
function(player)
|
|
491
|
+
rawset(player, "slotState", PLAYER_SLOT_STATE_LEFT)
|
|
492
|
+
end
|
|
493
|
+
)
|
|
490
494
|
return ____exports
|
package/core/types/sound.lua
CHANGED
|
@@ -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
|
package/core/types/tileCell.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
|
-
|
|
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;
|
package/core/types/tileCell.lua
CHANGED
|
@@ -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
|
package/engine/behavior.d.ts
CHANGED
|
@@ -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
|
-
|
|
21
|
+
constructor(object: T, priority?: BehaviorPriority);
|
|
16
22
|
protected onDestroy(): Destructor;
|
|
17
|
-
protected
|
|
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;
|