warscript 0.0.1-dev.79435cf → 0.0.1-dev.796a720

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 (219) hide show
  1. package/attributes.d.ts +5 -0
  2. package/attributes.lua +8 -1
  3. package/binaryreader.d.ts +1 -0
  4. package/binaryreader.lua +3 -0
  5. package/config.d.ts +5 -0
  6. package/config.lua +10 -0
  7. package/core/types/effect.d.ts +14 -6
  8. package/core/types/effect.lua +131 -35
  9. package/core/types/frame.d.ts +6 -0
  10. package/core/types/frame.lua +115 -22
  11. package/core/types/player.lua +3 -1
  12. package/core/types/playerCamera.d.ts +2 -0
  13. package/core/types/playerCamera.lua +123 -5
  14. package/core/types/sound.d.ts +17 -24
  15. package/core/types/sound.lua +99 -24
  16. package/core/types/tileCell.d.ts +9 -0
  17. package/core/types/tileCell.lua +92 -0
  18. package/core/types/timer.d.ts +9 -8
  19. package/core/types/timer.lua +45 -23
  20. package/core/util.d.ts +1 -1
  21. package/core/util.lua +18 -1
  22. package/decl/native.d.ts +846 -790
  23. package/engine/behavior.d.ts +7 -2
  24. package/engine/behavior.lua +112 -33
  25. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  26. package/engine/behaviour/ability/always-enabled.lua +31 -0
  27. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  28. package/engine/behaviour/ability/apply-buff.lua +32 -0
  29. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  30. package/engine/behaviour/ability/damage.d.ts +39 -11
  31. package/engine/behaviour/ability/damage.lua +83 -37
  32. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  33. package/engine/behaviour/ability/emulate-impact.lua +43 -0
  34. package/engine/behaviour/ability/heal.d.ts +33 -6
  35. package/engine/behaviour/ability/heal.lua +89 -10
  36. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  37. package/engine/behaviour/ability/instant-impact.lua +4 -19
  38. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  39. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  40. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  41. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  42. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  43. package/engine/behaviour/ability/restore-mana.lua +29 -0
  44. package/engine/behaviour/ability.d.ts +20 -4
  45. package/engine/behaviour/ability.lua +111 -47
  46. package/engine/behaviour/unit/stun-immunity.d.ts +7 -3
  47. package/engine/behaviour/unit/stun-immunity.lua +52 -27
  48. package/engine/behaviour/unit.d.ts +39 -0
  49. package/engine/behaviour/unit.lua +210 -4
  50. package/engine/buff.d.ts +102 -42
  51. package/engine/buff.lua +446 -206
  52. package/engine/game-map.d.ts +7 -0
  53. package/engine/game-map.lua +32 -0
  54. package/engine/internal/ability.d.ts +23 -14
  55. package/engine/internal/ability.lua +129 -85
  56. package/engine/internal/item/ability.lua +162 -4
  57. package/engine/internal/item+owner.lua +12 -6
  58. package/engine/internal/item.d.ts +20 -19
  59. package/engine/internal/item.lua +191 -74
  60. package/engine/internal/mechanics/ability-duration.lua +1 -1
  61. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  62. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  63. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  64. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  65. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  66. package/engine/internal/misc/frame-coordinates.lua +21 -0
  67. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  68. package/engine/internal/misc/get-terrain-z.lua +11 -0
  69. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  70. package/engine/internal/misc/player-local-handle.lua +5 -0
  71. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  72. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  73. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  74. package/engine/internal/object-data/evasion-probability.lua +16 -0
  75. package/engine/internal/unit/ability.d.ts +45 -1
  76. package/engine/internal/unit/ability.lua +128 -17
  77. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  78. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  79. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  80. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  81. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  82. package/engine/internal/unit/allowed-targets.lua +9 -1
  83. package/engine/internal/unit/bonus.d.ts +6 -2
  84. package/engine/internal/unit/bonus.lua +23 -1
  85. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  86. package/engine/internal/unit/ignore-events-items.lua +5 -0
  87. package/engine/internal/unit/item.d.ts +24 -0
  88. package/engine/internal/unit/item.lua +78 -0
  89. package/engine/internal/unit/main-selected.d.ts +13 -0
  90. package/engine/internal/unit/main-selected.lua +51 -0
  91. package/engine/internal/unit/order.d.ts +20 -0
  92. package/engine/internal/unit/order.lua +136 -0
  93. package/engine/internal/unit+ability.lua +12 -3
  94. package/engine/internal/unit+damage.d.ts +2 -11
  95. package/engine/internal/unit+damage.lua +10 -14
  96. package/engine/internal/unit+spellSteal.lua +1 -2
  97. package/engine/internal/unit+transport.lua +4 -10
  98. package/engine/internal/unit-missile-launch.lua +60 -13
  99. package/engine/internal/unit.d.ts +56 -18
  100. package/engine/internal/unit.lua +383 -155
  101. package/engine/internal/utility.lua +12 -0
  102. package/engine/lightning.d.ts +12 -5
  103. package/engine/lightning.lua +48 -14
  104. package/engine/local-client.d.ts +7 -2
  105. package/engine/local-client.lua +82 -0
  106. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  107. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  108. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  109. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  110. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  111. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  112. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  113. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  114. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  115. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  116. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  117. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  118. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  119. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  120. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  121. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  122. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  123. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  124. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  125. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  126. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  127. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  128. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  129. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  130. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  131. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  132. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  133. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  134. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  135. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  136. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  137. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  138. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  139. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  140. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  141. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  142. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  143. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  144. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  145. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  146. package/engine/object-data/entry/ability-type/web.lua +52 -0
  147. package/engine/object-data/entry/ability-type.d.ts +19 -17
  148. package/engine/object-data/entry/ability-type.lua +93 -36
  149. package/engine/object-data/entry/buff-type/applicable.lua +18 -37
  150. package/engine/object-data/entry/buff-type.d.ts +6 -12
  151. package/engine/object-data/entry/buff-type.lua +13 -29
  152. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  153. package/engine/object-data/entry/item-type.d.ts +15 -1
  154. package/engine/object-data/entry/item-type.lua +93 -2
  155. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  156. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  157. package/engine/object-data/entry/sound-preset.lua +140 -0
  158. package/engine/object-data/entry/unit-type.d.ts +21 -5
  159. package/engine/object-data/entry/unit-type.lua +214 -93
  160. package/engine/object-data/entry/upgrade.d.ts +1 -1
  161. package/engine/object-data/entry/upgrade.lua +4 -4
  162. package/engine/object-data/entry.d.ts +16 -14
  163. package/engine/object-data/entry.lua +60 -32
  164. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  165. package/engine/object-field/ability.d.ts +28 -5
  166. package/engine/object-field/ability.lua +59 -5
  167. package/engine/object-field/unit.d.ts +57 -3
  168. package/engine/object-field/unit.lua +207 -7
  169. package/engine/object-field.d.ts +17 -6
  170. package/engine/object-field.lua +190 -90
  171. package/engine/random.d.ts +9 -0
  172. package/engine/random.lua +13 -0
  173. package/engine/standard/entries/buff-type.d.ts +3 -0
  174. package/engine/standard/entries/buff-type.lua +3 -0
  175. package/engine/standard/entries/sound-preset.d.ts +10 -0
  176. package/engine/standard/entries/sound-preset.lua +10 -0
  177. package/engine/standard/fields/ability.d.ts +2 -0
  178. package/engine/standard/fields/ability.lua +2 -0
  179. package/engine/standard/fields/unit.d.ts +4 -0
  180. package/engine/standard/fields/unit.lua +7 -0
  181. package/engine/text-tag.d.ts +36 -2
  182. package/engine/text-tag.lua +249 -10
  183. package/engine/unit.d.ts +4 -0
  184. package/engine/unit.lua +4 -0
  185. package/index.d.ts +1 -0
  186. package/index.lua +1 -0
  187. package/lualib_bundle.lua +7 -2
  188. package/net/socket.d.ts +7 -1
  189. package/net/socket.lua +45 -4
  190. package/network.d.ts +1 -0
  191. package/network.lua +3 -2
  192. package/objutil/buff.lua +3 -4
  193. package/objutil/unit.lua +8 -0
  194. package/package.json +2 -2
  195. package/patch-lua.d.ts +0 -0
  196. package/patch-lua.lua +10 -0
  197. package/patch-lualib.lua +1 -1
  198. package/property.d.ts +55 -0
  199. package/property.lua +374 -0
  200. package/utility/arrays.d.ts +10 -1
  201. package/utility/arrays.lua +45 -3
  202. package/utility/callback-array.d.ts +17 -0
  203. package/utility/callback-array.lua +61 -0
  204. package/utility/functions.d.ts +8 -0
  205. package/utility/functions.lua +13 -0
  206. package/utility/lazy.d.ts +2 -0
  207. package/utility/lazy.lua +14 -0
  208. package/utility/linked-set.d.ts +12 -2
  209. package/utility/linked-set.lua +10 -3
  210. package/utility/lua-maps.d.ts +15 -2
  211. package/utility/lua-maps.lua +53 -2
  212. package/utility/lua-sets.d.ts +2 -0
  213. package/utility/lua-sets.lua +7 -0
  214. package/utility/reflection.lua +11 -7
  215. package/utility/types.d.ts +4 -0
  216. package/core/mapbounds.d.ts +0 -8
  217. package/core/mapbounds.lua +0 -12
  218. package/core/types/order.d.ts +0 -25
  219. package/core/types/order.lua +0 -55
@@ -107,8 +107,9 @@ function LinkedSet.prototype.forEach(self, action, ...)
107
107
  local n = self.n
108
108
  local c = self.f
109
109
  while c ~= nil do
110
+ local next = n[c]
110
111
  action(c, ...)
111
- c = n[c]
112
+ c = next
112
113
  end
113
114
  end
114
115
  function LinkedSet.prototype.toArray(self)
@@ -177,14 +178,17 @@ local EMPTY_LINKED_SET = __TS__New(EmptyLinkedSet)
177
178
  ____exports.emptyLinkedSet = function()
178
179
  return EMPTY_LINKED_SET
179
180
  end
180
- ____exports.linkedSetOf = function(...)
181
+ ____exports.mutableLinkedSet = function()
182
+ return __TS__New(____exports.LinkedSet)
183
+ end
184
+ ____exports.mutableLinkedSetOf = function(...)
181
185
  local linkedSet = __TS__New(____exports.LinkedSet)
182
186
  for i = 1, select("#", ...) do
183
187
  linkedSet:add((select(i, ...)))
184
188
  end
185
189
  return linkedSet
186
190
  end
187
- ____exports.linkedSetOfNotNull = function(...)
191
+ ____exports.mutableLinkedSetOfNotNull = function(...)
188
192
  local linkedSet = __TS__New(____exports.LinkedSet)
189
193
  for i = 1, select("#", ...) do
190
194
  local element = (select(i, ...))
@@ -194,4 +198,7 @@ ____exports.linkedSetOfNotNull = function(...)
194
198
  end
195
199
  return linkedSet
196
200
  end
201
+ ____exports.linkedSetOf = function(...) return ____exports.mutableLinkedSetOf(...) end
202
+ ____exports.linkedSetOfNotNull = function(...) return ____exports.mutableLinkedSetOfNotNull(...) end
203
+ ____exports.nonEmptyLinkedSetOf = function(...) return ____exports.linkedSetOf(...) end
197
204
  return ____exports
@@ -1,5 +1,18 @@
1
1
  /** @noSelfInFile */
2
2
  import { Flatten, TupleOf } from "./types";
3
+ export declare const emptyLuaMap: <K extends AnyNotNil, V>() => ReadonlyLuaMap<K, V>;
4
+ export declare const mutableLuaMap: <K extends AnyNotNil, V>() => LuaMap<K, V>;
5
+ export declare const mutableWeakLuaMap: <K extends AnyNotNil, V>() => LuaMap<K, V>;
3
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>;
4
- export declare const luaMapInvert: <K extends AnyNotNil, V extends AnyNotNil>(luaMap: LuaMap<K, V>) => LuaMap<V, K>;
5
- export declare const mapValues: <K extends AnyNotNil, V1, V2>(luaMap: LuaMap<K, V1>, transform: (value: V1) => V2) => LuaMap<K, V2>;
7
+ export declare const luaMapInvert: <K extends AnyNotNil, V extends AnyNotNil>(luaMap: ReadonlyLuaMap<K, V | undefined | null>) => LuaMap<V, K>;
8
+ export declare const toLuaMap: <K extends PropertyKey, V>(record: Record<K, V>) => LuaMap<K, V>;
9
+ export declare const flattenKeys: <K extends AnyNotNil, V>(luaMap: ReadonlyLuaMap<readonly K[], V> | ReadonlyLuaMap<K[], V>) => LuaMap<K, V>;
10
+ export declare const mapKeys: {
11
+ <K1 extends AnyNotNil, K2 extends AnyNotNil, V>(luaMap: ReadonlyLuaMap<K1, V>, transform: (value: K1) => K2): LuaMap<K2, V>;
12
+ <K1 extends AnyNotNil, K2 extends keyof K1, V>(luaMap: ReadonlyLuaMap<K1, V>, key: K2): K1[K2] extends AnyNotNil ? LuaMap<K1[K2], V> : never;
13
+ };
14
+ export declare const mapValues: {
15
+ <K extends AnyNotNil, V1, V2>(luaMap: ReadonlyLuaMap<K, V1>, transform: (value: V1) => V2): LuaMap<K, V2>;
16
+ <K extends AnyNotNil, V1, V2 extends keyof V1>(luaMap: ReadonlyLuaMap<K, V1>, key: V2): LuaMap<K, V1[V2]>;
17
+ };
18
+ export declare const getOrPut: <K extends AnyNotNil, V>(luaMap: LuaMap<K, V>, key: K, defaultValue: () => V) => V;
@@ -1,5 +1,17 @@
1
1
  local ____exports = {}
2
2
  local select = _G.select
3
+ local setmetatable = _G.setmetatable
4
+ local weakKeysMetatable = {__mode = "k"}
5
+ local EMPTY_LUA_MAP = {}
6
+ ____exports.emptyLuaMap = function()
7
+ return EMPTY_LUA_MAP
8
+ end
9
+ ____exports.mutableLuaMap = function()
10
+ return {}
11
+ end
12
+ ____exports.mutableWeakLuaMap = function()
13
+ return setmetatable({}, weakKeysMetatable)
14
+ end
3
15
  ____exports.luaMapOf = function(...)
4
16
  local luaMap = {}
5
17
  for i = 1, select("#", ...), 2 do
@@ -15,11 +27,50 @@ ____exports.luaMapInvert = function(luaMap)
15
27
  end
16
28
  return invertLuaMap
17
29
  end
30
+ ____exports.toLuaMap = function(record)
31
+ return record
32
+ end
33
+ ____exports.flattenKeys = function(luaMap)
34
+ local result = {}
35
+ for keys, value in pairs(luaMap) do
36
+ for ____, key in ipairs(keys) do
37
+ result[key] = value
38
+ end
39
+ end
40
+ return result
41
+ end
42
+ ____exports.mapKeys = function(luaMap, transform)
43
+ local result = {}
44
+ if type(transform) == "function" then
45
+ for key, value in pairs(luaMap) do
46
+ result[transform(key)] = value
47
+ end
48
+ else
49
+ for key, value in pairs(luaMap) do
50
+ result[key[transform]] = value
51
+ end
52
+ end
53
+ return result
54
+ end
18
55
  ____exports.mapValues = function(luaMap, transform)
19
56
  local result = {}
20
- for key, value in pairs(luaMap) do
21
- result[key] = transform(value)
57
+ if type(transform) == "function" then
58
+ for key, value in pairs(luaMap) do
59
+ result[key] = transform(value)
60
+ end
61
+ else
62
+ for key, value in pairs(luaMap) do
63
+ result[key] = value[transform]
64
+ end
22
65
  end
23
66
  return result
24
67
  end
68
+ ____exports.getOrPut = function(luaMap, key, defaultValue)
69
+ local value = luaMap[key]
70
+ if value == nil then
71
+ value = defaultValue()
72
+ luaMap[key] = value
73
+ end
74
+ return value
75
+ end
25
76
  return ____exports
@@ -1,4 +1,6 @@
1
1
  /** @noSelfInFile */
2
+ export declare const emptyLuaSet: <T extends AnyNotNil>() => ReadonlyLuaSet<T>;
3
+ export declare const mutableLuaSet: <T extends AnyNotNil>() => LuaSet<T>;
2
4
  export declare const luaSetOf: <T extends AnyNotNil>(...elements: readonly T[]) => LuaSet<T>;
3
5
  export declare const luaSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | undefined | null)[]) => LuaSet<T>;
4
6
  export declare const luaSetIntersection: <T extends AnyNotNil>(firstLuaSet: ReadonlyLuaSet<T>, secondLuaSet: ReadonlyLuaSet<T>) => LuaSet<T>;
@@ -1,5 +1,12 @@
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
7
+ ____exports.mutableLuaSet = function()
8
+ return {}
9
+ end
3
10
  ____exports.luaSetOf = function(...)
4
11
  local luaSet = {}
5
12
  for i = 1, select("#", ...) do
@@ -5,21 +5,25 @@ local checkNotNull = ____preconditions.checkNotNull
5
5
  -- @internal For use by internal systems only.
6
6
  ____exports.implementReadonlyNumberIndexSupplier = function(clazz, supplier)
7
7
  local metatable = checkNotNull(getmetatable(clazz))
8
- local originalIndex = checkNotNull(metatable.__index)
8
+ local originalIndex = checkNotNull(rawget(metatable, "__index"))
9
9
  local memoizedValueByKey = {}
10
- metatable.__index = setmetatable(
11
- memoizedValueByKey,
12
- {__index = function(self, key)
10
+ rawset(
11
+ metatable,
12
+ "__index",
13
+ function(self, key)
13
14
  if type(key) == "number" then
14
- local value = supplier(key)
15
- memoizedValueByKey[key] = value
15
+ local value = memoizedValueByKey[key]
16
+ if value == nil then
17
+ value = supplier(key)
18
+ memoizedValueByKey[key] = value
19
+ end
16
20
  return value
17
21
  end
18
22
  if type(originalIndex) == "function" then
19
23
  return originalIndex(self, key)
20
24
  end
21
25
  return originalIndex[key]
22
- end}
26
+ end
23
27
  )
24
28
  end
25
29
  ____exports.getClass = function(object)
@@ -2,6 +2,7 @@
2
2
  export type AnyNonNullable = {};
3
3
  export type IsExactlyAny<T> = boolean extends (T extends never ? true : false) ? true : false;
4
4
  export type NonEmptyArray<T> = [T, ...T[]];
5
+ export type ReadonlyNonEmptyArray<T> = readonly [T, ...T[]];
5
6
  export type InvertRecordType<T extends Record<PropertyKey, PropertyKey | null | undefined>> = {
6
7
  [P in keyof T as NonNullable<T[P]>]: P;
7
8
  };
@@ -36,4 +37,7 @@ export type Flatten<T extends readonly any[], A extends readonly any[] = []> = T
36
37
  export type Prohibit<T, K extends keyof any> = T & {
37
38
  [P in K]?: never;
38
39
  };
40
+ type TupleSplit<T, N extends number, O extends readonly any[] = readonly []> = O["length"] extends N ? [O, T] : T extends readonly [infer F, ...infer R] ? TupleSplit<readonly [...R], N, readonly [...O, F]> : [O, T];
41
+ export type TakeFirst<T extends readonly any[], N extends number> = TupleSplit<T, N>[0];
42
+ export type SkipFirst<T extends readonly any[], N extends number> = TupleSplit<T, N>[1];
39
43
  export {};
@@ -1,8 +0,0 @@
1
- /** @noSelfInFile */
2
- import { Rect } from "./types/rect";
3
- import { Region } from "./types/region";
4
- export declare const boundRect: Rect;
5
- export declare const boundRegion: Region;
6
- export declare const boundMin: Readonly<Vec2>;
7
- export declare const boundMax: Readonly<Vec2>;
8
- export declare const boundCenter: Readonly<Vec2>;
@@ -1,12 +0,0 @@
1
- local ____exports = {}
2
- local ____rect = require("core.types.rect")
3
- local Rect = ____rect.Rect
4
- local ____region = require("core.types.region")
5
- local Region = ____region.Region
6
- ____exports.boundRect = Rect:of(GetWorldBounds())
7
- ____exports.boundRegion = Region:create()
8
- ____exports.boundRegion:addRect(____exports.boundRect)
9
- ____exports.boundMin = vec2(____exports.boundRect.minX, ____exports.boundRect.minY)
10
- ____exports.boundMax = vec2(____exports.boundRect.maxX, ____exports.boundRect.maxY)
11
- ____exports.boundCenter = (____exports.boundMin + ____exports.boundMax) * 0.5
12
- return ____exports
@@ -1,25 +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
- } & ({
10
- type: "immediate";
11
- } | {
12
- type: "point";
13
- targetX: number;
14
- targetY: number;
15
- } | {
16
- type: "target";
17
- target: Unit | Item | Destructable;
18
- });
19
- declare module "../../engine/internal/unit" {
20
- interface Unit {
21
- readonly currentOrder: Order;
22
- readonly lastOrder: Order;
23
- issueOrder(order: Order): void;
24
- }
25
- }
@@ -1,55 +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 getUnitCurrentOrder = GetUnitCurrentOrder
7
- local orders = setmetatable({}, {__mode = "k"})
8
- Unit.onImmediateOrder:addListener(function(unit, orderId)
9
- orders[unit] = {id = orderId, startX = unit.x, startY = unit.y, type = "immediate"}
10
- end)
11
- Unit.onPointOrder:addListener(function(unit, orderId, x, y)
12
- orders[unit] = {
13
- id = orderId,
14
- startX = unit.x,
15
- startY = unit.y,
16
- type = "point",
17
- targetX = x,
18
- targetY = y
19
- }
20
- end)
21
- Unit.onTargetOrder:addListener(function(unit, orderId, target)
22
- orders[unit] = {
23
- id = orderId,
24
- startX = unit.x,
25
- startY = unit.y,
26
- type = "target",
27
- target = target
28
- }
29
- end)
30
- __TS__ObjectDefineProperty(
31
- Unit.prototype,
32
- "currentOrder",
33
- {get = function(self)
34
- local currentOrderId = getUnitCurrentOrder(self.handle)
35
- local lastOrder = orders[self]
36
- return lastOrder and (lastOrder.id == currentOrderId or currentOrderId == orderId("patrolAI") and lastOrder.id == orderId("patrol")) and lastOrder or ({id = 0, type = "immediate"})
37
- end}
38
- )
39
- __TS__ObjectDefineProperty(
40
- Unit.prototype,
41
- "lastOrder",
42
- {get = function(self)
43
- return orders[self] or ({id = 0, type = "immediate"})
44
- end}
45
- )
46
- Unit.prototype.issueOrder = function(self, order)
47
- if order.type == "immediate" then
48
- IssueImmediateOrderById(self.handle, order.id)
49
- elseif order.type == "point" then
50
- IssuePointOrderById(self.handle, order.id, order.targetX, order.targetY)
51
- else
52
- IssueTargetOrderById(self.handle, order.id, order.target.handle)
53
- end
54
- end
55
- return ____exports