warscript 0.0.1-dev.96a6f7e → 0.0.1-dev.9af2d1a
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 +4 -0
- package/core/types/frame.lua +71 -0
- package/engine/internal/ability.d.ts +2 -0
- package/engine/internal/ability.lua +7 -0
- package/engine/internal/unit/ability.lua +0 -14
- package/engine/internal/unit/item.d.ts +1 -0
- package/engine/internal/unit/item.lua +10 -0
- package/engine/internal/unit/main-selected.d.ts +7 -0
- package/engine/internal/unit/main-selected.lua +40 -0
- package/engine/internal/unit.d.ts +19 -7
- package/engine/internal/unit.lua +91 -66
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +82 -0
- package/engine/unit.d.ts +1 -0
- package/engine/unit.lua +1 -0
- package/package.json +1 -1
package/core/types/frame.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ export declare class Frame extends Handle<jframehandle> {
|
|
|
31
31
|
static readonly WORLD: Frame;
|
|
32
32
|
static readonly CHAT: Frame;
|
|
33
33
|
static readonly TIME_OF_DAY_CLOCK: Frame;
|
|
34
|
+
private static readonly SIMPLE_FRAME_TEST_CHILD;
|
|
34
35
|
static get uiScale(): number;
|
|
35
36
|
static get leftBorder(): Frame;
|
|
36
37
|
static get rightBorder(): Frame;
|
|
@@ -79,6 +80,8 @@ export declare class Frame extends Handle<jframehandle> {
|
|
|
79
80
|
get onMouseLeave(): FrameEvent;
|
|
80
81
|
get onMouseUp(): FrameEvent;
|
|
81
82
|
get onMouseWheel(): FrameEvent<[number]>;
|
|
83
|
+
get mouseEnterLocalEvent(): Event;
|
|
84
|
+
get mouseLeaveLocalEvent(): Event;
|
|
82
85
|
get popupMenuItemChangeEvent(): FrameEvent<[
|
|
83
86
|
popupMenu: Frame,
|
|
84
87
|
previousValue: number,
|
|
@@ -108,6 +111,7 @@ export declare class Frame extends Handle<jframehandle> {
|
|
|
108
111
|
enable(): void;
|
|
109
112
|
addText(text: string): void;
|
|
110
113
|
clearAllPoints(): void;
|
|
114
|
+
get children(): Frame[];
|
|
111
115
|
getChild(index: number): Frame;
|
|
112
116
|
getChildrenCount(): number;
|
|
113
117
|
setSize(width: number, height: number): void;
|
package/core/types/frame.lua
CHANGED
|
@@ -122,6 +122,7 @@ do
|
|
|
122
122
|
FramePoint.BOTTOM = FRAMEPOINT_BOTTOM
|
|
123
123
|
FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
|
|
124
124
|
end
|
|
125
|
+
local tooltipByFrame = setmetatable({}, {__mode = "k"})
|
|
125
126
|
____exports.Frame = __TS__Class()
|
|
126
127
|
local Frame = ____exports.Frame
|
|
127
128
|
Frame.name = "Frame"
|
|
@@ -242,6 +243,7 @@ function Frame.prototype.setTextColor(self, color)
|
|
|
242
243
|
end
|
|
243
244
|
function Frame.prototype.setTooltip(self, tooltip)
|
|
244
245
|
BlzFrameSetTooltip(self.handle, tooltip.handle)
|
|
246
|
+
tooltipByFrame[self] = tooltip
|
|
245
247
|
end
|
|
246
248
|
function Frame.prototype.setMinMaxValue(self, minValue, maxValue)
|
|
247
249
|
BlzFrameSetMinMaxValue(self.handle, minValue, maxValue)
|
|
@@ -310,6 +312,7 @@ Frame.CONSOLE_BOTTOM_BAR = ____exports.Frame:byName("ConsoleBottomBar")
|
|
|
310
312
|
Frame.WORLD = ____exports.Frame:byOrigin(ORIGIN_FRAME_WORLD_FRAME)
|
|
311
313
|
Frame.CHAT = ____exports.Frame:byOrigin(ORIGIN_FRAME_CHAT_MSG)
|
|
312
314
|
Frame.TIME_OF_DAY_CLOCK = ____exports.Frame.GAME_UI:getChild(5):getChild(0)
|
|
315
|
+
Frame.SIMPLE_FRAME_TEST_CHILD = ____exports.Frame:createByType("SIMPLEFRAME", "SimpleFrameTestParent", ____exports.Frame.CONSOLE_UI)
|
|
313
316
|
__TS__ObjectDefineProperty(
|
|
314
317
|
Frame,
|
|
315
318
|
"uiScale",
|
|
@@ -618,6 +621,62 @@ __TS__SetDescriptor(
|
|
|
618
621
|
end},
|
|
619
622
|
true
|
|
620
623
|
)
|
|
624
|
+
__TS__SetDescriptor(
|
|
625
|
+
Frame.prototype,
|
|
626
|
+
"mouseEnterLocalEvent",
|
|
627
|
+
{get = function(self)
|
|
628
|
+
local event = __TS__New(Event)
|
|
629
|
+
if not (tooltipByFrame[self] ~= nil) then
|
|
630
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
|
|
631
|
+
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)
|
|
632
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
633
|
+
self:setTooltip(tooltip)
|
|
634
|
+
end
|
|
635
|
+
local isMouseInside = false
|
|
636
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
637
|
+
local tooltip = tooltipByFrame[self]
|
|
638
|
+
if tooltip and tooltip.visible then
|
|
639
|
+
if not isMouseInside then
|
|
640
|
+
isMouseInside = true
|
|
641
|
+
Event.invoke(event)
|
|
642
|
+
end
|
|
643
|
+
else
|
|
644
|
+
isMouseInside = false
|
|
645
|
+
end
|
|
646
|
+
end)
|
|
647
|
+
rawset(self, "mouseEnterLocalEvent", event)
|
|
648
|
+
return event
|
|
649
|
+
end},
|
|
650
|
+
true
|
|
651
|
+
)
|
|
652
|
+
__TS__SetDescriptor(
|
|
653
|
+
Frame.prototype,
|
|
654
|
+
"mouseLeaveLocalEvent",
|
|
655
|
+
{get = function(self)
|
|
656
|
+
local event = __TS__New(Event)
|
|
657
|
+
if not (tooltipByFrame[self] ~= nil) then
|
|
658
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
|
|
659
|
+
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)
|
|
660
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
661
|
+
self:setTooltip(tooltip)
|
|
662
|
+
end
|
|
663
|
+
local isMouseInside = false
|
|
664
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
665
|
+
local tooltip = tooltipByFrame[self]
|
|
666
|
+
if tooltip and tooltip.visible then
|
|
667
|
+
isMouseInside = true
|
|
668
|
+
else
|
|
669
|
+
if isMouseInside then
|
|
670
|
+
isMouseInside = false
|
|
671
|
+
Event.invoke(event)
|
|
672
|
+
end
|
|
673
|
+
end
|
|
674
|
+
end)
|
|
675
|
+
rawset(self, "mouseLeaveLocalEvent", event)
|
|
676
|
+
return event
|
|
677
|
+
end},
|
|
678
|
+
true
|
|
679
|
+
)
|
|
621
680
|
__TS__SetDescriptor(
|
|
622
681
|
Frame.prototype,
|
|
623
682
|
"popupMenuItemChangeEvent",
|
|
@@ -720,6 +779,18 @@ __TS__SetDescriptor(
|
|
|
720
779
|
end},
|
|
721
780
|
true
|
|
722
781
|
)
|
|
782
|
+
__TS__SetDescriptor(
|
|
783
|
+
Frame.prototype,
|
|
784
|
+
"children",
|
|
785
|
+
{get = function(self)
|
|
786
|
+
local children = {}
|
|
787
|
+
for i = 0, self:getChildrenCount() - 1 do
|
|
788
|
+
children[i + 1] = self:getChild(i)
|
|
789
|
+
end
|
|
790
|
+
return children
|
|
791
|
+
end},
|
|
792
|
+
true
|
|
793
|
+
)
|
|
723
794
|
__TS__ObjectDefineProperty(
|
|
724
795
|
Frame,
|
|
725
796
|
"onKeyPress",
|
|
@@ -49,6 +49,8 @@ export declare class UnitAbility extends Ability {
|
|
|
49
49
|
readonly owner: Unit;
|
|
50
50
|
private readonly u;
|
|
51
51
|
constructor(handle: jability, typeId: number, owner: Unit);
|
|
52
|
+
incrementHideCounter(): void;
|
|
53
|
+
decrementHideCounter(): void;
|
|
52
54
|
get level(): number;
|
|
53
55
|
set level(v: number);
|
|
54
56
|
get cooldownRemaining(): number;
|
|
@@ -32,6 +32,7 @@ local getAbilityStringLevelField = BlzGetAbilityStringLevelField
|
|
|
32
32
|
local getUnitAbilityCooldownRemaining = BlzGetUnitAbilityCooldownRemaining
|
|
33
33
|
local startUnitAbilityCooldown = BlzStartUnitAbilityCooldown
|
|
34
34
|
local getHandleId = GetHandleId
|
|
35
|
+
local unitHideAbility = BlzUnitHideAbility
|
|
35
36
|
local match = string.match
|
|
36
37
|
local ____type = _G.type
|
|
37
38
|
local ____tostring = _G.tostring
|
|
@@ -357,6 +358,12 @@ function UnitAbility.prototype.____constructor(self, handle, typeId, owner)
|
|
|
357
358
|
self.owner = owner
|
|
358
359
|
self.u = owner.handle
|
|
359
360
|
end
|
|
361
|
+
function UnitAbility.prototype.incrementHideCounter(self)
|
|
362
|
+
unitHideAbility(self.u, self.typeId, true)
|
|
363
|
+
end
|
|
364
|
+
function UnitAbility.prototype.decrementHideCounter(self)
|
|
365
|
+
unitHideAbility(self.u, self.typeId, false)
|
|
366
|
+
end
|
|
360
367
|
__TS__SetDescriptor(
|
|
361
368
|
UnitAbility.prototype,
|
|
362
369
|
"level",
|
|
@@ -26,11 +26,8 @@ local getSpellTargetUnit = GetSpellTargetUnit
|
|
|
26
26
|
local getSpellTargetX = GetSpellTargetX
|
|
27
27
|
local getSpellTargetY = GetSpellTargetY
|
|
28
28
|
local getTriggerUnit = GetTriggerUnit
|
|
29
|
-
local getUnitAbility = BlzGetUnitAbility
|
|
30
|
-
local unitAddAbility = UnitAddAbility
|
|
31
29
|
local unitInventorySize = UnitInventorySize
|
|
32
30
|
local unitItemInSlot = UnitItemInSlot
|
|
33
|
-
local unitRemoveAbility = UnitRemoveAbility
|
|
34
31
|
local function retrieveAbility(unit, ability, abilityId)
|
|
35
32
|
if ability == nil then
|
|
36
33
|
return __TS__New(
|
|
@@ -39,17 +36,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
39
36
|
Unit:of(unit)
|
|
40
37
|
)
|
|
41
38
|
end
|
|
42
|
-
if not unitAddAbility(unit, abilityId) then
|
|
43
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
44
|
-
return UnitAbility:of(
|
|
45
|
-
ability,
|
|
46
|
-
abilityId,
|
|
47
|
-
Unit:of(unit)
|
|
48
|
-
)
|
|
49
|
-
end
|
|
50
|
-
else
|
|
51
|
-
unitRemoveAbility(unit, abilityId)
|
|
52
|
-
end
|
|
53
39
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
54
40
|
local item = unitItemInSlot(unit, i)
|
|
55
41
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -11,6 +11,7 @@ export interface UnitItems extends ReadonlyArray<Item | undefined> {
|
|
|
11
11
|
}
|
|
12
12
|
export declare class UnitItems {
|
|
13
13
|
constructor(handle: junit);
|
|
14
|
+
findSlot(item: Item): 0 | 1 | 2 | 3 | 4 | 5 | undefined;
|
|
14
15
|
protected __newindex(slot: number, item: Item | undefined): void;
|
|
15
16
|
protected __index(key: string | number): unknown;
|
|
16
17
|
protected __len(): number;
|
|
@@ -30,6 +30,16 @@ UnitItems.name = "UnitItems"
|
|
|
30
30
|
function UnitItems.prototype.____constructor(self, handle)
|
|
31
31
|
handleByUnitItems[self] = handle
|
|
32
32
|
end
|
|
33
|
+
function UnitItems.prototype.findSlot(self, item)
|
|
34
|
+
local handle = handleByUnitItems[self]
|
|
35
|
+
local itemHandle = item.handle
|
|
36
|
+
for slot = 0, unitInventorySize(handle) - 1 do
|
|
37
|
+
if itemHandle == unitItemInSlot(handle, slot) then
|
|
38
|
+
return slot
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
return nil
|
|
42
|
+
end
|
|
33
43
|
function UnitItems.prototype.__newindex(self, slot, item)
|
|
34
44
|
local handle = handleByUnitItems[self]
|
|
35
45
|
if slot < 1 or slot > unitInventorySize(handle) then
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____player = require("core.types.player")
|
|
3
|
+
local Player = ____player.Player
|
|
4
|
+
local ____math = require("math")
|
|
5
|
+
local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
|
|
6
|
+
local MINIMUM_INTEGER = ____math.MINIMUM_INTEGER
|
|
7
|
+
local ____local_2Dclient = require("engine.local-client")
|
|
8
|
+
local LocalClient = ____local_2Dclient.LocalClient
|
|
9
|
+
local ____unit = require("engine.internal.unit")
|
|
10
|
+
local Unit = ____unit.Unit
|
|
11
|
+
local mainSelectedUnitByPlayer = {}
|
|
12
|
+
local syncSlider = BlzCreateFrameByType(
|
|
13
|
+
"SLIDER",
|
|
14
|
+
"UnitSyncId",
|
|
15
|
+
BlzGetOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0),
|
|
16
|
+
"",
|
|
17
|
+
0
|
|
18
|
+
)
|
|
19
|
+
BlzFrameSetMinMaxValue(syncSlider, MINIMUM_INTEGER, MAXIMUM_INTEGER)
|
|
20
|
+
LocalClient.mainSelectedUnitChangeEvent:addListener(function()
|
|
21
|
+
local ____opt_0 = LocalClient.mainSelectedUnit
|
|
22
|
+
local syncId = ____opt_0 and ____opt_0.syncId
|
|
23
|
+
BlzFrameSetValue(syncSlider, syncId or 0)
|
|
24
|
+
end)
|
|
25
|
+
local trg = CreateTrigger()
|
|
26
|
+
BlzTriggerRegisterFrameEvent(trg, syncSlider, FRAMEEVENT_SLIDER_VALUE_CHANGED)
|
|
27
|
+
TriggerAddAction(
|
|
28
|
+
trg,
|
|
29
|
+
function()
|
|
30
|
+
mainSelectedUnitByPlayer[Player:of(GetTriggerPlayer())] = Unit:getBySyncId(BlzGetTriggerFrameValue())
|
|
31
|
+
end
|
|
32
|
+
)
|
|
33
|
+
rawset(
|
|
34
|
+
Unit,
|
|
35
|
+
"getMainSelectedOf",
|
|
36
|
+
function(player)
|
|
37
|
+
return mainSelectedUnitByPlayer[player]
|
|
38
|
+
end
|
|
39
|
+
)
|
|
40
|
+
return ____exports
|
|
@@ -94,14 +94,19 @@ export declare class UnitWeapon {
|
|
|
94
94
|
set missileSpeed(missileSpeed: number);
|
|
95
95
|
}
|
|
96
96
|
declare const enum UnitPropertyKey {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
97
|
+
SYNC_ID = 100,
|
|
98
|
+
IS_PAUSED = 101,
|
|
99
|
+
STUN_COUNTER = 102,
|
|
100
|
+
DELAY_HEALTH_CHECKS_COUNTER = 103,
|
|
101
|
+
DELAY_HEALTH_CHECKS_HEALTH_BONUS = 104,
|
|
102
|
+
PREVENT_DEATH_HEALTH_BONUS = 105,
|
|
103
|
+
IS_TEAM_GLOW_HIDDEN = 106
|
|
103
104
|
}
|
|
105
|
+
export type UnitSyncId = number & {
|
|
106
|
+
readonly __unitSyncId: unique symbol;
|
|
107
|
+
};
|
|
104
108
|
export declare class Unit extends Handle<junit> {
|
|
109
|
+
readonly syncId: UnitSyncId;
|
|
105
110
|
private [UnitPropertyKey.IS_PAUSED]?;
|
|
106
111
|
private [UnitPropertyKey.STUN_COUNTER]?;
|
|
107
112
|
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_COUNTER]?;
|
|
@@ -288,7 +293,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
288
293
|
static getInRange(x: number, y: number, range: number, predicate?: (unit: Unit) => boolean): Unit[];
|
|
289
294
|
static getInCollisionRange(x: number, y: number, range: number, predicate?: (unit: Unit) => boolean): Unit[];
|
|
290
295
|
static getInSector(pos: Vec2, range: number, offsetAngle: number, centralAngle: number): Unit[];
|
|
291
|
-
static getSelectionOf(player: Player): Unit[];
|
|
296
|
+
static getSelectionOf(player: Player, target?: Unit[]): Unit[];
|
|
292
297
|
static readonly deathEvent: UnitTriggerEvent<[Unit]>;
|
|
293
298
|
static readonly onDecay: UnitTriggerEvent<[]>;
|
|
294
299
|
static readonly onResurrect: InitializingEvent<[Unit], void>;
|
|
@@ -327,6 +332,12 @@ export declare class Unit extends Handle<junit> {
|
|
|
327
332
|
static itemPickedUpEvent: UnitTriggerEvent<[Item]>;
|
|
328
333
|
static itemUsedEvent: UnitTriggerEvent<[Item]>;
|
|
329
334
|
static itemStackedEvent: UnitTriggerEvent<[Item]>;
|
|
335
|
+
static get itemMovedEvent(): Event<[
|
|
336
|
+
unit: Unit,
|
|
337
|
+
item: Item,
|
|
338
|
+
slotFrom: 0 | 1 | 2 | 3 | 4 | 5,
|
|
339
|
+
slotTo: 0 | 1 | 2 | 3 | 4 | 5
|
|
340
|
+
]>;
|
|
330
341
|
static get onCreate(): EventDispatcher<[Unit], [Unit]>;
|
|
331
342
|
static get destroyEvent(): EventDispatcher<[Unit], [Unit]>;
|
|
332
343
|
getField(field: junitintegerfield | junitrealfield): number;
|
|
@@ -337,5 +348,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
337
348
|
setField(field: junitbooleanfield, value: boolean): boolean;
|
|
338
349
|
setField(field: junitstringfield, value: string): boolean;
|
|
339
350
|
toString(): string;
|
|
351
|
+
static getBySyncId(syncId: UnitSyncId): Unit | undefined;
|
|
340
352
|
}
|
|
341
353
|
export {};
|
package/engine/internal/unit.lua
CHANGED
|
@@ -562,17 +562,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
562
562
|
____exports.Unit:of(unit)
|
|
563
563
|
)
|
|
564
564
|
end
|
|
565
|
-
if not unitAddAbility(unit, abilityId) then
|
|
566
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
567
|
-
return UnitAbility:of(
|
|
568
|
-
ability,
|
|
569
|
-
abilityId,
|
|
570
|
-
____exports.Unit:of(unit)
|
|
571
|
-
)
|
|
572
|
-
end
|
|
573
|
-
else
|
|
574
|
-
unitRemoveAbility(unit, abilityId)
|
|
575
|
-
end
|
|
576
565
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
577
566
|
local item = unitItemInSlot(unit, i)
|
|
578
567
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -630,15 +619,15 @@ for ____, player in ipairs(Player.all) do
|
|
|
630
619
|
dummies[player] = dummy
|
|
631
620
|
end
|
|
632
621
|
local function delayHealthChecksCallback(unit)
|
|
633
|
-
local counter = (unit[
|
|
622
|
+
local counter = (unit[103] or 0) - 1
|
|
634
623
|
if counter ~= 0 then
|
|
635
|
-
unit[
|
|
624
|
+
unit[103] = counter
|
|
636
625
|
return
|
|
637
626
|
end
|
|
638
|
-
unit[
|
|
639
|
-
local healthBonus = unit[
|
|
627
|
+
unit[103] = nil
|
|
628
|
+
local healthBonus = unit[104]
|
|
640
629
|
if healthBonus ~= nil then
|
|
641
|
-
unit[
|
|
630
|
+
unit[104] = nil
|
|
642
631
|
local handle = unit.handle
|
|
643
632
|
BlzSetUnitMaxHP(
|
|
644
633
|
handle,
|
|
@@ -646,12 +635,17 @@ local function delayHealthChecksCallback(unit)
|
|
|
646
635
|
)
|
|
647
636
|
end
|
|
648
637
|
end
|
|
638
|
+
local nextSyncId = 1
|
|
639
|
+
local unitBySyncId = setmetatable({}, {__mode = "k"})
|
|
649
640
|
____exports.Unit = __TS__Class()
|
|
650
641
|
local Unit = ____exports.Unit
|
|
651
642
|
Unit.name = "Unit"
|
|
652
643
|
__TS__ClassExtends(Unit, Handle)
|
|
653
644
|
function Unit.prototype.____constructor(self, handle)
|
|
654
645
|
Handle.prototype.____constructor(self, handle)
|
|
646
|
+
local ____nextSyncId_0 = nextSyncId
|
|
647
|
+
nextSyncId = ____nextSyncId_0 + 1
|
|
648
|
+
self.syncId = ____nextSyncId_0
|
|
655
649
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
656
650
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
657
651
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -664,6 +658,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
664
658
|
fourCC("Amrf")
|
|
665
659
|
))
|
|
666
660
|
end
|
|
661
|
+
unitBySyncId[self.syncId] = self
|
|
667
662
|
local ____ = self.abilities
|
|
668
663
|
end
|
|
669
664
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -749,8 +744,8 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
749
744
|
end}
|
|
750
745
|
end
|
|
751
746
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
752
|
-
local
|
|
753
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
747
|
+
local ____combatClassification_1 = combatClassification
|
|
748
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_1 == ____combatClassification_1
|
|
754
749
|
end
|
|
755
750
|
function Unit.prototype.addClassification(self, classification)
|
|
756
751
|
return unitAddType(self.handle, classification)
|
|
@@ -768,13 +763,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
768
763
|
return isUnitInvisible(self.handle, player.handle)
|
|
769
764
|
end
|
|
770
765
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
771
|
-
local
|
|
766
|
+
local ____temp_2
|
|
772
767
|
if type(x) == "number" then
|
|
773
|
-
|
|
768
|
+
____temp_2 = isUnitInRangeXY(self.handle, x, y, range)
|
|
774
769
|
else
|
|
775
|
-
|
|
770
|
+
____temp_2 = isUnitInRange(self.handle, x.handle, y)
|
|
776
771
|
end
|
|
777
|
-
return
|
|
772
|
+
return ____temp_2
|
|
778
773
|
end
|
|
779
774
|
function Unit.prototype.isAllyOf(self, unit)
|
|
780
775
|
return isUnitAlly(
|
|
@@ -801,7 +796,7 @@ function Unit.prototype.queueAnimation(self, animation)
|
|
|
801
796
|
queueUnitAnimation(self.handle, animation)
|
|
802
797
|
end
|
|
803
798
|
function Unit.prototype.delayHealthChecks(self)
|
|
804
|
-
self[
|
|
799
|
+
self[103] = (self[103] or 0) + 1
|
|
805
800
|
Timer:run(delayHealthChecksCallback, self)
|
|
806
801
|
end
|
|
807
802
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -818,14 +813,14 @@ function Unit.prototype.kill(self)
|
|
|
818
813
|
killUnit(self.handle)
|
|
819
814
|
end
|
|
820
815
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
821
|
-
local
|
|
822
|
-
local
|
|
823
|
-
local
|
|
824
|
-
if
|
|
825
|
-
|
|
816
|
+
local ____ReviveHero_5 = ReviveHero
|
|
817
|
+
local ____array_4 = __TS__SparseArrayNew(self.handle, x, y)
|
|
818
|
+
local ____doEffect_3 = doEffect
|
|
819
|
+
if ____doEffect_3 == nil then
|
|
820
|
+
____doEffect_3 = false
|
|
826
821
|
end
|
|
827
|
-
__TS__SparseArrayPush(
|
|
828
|
-
|
|
822
|
+
__TS__SparseArrayPush(____array_4, ____doEffect_3)
|
|
823
|
+
____ReviveHero_5(__TS__SparseArraySpread(____array_4))
|
|
829
824
|
end
|
|
830
825
|
function Unit.prototype.healTarget(self, target, amount)
|
|
831
826
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -995,18 +990,18 @@ function Unit.prototype.unpauseEx(self)
|
|
|
995
990
|
self:decrementStunCounter()
|
|
996
991
|
end
|
|
997
992
|
function Unit.prototype.incrementStunCounter(self)
|
|
998
|
-
local stunCounter = self[
|
|
999
|
-
if not self[
|
|
993
|
+
local stunCounter = self[102] or 0
|
|
994
|
+
if not self[101] or stunCounter >= 0 then
|
|
1000
995
|
BlzPauseUnitEx(self.handle, true)
|
|
1001
996
|
end
|
|
1002
|
-
self[
|
|
997
|
+
self[102] = stunCounter + 1
|
|
1003
998
|
end
|
|
1004
999
|
function Unit.prototype.decrementStunCounter(self)
|
|
1005
|
-
local stunCounter = self[
|
|
1006
|
-
if not self[
|
|
1000
|
+
local stunCounter = self[102] or 0
|
|
1001
|
+
if not self[101] or stunCounter >= 1 then
|
|
1007
1002
|
BlzPauseUnitEx(self.handle, false)
|
|
1008
1003
|
end
|
|
1009
|
-
self[
|
|
1004
|
+
self[102] = stunCounter - 1
|
|
1010
1005
|
end
|
|
1011
1006
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1012
1007
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1108,8 +1103,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1108
1103
|
)
|
|
1109
1104
|
return targetCollection
|
|
1110
1105
|
end
|
|
1111
|
-
function Unit.getSelectionOf(self, player)
|
|
1112
|
-
|
|
1106
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1107
|
+
if target == nil then
|
|
1108
|
+
target = {}
|
|
1109
|
+
end
|
|
1110
|
+
targetCollection = target
|
|
1113
1111
|
targetCollectionNextIndex = 1
|
|
1114
1112
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1115
1113
|
return targetCollection
|
|
@@ -1131,6 +1129,9 @@ end
|
|
|
1131
1129
|
function Unit.prototype.__tostring(self)
|
|
1132
1130
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1133
1131
|
end
|
|
1132
|
+
function Unit.getBySyncId(self, syncId)
|
|
1133
|
+
return unitBySyncId[syncId]
|
|
1134
|
+
end
|
|
1134
1135
|
__TS__SetDescriptor(
|
|
1135
1136
|
Unit.prototype,
|
|
1136
1137
|
"_deltas",
|
|
@@ -1388,17 +1389,17 @@ __TS__SetDescriptor(
|
|
|
1388
1389
|
"isTeamGlowVisible",
|
|
1389
1390
|
{
|
|
1390
1391
|
get = function(self)
|
|
1391
|
-
return not self[
|
|
1392
|
+
return not self[106]
|
|
1392
1393
|
end,
|
|
1393
1394
|
set = function(self, isTeamGlowVisible)
|
|
1394
1395
|
showUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1395
|
-
local
|
|
1396
|
+
local ____temp_6
|
|
1396
1397
|
if not isTeamGlowVisible then
|
|
1397
|
-
|
|
1398
|
+
____temp_6 = true
|
|
1398
1399
|
else
|
|
1399
|
-
|
|
1400
|
+
____temp_6 = nil
|
|
1400
1401
|
end
|
|
1401
|
-
self[
|
|
1402
|
+
self[106] = ____temp_6
|
|
1402
1403
|
end
|
|
1403
1404
|
},
|
|
1404
1405
|
true
|
|
@@ -1408,7 +1409,7 @@ __TS__SetDescriptor(
|
|
|
1408
1409
|
"color",
|
|
1409
1410
|
{set = function(self, color)
|
|
1410
1411
|
setUnitColor(self.handle, color.handle)
|
|
1411
|
-
if self[
|
|
1412
|
+
if self[106] then
|
|
1412
1413
|
showUnitTeamGlow(self.handle, false)
|
|
1413
1414
|
end
|
|
1414
1415
|
end},
|
|
@@ -1432,14 +1433,14 @@ __TS__SetDescriptor(
|
|
|
1432
1433
|
"maxHealth",
|
|
1433
1434
|
{
|
|
1434
1435
|
get = function(self)
|
|
1435
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1436
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1436
1437
|
end,
|
|
1437
1438
|
set = function(self, maxHealth)
|
|
1438
|
-
if maxHealth < 1 and self[
|
|
1439
|
-
self[
|
|
1439
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1440
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1440
1441
|
maxHealth = 1
|
|
1441
1442
|
end
|
|
1442
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1443
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1443
1444
|
end
|
|
1444
1445
|
},
|
|
1445
1446
|
true
|
|
@@ -1481,10 +1482,10 @@ __TS__SetDescriptor(
|
|
|
1481
1482
|
"health",
|
|
1482
1483
|
{
|
|
1483
1484
|
get = function(self)
|
|
1484
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1485
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1485
1486
|
end,
|
|
1486
1487
|
set = function(self, health)
|
|
1487
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1488
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1488
1489
|
end
|
|
1489
1490
|
},
|
|
1490
1491
|
true
|
|
@@ -1695,17 +1696,17 @@ __TS__SetDescriptor(
|
|
|
1695
1696
|
set = function(self, isPaused)
|
|
1696
1697
|
local handle = self.handle
|
|
1697
1698
|
if isPaused and not IsUnitPaused(handle) then
|
|
1698
|
-
self[
|
|
1699
|
-
for _ = self[
|
|
1699
|
+
self[101] = true
|
|
1700
|
+
for _ = self[102] or 0, -1 do
|
|
1700
1701
|
BlzPauseUnitEx(handle, true)
|
|
1701
1702
|
end
|
|
1702
1703
|
PauseUnit(handle, true)
|
|
1703
1704
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1704
1705
|
PauseUnit(handle, false)
|
|
1705
|
-
for _ = self[
|
|
1706
|
+
for _ = self[102] or 0, -1 do
|
|
1706
1707
|
BlzPauseUnitEx(handle, false)
|
|
1707
1708
|
end
|
|
1708
|
-
self[
|
|
1709
|
+
self[101] = nil
|
|
1709
1710
|
end
|
|
1710
1711
|
end
|
|
1711
1712
|
},
|
|
@@ -2124,25 +2125,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2124
2125
|
InitializingEvent,
|
|
2125
2126
|
function(event)
|
|
2126
2127
|
local function listener(unit, id)
|
|
2127
|
-
local
|
|
2128
|
+
local ____GetSpellTargetUnit_result_9
|
|
2128
2129
|
if GetSpellTargetUnit() then
|
|
2129
|
-
|
|
2130
|
+
____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2130
2131
|
else
|
|
2131
|
-
local
|
|
2132
|
+
local ____GetSpellTargetItem_result_8
|
|
2132
2133
|
if GetSpellTargetItem() then
|
|
2133
|
-
|
|
2134
|
+
____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
|
|
2134
2135
|
else
|
|
2135
|
-
local
|
|
2136
|
+
local ____GetSpellTargetDestructable_result_7
|
|
2136
2137
|
if GetSpellTargetDestructable() then
|
|
2137
|
-
|
|
2138
|
+
____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
|
|
2138
2139
|
else
|
|
2139
|
-
|
|
2140
|
+
____GetSpellTargetDestructable_result_7 = nil
|
|
2140
2141
|
end
|
|
2141
|
-
|
|
2142
|
+
____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
|
|
2142
2143
|
end
|
|
2143
|
-
|
|
2144
|
+
____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
|
|
2144
2145
|
end
|
|
2145
|
-
local target =
|
|
2146
|
+
local target = ____GetSpellTargetUnit_result_9
|
|
2146
2147
|
if target then
|
|
2147
2148
|
invoke(event, unit, id, target)
|
|
2148
2149
|
end
|
|
@@ -2469,7 +2470,7 @@ Unit.onDamage = __TS__New(
|
|
|
2469
2470
|
invoke(event, source, target, evData)
|
|
2470
2471
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2471
2472
|
local bonusHealth = math.ceil(evData.amount)
|
|
2472
|
-
target[
|
|
2473
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2473
2474
|
BlzSetUnitMaxHP(
|
|
2474
2475
|
target.handle,
|
|
2475
2476
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2483,7 +2484,7 @@ Unit.onDamage = __TS__New(
|
|
|
2483
2484
|
evData[0],
|
|
2484
2485
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2485
2486
|
)
|
|
2486
|
-
target[
|
|
2487
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2487
2488
|
SetWidgetLife(
|
|
2488
2489
|
target.handle,
|
|
2489
2490
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2535,6 +2536,30 @@ Unit.itemStackedEvent = __TS__New(
|
|
|
2535
2536
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2536
2537
|
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2537
2538
|
)
|
|
2539
|
+
__TS__ObjectDefineProperty(
|
|
2540
|
+
Unit,
|
|
2541
|
+
"itemMovedEvent",
|
|
2542
|
+
{get = function(self)
|
|
2543
|
+
local event = __TS__New(Event)
|
|
2544
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2545
|
+
local slotTo = order - orderId("moveslot0")
|
|
2546
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2547
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2548
|
+
if slotFrom ~= nil then
|
|
2549
|
+
invoke(
|
|
2550
|
+
event,
|
|
2551
|
+
unit,
|
|
2552
|
+
item,
|
|
2553
|
+
slotFrom,
|
|
2554
|
+
slotTo
|
|
2555
|
+
)
|
|
2556
|
+
end
|
|
2557
|
+
end)
|
|
2558
|
+
end
|
|
2559
|
+
rawset(self, "itemMovedEvent", event)
|
|
2560
|
+
return event
|
|
2561
|
+
end}
|
|
2562
|
+
)
|
|
2538
2563
|
__TS__ObjectDefineProperty(
|
|
2539
2564
|
Unit,
|
|
2540
2565
|
"onCreate",
|
package/engine/local-client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Unit } from "../core/types/unit";
|
|
3
3
|
import { Async } from "../core/types/async";
|
|
4
|
-
import { TriggerEvent } from "../event";
|
|
4
|
+
import { Event, TriggerEvent } from "../event";
|
|
5
5
|
import { GraphicsMode } from "./index";
|
|
6
6
|
export declare class LocalClient {
|
|
7
7
|
private constructor();
|
|
@@ -11,6 +11,11 @@ export declare class LocalClient {
|
|
|
11
11
|
static get isHD(): boolean;
|
|
12
12
|
static get graphicsMode(): GraphicsMode;
|
|
13
13
|
static get isActive(): boolean;
|
|
14
|
-
static get mouseFocusUnit(): Async<Unit
|
|
14
|
+
static get mouseFocusUnit(): Async<Unit> | undefined;
|
|
15
|
+
static get mainSelectedUnit(): Async<Unit> | undefined;
|
|
16
|
+
static get mainSelectedUnitChangeEvent(): Event<[
|
|
17
|
+
previousMainSelectedUnit: Unit | undefined,
|
|
18
|
+
newMainSelectedUnit: Unit | undefined
|
|
19
|
+
]>;
|
|
15
20
|
static readonly onDisconnect: TriggerEvent<[]>;
|
|
16
21
|
}
|
package/engine/local-client.lua
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
2
3
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
4
|
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
4
5
|
local __TS__New = ____lualib.__TS__New
|
|
@@ -6,13 +7,25 @@ local ____exports = {}
|
|
|
6
7
|
local ____unit = require("core.types.unit")
|
|
7
8
|
local Unit = ____unit.Unit
|
|
8
9
|
local ____event = require("event")
|
|
10
|
+
local Event = ____event.Event
|
|
9
11
|
local TriggerEvent = ____event.TriggerEvent
|
|
12
|
+
local ____frame = require("core.types.frame")
|
|
13
|
+
local Frame = ____frame.Frame
|
|
14
|
+
local ____player = require("core.types.player")
|
|
15
|
+
local Player = ____player.Player
|
|
16
|
+
local ____timer = require("core.types.timer")
|
|
17
|
+
local Timer = ____timer.Timer
|
|
10
18
|
local loadTOCFile = BlzLoadTOCFile
|
|
11
19
|
local getLocalClientWidth = BlzGetLocalClientWidth
|
|
12
20
|
local getLocalClientHeight = BlzGetLocalClientHeight
|
|
13
21
|
local isLocalClientActive = BlzIsLocalClientActive
|
|
22
|
+
local isHeroUnitId = IsHeroUnitId
|
|
23
|
+
local getHandleId = GetHandleId
|
|
14
24
|
local getMouseFocusUnit = BlzGetMouseFocusUnit
|
|
25
|
+
local getUnitRealField = BlzGetUnitRealField
|
|
26
|
+
local getUnitTypeId = GetUnitTypeId
|
|
15
27
|
local getLocale = BlzGetLocale
|
|
28
|
+
local tableSort = table.sort
|
|
16
29
|
local tocPath = "_warscript\\IsHD.toc"
|
|
17
30
|
compiletime(function()
|
|
18
31
|
if currentMap then
|
|
@@ -21,6 +34,29 @@ compiletime(function()
|
|
|
21
34
|
currentMap:addFileString("_HD.w3mod\\" .. tocPath, fdfPath .. "\r\n")
|
|
22
35
|
end
|
|
23
36
|
end)
|
|
37
|
+
local selectionButtons
|
|
38
|
+
Timer:run(function()
|
|
39
|
+
selectionButtons = __TS__ArrayMap(
|
|
40
|
+
Frame:byName("SimpleInfoPanelUnitDetail").parent:getChild(5):getChild(0).children,
|
|
41
|
+
function(____, frame) return frame:getChild(1) end
|
|
42
|
+
)
|
|
43
|
+
end)
|
|
44
|
+
local localSelectedUnits = {}
|
|
45
|
+
local indexByLocalSelectedUnit = {}
|
|
46
|
+
local function compareUnitsSelectionPriority(a, b)
|
|
47
|
+
local aHandle = a.handle
|
|
48
|
+
local bHandle = b.handle
|
|
49
|
+
local priorityDelta = getUnitRealField(bHandle, UNIT_RF_PRIORITY) - getUnitRealField(aHandle, UNIT_RF_PRIORITY)
|
|
50
|
+
if priorityDelta ~= 0 then
|
|
51
|
+
return priorityDelta < 0
|
|
52
|
+
end
|
|
53
|
+
local aTypeId = getUnitTypeId(aHandle)
|
|
54
|
+
local bTypeId = getUnitTypeId(bHandle)
|
|
55
|
+
local orderDelta = (isHeroUnitId(aTypeId) and getHandleId(aHandle) or aTypeId) - (isHeroUnitId(bTypeId) and getHandleId(bHandle) or bTypeId)
|
|
56
|
+
return (orderDelta ~= 0 and orderDelta or indexByLocalSelectedUnit[a] - indexByLocalSelectedUnit[b]) < 0
|
|
57
|
+
end
|
|
58
|
+
local mainSelectedUnitChangeEvent
|
|
59
|
+
local previousMainSelectedUnit
|
|
24
60
|
____exports.LocalClient = __TS__Class()
|
|
25
61
|
local LocalClient = ____exports.LocalClient
|
|
26
62
|
LocalClient.name = "LocalClient"
|
|
@@ -69,6 +105,52 @@ __TS__ObjectDefineProperty(
|
|
|
69
105
|
return Unit:of(getMouseFocusUnit())
|
|
70
106
|
end}
|
|
71
107
|
)
|
|
108
|
+
__TS__ObjectDefineProperty(
|
|
109
|
+
LocalClient,
|
|
110
|
+
"mainSelectedUnit",
|
|
111
|
+
{get = function(self)
|
|
112
|
+
Unit:getSelectionOf(Player["local"], localSelectedUnits)
|
|
113
|
+
for i = 1, #localSelectedUnits do
|
|
114
|
+
indexByLocalSelectedUnit[localSelectedUnits[i]] = i
|
|
115
|
+
end
|
|
116
|
+
tableSort(localSelectedUnits, compareUnitsSelectionPriority)
|
|
117
|
+
local mainSelectedUnitIndex
|
|
118
|
+
if selectionButtons and #localSelectedUnits > 1 then
|
|
119
|
+
local maxButtonWidth = 0
|
|
120
|
+
for i = 0, #selectionButtons - 1 do
|
|
121
|
+
local width = selectionButtons[i + 1].width
|
|
122
|
+
if width > maxButtonWidth then
|
|
123
|
+
maxButtonWidth = width
|
|
124
|
+
mainSelectedUnitIndex = i
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
local mainSelectedUnit = localSelectedUnits[(mainSelectedUnitIndex or 0) + 1]
|
|
129
|
+
for i = 1, #localSelectedUnits do
|
|
130
|
+
indexByLocalSelectedUnit[localSelectedUnits[i]] = nil
|
|
131
|
+
localSelectedUnits[i] = nil
|
|
132
|
+
end
|
|
133
|
+
if mainSelectedUnitChangeEvent ~= nil and mainSelectedUnit ~= previousMainSelectedUnit then
|
|
134
|
+
local previousPreviousMainSelectedUnit = previousMainSelectedUnit
|
|
135
|
+
previousMainSelectedUnit = mainSelectedUnit
|
|
136
|
+
Event.invoke(mainSelectedUnitChangeEvent, previousPreviousMainSelectedUnit, previousMainSelectedUnit)
|
|
137
|
+
end
|
|
138
|
+
return mainSelectedUnit
|
|
139
|
+
end}
|
|
140
|
+
)
|
|
141
|
+
__TS__ObjectDefineProperty(
|
|
142
|
+
LocalClient,
|
|
143
|
+
"mainSelectedUnitChangeEvent",
|
|
144
|
+
{get = function(self)
|
|
145
|
+
if mainSelectedUnitChangeEvent == nil then
|
|
146
|
+
mainSelectedUnitChangeEvent = __TS__New(Event)
|
|
147
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
148
|
+
local _ = ____exports.LocalClient.mainSelectedUnit
|
|
149
|
+
end)
|
|
150
|
+
end
|
|
151
|
+
return mainSelectedUnitChangeEvent
|
|
152
|
+
end}
|
|
153
|
+
)
|
|
72
154
|
LocalClient.onDisconnect = __TS__New(
|
|
73
155
|
TriggerEvent,
|
|
74
156
|
function(trigger)
|
package/engine/unit.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ import "./internal/unit-missile-launch";
|
|
|
16
16
|
import "./internal/unit/ghost-counter";
|
|
17
17
|
import "./internal/unit/invulnerability-counter";
|
|
18
18
|
import "./internal/unit/detach-missiles";
|
|
19
|
+
import "./internal/unit/main-selected";
|
|
19
20
|
import "./internal/unit/band-aids/ancestral-spirit-cannibalize";
|
|
20
21
|
export { Unit, DamagingEvent, DamageEvent } from "./internal/unit";
|
|
21
22
|
export * from "./internal/unit+damage";
|
package/engine/unit.lua
CHANGED
|
@@ -16,6 +16,7 @@ require("engine.internal.unit-missile-launch")
|
|
|
16
16
|
require("engine.internal.unit.ghost-counter")
|
|
17
17
|
require("engine.internal.unit.invulnerability-counter")
|
|
18
18
|
require("engine.internal.unit.detach-missiles")
|
|
19
|
+
require("engine.internal.unit.main-selected")
|
|
19
20
|
require("engine.internal.unit.band-aids.ancestral-spirit-cannibalize")
|
|
20
21
|
do
|
|
21
22
|
local ____unit = require("engine.internal.unit")
|
package/package.json
CHANGED