warscript 0.0.1-dev.1d1ce87 → 0.0.1-dev.1d3eae2

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 (62) hide show
  1. package/attributes.d.ts +1 -0
  2. package/attributes.lua +9 -0
  3. package/core/types/player.d.ts +16 -0
  4. package/core/types/player.lua +57 -14
  5. package/core/types/tileCell.d.ts +2 -1
  6. package/core/types/tileCell.lua +5 -0
  7. package/destroyable.d.ts +1 -0
  8. package/destroyable.lua +9 -0
  9. package/engine/behavior.d.ts +10 -2
  10. package/engine/behavior.lua +157 -76
  11. package/engine/behaviour/ability/apply-buff.lua +4 -4
  12. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  13. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  14. package/engine/behaviour/ability.d.ts +2 -1
  15. package/engine/behaviour/ability.lua +2 -1
  16. package/engine/behaviour/unit/stun-immunity.d.ts +6 -4
  17. package/engine/behaviour/unit/stun-immunity.lua +1 -1
  18. package/engine/behaviour/unit.d.ts +7 -3
  19. package/engine/behaviour/unit.lua +89 -22
  20. package/engine/buff.d.ts +15 -2
  21. package/engine/buff.lua +95 -17
  22. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  23. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  24. package/engine/internal/unit/ability.lua +3 -3
  25. package/engine/internal/unit/bonus.d.ts +2 -0
  26. package/engine/internal/unit/bonus.lua +10 -0
  27. package/engine/internal/unit/fly-height.d.ts +7 -0
  28. package/engine/internal/unit/fly-height.lua +20 -0
  29. package/engine/internal/unit/main-selected.lua +12 -27
  30. package/engine/internal/unit/scale.d.ts +7 -0
  31. package/engine/internal/unit/scale.lua +20 -0
  32. package/engine/internal/unit-missile-launch.lua +41 -23
  33. package/engine/internal/unit.d.ts +13 -10
  34. package/engine/internal/unit.lua +83 -64
  35. package/engine/local-client.d.ts +2 -0
  36. package/engine/local-client.lua +30 -0
  37. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  38. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  39. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  40. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  41. package/engine/object-data/entry/destructible-type.d.ts +27 -1
  42. package/engine/object-data/entry/destructible-type.lua +155 -0
  43. package/engine/object-data/entry/unit-type.d.ts +4 -0
  44. package/engine/object-data/entry/unit-type.lua +76 -32
  45. package/engine/object-field/unit.d.ts +20 -5
  46. package/engine/object-field/unit.lua +61 -0
  47. package/engine/object-field.d.ts +7 -1
  48. package/engine/object-field.lua +232 -111
  49. package/engine/standard/fields/ability.d.ts +2 -2
  50. package/engine/standard/fields/ability.lua +2 -2
  51. package/engine/standard/fields/unit.d.ts +6 -1
  52. package/engine/standard/fields/unit.lua +9 -0
  53. package/engine/synchronization.d.ts +11 -0
  54. package/engine/synchronization.lua +77 -0
  55. package/engine/text-tag.lua +2 -1
  56. package/engine/unit.d.ts +2 -0
  57. package/engine/unit.lua +2 -0
  58. package/net/socket.lua +1 -1
  59. package/package.json +2 -2
  60. package/utility/callback-array.lua +1 -1
  61. package/utility/linked-set.d.ts +1 -0
  62. package/utility/linked-set.lua +19 -1
@@ -0,0 +1,11 @@
1
+ /** @noSelfInFile */
2
+ import { Player } from "../core/types/player";
3
+ import { Event } from "../event";
4
+ export declare const synchronizer: <T, K extends number>(getSyncId: (object: T) => K, getObject: (syncId: K) => T | undefined) => ((player: Player, object: T | undefined) => Promise<T | undefined>);
5
+ export declare class ObjectBus<T, K extends number> {
6
+ private readonly getSyncId;
7
+ readonly event: Event<[Player, T | undefined]>;
8
+ private readonly syncSlider;
9
+ constructor(getSyncId: (object: T) => K, getObject: (syncId: K) => T | undefined);
10
+ send(object: T | undefined): void;
11
+ }
@@ -0,0 +1,77 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__New = ____lualib.__TS__New
3
+ local __TS__Promise = ____lualib.__TS__Promise
4
+ local __TS__Class = ____lualib.__TS__Class
5
+ local ____exports = {}
6
+ local ____player = require("core.types.player")
7
+ local Player = ____player.Player
8
+ local ____math = require("math")
9
+ local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
10
+ local MINIMUM_INTEGER = ____math.MINIMUM_INTEGER
11
+ local ____linked_2Dset = require("utility.linked-set")
12
+ local LinkedSet = ____linked_2Dset.LinkedSet
13
+ local ____event = require("event")
14
+ local Event = ____event.Event
15
+ local eventInvoke = Event.invoke
16
+ local createFrameByType = BlzCreateFrameByType
17
+ local createTrigger = CreateTrigger
18
+ local getOriginFrame = BlzGetOriginFrame
19
+ local getTriggerFrameValue = BlzGetTriggerFrameValue
20
+ local getTriggerPlayer = GetTriggerPlayer
21
+ local frameSetMinMaxValue = BlzFrameSetMinMaxValue
22
+ local frameSetValue = BlzFrameSetValue
23
+ local triggerAddAction = TriggerAddAction
24
+ local triggerRegisterFrameEvent = BlzTriggerRegisterFrameEvent
25
+ ____exports.synchronizer = function(getSyncId, getObject)
26
+ local queue = __TS__New(LinkedSet)
27
+ local socket = __TS__New(____exports.ObjectBus, getSyncId, getObject)
28
+ socket.event:addListener(function(_, object)
29
+ local ____opt_0 = queue:pop()
30
+ if ____opt_0 ~= nil then
31
+ ____opt_0(object)
32
+ end
33
+ end)
34
+ local function executor(____, resolve)
35
+ queue:add(resolve)
36
+ end
37
+ return function(player, object)
38
+ if player.isLocal then
39
+ socket:send(object)
40
+ end
41
+ return __TS__New(__TS__Promise, executor)
42
+ end
43
+ end
44
+ ____exports.ObjectBus = __TS__Class()
45
+ local ObjectBus = ____exports.ObjectBus
46
+ ObjectBus.name = "ObjectBus"
47
+ function ObjectBus.prototype.____constructor(self, getSyncId, getObject)
48
+ self.getSyncId = getSyncId
49
+ local syncSlider = createFrameByType(
50
+ "SLIDER",
51
+ "Synchronizer",
52
+ getOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0),
53
+ "",
54
+ 0
55
+ )
56
+ frameSetMinMaxValue(syncSlider, MINIMUM_INTEGER, MAXIMUM_INTEGER)
57
+ self.syncSlider = syncSlider
58
+ local event = __TS__New(Event)
59
+ local trigger = createTrigger()
60
+ triggerRegisterFrameEvent(trigger, syncSlider, FRAMEEVENT_SLIDER_VALUE_CHANGED)
61
+ triggerAddAction(
62
+ trigger,
63
+ function()
64
+ eventInvoke(
65
+ event,
66
+ Player:of(getTriggerPlayer()),
67
+ getObject(getTriggerFrameValue())
68
+ )
69
+ end
70
+ )
71
+ self.event = event
72
+ end
73
+ function ObjectBus.prototype.send(self, object)
74
+ local syncId = object ~= nil and self.getSyncId(object) or 0
75
+ frameSetValue(self.syncSlider, syncId)
76
+ end
77
+ return ____exports
@@ -36,6 +36,7 @@ local isUnitVisible = IsUnitVisible
36
36
  local getUnitFlyHeight = GetUnitFlyHeight
37
37
  local getUnitX = GetUnitX
38
38
  local getUnitY = GetUnitY
39
+ local unitAlive = UnitAlive
39
40
  local DEFAULT_FONT_SIZE = 0.024
40
41
  local function applyConfiguration(textTag, configuration)
41
42
  setTextTagFadepoint(textTag, configuration.fadepoint)
@@ -333,7 +334,7 @@ Timer.onPeriod[1 / 64]:addListener(function()
333
334
  y,
334
335
  getUnitFlyHeight(unit) + getTerrainZ(x, y)
335
336
  )
336
- if isInView and not isUnitHidden(unit) and not isUnitLoaded(unit) and isUnitVisible(unit, PLAYER_LOCAL_HANDLE) then
337
+ if isInView and not isUnitHidden(unit) and not isUnitLoaded(unit) and isUnitVisible(unit, PLAYER_LOCAL_HANDLE) and unitAlive(unit) then
337
338
  setTextTagPosUnit(
338
339
  ensureHandle(textTag),
339
340
  unit,
package/engine/unit.d.ts CHANGED
@@ -19,6 +19,8 @@ import "./internal/unit/invulnerability-counter";
19
19
  import "./internal/unit/detach-missiles";
20
20
  import "./internal/unit/main-selected";
21
21
  import "./internal/unit/add-item-to-slot-init";
22
+ import "./internal/unit/fly-height";
23
+ import "./internal/unit/scale";
22
24
  import "./internal/unit/band-aids/ancestral-spirit-cannibalize";
23
25
  export { Unit, DamagingEvent, DamageEvent } from "./internal/unit";
24
26
  export * from "./internal/unit+damage";
package/engine/unit.lua CHANGED
@@ -19,6 +19,8 @@ require("engine.internal.unit.invulnerability-counter")
19
19
  require("engine.internal.unit.detach-missiles")
20
20
  require("engine.internal.unit.main-selected")
21
21
  require("engine.internal.unit.add-item-to-slot-init")
22
+ require("engine.internal.unit.fly-height")
23
+ require("engine.internal.unit.scale")
22
24
  require("engine.internal.unit.band-aids.ancestral-spirit-cannibalize")
23
25
  do
24
26
  local ____unit = require("engine.internal.unit")
package/net/socket.lua CHANGED
@@ -28,13 +28,13 @@ function Socket.prototype.____constructor(self)
28
28
  onReceive[self[0]]:addListener(function(sender, data)
29
29
  local chunks = chunksByPlayer[sender]
30
30
  if chunks ~= nil then
31
+ chunksByPlayer[sender] = nil
31
32
  chunks[#chunks + 1] = data
32
33
  Event.invoke(
33
34
  self.onMessage,
34
35
  sender,
35
36
  tableConcat(chunks)
36
37
  )
37
- chunksByPlayer[sender] = nil
38
38
  else
39
39
  Event.invoke(self.onMessage, sender, data)
40
40
  end
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.1d1ce87",
4
+ "version": "0.0.1-dev.1d3eae2",
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.251db08"
27
+ "warpack": "0.0.1-dev.efd0770"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@typescript-eslint/eslint-plugin": "^8.13.0",
@@ -42,6 +42,7 @@ function ____exports.clearCallbacks(array)
42
42
  end
43
43
  function ____exports.consumeCallback(array, id)
44
44
  local callback = array[id]
45
+ array[id] = doNothing
45
46
  id = id + 1
46
47
  local argsCount = array[id]
47
48
  id = id + 1
@@ -49,7 +50,6 @@ function ____exports.consumeCallback(array, id)
49
50
  callback,
50
51
  tableUnpack(array, id, id + argsCount - 1)
51
52
  )
52
- array[id] = doNothing
53
53
  end
54
54
  function ____exports.consumeCallbacks(array)
55
55
  local length = array[1] or 2
@@ -36,6 +36,7 @@ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet
36
36
  copyOf(): LinkedSet<T>;
37
37
  first(): T | undefined;
38
38
  last(): T | undefined;
39
+ pop(): T | undefined;
39
40
  next(key: T): T | undefined;
40
41
  previous(key: T): T | undefined;
41
42
  add(key: T): boolean;
@@ -42,6 +42,23 @@ end
42
42
  function LinkedSet.prototype.last(self)
43
43
  return self.l
44
44
  end
45
+ function LinkedSet.prototype.pop(self)
46
+ local f = self.f
47
+ if f == nil then
48
+ return nil
49
+ end
50
+ local n = self.n
51
+ local next = n[f]
52
+ n[f] = nil
53
+ self.f = next
54
+ if next ~= nil then
55
+ self.p[next] = nil
56
+ else
57
+ self.l = nil
58
+ end
59
+ self.s = self.s - 1
60
+ return f
61
+ end
45
62
  function LinkedSet.prototype.next(self, key)
46
63
  return self.n[key]
47
64
  end
@@ -107,8 +124,9 @@ function LinkedSet.prototype.forEach(self, action, ...)
107
124
  local n = self.n
108
125
  local c = self.f
109
126
  while c ~= nil do
127
+ local next = n[c]
110
128
  action(c, ...)
111
- c = n[c]
129
+ c = next
112
130
  end
113
131
  end
114
132
  function LinkedSet.prototype.toArray(self)