warscript 0.0.1-dev.697548e → 0.0.1-dev.6af7b85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/types/frame.lua +47 -1
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/engine/behaviour/ability/emulate-impact.lua +5 -4
- package/engine/buff.d.ts +1 -0
- package/engine/buff.lua +2 -1
- package/engine/internal/ability.lua +18 -15
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item.d.ts +0 -4
- package/engine/internal/item.lua +0 -37
- package/engine/internal/unit/item.lua +1 -1
- package/engine/local-client.d.ts +5 -0
- package/engine/local-client.lua +56 -1
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/lualib_bundle.lua +46 -117
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/operation.lua +13 -22
- package/package.json +2 -2
- package/utility/linked-map.d.ts +2 -1
- package/utility/linked-map.lua +6 -0
- package/utility/linked-set.d.ts +1 -0
- package/utility/linked-set.lua +6 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
package/core/types/frame.lua
CHANGED
|
@@ -24,11 +24,23 @@ local frameCoordinatesToWorld = ____playerCamera.frameCoordinatesToWorld
|
|
|
24
24
|
local worldCoordinatesToFrame = ____playerCamera.worldCoordinatesToFrame
|
|
25
25
|
local ____get_2Dterrain_2Dz = require("engine.internal.misc.get-terrain-z")
|
|
26
26
|
local getTerrainZ = ____get_2Dterrain_2Dz.getTerrainZ
|
|
27
|
+
local ____lua_2Dsets = require("utility.lua-sets")
|
|
28
|
+
local mutableLuaSet = ____lua_2Dsets.mutableLuaSet
|
|
29
|
+
local ____socket = require("net.socket")
|
|
30
|
+
local Socket = ____socket.Socket
|
|
31
|
+
local ____lua_2Dmaps = require("utility.lua-maps")
|
|
32
|
+
local getOrPut = ____lua_2Dmaps.getOrPut
|
|
33
|
+
local luaMapInvert = ____lua_2Dmaps.luaMapInvert
|
|
34
|
+
local luaMapOf = ____lua_2Dmaps.luaMapOf
|
|
35
|
+
local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
|
|
27
36
|
local frameClick = BlzFrameClick
|
|
28
37
|
local frameGetEnable = BlzFrameGetEnable
|
|
29
38
|
local frameIsVisible = BlzFrameIsVisible
|
|
30
39
|
local frameSetEnable = BlzFrameSetEnable
|
|
31
40
|
local frameSetScale = BlzFrameSetScale
|
|
41
|
+
local getHandleId = GetHandleId
|
|
42
|
+
local getOriginFrame = BlzGetOriginFrame
|
|
43
|
+
local location = Location
|
|
32
44
|
local ____rawget = _G.rawget
|
|
33
45
|
local rawset = _G.rawset
|
|
34
46
|
local invoke = Event.invoke
|
|
@@ -130,6 +142,30 @@ do
|
|
|
130
142
|
FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
|
|
131
143
|
end
|
|
132
144
|
local tooltipByFrame = setmetatable({}, {__mode = "k"})
|
|
145
|
+
local keyByAsyncInitOriginFrameType = luaMapOf(ORIGIN_FRAME_PORTRAIT_HP_TEXT, "hp", ORIGIN_FRAME_PORTRAIT_MANA_TEXT, "mana")
|
|
146
|
+
local asyncInitOriginFrameTypeByKey = luaMapInvert(keyByAsyncInitOriginFrameType)
|
|
147
|
+
local seenAsyncInitOriginFrameTypes = mutableLuaSet()
|
|
148
|
+
local seenAsyncInitOriginFrameTypesSocket = __TS__New(Socket)
|
|
149
|
+
local seenPlayersByAsyncInitOriginFrameType = mutableLuaMap()
|
|
150
|
+
seenAsyncInitOriginFrameTypesSocket.onMessage:addListener(function(player, key)
|
|
151
|
+
local asyncInitOriginFrameType = asyncInitOriginFrameTypeByKey[key]
|
|
152
|
+
if asyncInitOriginFrameType ~= nil then
|
|
153
|
+
getOrPut(seenPlayersByAsyncInitOriginFrameType, asyncInitOriginFrameType, mutableLuaSet)[player] = true
|
|
154
|
+
end
|
|
155
|
+
end)
|
|
156
|
+
local function haveAllPlayersSeenAsyncInitOriginFrameType(frame)
|
|
157
|
+
local players = seenPlayersByAsyncInitOriginFrameType[frame]
|
|
158
|
+
if players == nil then
|
|
159
|
+
return false
|
|
160
|
+
end
|
|
161
|
+
for ____, player in ipairs(Player.all) do
|
|
162
|
+
if player.isUser and player.isPlaying and not (players[player] ~= nil) then
|
|
163
|
+
return false
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
keyByAsyncInitOriginFrameType[frame] = nil
|
|
167
|
+
return true
|
|
168
|
+
end
|
|
133
169
|
____exports.Frame = __TS__Class()
|
|
134
170
|
local Frame = ____exports.Frame
|
|
135
171
|
Frame.name = "Frame"
|
|
@@ -308,7 +344,17 @@ function Frame.byOrigin(self, frameType, index)
|
|
|
308
344
|
if index == nil then
|
|
309
345
|
index = 0
|
|
310
346
|
end
|
|
311
|
-
|
|
347
|
+
local frame = getOriginFrame(frameType, index)
|
|
348
|
+
local asyncInitOriginFrameTypeKey = keyByAsyncInitOriginFrameType[frameType]
|
|
349
|
+
if index == 0 and asyncInitOriginFrameTypeKey ~= nil and not haveAllPlayersSeenAsyncInitOriginFrameType(frameType) then
|
|
350
|
+
if getHandleId(frame) == 0 or seenAsyncInitOriginFrameTypes[frameType] ~= nil then
|
|
351
|
+
location(0, 0)
|
|
352
|
+
else
|
|
353
|
+
seenAsyncInitOriginFrameTypes[frameType] = true
|
|
354
|
+
seenAsyncInitOriginFrameTypesSocket:send(asyncInitOriginFrameTypeKey)
|
|
355
|
+
end
|
|
356
|
+
end
|
|
357
|
+
return self:of(frame)
|
|
312
358
|
end
|
|
313
359
|
Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
|
|
314
360
|
Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
|
package/core/types/item.d.ts
CHANGED
package/core/types/item.lua
CHANGED
|
@@ -10,9 +10,6 @@ local Unit = ____unit.Unit
|
|
|
10
10
|
local ____ability = require("engine.standard.fields.ability")
|
|
11
11
|
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
12
12
|
local MANA_COST_ABILITY_INTEGER_LEVEL_FIELD = ____ability.MANA_COST_ABILITY_INTEGER_LEVEL_FIELD
|
|
13
|
-
local ____math = require("math")
|
|
14
|
-
local max = ____math.max
|
|
15
|
-
local MINIMUM_POSITIVE_NORMALIZED_FLOAT = ____math.MINIMUM_POSITIVE_NORMALIZED_FLOAT
|
|
16
13
|
local ____sound = require("core.types.sound")
|
|
17
14
|
local Sound3D = ____sound.Sound3D
|
|
18
15
|
local SoundSettings = ____sound.SoundSettings
|
|
@@ -31,7 +28,11 @@ function EmulateImpactAbilityBehavior.prototype.emulateImpact(self, caster)
|
|
|
31
28
|
return false
|
|
32
29
|
end
|
|
33
30
|
caster.mana = caster.mana - manaCost
|
|
34
|
-
|
|
31
|
+
if cooldown == 0 then
|
|
32
|
+
self.ability:interruptCast()
|
|
33
|
+
else
|
|
34
|
+
self.ability.cooldownRemaining = cooldown
|
|
35
|
+
end
|
|
35
36
|
self:flashCasterEffect(caster)
|
|
36
37
|
local soundPresetId = self.ability:getField(ABILITY_SF_EFFECT_SOUND)
|
|
37
38
|
if soundPresetId ~= "" then
|
package/engine/buff.d.ts
CHANGED
|
@@ -219,6 +219,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
219
219
|
[K in keyof Omit<AdditionalParameters, keyof BuffParameters>]: AdditionalParameters[K] extends AbilityDependentValue<infer T> ? T : AdditionalParameters[K];
|
|
220
220
|
};
|
|
221
221
|
private readonly handle;
|
|
222
|
+
readonly previousBuff?: Buff;
|
|
222
223
|
private _timer?;
|
|
223
224
|
private readonly _level?;
|
|
224
225
|
private readonly _spellStealPriority?;
|
package/engine/buff.lua
CHANGED
|
@@ -404,7 +404,8 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
404
404
|
buffByTypeId = {}
|
|
405
405
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
406
406
|
end
|
|
407
|
-
|
|
407
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
408
|
+
local ____opt_15 = self.previousBuff
|
|
408
409
|
if ____opt_15 ~= nil then
|
|
409
410
|
____opt_15:destroy()
|
|
410
411
|
end
|
|
@@ -14,6 +14,8 @@ local abilityActionDummy = ____ability.abilityActionDummy
|
|
|
14
14
|
local doAbilityAction = ____ability.doAbilityAction
|
|
15
15
|
local doAbilityActionForceDummy = ____ability.doAbilityActionForceDummy
|
|
16
16
|
local startItemCooldown = ____ability.startItemCooldown
|
|
17
|
+
local ____timer = require("core.types.timer")
|
|
18
|
+
local Timer = ____timer.Timer
|
|
17
19
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
18
20
|
local setUnitAbilityLevel = SetUnitAbilityLevel
|
|
19
21
|
local setAbilityIntegerField = BlzSetAbilityIntegerField
|
|
@@ -35,8 +37,6 @@ local getAbilityStringLevelField = BlzGetAbilityStringLevelField
|
|
|
35
37
|
local getUnitAbilityCooldownRemaining = BlzGetUnitAbilityCooldownRemaining
|
|
36
38
|
local startUnitAbilityCooldown = BlzStartUnitAbilityCooldown
|
|
37
39
|
local getHandleId = GetHandleId
|
|
38
|
-
local getItemBooleanField = BlzGetItemBooleanField
|
|
39
|
-
local setItemBooleanField = BlzSetItemBooleanField
|
|
40
40
|
local unitHideAbility = BlzUnitHideAbility
|
|
41
41
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
42
42
|
local match = string.match
|
|
@@ -516,11 +516,14 @@ function ItemAbility.prototype.setField(self, field, levelOrValue, value)
|
|
|
516
516
|
)
|
|
517
517
|
end
|
|
518
518
|
function ItemAbility.prototype.interruptCast(self)
|
|
519
|
-
local
|
|
520
|
-
local
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
519
|
+
local item = self.owner
|
|
520
|
+
local itemHandle = item.handle
|
|
521
|
+
local ____opt_1 = item.owner
|
|
522
|
+
local itemOwnerHandle = ____opt_1 and ____opt_1.handle
|
|
523
|
+
local cooldownRemaining = doAbilityActionForceDummy(itemHandle, itemOwnerHandle, getAbilityCooldown, self.typeId)
|
|
524
|
+
if cooldownRemaining == 0 then
|
|
525
|
+
startItemCooldown(itemHandle, itemOwnerHandle, 1)
|
|
526
|
+
Timer:run(startItemCooldown, itemHandle, itemOwnerHandle, 0)
|
|
524
527
|
end
|
|
525
528
|
end
|
|
526
529
|
function ItemAbility.prototype.onDestroy(self)
|
|
@@ -543,17 +546,17 @@ __TS__SetDescriptor(
|
|
|
543
546
|
{
|
|
544
547
|
get = function(self)
|
|
545
548
|
local item = self.owner
|
|
546
|
-
local
|
|
547
|
-
local
|
|
548
|
-
local
|
|
549
|
-
return
|
|
549
|
+
local ____doAbilityActionForceDummy_6 = doAbilityActionForceDummy
|
|
550
|
+
local ____item_handle_5 = item.handle
|
|
551
|
+
local ____opt_3 = item.owner
|
|
552
|
+
return ____doAbilityActionForceDummy_6(____item_handle_5, ____opt_3 and ____opt_3.handle, getAbilityCooldown, self.typeId)
|
|
550
553
|
end,
|
|
551
554
|
set = function(self, cooldownRemaining)
|
|
552
555
|
local item = self.owner
|
|
553
|
-
local
|
|
554
|
-
local
|
|
555
|
-
local
|
|
556
|
-
|
|
556
|
+
local ____startItemCooldown_10 = startItemCooldown
|
|
557
|
+
local ____item_handle_9 = item.handle
|
|
558
|
+
local ____opt_7 = item.owner
|
|
559
|
+
____startItemCooldown_10(____item_handle_9, ____opt_7 and ____opt_7.handle, cooldownRemaining)
|
|
557
560
|
end
|
|
558
561
|
},
|
|
559
562
|
true
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
local ____item = require("engine.internal.item")
|
|
5
|
+
local Item = ____item.Item
|
|
6
|
+
local ____item = require("engine.standard.fields.item")
|
|
7
|
+
local CAN_BE_SOLD_TO_MERCHANTS_ITEM_FIELD = ____item.CAN_BE_SOLD_TO_MERCHANTS_ITEM_FIELD
|
|
8
|
+
local IS_ACTIVELY_USED_ITEM_FIELD = ____item.IS_ACTIVELY_USED_ITEM_FIELD
|
|
9
|
+
__TS__ObjectDefineProperty(
|
|
10
|
+
Item.prototype,
|
|
11
|
+
"canBeSold",
|
|
12
|
+
{
|
|
13
|
+
get = function(self)
|
|
14
|
+
return CAN_BE_SOLD_TO_MERCHANTS_ITEM_FIELD:getValue(self)
|
|
15
|
+
end,
|
|
16
|
+
set = function(self, value)
|
|
17
|
+
CAN_BE_SOLD_TO_MERCHANTS_ITEM_FIELD:setValue(self, value)
|
|
18
|
+
end
|
|
19
|
+
}
|
|
20
|
+
)
|
|
21
|
+
__TS__ObjectDefineProperty(
|
|
22
|
+
Item.prototype,
|
|
23
|
+
"isActivelyUsed",
|
|
24
|
+
{
|
|
25
|
+
get = function(self)
|
|
26
|
+
return IS_ACTIVELY_USED_ITEM_FIELD:getValue(self)
|
|
27
|
+
end,
|
|
28
|
+
set = function(self, value)
|
|
29
|
+
IS_ACTIVELY_USED_ITEM_FIELD:setValue(self, value)
|
|
30
|
+
end
|
|
31
|
+
}
|
|
32
|
+
)
|
|
33
|
+
return ____exports
|
|
@@ -32,8 +32,6 @@ export declare class Item extends Handle<jitem> {
|
|
|
32
32
|
get dropsOnDeath(): boolean;
|
|
33
33
|
set canBeDropped(canBeDropped: boolean);
|
|
34
34
|
get canBeDropped(): boolean;
|
|
35
|
-
set canBeSold(canBeSold: boolean);
|
|
36
|
-
get canBeSold(): boolean;
|
|
37
35
|
set perishes(perishes: boolean);
|
|
38
36
|
get perishes(): boolean;
|
|
39
37
|
set isPowerUp(isPowerUp: boolean);
|
|
@@ -42,8 +40,6 @@ export declare class Item extends Handle<jitem> {
|
|
|
42
40
|
get isDead(): boolean;
|
|
43
41
|
set isInvulnerable(isInvulnerable: boolean);
|
|
44
42
|
get isInvulnerable(): boolean;
|
|
45
|
-
set isActivelyUsed(isActivelyUsed: boolean);
|
|
46
|
-
get isActivelyUsed(): boolean;
|
|
47
43
|
set visible(v: boolean);
|
|
48
44
|
get visible(): boolean;
|
|
49
45
|
set level(v: number);
|
package/engine/internal/item.lua
CHANGED
|
@@ -356,19 +356,6 @@ __TS__SetDescriptor(
|
|
|
356
356
|
},
|
|
357
357
|
true
|
|
358
358
|
)
|
|
359
|
-
__TS__SetDescriptor(
|
|
360
|
-
Item.prototype,
|
|
361
|
-
"canBeSold",
|
|
362
|
-
{
|
|
363
|
-
get = function(self)
|
|
364
|
-
return isItemPawnable(self.handle)
|
|
365
|
-
end,
|
|
366
|
-
set = function(self, canBeSold)
|
|
367
|
-
setItemPawnable(self.handle, canBeSold)
|
|
368
|
-
end
|
|
369
|
-
},
|
|
370
|
-
true
|
|
371
|
-
)
|
|
372
359
|
__TS__SetDescriptor(
|
|
373
360
|
Item.prototype,
|
|
374
361
|
"perishes",
|
|
@@ -427,30 +414,6 @@ __TS__SetDescriptor(
|
|
|
427
414
|
},
|
|
428
415
|
true
|
|
429
416
|
)
|
|
430
|
-
__TS__SetDescriptor(
|
|
431
|
-
Item.prototype,
|
|
432
|
-
"isActivelyUsed",
|
|
433
|
-
{
|
|
434
|
-
get = function(self)
|
|
435
|
-
return getItemBooleanField(self.handle, ITEM_BF_ACTIVELY_USED)
|
|
436
|
-
end,
|
|
437
|
-
set = function(self, isActivelyUsed)
|
|
438
|
-
local handle = self.handle
|
|
439
|
-
local powerUp = isItemPowerup(handle)
|
|
440
|
-
local perishes = getItemBooleanField(handle, ITEM_BF_PERISHABLE)
|
|
441
|
-
local dropsOnDeath = getItemBooleanField(handle, ITEM_BF_DROPPED_WHEN_CARRIER_DIES)
|
|
442
|
-
local canBeDropped = getItemBooleanField(handle, ITEM_BF_CAN_BE_DROPPED)
|
|
443
|
-
local canBeSold = isItemPawnable(handle)
|
|
444
|
-
setItemBooleanField(handle, ITEM_BF_ACTIVELY_USED, isActivelyUsed)
|
|
445
|
-
setItemPawnable(handle, canBeSold)
|
|
446
|
-
setItemDroppable(handle, canBeDropped)
|
|
447
|
-
setItemDropOnDeath(handle, dropsOnDeath)
|
|
448
|
-
setItemBooleanField(handle, ITEM_BF_PERISHABLE, perishes)
|
|
449
|
-
setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, powerUp)
|
|
450
|
-
end
|
|
451
|
-
},
|
|
452
|
-
true
|
|
453
|
-
)
|
|
454
417
|
__TS__SetDescriptor(
|
|
455
418
|
Item.prototype,
|
|
456
419
|
"visible",
|
|
@@ -21,7 +21,7 @@ local unitRemoveItemFromSlot = UnitRemoveItemFromSlot
|
|
|
21
21
|
local handleByUnitItems = setmetatable({}, {__mode = "k"})
|
|
22
22
|
local function unitItemsNext(handle, index)
|
|
23
23
|
local slot = index & 7
|
|
24
|
-
if
|
|
24
|
+
if index >> 3 == slot then
|
|
25
25
|
return nil, nil
|
|
26
26
|
end
|
|
27
27
|
return index + 1, Item:of(unitItemInSlot(handle, slot))
|
package/engine/local-client.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export declare class LocalClient {
|
|
|
12
12
|
static get isHD(): boolean;
|
|
13
13
|
static get graphicsMode(): GraphicsMode;
|
|
14
14
|
static get isActive(): boolean;
|
|
15
|
+
static get isMinimized(): boolean;
|
|
15
16
|
static pingMinimap(x: number, y: number, duration: number, ...parameters: [] | [red: number, green: number, blue: number, flashy?: boolean] | [color: Color, flashy?: boolean]): void;
|
|
16
17
|
static get mouseFocusUnit(): Async<Unit> | undefined;
|
|
17
18
|
static get mainSelectedUnit(): Async<Unit> | undefined;
|
|
@@ -19,5 +20,9 @@ export declare class LocalClient {
|
|
|
19
20
|
previousMainSelectedUnit: Unit | undefined,
|
|
20
21
|
newMainSelectedUnit: Unit | undefined
|
|
21
22
|
]>;
|
|
23
|
+
static get isInTargetingMode(): boolean;
|
|
24
|
+
static readonly targetingModeEnterEvent: Event<[]>;
|
|
25
|
+
static readonly targetingModeLeaveEvent: Event<[]>;
|
|
26
|
+
static readonly targetingModeStateChangeEvent: Event<[]>;
|
|
22
27
|
static readonly onDisconnect: TriggerEvent<[]>;
|
|
23
28
|
}
|
package/engine/local-client.lua
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
3
|
+
local __TS__New = ____lualib.__TS__New
|
|
3
4
|
local __TS__Class = ____lualib.__TS__Class
|
|
4
5
|
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
5
6
|
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
6
|
-
local __TS__New = ____lualib.__TS__New
|
|
7
7
|
local ____exports = {}
|
|
8
|
+
local actualizeTargetingModeState
|
|
8
9
|
local ____unit = require("core.types.unit")
|
|
9
10
|
local Unit = ____unit.Unit
|
|
10
11
|
local ____event = require("event")
|
|
@@ -18,6 +19,8 @@ local ____timer = require("core.types.timer")
|
|
|
18
19
|
local Timer = ____timer.Timer
|
|
19
20
|
local ____color = require("core.types.color")
|
|
20
21
|
local Color = ____color.Color
|
|
22
|
+
local ____arrays = require("utility.arrays")
|
|
23
|
+
local array = ____arrays.array
|
|
21
24
|
local loadTOCFile = BlzLoadTOCFile
|
|
22
25
|
local getLocalClientWidth = BlzGetLocalClientWidth
|
|
23
26
|
local getLocalClientHeight = BlzGetLocalClientHeight
|
|
@@ -62,6 +65,10 @@ local function compareUnitsSelectionPriority(a, b)
|
|
|
62
65
|
end
|
|
63
66
|
local mainSelectedUnitChangeEvent
|
|
64
67
|
local previousMainSelectedUnit
|
|
68
|
+
local lastTargetingModeState = false
|
|
69
|
+
local targetingModeEnterEvent = __TS__New(Event)
|
|
70
|
+
local targetingModeLeaveEvent = __TS__New(Event)
|
|
71
|
+
local targetingModeStateChangeEvent = __TS__New(Event)
|
|
65
72
|
____exports.LocalClient = __TS__Class()
|
|
66
73
|
local LocalClient = ____exports.LocalClient
|
|
67
74
|
LocalClient.name = "LocalClient"
|
|
@@ -128,6 +135,13 @@ __TS__ObjectDefineProperty(
|
|
|
128
135
|
return isLocalClientActive()
|
|
129
136
|
end}
|
|
130
137
|
)
|
|
138
|
+
__TS__ObjectDefineProperty(
|
|
139
|
+
LocalClient,
|
|
140
|
+
"isMinimized",
|
|
141
|
+
{get = function(self)
|
|
142
|
+
return getLocalClientHeight() == 0
|
|
143
|
+
end}
|
|
144
|
+
)
|
|
131
145
|
__TS__ObjectDefineProperty(
|
|
132
146
|
LocalClient,
|
|
133
147
|
"mouseFocusUnit",
|
|
@@ -181,6 +195,16 @@ __TS__ObjectDefineProperty(
|
|
|
181
195
|
return mainSelectedUnitChangeEvent
|
|
182
196
|
end}
|
|
183
197
|
)
|
|
198
|
+
__TS__ObjectDefineProperty(
|
|
199
|
+
LocalClient,
|
|
200
|
+
"isInTargetingMode",
|
|
201
|
+
{get = function(self)
|
|
202
|
+
return actualizeTargetingModeState()
|
|
203
|
+
end}
|
|
204
|
+
)
|
|
205
|
+
LocalClient.targetingModeEnterEvent = targetingModeEnterEvent
|
|
206
|
+
LocalClient.targetingModeLeaveEvent = targetingModeLeaveEvent
|
|
207
|
+
LocalClient.targetingModeStateChangeEvent = targetingModeStateChangeEvent
|
|
184
208
|
LocalClient.onDisconnect = __TS__New(
|
|
185
209
|
TriggerEvent,
|
|
186
210
|
function(trigger)
|
|
@@ -188,6 +212,37 @@ LocalClient.onDisconnect = __TS__New(
|
|
|
188
212
|
end,
|
|
189
213
|
function() return end
|
|
190
214
|
)
|
|
215
|
+
local commandButtons = array(
|
|
216
|
+
12,
|
|
217
|
+
function(i) return Frame:byOrigin(ORIGIN_FRAME_COMMAND_BUTTON, i) end
|
|
218
|
+
)
|
|
219
|
+
local function getTargetingModeState()
|
|
220
|
+
for i = 0, 10 do
|
|
221
|
+
if commandButtons[i + 1].visible then
|
|
222
|
+
return false
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
return commandButtons[12].visible
|
|
226
|
+
end
|
|
227
|
+
actualizeTargetingModeState = function()
|
|
228
|
+
if getTargetingModeState() then
|
|
229
|
+
if not lastTargetingModeState then
|
|
230
|
+
lastTargetingModeState = true
|
|
231
|
+
Event.invoke(targetingModeEnterEvent)
|
|
232
|
+
Event.invoke(targetingModeStateChangeEvent)
|
|
233
|
+
end
|
|
234
|
+
return true
|
|
235
|
+
end
|
|
236
|
+
if lastTargetingModeState then
|
|
237
|
+
lastTargetingModeState = false
|
|
238
|
+
Event.invoke(targetingModeLeaveEvent)
|
|
239
|
+
Event.invoke(targetingModeStateChangeEvent)
|
|
240
|
+
end
|
|
241
|
+
return false
|
|
242
|
+
end
|
|
243
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
244
|
+
actualizeTargetingModeState()
|
|
245
|
+
end)
|
|
191
246
|
warpack.afterMapInit(function()
|
|
192
247
|
rawset(
|
|
193
248
|
____exports.LocalClient,
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { ObjectField } from "../object-field";
|
|
3
|
+
import { Item } from "../internal/item";
|
|
4
|
+
import { ItemType, ItemTypeId } from "../object-data/entry/item-type";
|
|
5
|
+
export declare abstract class ItemField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = any> extends ObjectField<ItemType, Item, ValueType, NativeFieldType> {
|
|
6
|
+
protected get instanceClass(): typeof Item;
|
|
7
|
+
protected getObjectDataEntryId(instance: Item): ItemTypeId;
|
|
8
|
+
}
|
|
9
|
+
export declare class ItemBooleanField extends ItemField<boolean, jitembooleanfield> {
|
|
10
|
+
protected get defaultValue(): boolean;
|
|
11
|
+
protected getNativeFieldById(id: number): jitembooleanfield;
|
|
12
|
+
protected hasNativeFieldValue(): boolean;
|
|
13
|
+
protected getNativeFieldValue(instance: Item): boolean;
|
|
14
|
+
protected setNativeFieldValue(instance: Item, value: boolean): boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare class ItemIntegerField extends ItemField<number, jitemintegerfield> {
|
|
17
|
+
protected get defaultValue(): number;
|
|
18
|
+
protected getNativeFieldById(id: number): jitemintegerfield;
|
|
19
|
+
protected hasNativeFieldValue(): boolean;
|
|
20
|
+
protected getNativeFieldValue(instance: Item): number;
|
|
21
|
+
protected setNativeFieldValue(instance: Item, value: number): boolean;
|
|
22
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
5
|
+
local ____exports = {}
|
|
6
|
+
local ____object_2Dfield = require("engine.object-field")
|
|
7
|
+
local ObjectField = ____object_2Dfield.ObjectField
|
|
8
|
+
local ____item = require("engine.internal.item")
|
|
9
|
+
local Item = ____item.Item
|
|
10
|
+
local ____lua_2Dsets = require("utility.lua-sets")
|
|
11
|
+
local luaSetOf = ____lua_2Dsets.luaSetOf
|
|
12
|
+
local convertItemBooleanField = ConvertItemBooleanField
|
|
13
|
+
local convertItemIntegerField = ConvertItemIntegerField
|
|
14
|
+
local getItemBooleanField = BlzGetItemBooleanField
|
|
15
|
+
local getItemIntegerField = BlzGetItemIntegerField
|
|
16
|
+
local isItemPawnable = IsItemPawnable
|
|
17
|
+
local isItemPowerup = IsItemPowerup
|
|
18
|
+
local setItemBooleanField = BlzSetItemBooleanField
|
|
19
|
+
local setItemDropOnDeath = SetItemDropOnDeath
|
|
20
|
+
local setItemDroppable = SetItemDroppable
|
|
21
|
+
local setItemPawnable = SetItemPawnable
|
|
22
|
+
local setItemIntegerField = BlzSetItemIntegerField
|
|
23
|
+
____exports.ItemField = __TS__Class()
|
|
24
|
+
local ItemField = ____exports.ItemField
|
|
25
|
+
ItemField.name = "ItemField"
|
|
26
|
+
__TS__ClassExtends(ItemField, ObjectField)
|
|
27
|
+
function ItemField.prototype.getObjectDataEntryId(self, instance)
|
|
28
|
+
return instance.typeId
|
|
29
|
+
end
|
|
30
|
+
__TS__SetDescriptor(
|
|
31
|
+
ItemField.prototype,
|
|
32
|
+
"instanceClass",
|
|
33
|
+
{get = function(self)
|
|
34
|
+
return Item
|
|
35
|
+
end},
|
|
36
|
+
true
|
|
37
|
+
)
|
|
38
|
+
local nativeItemBooleanFieldIds = luaSetOf(
|
|
39
|
+
fourCC("ipaw"),
|
|
40
|
+
fourCC("iusa")
|
|
41
|
+
)
|
|
42
|
+
____exports.ItemBooleanField = __TS__Class()
|
|
43
|
+
local ItemBooleanField = ____exports.ItemBooleanField
|
|
44
|
+
ItemBooleanField.name = "ItemBooleanField"
|
|
45
|
+
__TS__ClassExtends(ItemBooleanField, ____exports.ItemField)
|
|
46
|
+
function ItemBooleanField.prototype.getNativeFieldById(self, id)
|
|
47
|
+
return convertItemBooleanField(id)
|
|
48
|
+
end
|
|
49
|
+
function ItemBooleanField.prototype.hasNativeFieldValue(self)
|
|
50
|
+
return nativeItemBooleanFieldIds[self.id] ~= nil
|
|
51
|
+
end
|
|
52
|
+
function ItemBooleanField.prototype.getNativeFieldValue(self, instance)
|
|
53
|
+
return getItemBooleanField(instance.handle, self.nativeField)
|
|
54
|
+
end
|
|
55
|
+
function ItemBooleanField.prototype.setNativeFieldValue(self, instance, value)
|
|
56
|
+
if self.id == fourCC("iusa") then
|
|
57
|
+
local handle = instance.handle
|
|
58
|
+
local powerUp = isItemPowerup(handle)
|
|
59
|
+
local perishes = getItemBooleanField(handle, ITEM_BF_PERISHABLE)
|
|
60
|
+
local dropsOnDeath = getItemBooleanField(handle, ITEM_BF_DROPPED_WHEN_CARRIER_DIES)
|
|
61
|
+
local canBeDropped = getItemBooleanField(handle, ITEM_BF_CAN_BE_DROPPED)
|
|
62
|
+
local canBeSold = isItemPawnable(handle)
|
|
63
|
+
local result = setItemBooleanField(handle, ITEM_BF_ACTIVELY_USED, value)
|
|
64
|
+
setItemPawnable(handle, canBeSold)
|
|
65
|
+
setItemDroppable(handle, canBeDropped)
|
|
66
|
+
setItemDropOnDeath(handle, dropsOnDeath)
|
|
67
|
+
setItemBooleanField(handle, ITEM_BF_PERISHABLE, perishes)
|
|
68
|
+
setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, powerUp)
|
|
69
|
+
return result
|
|
70
|
+
end
|
|
71
|
+
return setItemBooleanField(instance.handle, self.nativeField, value)
|
|
72
|
+
end
|
|
73
|
+
__TS__SetDescriptor(
|
|
74
|
+
ItemBooleanField.prototype,
|
|
75
|
+
"defaultValue",
|
|
76
|
+
{get = function(self)
|
|
77
|
+
return false
|
|
78
|
+
end},
|
|
79
|
+
true
|
|
80
|
+
)
|
|
81
|
+
local nativeItemIntegerFieldIds = luaSetOf(
|
|
82
|
+
fourCC("ilev"),
|
|
83
|
+
fourCC("iuse"),
|
|
84
|
+
fourCC("icid"),
|
|
85
|
+
fourCC("ihtp"),
|
|
86
|
+
fourCC("ihpc"),
|
|
87
|
+
fourCC("ipri"),
|
|
88
|
+
fourCC("iarm"),
|
|
89
|
+
fourCC("iclr"),
|
|
90
|
+
fourCC("iclg"),
|
|
91
|
+
fourCC("iclb"),
|
|
92
|
+
fourCC("ical")
|
|
93
|
+
)
|
|
94
|
+
____exports.ItemIntegerField = __TS__Class()
|
|
95
|
+
local ItemIntegerField = ____exports.ItemIntegerField
|
|
96
|
+
ItemIntegerField.name = "ItemIntegerField"
|
|
97
|
+
__TS__ClassExtends(ItemIntegerField, ____exports.ItemField)
|
|
98
|
+
function ItemIntegerField.prototype.getNativeFieldById(self, id)
|
|
99
|
+
return convertItemIntegerField(id)
|
|
100
|
+
end
|
|
101
|
+
function ItemIntegerField.prototype.hasNativeFieldValue(self)
|
|
102
|
+
return nativeItemIntegerFieldIds[self.id] ~= nil
|
|
103
|
+
end
|
|
104
|
+
function ItemIntegerField.prototype.getNativeFieldValue(self, instance)
|
|
105
|
+
return getItemIntegerField(instance.handle, self.nativeField)
|
|
106
|
+
end
|
|
107
|
+
function ItemIntegerField.prototype.setNativeFieldValue(self, instance, value)
|
|
108
|
+
return setItemIntegerField(instance.handle, self.nativeField, value)
|
|
109
|
+
end
|
|
110
|
+
__TS__SetDescriptor(
|
|
111
|
+
ItemIntegerField.prototype,
|
|
112
|
+
"defaultValue",
|
|
113
|
+
{get = function(self)
|
|
114
|
+
return 0
|
|
115
|
+
end},
|
|
116
|
+
true
|
|
117
|
+
)
|
|
118
|
+
return ____exports
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____item = require("engine.object-field.item")
|
|
3
|
+
local ItemBooleanField = ____item.ItemBooleanField
|
|
4
|
+
____exports.CAN_BE_SOLD_TO_MERCHANTS_ITEM_FIELD = ItemBooleanField:create(fourCC("ipaw"))
|
|
5
|
+
____exports.IS_ACTIVELY_USED_ITEM_FIELD = ItemBooleanField:create(fourCC("iusa"))
|
|
6
|
+
return ____exports
|
package/lualib_bundle.lua
CHANGED
|
@@ -653,6 +653,7 @@ do
|
|
|
653
653
|
self.state = 0
|
|
654
654
|
self.fulfilledCallbacks = {}
|
|
655
655
|
self.rejectedCallbacks = {}
|
|
656
|
+
self.finallyCallbacks = {}
|
|
656
657
|
local success, ____error = ____pcall(
|
|
657
658
|
executor,
|
|
658
659
|
nil,
|
|
@@ -702,40 +703,14 @@ do
|
|
|
702
703
|
return self["then"](self, nil, onRejected)
|
|
703
704
|
end
|
|
704
705
|
function __TS__Promise.prototype.finally(self, onFinally)
|
|
705
|
-
if
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
function(____, x)
|
|
711
|
-
local ____self_2 = __TS__New(
|
|
712
|
-
__TS__Promise,
|
|
713
|
-
function(____, resolve) return resolve(
|
|
714
|
-
nil,
|
|
715
|
-
onFinally(nil)
|
|
716
|
-
) end
|
|
717
|
-
)
|
|
718
|
-
return ____self_2["then"](
|
|
719
|
-
____self_2,
|
|
720
|
-
function() return x end
|
|
721
|
-
)
|
|
722
|
-
end,
|
|
723
|
-
function(____, e)
|
|
724
|
-
local ____self_3 = __TS__New(
|
|
725
|
-
__TS__Promise,
|
|
726
|
-
function(____, resolve) return resolve(
|
|
727
|
-
nil,
|
|
728
|
-
onFinally(nil)
|
|
729
|
-
) end
|
|
730
|
-
)
|
|
731
|
-
return ____self_3["then"](
|
|
732
|
-
____self_3,
|
|
733
|
-
function()
|
|
734
|
-
error(e, 0)
|
|
735
|
-
end
|
|
736
|
-
)
|
|
706
|
+
if onFinally then
|
|
707
|
+
local ____self_finallyCallbacks_2 = self.finallyCallbacks
|
|
708
|
+
____self_finallyCallbacks_2[#____self_finallyCallbacks_2 + 1] = onFinally
|
|
709
|
+
if self.state ~= 0 then
|
|
710
|
+
onFinally(nil)
|
|
737
711
|
end
|
|
738
|
-
|
|
712
|
+
end
|
|
713
|
+
return self
|
|
739
714
|
end
|
|
740
715
|
function __TS__Promise.prototype.resolve(self, value)
|
|
741
716
|
if isPromiseLike(value) then
|
|
@@ -759,11 +734,22 @@ do
|
|
|
759
734
|
end
|
|
760
735
|
function __TS__Promise.prototype.invokeCallbacks(self, callbacks, value)
|
|
761
736
|
local callbacksLength = #callbacks
|
|
737
|
+
local finallyCallbacks = self.finallyCallbacks
|
|
738
|
+
local finallyCallbacksLength = #finallyCallbacks
|
|
762
739
|
if callbacksLength ~= 0 then
|
|
763
740
|
for i = 1, callbacksLength - 1 do
|
|
764
741
|
callbacks[i](callbacks, value)
|
|
765
742
|
end
|
|
766
|
-
|
|
743
|
+
if finallyCallbacksLength == 0 then
|
|
744
|
+
return callbacks[callbacksLength](callbacks, value)
|
|
745
|
+
end
|
|
746
|
+
callbacks[callbacksLength](callbacks, value)
|
|
747
|
+
end
|
|
748
|
+
if finallyCallbacksLength ~= 0 then
|
|
749
|
+
for i = 1, finallyCallbacksLength - 1 do
|
|
750
|
+
finallyCallbacks[i](finallyCallbacks)
|
|
751
|
+
end
|
|
752
|
+
return finallyCallbacks[finallyCallbacksLength](finallyCallbacks)
|
|
767
753
|
end
|
|
768
754
|
end
|
|
769
755
|
function __TS__Promise.prototype.createPromiseResolvingCallback(self, f, resolve, reject)
|
|
@@ -918,10 +904,8 @@ local function __TS__ObjectAssign(target, ...)
|
|
|
918
904
|
local sources = {...}
|
|
919
905
|
for i = 1, #sources do
|
|
920
906
|
local source = sources[i]
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
target[key] = source[key]
|
|
924
|
-
end
|
|
907
|
+
for key in pairs(source) do
|
|
908
|
+
target[key] = source[key]
|
|
925
909
|
end
|
|
926
910
|
end
|
|
927
911
|
return target
|
|
@@ -1027,13 +1011,6 @@ do
|
|
|
1027
1011
|
metatable = {}
|
|
1028
1012
|
setmetatable(target, metatable)
|
|
1029
1013
|
end
|
|
1030
|
-
if not isPrototype and not rawget(metatable, "_isOwnDescriptorMetatable") then
|
|
1031
|
-
local instanceMetatable = {}
|
|
1032
|
-
instanceMetatable._isOwnDescriptorMetatable = true
|
|
1033
|
-
setmetatable(instanceMetatable, metatable)
|
|
1034
|
-
setmetatable(target, instanceMetatable)
|
|
1035
|
-
metatable = instanceMetatable
|
|
1036
|
-
end
|
|
1037
1014
|
local value = rawget(target, key)
|
|
1038
1015
|
if value ~= nil then
|
|
1039
1016
|
rawset(target, key, nil)
|
|
@@ -1406,70 +1383,46 @@ do
|
|
|
1406
1383
|
return self:entries()
|
|
1407
1384
|
end
|
|
1408
1385
|
function Map.prototype.entries(self)
|
|
1409
|
-
local function getFirstKey()
|
|
1410
|
-
return self.firstKey
|
|
1411
|
-
end
|
|
1412
1386
|
local items = self.items
|
|
1413
1387
|
local nextKey = self.nextKey
|
|
1414
|
-
local key
|
|
1415
|
-
local started = false
|
|
1388
|
+
local key = self.firstKey
|
|
1416
1389
|
return {
|
|
1417
1390
|
[Symbol.iterator] = function(self)
|
|
1418
1391
|
return self
|
|
1419
1392
|
end,
|
|
1420
1393
|
next = function(self)
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
else
|
|
1425
|
-
key = nextKey[key]
|
|
1426
|
-
end
|
|
1427
|
-
return {done = not key, value = {key, items[key]}}
|
|
1394
|
+
local result = {done = not key, value = {key, items[key]}}
|
|
1395
|
+
key = nextKey[key]
|
|
1396
|
+
return result
|
|
1428
1397
|
end
|
|
1429
1398
|
}
|
|
1430
1399
|
end
|
|
1431
1400
|
function Map.prototype.keys(self)
|
|
1432
|
-
local function getFirstKey()
|
|
1433
|
-
return self.firstKey
|
|
1434
|
-
end
|
|
1435
1401
|
local nextKey = self.nextKey
|
|
1436
|
-
local key
|
|
1437
|
-
local started = false
|
|
1402
|
+
local key = self.firstKey
|
|
1438
1403
|
return {
|
|
1439
1404
|
[Symbol.iterator] = function(self)
|
|
1440
1405
|
return self
|
|
1441
1406
|
end,
|
|
1442
1407
|
next = function(self)
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
else
|
|
1447
|
-
key = nextKey[key]
|
|
1448
|
-
end
|
|
1449
|
-
return {done = not key, value = key}
|
|
1408
|
+
local result = {done = not key, value = key}
|
|
1409
|
+
key = nextKey[key]
|
|
1410
|
+
return result
|
|
1450
1411
|
end
|
|
1451
1412
|
}
|
|
1452
1413
|
end
|
|
1453
1414
|
function Map.prototype.values(self)
|
|
1454
|
-
local function getFirstKey()
|
|
1455
|
-
return self.firstKey
|
|
1456
|
-
end
|
|
1457
1415
|
local items = self.items
|
|
1458
1416
|
local nextKey = self.nextKey
|
|
1459
|
-
local key
|
|
1460
|
-
local started = false
|
|
1417
|
+
local key = self.firstKey
|
|
1461
1418
|
return {
|
|
1462
1419
|
[Symbol.iterator] = function(self)
|
|
1463
1420
|
return self
|
|
1464
1421
|
end,
|
|
1465
1422
|
next = function(self)
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
else
|
|
1470
|
-
key = nextKey[key]
|
|
1471
|
-
end
|
|
1472
|
-
return {done = not key, value = items[key]}
|
|
1423
|
+
local result = {done = not key, value = items[key]}
|
|
1424
|
+
key = nextKey[key]
|
|
1425
|
+
return result
|
|
1473
1426
|
end
|
|
1474
1427
|
}
|
|
1475
1428
|
end
|
|
@@ -2046,68 +1999,44 @@ do
|
|
|
2046
1999
|
return self:values()
|
|
2047
2000
|
end
|
|
2048
2001
|
function Set.prototype.entries(self)
|
|
2049
|
-
local function getFirstKey()
|
|
2050
|
-
return self.firstKey
|
|
2051
|
-
end
|
|
2052
2002
|
local nextKey = self.nextKey
|
|
2053
|
-
local key
|
|
2054
|
-
local started = false
|
|
2003
|
+
local key = self.firstKey
|
|
2055
2004
|
return {
|
|
2056
2005
|
[Symbol.iterator] = function(self)
|
|
2057
2006
|
return self
|
|
2058
2007
|
end,
|
|
2059
2008
|
next = function(self)
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
else
|
|
2064
|
-
key = nextKey[key]
|
|
2065
|
-
end
|
|
2066
|
-
return {done = not key, value = {key, key}}
|
|
2009
|
+
local result = {done = not key, value = {key, key}}
|
|
2010
|
+
key = nextKey[key]
|
|
2011
|
+
return result
|
|
2067
2012
|
end
|
|
2068
2013
|
}
|
|
2069
2014
|
end
|
|
2070
2015
|
function Set.prototype.keys(self)
|
|
2071
|
-
local function getFirstKey()
|
|
2072
|
-
return self.firstKey
|
|
2073
|
-
end
|
|
2074
2016
|
local nextKey = self.nextKey
|
|
2075
|
-
local key
|
|
2076
|
-
local started = false
|
|
2017
|
+
local key = self.firstKey
|
|
2077
2018
|
return {
|
|
2078
2019
|
[Symbol.iterator] = function(self)
|
|
2079
2020
|
return self
|
|
2080
2021
|
end,
|
|
2081
2022
|
next = function(self)
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
else
|
|
2086
|
-
key = nextKey[key]
|
|
2087
|
-
end
|
|
2088
|
-
return {done = not key, value = key}
|
|
2023
|
+
local result = {done = not key, value = key}
|
|
2024
|
+
key = nextKey[key]
|
|
2025
|
+
return result
|
|
2089
2026
|
end
|
|
2090
2027
|
}
|
|
2091
2028
|
end
|
|
2092
2029
|
function Set.prototype.values(self)
|
|
2093
|
-
local function getFirstKey()
|
|
2094
|
-
return self.firstKey
|
|
2095
|
-
end
|
|
2096
2030
|
local nextKey = self.nextKey
|
|
2097
|
-
local key
|
|
2098
|
-
local started = false
|
|
2031
|
+
local key = self.firstKey
|
|
2099
2032
|
return {
|
|
2100
2033
|
[Symbol.iterator] = function(self)
|
|
2101
2034
|
return self
|
|
2102
2035
|
end,
|
|
2103
2036
|
next = function(self)
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
else
|
|
2108
|
-
key = nextKey[key]
|
|
2109
|
-
end
|
|
2110
|
-
return {done = not key, value = key}
|
|
2037
|
+
local result = {done = not key, value = key}
|
|
2038
|
+
key = nextKey[key]
|
|
2039
|
+
return result
|
|
2111
2040
|
end
|
|
2112
2041
|
}
|
|
2113
2042
|
end
|
package/math.d.ts
CHANGED
|
@@ -23,6 +23,8 @@ export declare const floor: typeof math.floor;
|
|
|
23
23
|
export declare const log: typeof math.log;
|
|
24
24
|
export declare const max: typeof math.max;
|
|
25
25
|
export declare const min: typeof math.min;
|
|
26
|
+
export declare const sum: (x: number, ...numbers: number[]) => number;
|
|
27
|
+
export declare const product: (x: number, ...numbers: number[]) => number;
|
|
26
28
|
/** Returns the signum function of the argument;
|
|
27
29
|
* zero if the argument is zero,
|
|
28
30
|
* 1.0 if the argument is greater than zero,
|
package/math.lua
CHANGED
|
@@ -39,6 +39,20 @@ ____exports.floor = math.floor
|
|
|
39
39
|
____exports.log = math.log
|
|
40
40
|
____exports.max = math.max
|
|
41
41
|
____exports.min = math.min
|
|
42
|
+
____exports.sum = function(x, ...)
|
|
43
|
+
for i = 1, select("#", ...) do
|
|
44
|
+
local number = select(i, ...)
|
|
45
|
+
x = x + number
|
|
46
|
+
end
|
|
47
|
+
return x
|
|
48
|
+
end
|
|
49
|
+
____exports.product = function(x, ...)
|
|
50
|
+
for i = 1, select("#", ...) do
|
|
51
|
+
local number = select(i, ...)
|
|
52
|
+
x = x * number
|
|
53
|
+
end
|
|
54
|
+
return x
|
|
55
|
+
end
|
|
42
56
|
--- Returns the signum function of the argument;
|
|
43
57
|
-- zero if the argument is zero,
|
|
44
58
|
-- 1.0 if the argument is greater than zero,
|
package/operation.lua
CHANGED
|
@@ -54,7 +54,6 @@ function Operation.prototype.execute(self)
|
|
|
54
54
|
return __TS__AsyncAwaiter(function(____awaiter_resolve)
|
|
55
55
|
local result
|
|
56
56
|
local progress = self.progress
|
|
57
|
-
local ____hasReturned, ____returnValue
|
|
58
57
|
local ____try = __TS__AsyncAwaiter(function()
|
|
59
58
|
local maximum = __TS__Await(self:estimate())
|
|
60
59
|
self.maximum = maximum
|
|
@@ -77,8 +76,7 @@ function Operation.prototype.execute(self)
|
|
|
77
76
|
if onComplete ~= nil then
|
|
78
77
|
Event.invoke(onComplete, self, false, reason)
|
|
79
78
|
end
|
|
80
|
-
|
|
81
|
-
return
|
|
79
|
+
return ____awaiter_resolve(nil)
|
|
82
80
|
end
|
|
83
81
|
result = __TS__Await(self:work())
|
|
84
82
|
if self.progress ~= progress or self.maximum ~= maximum then
|
|
@@ -92,28 +90,21 @@ function Operation.prototype.execute(self)
|
|
|
92
90
|
end
|
|
93
91
|
until not (result == OperationContinue)
|
|
94
92
|
end)
|
|
95
|
-
____try
|
|
93
|
+
__TS__Await(____try.catch(
|
|
96
94
|
____try,
|
|
97
95
|
function(____, reason)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
____hasReturned = true
|
|
109
|
-
return
|
|
110
|
-
end)
|
|
96
|
+
reject(nil, reason)
|
|
97
|
+
local onFailure = ____rawget(self, "onFailure")
|
|
98
|
+
if onFailure ~= nil then
|
|
99
|
+
Event.invoke(onFailure, self, reason)
|
|
100
|
+
end
|
|
101
|
+
local onComplete = ____rawget(self, "onComplete")
|
|
102
|
+
if onComplete ~= nil then
|
|
103
|
+
Event.invoke(onComplete, self, false, reason)
|
|
104
|
+
end
|
|
105
|
+
return ____awaiter_resolve(nil)
|
|
111
106
|
end
|
|
112
|
-
)
|
|
113
|
-
__TS__Await(____try)
|
|
114
|
-
if ____hasReturned then
|
|
115
|
-
return ____awaiter_resolve(nil, ____returnValue)
|
|
116
|
-
end
|
|
107
|
+
))
|
|
117
108
|
resolve(nil, result)
|
|
118
109
|
local onSuccess = ____rawget(self, "onSuccess")
|
|
119
110
|
if onSuccess ~= nil then
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package",
|
|
3
3
|
"name": "warscript",
|
|
4
|
-
"version": "0.0.1-dev.
|
|
4
|
+
"version": "0.0.1-dev.6af7b85",
|
|
5
5
|
"description": "A typescript library for Warcraft III using Warpack.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"warcraft",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"@warscript/language-extensions": "^0.0.1",
|
|
25
|
-
"@warscript/tstl-plugin": "^0.0.
|
|
25
|
+
"@warscript/tstl-plugin": "^0.0.6",
|
|
26
26
|
"lua-types": "^2.13.1",
|
|
27
27
|
"warpack": "0.0.1-dev.e490aaf"
|
|
28
28
|
},
|
package/utility/linked-map.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export interface ReadonlyLinkedMap<K extends AnyNotNil, V> extends LuaPairsItera
|
|
|
15
15
|
readonly size: number;
|
|
16
16
|
}
|
|
17
17
|
export interface LinkedMap<K extends AnyNotNil, V> extends LuaPairsIterable<K, V> {
|
|
18
|
-
readonly
|
|
18
|
+
readonly __linkedMap: unique symbol;
|
|
19
19
|
}
|
|
20
20
|
export declare class LinkedMap<K extends AnyNotNil, V> implements ReadonlyLinkedMap<K, V> {
|
|
21
21
|
private k;
|
|
@@ -27,6 +27,7 @@ export declare class LinkedMap<K extends AnyNotNil, V> implements ReadonlyLinked
|
|
|
27
27
|
remove(key: K): boolean;
|
|
28
28
|
contains(key: AnyNotNil): key is K & OneSidedTypeGuard;
|
|
29
29
|
get size(): number;
|
|
30
|
+
protected __len(): number;
|
|
30
31
|
protected __pairs(this: LinkedMap<K, V>): LuaIterator<LuaMultiReturn<[K | undefined, V | undefined]>, IteratorState<K, V>>;
|
|
31
32
|
}
|
|
32
33
|
export declare const emptyLinkedMap: <K extends AnyNotNil, V>() => ReadonlyLinkedMap<K, V>;
|
package/utility/linked-map.lua
CHANGED
|
@@ -47,6 +47,9 @@ end
|
|
|
47
47
|
function LinkedMap.prototype.contains(self, key)
|
|
48
48
|
return self.keys:contains(key)
|
|
49
49
|
end
|
|
50
|
+
function LinkedMap.prototype.__len(self)
|
|
51
|
+
return self.keys.size
|
|
52
|
+
end
|
|
50
53
|
function LinkedMap.prototype.__pairs(self)
|
|
51
54
|
return linkedMapNext, {n = self.k.f, t = self.k.n, v = self.v}, nil
|
|
52
55
|
end
|
|
@@ -88,6 +91,9 @@ function EmptyLinkedMap.prototype.remove(self)
|
|
|
88
91
|
0
|
|
89
92
|
)
|
|
90
93
|
end
|
|
94
|
+
function EmptyLinkedMap.prototype.__len(self)
|
|
95
|
+
return 0
|
|
96
|
+
end
|
|
91
97
|
function EmptyLinkedMap.prototype.__pairs(self)
|
|
92
98
|
return linkedMapNext, emptyIteratorState, nil
|
|
93
99
|
end
|
package/utility/linked-set.d.ts
CHANGED
|
@@ -49,6 +49,7 @@ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet
|
|
|
49
49
|
toArray(): T[];
|
|
50
50
|
sumOf(selector: ((value: T) => number) | KeysOfType<T, number>): number;
|
|
51
51
|
sortBy<R>(selector: ((value: T) => R) | KeysOfType<T, R>): void;
|
|
52
|
+
protected __len(): number;
|
|
52
53
|
protected __pairs(this: LinkedSet<T>): LuaIterator<T | undefined, IteratorState<T>>;
|
|
53
54
|
}
|
|
54
55
|
export declare const emptyLinkedSet: <T extends AnyNotNil>() => ReadonlyLinkedSet<T>;
|
package/utility/linked-set.lua
CHANGED
|
@@ -188,6 +188,9 @@ function LinkedSet.prototype.sortBy(self, selector)
|
|
|
188
188
|
self.f = array[1]
|
|
189
189
|
self.l = array[s]
|
|
190
190
|
end
|
|
191
|
+
function LinkedSet.prototype.__len(self)
|
|
192
|
+
return self.s
|
|
193
|
+
end
|
|
191
194
|
function LinkedSet.prototype.__pairs(self)
|
|
192
195
|
return linkedSetNext, {t = self.n, n = self.f}, nil
|
|
193
196
|
end
|
|
@@ -209,6 +212,9 @@ function EmptyLinkedSet.prototype.add(self)
|
|
|
209
212
|
0
|
|
210
213
|
)
|
|
211
214
|
end
|
|
215
|
+
function EmptyLinkedSet.prototype.__len(self)
|
|
216
|
+
return 0
|
|
217
|
+
end
|
|
212
218
|
function EmptyLinkedSet.prototype.__pairs(self)
|
|
213
219
|
return linkedSetNext, emptyIteratorState, nil
|
|
214
220
|
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
type OneSidedTypeGuard = {
|
|
3
|
+
readonly __oneSidedTypeGuard: unique symbol;
|
|
4
|
+
};
|
|
5
|
+
export interface ReadonlyUnorderedMap<K extends AnyNotNil, V> extends LuaPairsIterable<K, V> {
|
|
6
|
+
get(key: K): V | undefined;
|
|
7
|
+
contains(key: AnyNotNil): key is K & OneSidedTypeGuard;
|
|
8
|
+
readonly size: number;
|
|
9
|
+
}
|
|
10
|
+
export interface UnorderedMap<K extends AnyNotNil, V> extends LuaPairsIterable<K, V> {
|
|
11
|
+
readonly __unorderedMap: unique symbol;
|
|
12
|
+
}
|
|
13
|
+
export declare class UnorderedMap<K extends AnyNotNil, V> implements ReadonlyUnorderedMap<K, V> {
|
|
14
|
+
private readonly v;
|
|
15
|
+
private s;
|
|
16
|
+
get(key: K): V | undefined;
|
|
17
|
+
getOrPut(key: K, defaultValue: (this: void) => V): V;
|
|
18
|
+
put(key: K, value: V): void;
|
|
19
|
+
remove(key: K): boolean;
|
|
20
|
+
contains(key: AnyNotNil): key is K & OneSidedTypeGuard;
|
|
21
|
+
get size(): number;
|
|
22
|
+
protected __len(): number;
|
|
23
|
+
protected __pairs(this: UnorderedMap<K, V>): ReturnType<typeof pairs>;
|
|
24
|
+
}
|
|
25
|
+
export declare const emptyUnorderedMap: <K extends AnyNotNil, V>() => ReadonlyUnorderedMap<K, V>;
|
|
26
|
+
export declare const mutableUnorderedMap: <K extends AnyNotNil, V>() => UnorderedMap<K, V>;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
4
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
5
|
+
local __TS__New = ____lualib.__TS__New
|
|
6
|
+
local ____exports = {}
|
|
7
|
+
local ____exception = require("exception")
|
|
8
|
+
local UnsupportedOperationException = ____exception.UnsupportedOperationException
|
|
9
|
+
____exports.UnorderedMap = __TS__Class()
|
|
10
|
+
local UnorderedMap = ____exports.UnorderedMap
|
|
11
|
+
UnorderedMap.name = "UnorderedMap"
|
|
12
|
+
function UnorderedMap.prototype.____constructor(self)
|
|
13
|
+
self.v = {}
|
|
14
|
+
self.s = 0
|
|
15
|
+
end
|
|
16
|
+
function UnorderedMap.prototype.get(self, key)
|
|
17
|
+
return self.v[key]
|
|
18
|
+
end
|
|
19
|
+
function UnorderedMap.prototype.getOrPut(self, key, defaultValue)
|
|
20
|
+
local value = self.v[key]
|
|
21
|
+
if value ~= nil then
|
|
22
|
+
return value
|
|
23
|
+
end
|
|
24
|
+
value = defaultValue()
|
|
25
|
+
if value ~= nil then
|
|
26
|
+
self.v[key] = value
|
|
27
|
+
self.s = self.s + 1
|
|
28
|
+
end
|
|
29
|
+
return value
|
|
30
|
+
end
|
|
31
|
+
function UnorderedMap.prototype.put(self, key, value)
|
|
32
|
+
local has = self.v[key] ~= nil
|
|
33
|
+
self.v[key] = value
|
|
34
|
+
if value ~= nil and not has then
|
|
35
|
+
self.s = self.s + 1
|
|
36
|
+
elseif value == nil and has then
|
|
37
|
+
self.s = self.s - 1
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
function UnorderedMap.prototype.remove(self, key)
|
|
41
|
+
if self.v[key] ~= nil then
|
|
42
|
+
self.v[key] = nil
|
|
43
|
+
self.s = self.s - 1
|
|
44
|
+
return true
|
|
45
|
+
end
|
|
46
|
+
return false
|
|
47
|
+
end
|
|
48
|
+
function UnorderedMap.prototype.contains(self, key)
|
|
49
|
+
return self.v[key] ~= nil
|
|
50
|
+
end
|
|
51
|
+
function UnorderedMap.prototype.__len(self)
|
|
52
|
+
return self.s
|
|
53
|
+
end
|
|
54
|
+
function UnorderedMap.prototype.__pairs(self)
|
|
55
|
+
return pairs(self.v)
|
|
56
|
+
end
|
|
57
|
+
__TS__SetDescriptor(
|
|
58
|
+
UnorderedMap.prototype,
|
|
59
|
+
"size",
|
|
60
|
+
{get = function(self)
|
|
61
|
+
return self.s
|
|
62
|
+
end},
|
|
63
|
+
true
|
|
64
|
+
)
|
|
65
|
+
local EmptyUnorderedMap = __TS__Class()
|
|
66
|
+
EmptyUnorderedMap.name = "EmptyUnorderedMap"
|
|
67
|
+
__TS__ClassExtends(EmptyUnorderedMap, ____exports.UnorderedMap)
|
|
68
|
+
function EmptyUnorderedMap.prototype.getOrPut(self)
|
|
69
|
+
error(
|
|
70
|
+
__TS__New(UnsupportedOperationException),
|
|
71
|
+
0
|
|
72
|
+
)
|
|
73
|
+
end
|
|
74
|
+
function EmptyUnorderedMap.prototype.put(self)
|
|
75
|
+
error(
|
|
76
|
+
__TS__New(UnsupportedOperationException),
|
|
77
|
+
0
|
|
78
|
+
)
|
|
79
|
+
end
|
|
80
|
+
function EmptyUnorderedMap.prototype.remove(self)
|
|
81
|
+
error(
|
|
82
|
+
__TS__New(UnsupportedOperationException),
|
|
83
|
+
0
|
|
84
|
+
)
|
|
85
|
+
end
|
|
86
|
+
function EmptyUnorderedMap.prototype.__len(self)
|
|
87
|
+
return 0
|
|
88
|
+
end
|
|
89
|
+
function EmptyUnorderedMap.prototype.__pairs(self)
|
|
90
|
+
return pairs(self.v)
|
|
91
|
+
end
|
|
92
|
+
local EMPTY_UNORDERED_MAP = __TS__New(EmptyUnorderedMap)
|
|
93
|
+
____exports.emptyUnorderedMap = function()
|
|
94
|
+
return EMPTY_UNORDERED_MAP
|
|
95
|
+
end
|
|
96
|
+
____exports.mutableUnorderedMap = function()
|
|
97
|
+
return __TS__New(____exports.UnorderedMap)
|
|
98
|
+
end
|
|
99
|
+
return ____exports
|