warscript 0.0.1-dev.d7e0522 → 0.0.1-dev.da5fb2e
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.lua +10 -12
- package/core/types/player.lua +3 -1
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +79 -5
- package/core/types/timer.d.ts +2 -1
- package/core/types/timer.lua +21 -2
- package/decl/native.d.ts +4 -2
- package/engine/behavior.d.ts +5 -0
- package/engine/behavior.lua +106 -27
- package/engine/behaviour/ability/apply-buff.lua +1 -1
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +11 -3
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.lua +8 -17
- package/engine/behaviour/unit/stun-immunity.d.ts +5 -3
- package/engine/behaviour/unit/stun-immunity.lua +43 -27
- package/engine/behaviour/unit.d.ts +19 -2
- package/engine/behaviour/unit.lua +88 -7
- package/engine/buff.d.ts +2 -4
- package/engine/buff.lua +68 -83
- package/engine/internal/ability.d.ts +5 -1
- package/engine/internal/ability.lua +43 -11
- package/engine/internal/item/ability.lua +51 -1
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +1 -0
- package/engine/internal/item.lua +20 -11
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +62 -0
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit-missile-launch.lua +8 -1
- package/engine/internal/unit.d.ts +4 -4
- package/engine/internal/unit.lua +84 -70
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/entry/ability-type.lua +1 -3
- package/engine/object-data/entry/unit-type.d.ts +11 -2
- package/engine/object-data/entry/unit-type.lua +59 -1
- package/engine/object-field/ability.d.ts +3 -3
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +11 -0
- package/engine/object-field/unit.lua +34 -0
- package/engine/object-field.d.ts +8 -5
- package/engine/object-field.lua +90 -76
- package/engine/standard/fields/unit.d.ts +4 -0
- package/engine/standard/fields/unit.lua +7 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +249 -10
- package/engine/unit.d.ts +1 -0
- package/engine/unit.lua +1 -0
- package/package.json +2 -2
- package/patch-lualib.lua +1 -1
- package/utility/callback-array.d.ts +13 -0
- package/utility/callback-array.lua +46 -0
- package/utility/functions.d.ts +7 -0
- package/utility/functions.lua +12 -0
- package/utility/lua-maps.d.ts +1 -0
- package/utility/lua-maps.lua +4 -0
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +4 -0
- package/core/types/order.d.ts +0 -26
- package/core/types/order.lua +0 -65
package/engine/text-tag.lua
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local __TS__New = ____lualib.__TS__New
|
|
5
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
3
6
|
local __TS__ObjectAssign = ____lualib.__TS__ObjectAssign
|
|
4
7
|
local ____exports = {}
|
|
5
8
|
local ____color = require("core.types.color")
|
|
6
9
|
local Color = ____color.Color
|
|
10
|
+
local ____timer = require("core.types.timer")
|
|
11
|
+
local Timer = ____timer.Timer
|
|
12
|
+
local ____destroyable = require("destroyable")
|
|
13
|
+
local AbstractDestroyable = ____destroyable.AbstractDestroyable
|
|
14
|
+
local ____playerCamera = require("core.types.playerCamera")
|
|
15
|
+
local worldCoordinatesToFrame = ____playerCamera.worldCoordinatesToFrame
|
|
16
|
+
local ____get_2Dterrain_2Dz = require("engine.internal.misc.get-terrain-z")
|
|
17
|
+
local getTerrainZ = ____get_2Dterrain_2Dz.getTerrainZ
|
|
18
|
+
local ____player_2Dlocal_2Dhandle = require("engine.internal.misc.player-local-handle")
|
|
19
|
+
local PLAYER_LOCAL_HANDLE = ____player_2Dlocal_2Dhandle.PLAYER_LOCAL_HANDLE
|
|
7
20
|
local createTextTag = CreateTextTag
|
|
8
21
|
local destroyTextTag = DestroyTextTag
|
|
9
22
|
local setTextTagText = SetTextTagText
|
|
@@ -17,17 +30,14 @@ local setTextTagPermanent = SetTextTagPermanent
|
|
|
17
30
|
local setTextTagAge = SetTextTagAge
|
|
18
31
|
local setTextTagLifespan = SetTextTagLifespan
|
|
19
32
|
local setTextTagFadepoint = SetTextTagFadepoint
|
|
33
|
+
local isUnitHidden = IsUnitHidden
|
|
34
|
+
local isUnitLoaded = IsUnitLoaded
|
|
35
|
+
local isUnitVisible = IsUnitVisible
|
|
36
|
+
local getUnitFlyHeight = GetUnitFlyHeight
|
|
37
|
+
local getUnitX = GetUnitX
|
|
38
|
+
local getUnitY = GetUnitY
|
|
20
39
|
local DEFAULT_FONT_SIZE = 0.024
|
|
21
|
-
|
|
22
|
-
local TextTag = ____exports.TextTag
|
|
23
|
-
TextTag.name = "TextTag"
|
|
24
|
-
function TextTag.prototype.____constructor(self, handle)
|
|
25
|
-
self.handle = handle
|
|
26
|
-
end
|
|
27
|
-
function TextTag.flash(self, configuration, text, x, y, z)
|
|
28
|
-
local textTag = createTextTag()
|
|
29
|
-
setTextTagText(textTag, text, DEFAULT_FONT_SIZE)
|
|
30
|
-
setTextTagPos(textTag, x + configuration.offsetX, y + configuration.offsetY, (z or 0) + configuration.offsetZ)
|
|
40
|
+
local function applyConfiguration(textTag, configuration)
|
|
31
41
|
setTextTagFadepoint(textTag, configuration.fadepoint)
|
|
32
42
|
setTextTagLifespan(textTag, configuration.lifespan)
|
|
33
43
|
local color = configuration.color
|
|
@@ -42,6 +52,213 @@ function TextTag.flash(self, configuration, text, x, y, z)
|
|
|
42
52
|
setTextTagPermanent(textTag, false)
|
|
43
53
|
setTextTagVisibility(textTag, true)
|
|
44
54
|
end
|
|
55
|
+
local unitTextTags = setmetatable({}, {__mode = "k"})
|
|
56
|
+
local function ensureHandle(textTag)
|
|
57
|
+
local handle = textTag[101]
|
|
58
|
+
if handle == nil then
|
|
59
|
+
handle = createTextTag()
|
|
60
|
+
applyConfiguration(handle, textTag[102])
|
|
61
|
+
setTextTagPermanent(handle, true)
|
|
62
|
+
setTextTagText(handle, textTag[103] or "", textTag[104] or DEFAULT_FONT_SIZE)
|
|
63
|
+
local color = textTag[105]
|
|
64
|
+
if color ~= nil then
|
|
65
|
+
setTextTagColor(
|
|
66
|
+
handle,
|
|
67
|
+
color.r,
|
|
68
|
+
color.g,
|
|
69
|
+
color.b,
|
|
70
|
+
color.a
|
|
71
|
+
)
|
|
72
|
+
end
|
|
73
|
+
local unit = textTag[100]
|
|
74
|
+
if unit ~= nil then
|
|
75
|
+
setTextTagPosUnit(handle, unit.handle, textTag[102].offsetZ)
|
|
76
|
+
else
|
|
77
|
+
setTextTagPos(handle, textTag[106] or 0, textTag[107] or 0, 0)
|
|
78
|
+
end
|
|
79
|
+
textTag[101] = handle
|
|
80
|
+
end
|
|
81
|
+
return handle
|
|
82
|
+
end
|
|
83
|
+
____exports.TextTag = __TS__Class()
|
|
84
|
+
local TextTag = ____exports.TextTag
|
|
85
|
+
TextTag.name = "TextTag"
|
|
86
|
+
__TS__ClassExtends(TextTag, AbstractDestroyable)
|
|
87
|
+
function TextTag.prototype.____constructor(self, handle)
|
|
88
|
+
AbstractDestroyable.prototype.____constructor(self)
|
|
89
|
+
self[101] = handle
|
|
90
|
+
end
|
|
91
|
+
function TextTag.prototype.onDestroy(self)
|
|
92
|
+
local handle = self[101]
|
|
93
|
+
if handle ~= nil then
|
|
94
|
+
destroyTextTag(handle)
|
|
95
|
+
self[101] = nil
|
|
96
|
+
end
|
|
97
|
+
unitTextTags[self] = nil
|
|
98
|
+
return AbstractDestroyable.prototype.onDestroy(self)
|
|
99
|
+
end
|
|
100
|
+
function TextTag.flash(self, configuration, text, x, y, z)
|
|
101
|
+
local textTag = createTextTag()
|
|
102
|
+
setTextTagText(textTag, text, DEFAULT_FONT_SIZE)
|
|
103
|
+
setTextTagPos(textTag, x + configuration.offsetX, y + configuration.offsetY, (z or 0) + configuration.offsetZ)
|
|
104
|
+
applyConfiguration(textTag, configuration)
|
|
105
|
+
end
|
|
106
|
+
function TextTag.create(self, configuration, text, unit)
|
|
107
|
+
local textTag = __TS__New(____exports.TextTag)
|
|
108
|
+
textTag[103] = text
|
|
109
|
+
textTag[100] = unit
|
|
110
|
+
textTag[102] = configuration
|
|
111
|
+
ensureHandle(textTag)
|
|
112
|
+
unitTextTags[textTag] = true
|
|
113
|
+
return textTag
|
|
114
|
+
end
|
|
115
|
+
__TS__SetDescriptor(
|
|
116
|
+
TextTag.prototype,
|
|
117
|
+
"text",
|
|
118
|
+
{
|
|
119
|
+
get = function(self)
|
|
120
|
+
return self[103] or ""
|
|
121
|
+
end,
|
|
122
|
+
set = function(self, text)
|
|
123
|
+
setTextTagText(
|
|
124
|
+
ensureHandle(self),
|
|
125
|
+
text,
|
|
126
|
+
self[104] or DEFAULT_FONT_SIZE
|
|
127
|
+
)
|
|
128
|
+
self[103] = text
|
|
129
|
+
end
|
|
130
|
+
},
|
|
131
|
+
true
|
|
132
|
+
)
|
|
133
|
+
__TS__SetDescriptor(
|
|
134
|
+
TextTag.prototype,
|
|
135
|
+
"fontSize",
|
|
136
|
+
{
|
|
137
|
+
get = function(self)
|
|
138
|
+
return self[104] or DEFAULT_FONT_SIZE
|
|
139
|
+
end,
|
|
140
|
+
set = function(self, fontSize)
|
|
141
|
+
setTextTagText(
|
|
142
|
+
ensureHandle(self),
|
|
143
|
+
self[103] or "",
|
|
144
|
+
DEFAULT_FONT_SIZE
|
|
145
|
+
)
|
|
146
|
+
self[104] = fontSize
|
|
147
|
+
end
|
|
148
|
+
},
|
|
149
|
+
true
|
|
150
|
+
)
|
|
151
|
+
__TS__SetDescriptor(
|
|
152
|
+
TextTag.prototype,
|
|
153
|
+
"color",
|
|
154
|
+
{
|
|
155
|
+
get = function(self)
|
|
156
|
+
return self[105] or Color.white
|
|
157
|
+
end,
|
|
158
|
+
set = function(self, color)
|
|
159
|
+
setTextTagColor(
|
|
160
|
+
ensureHandle(self),
|
|
161
|
+
color.r,
|
|
162
|
+
color.g,
|
|
163
|
+
color.b,
|
|
164
|
+
color.a
|
|
165
|
+
)
|
|
166
|
+
self[105] = color
|
|
167
|
+
end
|
|
168
|
+
},
|
|
169
|
+
true
|
|
170
|
+
)
|
|
171
|
+
__TS__SetDescriptor(
|
|
172
|
+
TextTag.prototype,
|
|
173
|
+
"unit",
|
|
174
|
+
{
|
|
175
|
+
get = function(self)
|
|
176
|
+
return self[100]
|
|
177
|
+
end,
|
|
178
|
+
set = function(self, unit)
|
|
179
|
+
if unit ~= nil then
|
|
180
|
+
setTextTagPosUnit(
|
|
181
|
+
ensureHandle(self),
|
|
182
|
+
unit.handle,
|
|
183
|
+
0
|
|
184
|
+
)
|
|
185
|
+
self[106] = nil
|
|
186
|
+
self[107] = nil
|
|
187
|
+
unitTextTags[self] = true
|
|
188
|
+
elseif self[100] ~= nil then
|
|
189
|
+
local unit = self[100]
|
|
190
|
+
local x = unit.x
|
|
191
|
+
local y = unit.y
|
|
192
|
+
setTextTagPos(
|
|
193
|
+
ensureHandle(self),
|
|
194
|
+
x,
|
|
195
|
+
y,
|
|
196
|
+
0
|
|
197
|
+
)
|
|
198
|
+
self[106] = x
|
|
199
|
+
self[107] = y
|
|
200
|
+
unitTextTags[self] = nil
|
|
201
|
+
end
|
|
202
|
+
self[100] = unit
|
|
203
|
+
end
|
|
204
|
+
},
|
|
205
|
+
true
|
|
206
|
+
)
|
|
207
|
+
__TS__SetDescriptor(
|
|
208
|
+
TextTag.prototype,
|
|
209
|
+
"x",
|
|
210
|
+
{
|
|
211
|
+
get = function(self)
|
|
212
|
+
local ____self__106_2 = self[106]
|
|
213
|
+
if ____self__106_2 == nil then
|
|
214
|
+
local ____opt_0 = self[100]
|
|
215
|
+
____self__106_2 = ____opt_0 and ____opt_0.x
|
|
216
|
+
end
|
|
217
|
+
return ____self__106_2 or 0
|
|
218
|
+
end,
|
|
219
|
+
set = function(self, x)
|
|
220
|
+
local ____ensureHandle_result_6 = ensureHandle(self)
|
|
221
|
+
local ____x_7 = x
|
|
222
|
+
local ____self__107_5 = self[107]
|
|
223
|
+
if ____self__107_5 == nil then
|
|
224
|
+
local ____opt_3 = self[100]
|
|
225
|
+
____self__107_5 = ____opt_3 and ____opt_3.y
|
|
226
|
+
end
|
|
227
|
+
setTextTagPos(____ensureHandle_result_6, ____x_7, ____self__107_5 or 0, 0)
|
|
228
|
+
self[106] = x
|
|
229
|
+
self[100] = nil
|
|
230
|
+
unitTextTags[self] = nil
|
|
231
|
+
end
|
|
232
|
+
},
|
|
233
|
+
true
|
|
234
|
+
)
|
|
235
|
+
__TS__SetDescriptor(
|
|
236
|
+
TextTag.prototype,
|
|
237
|
+
"y",
|
|
238
|
+
{
|
|
239
|
+
get = function(self)
|
|
240
|
+
local ____self__107_10 = self[107]
|
|
241
|
+
if ____self__107_10 == nil then
|
|
242
|
+
local ____opt_8 = self[100]
|
|
243
|
+
____self__107_10 = ____opt_8 and ____opt_8.y
|
|
244
|
+
end
|
|
245
|
+
return ____self__107_10 or 0
|
|
246
|
+
end,
|
|
247
|
+
set = function(self, y)
|
|
248
|
+
local ____ensureHandle_result_14 = ensureHandle(self)
|
|
249
|
+
local ____self__106_13 = self[106]
|
|
250
|
+
if ____self__106_13 == nil then
|
|
251
|
+
local ____opt_11 = self[100]
|
|
252
|
+
____self__106_13 = ____opt_11 and ____opt_11.x
|
|
253
|
+
end
|
|
254
|
+
setTextTagPos(____ensureHandle_result_14, ____self__106_13 or 0, y, 0)
|
|
255
|
+
self[107] = y
|
|
256
|
+
self[100] = nil
|
|
257
|
+
unitTextTags[self] = nil
|
|
258
|
+
end
|
|
259
|
+
},
|
|
260
|
+
true
|
|
261
|
+
)
|
|
45
262
|
TextTag.BASE = {
|
|
46
263
|
fadepoint = 2,
|
|
47
264
|
lifespan = 3,
|
|
@@ -106,4 +323,26 @@ TextTag.SHADOW_STRIKE = __TS__ObjectAssign(
|
|
|
106
323
|
lifespan = 5
|
|
107
324
|
}
|
|
108
325
|
)
|
|
326
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
327
|
+
for textTag in pairs(unitTextTags) do
|
|
328
|
+
local unit = textTag[100].handle
|
|
329
|
+
local x = getUnitX(unit)
|
|
330
|
+
local y = getUnitY(unit)
|
|
331
|
+
local ____, ____, isInView = worldCoordinatesToFrame(
|
|
332
|
+
x,
|
|
333
|
+
y,
|
|
334
|
+
getUnitFlyHeight(unit) + getTerrainZ(x, y)
|
|
335
|
+
)
|
|
336
|
+
if isInView and not isUnitHidden(unit) and not isUnitLoaded(unit) and isUnitVisible(unit, PLAYER_LOCAL_HANDLE) then
|
|
337
|
+
setTextTagPosUnit(
|
|
338
|
+
ensureHandle(textTag),
|
|
339
|
+
unit,
|
|
340
|
+
textTag[102].offsetZ
|
|
341
|
+
)
|
|
342
|
+
elseif textTag[101] ~= nil then
|
|
343
|
+
destroyTextTag(textTag[101])
|
|
344
|
+
textTag[101] = nil
|
|
345
|
+
end
|
|
346
|
+
end
|
|
347
|
+
end)
|
|
109
348
|
return ____exports
|
package/engine/unit.d.ts
CHANGED
package/engine/unit.lua
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package",
|
|
3
3
|
"name": "warscript",
|
|
4
|
-
"version": "0.0.1-dev.
|
|
4
|
+
"version": "0.0.1-dev.da5fb2e",
|
|
5
5
|
"description": "A typescript library for Warcraft III using Warpack.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"warcraft",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@warscript/language-extensions": "^0.0.1",
|
|
25
25
|
"@warscript/tstl-plugin": "^0.0.4",
|
|
26
26
|
"lua-types": "^2.13.1",
|
|
27
|
-
"warpack": "0.0.1-dev.
|
|
27
|
+
"warpack": "0.0.1-dev.78d2c64"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@typescript-eslint/eslint-plugin": "^8.13.0",
|
package/patch-lualib.lua
CHANGED
|
@@ -3,7 +3,7 @@ local lualib = _G.require("lualib_bundle")
|
|
|
3
3
|
local next = _G.next
|
|
4
4
|
local ____type = _G.type
|
|
5
5
|
lualib.__TS__ArrayIsArray = function(value)
|
|
6
|
-
return ____type(value) == "table" and (value[1] ~= nil or (
|
|
6
|
+
return ____type(value) == "table" and (value[1] ~= nil or (next(value)) == nil) and value.constructor == nil
|
|
7
7
|
end
|
|
8
8
|
local __TS__SetDescriptor = lualib.__TS__SetDescriptor
|
|
9
9
|
lualib.__TS__ObjectDefineProperty = function(target, key, desc)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
type Callback = {
|
|
3
|
+
readonly __callback: unique symbol;
|
|
4
|
+
};
|
|
5
|
+
export type CallbackArray = {
|
|
6
|
+
readonly __callbackArray: unique symbol;
|
|
7
|
+
} & Callback[];
|
|
8
|
+
export declare const callbackArray: () => CallbackArray;
|
|
9
|
+
export declare function addCallback<Args extends any[]>(this: void, array: CallbackArray, callback: (...args: Args) => unknown, ...args: Args): void;
|
|
10
|
+
export declare function clearCallbacks(this: void, array: CallbackArray): void;
|
|
11
|
+
export declare function consumeCallbacks(this: void, array: CallbackArray): void;
|
|
12
|
+
export declare function invokeCallbacks(this: void, array: CallbackArray): void;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local safeCall, tableUnpack
|
|
3
|
+
function ____exports.invokeCallbacks(array)
|
|
4
|
+
local length = array[1] or 2
|
|
5
|
+
local i = 2
|
|
6
|
+
while i ~= length do
|
|
7
|
+
local callback = array[i]
|
|
8
|
+
i = i + 1
|
|
9
|
+
local argsCount = array[i]
|
|
10
|
+
i = i + 1
|
|
11
|
+
safeCall(
|
|
12
|
+
callback,
|
|
13
|
+
tableUnpack(array, i, i + argsCount - 1)
|
|
14
|
+
)
|
|
15
|
+
i = i + argsCount
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
safeCall = warpack.safeCall
|
|
19
|
+
local select = _G.select
|
|
20
|
+
local tableMove = table.move
|
|
21
|
+
tableUnpack = table.unpack
|
|
22
|
+
____exports.callbackArray = function() return {} end
|
|
23
|
+
function ____exports.addCallback(array, callback, ...)
|
|
24
|
+
local i = array[1] or 2
|
|
25
|
+
array[i] = callback
|
|
26
|
+
local argsCount = select("#", ...)
|
|
27
|
+
i = i + 1
|
|
28
|
+
array[i] = argsCount
|
|
29
|
+
for j = 1, argsCount do
|
|
30
|
+
i = i + 1
|
|
31
|
+
array[i] = (select(j, ...))
|
|
32
|
+
end
|
|
33
|
+
array[1] = i + 1
|
|
34
|
+
end
|
|
35
|
+
function ____exports.clearCallbacks(array)
|
|
36
|
+
local length = array[1] or 2
|
|
37
|
+
tableMove(array, length, length + length - 2, 1)
|
|
38
|
+
end
|
|
39
|
+
function ____exports.consumeCallbacks(array)
|
|
40
|
+
local length = array[1] or 2
|
|
41
|
+
____exports.invokeCallbacks(array)
|
|
42
|
+
local newLength = array[1] or 2
|
|
43
|
+
tableMove(array, length, length + newLength - 3, 2)
|
|
44
|
+
array[1] = newLength - length + 2
|
|
45
|
+
end
|
|
46
|
+
return ____exports
|
package/utility/functions.d.ts
CHANGED
|
@@ -4,3 +4,10 @@ export declare const apply: {
|
|
|
4
4
|
<T, ConsumerParameters extends any[], K extends KeysOfType<T, (...parameters: ConsumerParameters) => void>>(object: T, key: K, ...parameters: ConsumerParameters): T;
|
|
5
5
|
};
|
|
6
6
|
export declare const identity: <T>(value: T) => T;
|
|
7
|
+
export declare const firstArgument: <T>(value: T) => T;
|
|
8
|
+
export declare const secondArgument: <T>(_: unknown, value: T) => T;
|
|
9
|
+
export declare const thirdArgument: <T>(_first: unknown, _second: unknown, value: T) => T;
|
|
10
|
+
export declare const increment: (value: number) => number;
|
|
11
|
+
export declare const or: (lhs: boolean, rhs: boolean) => boolean;
|
|
12
|
+
export type Transform<T, R> = (<T, R>(value: T) => R) | KeysOfType<T, R>;
|
|
13
|
+
export declare const transform: <T, R>(object: T, transform: Transform<T, R>) => R;
|
package/utility/functions.lua
CHANGED
|
@@ -88,4 +88,16 @@ ____exports.apply = function(object, transform, ...)
|
|
|
88
88
|
return object
|
|
89
89
|
end
|
|
90
90
|
____exports.identity = function(value) return value end
|
|
91
|
+
____exports.firstArgument = ____exports.identity
|
|
92
|
+
____exports.secondArgument = function(_, value) return value end
|
|
93
|
+
____exports.thirdArgument = function(_first, _second, value) return value end
|
|
94
|
+
____exports.increment = function(value) return value + 1 end
|
|
95
|
+
____exports["or"] = function(lhs, rhs) return lhs or rhs end
|
|
96
|
+
____exports.transform = function(object, transform)
|
|
97
|
+
if type(transform) == "function" then
|
|
98
|
+
return transform(object)
|
|
99
|
+
else
|
|
100
|
+
return object[transform]
|
|
101
|
+
end
|
|
102
|
+
end
|
|
91
103
|
return ____exports
|
package/utility/lua-maps.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Flatten, TupleOf } from "./types";
|
|
3
|
+
export declare const emptyLuaMap: <K extends AnyNotNil, V>() => ReadonlyLuaMap<K, V>;
|
|
3
4
|
export declare const mutableLuaMap: <K extends AnyNotNil, V>() => LuaMap<K, V>;
|
|
4
5
|
export declare const mutableWeakLuaMap: <K extends AnyNotNil, V>() => LuaMap<K, V>;
|
|
5
6
|
export declare const luaMapOf: <K extends AnyNotNil, V>(...pairs: Flatten<TupleOf<[K, V], 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40>>) => LuaMap<K, V>;
|
package/utility/lua-maps.lua
CHANGED
|
@@ -2,6 +2,10 @@ local ____exports = {}
|
|
|
2
2
|
local select = _G.select
|
|
3
3
|
local setmetatable = _G.setmetatable
|
|
4
4
|
local weakKeysMetatable = {__mode = "k"}
|
|
5
|
+
local EMPTY_LUA_MAP = {}
|
|
6
|
+
____exports.emptyLuaMap = function()
|
|
7
|
+
return EMPTY_LUA_MAP
|
|
8
|
+
end
|
|
5
9
|
____exports.mutableLuaMap = function()
|
|
6
10
|
return {}
|
|
7
11
|
end
|
package/utility/lua-sets.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
|
+
export declare const emptyLuaSet: <T extends AnyNotNil>() => ReadonlyLuaSet<T>;
|
|
2
3
|
export declare const mutableLuaSet: <T extends AnyNotNil>() => LuaSet<T>;
|
|
3
4
|
export declare const luaSetOf: <T extends AnyNotNil>(...elements: readonly T[]) => LuaSet<T>;
|
|
4
5
|
export declare const luaSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | undefined | null)[]) => LuaSet<T>;
|
package/utility/lua-sets.lua
CHANGED
package/core/types/order.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/** @noSelfInFile */
|
|
2
|
-
import { Unit } from "./unit";
|
|
3
|
-
import { Item } from "./item";
|
|
4
|
-
import { Destructable } from "./destructable";
|
|
5
|
-
export type Order = {
|
|
6
|
-
id: number;
|
|
7
|
-
startX: number;
|
|
8
|
-
startY: number;
|
|
9
|
-
issueTime: number;
|
|
10
|
-
} & ({
|
|
11
|
-
type: "immediate";
|
|
12
|
-
} | {
|
|
13
|
-
type: "point";
|
|
14
|
-
targetX: number;
|
|
15
|
-
targetY: number;
|
|
16
|
-
} | {
|
|
17
|
-
type: "target";
|
|
18
|
-
target: Unit | Item | Destructable;
|
|
19
|
-
});
|
|
20
|
-
declare module "../../engine/internal/unit" {
|
|
21
|
-
interface Unit {
|
|
22
|
-
readonly currentOrder: Order;
|
|
23
|
-
readonly lastOrder: Order;
|
|
24
|
-
issueOrder(order: Order): void;
|
|
25
|
-
}
|
|
26
|
-
}
|
package/core/types/order.lua
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
local ____lualib = require("lualib_bundle")
|
|
2
|
-
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
3
|
-
local ____exports = {}
|
|
4
|
-
local ____unit = require("core.types.unit")
|
|
5
|
-
local Unit = ____unit.Unit
|
|
6
|
-
local ____game = require("core.game")
|
|
7
|
-
local elapsedTime = ____game.elapsedTime
|
|
8
|
-
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
9
|
-
local orders = setmetatable({}, {__mode = "k"})
|
|
10
|
-
Unit.onImmediateOrder:addListener(function(unit, orderId)
|
|
11
|
-
orders[unit] = {
|
|
12
|
-
id = orderId,
|
|
13
|
-
startX = unit.x,
|
|
14
|
-
startY = unit.y,
|
|
15
|
-
issueTime = elapsedTime(),
|
|
16
|
-
type = "immediate"
|
|
17
|
-
}
|
|
18
|
-
end)
|
|
19
|
-
Unit.onPointOrder:addListener(function(unit, orderId, x, y)
|
|
20
|
-
orders[unit] = {
|
|
21
|
-
id = orderId,
|
|
22
|
-
startX = unit.x,
|
|
23
|
-
startY = unit.y,
|
|
24
|
-
issueTime = elapsedTime(),
|
|
25
|
-
type = "point",
|
|
26
|
-
targetX = x,
|
|
27
|
-
targetY = y
|
|
28
|
-
}
|
|
29
|
-
end)
|
|
30
|
-
Unit.onTargetOrder:addListener(function(unit, orderId, target)
|
|
31
|
-
orders[unit] = {
|
|
32
|
-
id = orderId,
|
|
33
|
-
startX = unit.x,
|
|
34
|
-
startY = unit.y,
|
|
35
|
-
issueTime = elapsedTime(),
|
|
36
|
-
type = "target",
|
|
37
|
-
target = target
|
|
38
|
-
}
|
|
39
|
-
end)
|
|
40
|
-
__TS__ObjectDefineProperty(
|
|
41
|
-
Unit.prototype,
|
|
42
|
-
"currentOrder",
|
|
43
|
-
{get = function(self)
|
|
44
|
-
local currentOrderId = getUnitCurrentOrder(self.handle)
|
|
45
|
-
local lastOrder = orders[self]
|
|
46
|
-
return lastOrder and (lastOrder.id == currentOrderId or currentOrderId == orderId("patrolAI") and lastOrder.id == orderId("patrol")) and lastOrder or ({id = 0, type = "immediate"})
|
|
47
|
-
end}
|
|
48
|
-
)
|
|
49
|
-
__TS__ObjectDefineProperty(
|
|
50
|
-
Unit.prototype,
|
|
51
|
-
"lastOrder",
|
|
52
|
-
{get = function(self)
|
|
53
|
-
return orders[self] or ({id = 0, type = "immediate"})
|
|
54
|
-
end}
|
|
55
|
-
)
|
|
56
|
-
Unit.prototype.issueOrder = function(self, order)
|
|
57
|
-
if order.type == "immediate" then
|
|
58
|
-
IssueImmediateOrderById(self.handle, order.id)
|
|
59
|
-
elseif order.type == "point" then
|
|
60
|
-
IssuePointOrderById(self.handle, order.id, order.targetX, order.targetY)
|
|
61
|
-
else
|
|
62
|
-
IssueTargetOrderById(self.handle, order.id, order.target.handle)
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
return ____exports
|