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.
Files changed (70) hide show
  1. package/core/types/frame.lua +10 -12
  2. package/core/types/player.lua +3 -1
  3. package/core/types/playerCamera.d.ts +2 -0
  4. package/core/types/playerCamera.lua +79 -5
  5. package/core/types/timer.d.ts +2 -1
  6. package/core/types/timer.lua +21 -2
  7. package/decl/native.d.ts +4 -2
  8. package/engine/behavior.d.ts +5 -0
  9. package/engine/behavior.lua +106 -27
  10. package/engine/behaviour/ability/apply-buff.lua +1 -1
  11. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  12. package/engine/behaviour/ability/emulate-impact.lua +11 -3
  13. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  14. package/engine/behaviour/ability/restore-mana.lua +6 -6
  15. package/engine/behaviour/ability.lua +8 -17
  16. package/engine/behaviour/unit/stun-immunity.d.ts +5 -3
  17. package/engine/behaviour/unit/stun-immunity.lua +43 -27
  18. package/engine/behaviour/unit.d.ts +19 -2
  19. package/engine/behaviour/unit.lua +88 -7
  20. package/engine/buff.d.ts +2 -4
  21. package/engine/buff.lua +68 -83
  22. package/engine/internal/ability.d.ts +5 -1
  23. package/engine/internal/ability.lua +43 -11
  24. package/engine/internal/item/ability.lua +51 -1
  25. package/engine/internal/item+owner.lua +12 -6
  26. package/engine/internal/item.d.ts +1 -0
  27. package/engine/internal/item.lua +20 -11
  28. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  29. package/engine/internal/misc/frame-coordinates.lua +21 -0
  30. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  31. package/engine/internal/misc/get-terrain-z.lua +11 -0
  32. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  33. package/engine/internal/misc/player-local-handle.lua +5 -0
  34. package/engine/internal/unit/ability.d.ts +35 -0
  35. package/engine/internal/unit/ability.lua +62 -0
  36. package/engine/internal/unit/order.d.ts +20 -0
  37. package/engine/internal/unit/order.lua +136 -0
  38. package/engine/internal/unit+ability.lua +10 -1
  39. package/engine/internal/unit-missile-launch.lua +8 -1
  40. package/engine/internal/unit.d.ts +4 -4
  41. package/engine/internal/unit.lua +84 -70
  42. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  43. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  44. package/engine/object-data/entry/ability-type.lua +1 -3
  45. package/engine/object-data/entry/unit-type.d.ts +11 -2
  46. package/engine/object-data/entry/unit-type.lua +59 -1
  47. package/engine/object-field/ability.d.ts +3 -3
  48. package/engine/object-field/ability.lua +7 -6
  49. package/engine/object-field/unit.d.ts +11 -0
  50. package/engine/object-field/unit.lua +34 -0
  51. package/engine/object-field.d.ts +8 -5
  52. package/engine/object-field.lua +90 -76
  53. package/engine/standard/fields/unit.d.ts +4 -0
  54. package/engine/standard/fields/unit.lua +7 -0
  55. package/engine/text-tag.d.ts +36 -2
  56. package/engine/text-tag.lua +249 -10
  57. package/engine/unit.d.ts +1 -0
  58. package/engine/unit.lua +1 -0
  59. package/package.json +2 -2
  60. package/patch-lualib.lua +1 -1
  61. package/utility/callback-array.d.ts +13 -0
  62. package/utility/callback-array.lua +46 -0
  63. package/utility/functions.d.ts +7 -0
  64. package/utility/functions.lua +12 -0
  65. package/utility/lua-maps.d.ts +1 -0
  66. package/utility/lua-maps.lua +4 -0
  67. package/utility/lua-sets.d.ts +1 -0
  68. package/utility/lua-sets.lua +4 -0
  69. package/core/types/order.d.ts +0 -26
  70. package/core/types/order.lua +0 -65
@@ -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
- ____exports.TextTag = __TS__Class()
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
@@ -1,5 +1,6 @@
1
1
  /** @noSelfInFile */
2
2
  import "./internal/unit";
3
+ import "./internal/unit/order";
3
4
  import "./internal/unit/ability";
4
5
  import "./internal/unit/allowed-targets";
5
6
  import "./internal/unit/buff";
package/engine/unit.lua CHANGED
@@ -1,5 +1,6 @@
1
1
  local ____exports = {}
2
2
  require("engine.internal.unit")
3
+ require("engine.internal.unit.order")
3
4
  require("engine.internal.unit.ability")
4
5
  require("engine.internal.unit.allowed-targets")
5
6
  require("engine.internal.unit.buff")
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.d7e0522",
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.fa5e065"
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 ({next(value)}) == nil) and value.constructor == nil
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
@@ -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;
@@ -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
@@ -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>;
@@ -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
@@ -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>;
@@ -1,5 +1,9 @@
1
1
  local ____exports = {}
2
2
  local select = _G.select
3
+ local EMPTY_LUA_SET = {}
4
+ ____exports.emptyLuaSet = function()
5
+ return EMPTY_LUA_SET
6
+ end
3
7
  ____exports.mutableLuaSet = function()
4
8
  return {}
5
9
  end
@@ -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
- }
@@ -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