warscript 0.0.1-dev.6745db1 → 0.0.1-dev.685e1bc
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/attributes.d.ts +1 -0
- package/attributes.lua +9 -0
- package/core/types/frame.lua +61 -10
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +17 -1
- package/core/types/player.lua +67 -23
- package/core/types/playerCamera.lua +44 -0
- package/core/types/sound.lua +1 -1
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +3 -2
- package/core/types/timer.lua +22 -2
- package/decl/native.d.ts +2 -2
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +12 -1
- package/engine/behavior.lua +199 -65
- package/engine/behaviour/ability/apply-buff.lua +4 -4
- package/engine/behaviour/ability/damage.d.ts +3 -0
- package/engine/behaviour/ability/damage.lua +8 -2
- package/engine/behaviour/ability/emulate-impact.lua +5 -4
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability.d.ts +11 -6
- package/engine/behaviour/ability.lua +31 -1
- package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
- package/engine/behaviour/unit/stun-immunity.lua +17 -7
- package/engine/behaviour/unit.d.ts +15 -5
- package/engine/behaviour/unit.lua +126 -22
- package/engine/buff.d.ts +65 -21
- package/engine/buff.lua +362 -179
- package/engine/internal/ability.d.ts +3 -1
- package/engine/internal/ability.lua +41 -24
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item.d.ts +11 -14
- package/engine/internal/item.lua +76 -70
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +14 -14
- package/engine/internal/unit/ability.lua +72 -45
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +6 -0
- package/engine/internal/unit/bonus.lua +33 -3
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit-missile-launch.lua +51 -20
- package/engine/internal/unit.d.ts +17 -21
- package/engine/internal/unit.lua +170 -195
- package/engine/local-client.d.ts +7 -0
- package/engine/local-client.lua +86 -1
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type.d.ts +2 -0
- package/engine/object-data/entry/ability-type.lua +88 -5
- package/engine/object-data/entry/buff-type/applicable.lua +113 -109
- package/engine/object-data/entry/destructible-type.d.ts +27 -1
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/unit-type.d.ts +4 -0
- package/engine/object-data/entry/unit-type.lua +76 -32
- package/engine/object-field/ability.d.ts +3 -3
- package/engine/object-field/ability.lua +9 -8
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +20 -5
- package/engine/object-field/unit.lua +61 -0
- package/engine/object-field.d.ts +12 -4
- package/engine/object-field.lua +273 -126
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/standard/fields/unit.d.ts +11 -3
- package/engine/standard/fields/unit.lua +15 -2
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.lua +3 -2
- package/engine/unit.d.ts +5 -0
- package/engine/unit.lua +5 -0
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +10 -8
- package/objutil/object.lua +1 -1
- package/operation.lua +1 -4
- package/package.json +5 -5
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +1 -0
- package/utility/arrays.lua +8 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +46 -1
- package/utility/lua-maps.d.ts +11 -2
- package/utility/lua-maps.lua +33 -2
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/attributes.d.ts
CHANGED
|
@@ -13,5 +13,6 @@ export declare namespace Attribute {
|
|
|
13
13
|
export declare class AttributesHolder {
|
|
14
14
|
readonly get: (<T>(attribute: Attribute<T>) => T | undefined) & LuaExtension<"TableGetMethod">;
|
|
15
15
|
readonly set: (<T>(attribute: Attribute<T>, value: T | undefined) => void) & LuaExtension<"TableSetMethod">;
|
|
16
|
+
getOrPut<T>(attribute: Attribute<T>, defaultValue: () => T): T;
|
|
16
17
|
}
|
|
17
18
|
export {};
|
package/attributes.lua
CHANGED
|
@@ -20,4 +20,13 @@ local AttributesHolder = ____exports.AttributesHolder
|
|
|
20
20
|
AttributesHolder.name = "AttributesHolder"
|
|
21
21
|
function AttributesHolder.prototype.____constructor(self)
|
|
22
22
|
end
|
|
23
|
+
function AttributesHolder.prototype.getOrPut(self, attribute, defaultValue)
|
|
24
|
+
local value = self[attribute]
|
|
25
|
+
if value ~= nil then
|
|
26
|
+
return value
|
|
27
|
+
end
|
|
28
|
+
value = defaultValue()
|
|
29
|
+
self[attribute] = value
|
|
30
|
+
return value
|
|
31
|
+
end
|
|
23
32
|
return ____exports
|
package/core/types/frame.lua
CHANGED
|
@@ -19,13 +19,28 @@ local ____frame_2Dcoordinates = require("engine.internal.misc.frame-coordinates"
|
|
|
19
19
|
local FRAME_MAX_Y = ____frame_2Dcoordinates.FRAME_MAX_Y
|
|
20
20
|
local FRAME_MIN_Y = ____frame_2Dcoordinates.FRAME_MIN_Y
|
|
21
21
|
local getFrameMinXMaxX = ____frame_2Dcoordinates.getFrameMinXMaxX
|
|
22
|
+
local ____playerCamera = require("core.types.playerCamera")
|
|
23
|
+
local frameCoordinatesToWorld = ____playerCamera.frameCoordinatesToWorld
|
|
24
|
+
local worldCoordinatesToFrame = ____playerCamera.worldCoordinatesToFrame
|
|
25
|
+
local ____get_2Dterrain_2Dz = require("engine.internal.misc.get-terrain-z")
|
|
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
|
|
22
36
|
local frameClick = BlzFrameClick
|
|
23
37
|
local frameGetEnable = BlzFrameGetEnable
|
|
24
38
|
local frameIsVisible = BlzFrameIsVisible
|
|
25
39
|
local frameSetEnable = BlzFrameSetEnable
|
|
26
40
|
local frameSetScale = BlzFrameSetScale
|
|
27
|
-
local
|
|
28
|
-
local
|
|
41
|
+
local getHandleId = GetHandleId
|
|
42
|
+
local getOriginFrame = BlzGetOriginFrame
|
|
43
|
+
local location = Location
|
|
29
44
|
local ____rawget = _G.rawget
|
|
30
45
|
local rawset = _G.rawset
|
|
31
46
|
local invoke = Event.invoke
|
|
@@ -127,6 +142,30 @@ do
|
|
|
127
142
|
FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
|
|
128
143
|
end
|
|
129
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
|
|
130
169
|
____exports.Frame = __TS__Class()
|
|
131
170
|
local Frame = ____exports.Frame
|
|
132
171
|
Frame.name = "Frame"
|
|
@@ -305,7 +344,17 @@ function Frame.byOrigin(self, frameType, index)
|
|
|
305
344
|
if index == nil then
|
|
306
345
|
index = 0
|
|
307
346
|
end
|
|
308
|
-
|
|
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)
|
|
309
358
|
end
|
|
310
359
|
Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
|
|
311
360
|
Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
|
|
@@ -936,16 +985,19 @@ __TS__ObjectDefineProperty(
|
|
|
936
985
|
local event = __TS__New(Event)
|
|
937
986
|
local syncX = 0
|
|
938
987
|
local syncY = 0
|
|
939
|
-
local
|
|
940
|
-
local
|
|
988
|
+
local syncFrameX = 0
|
|
989
|
+
local syncFrameY = 0
|
|
941
990
|
local lastX = syncX
|
|
942
991
|
local lastY = syncY
|
|
943
992
|
self.onMouseMove:addListener(function(player, x, y)
|
|
944
993
|
if player.isLocal then
|
|
945
994
|
syncX = x
|
|
946
995
|
syncY = y
|
|
947
|
-
|
|
948
|
-
|
|
996
|
+
syncFrameX, syncFrameY = worldCoordinatesToFrame(
|
|
997
|
+
x,
|
|
998
|
+
y,
|
|
999
|
+
getTerrainZ(x, y)
|
|
1000
|
+
)
|
|
949
1001
|
lastX = x
|
|
950
1002
|
lastY = y
|
|
951
1003
|
invoke(event, x, y)
|
|
@@ -955,9 +1007,8 @@ __TS__ObjectDefineProperty(
|
|
|
955
1007
|
if syncX == 0 and syncY == 0 then
|
|
956
1008
|
return
|
|
957
1009
|
end
|
|
958
|
-
local x
|
|
959
|
-
|
|
960
|
-
if x ~= lastX or y ~= lastY then
|
|
1010
|
+
local x, y, ____, isDefinite = frameCoordinatesToWorld(syncFrameX, syncFrameY)
|
|
1011
|
+
if isDefinite and (x ~= lastX or y ~= lastY) then
|
|
961
1012
|
lastX = x
|
|
962
1013
|
lastY = y
|
|
963
1014
|
invoke(event, x, y)
|
package/core/types/item.d.ts
CHANGED
package/core/types/item.lua
CHANGED
package/core/types/player.d.ts
CHANGED
|
@@ -7,6 +7,18 @@ import { UpgradeId } from "../../engine/object-data/entry/upgrade";
|
|
|
7
7
|
interface Unit {
|
|
8
8
|
handle: junit;
|
|
9
9
|
}
|
|
10
|
+
export declare const enum PlayerAllianceType {
|
|
11
|
+
PASSIVE = 0,
|
|
12
|
+
RESCUABLE = 1,
|
|
13
|
+
HELP_REQUEST = 2,
|
|
14
|
+
HELP_RESPONSE = 3,
|
|
15
|
+
SHARED_XP = 4,
|
|
16
|
+
SHARED_SPELLS = 5,
|
|
17
|
+
SHARED_VISION = 6,
|
|
18
|
+
SHARED_VISION_FORCED = 7,
|
|
19
|
+
SHARED_CONTROL = 8,
|
|
20
|
+
SHARED_ADVANCED_CONTROL = 9
|
|
21
|
+
}
|
|
10
22
|
export declare class Player extends Handle<jplayer> {
|
|
11
23
|
static readonly all: Player[];
|
|
12
24
|
static readonly local: Player;
|
|
@@ -16,6 +28,7 @@ export declare class Player extends Handle<jplayer> {
|
|
|
16
28
|
static readonly neutralExtra: Player;
|
|
17
29
|
private static events;
|
|
18
30
|
readonly id: number;
|
|
31
|
+
readonly slotState: jplayerslotstate;
|
|
19
32
|
constructor(handle: jplayer);
|
|
20
33
|
onDestroy(): HandleDestructor;
|
|
21
34
|
toString(): string;
|
|
@@ -33,7 +46,6 @@ export declare class Player extends Handle<jplayer> {
|
|
|
33
46
|
get isUser(): boolean;
|
|
34
47
|
get isPlaying(): boolean;
|
|
35
48
|
get controller(): jmapcontrol;
|
|
36
|
-
get slotState(): jplayerslotstate;
|
|
37
49
|
clearSelection(): void;
|
|
38
50
|
selectSingle(unit: Unit): void;
|
|
39
51
|
select(unit: Unit): void;
|
|
@@ -42,6 +54,8 @@ export declare class Player extends Handle<jplayer> {
|
|
|
42
54
|
forceUICancel(): void;
|
|
43
55
|
isAllyOf(other: Player): boolean;
|
|
44
56
|
isEnemyOf(other: Player): boolean;
|
|
57
|
+
setAlliance(other: Player, type: PlayerAllianceType, value: boolean): void;
|
|
58
|
+
getAlliance(other: Player, type: PlayerAllianceType): boolean;
|
|
45
59
|
setAbilityAvailable(abilityId: number, available: boolean): void;
|
|
46
60
|
getMaximumUpgradeLevel(upgradeId: UpgradeId): number;
|
|
47
61
|
setMaximumUpgradeLevel(upgradeId: UpgradeId, maximumLevel: number): void;
|
|
@@ -50,6 +64,7 @@ export declare class Player extends Handle<jplayer> {
|
|
|
50
64
|
setUpgradeLevel(upgradeId: UpgradeId, level: number): void;
|
|
51
65
|
private static getEvent;
|
|
52
66
|
private static getMouseEvent;
|
|
67
|
+
static get allianceChangedEvent(): Readonly<Record<PlayerAllianceType, Event<[Player]>>>;
|
|
53
68
|
static get onLeave(): Event<[Player]>;
|
|
54
69
|
static get onMouseDown(): Event<[Player, jmousebuttontype]>;
|
|
55
70
|
static get onMouseUp(): Event<[Player, jmousebuttontype]>;
|
|
@@ -66,6 +81,7 @@ export declare class Player extends Handle<jplayer> {
|
|
|
66
81
|
};
|
|
67
82
|
};
|
|
68
83
|
static get onChat(): Event<[player: Player, message: string]>;
|
|
84
|
+
static readonly colorChangedEvent: Event<[Player]>;
|
|
69
85
|
static byId(id: number): Player | undefined;
|
|
70
86
|
}
|
|
71
87
|
export {};
|
package/core/types/player.lua
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__New = ____lualib.__TS__New
|
|
2
3
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
4
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
-
local __TS__New = ____lualib.__TS__New
|
|
5
5
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
6
6
|
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
7
7
|
local ____exports = {}
|
|
@@ -23,20 +23,40 @@ local ____math = require("math")
|
|
|
23
23
|
local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
|
|
24
24
|
local ____player_2Dlocal_2Dhandle = require("engine.internal.misc.player-local-handle")
|
|
25
25
|
local PLAYER_LOCAL_HANDLE = ____player_2Dlocal_2Dhandle.PLAYER_LOCAL_HANDLE
|
|
26
|
+
local ____lazy = require("utility.lazy")
|
|
27
|
+
local lazyRecord = ____lazy.lazyRecord
|
|
28
|
+
local getPlayerAlliance = GetPlayerAlliance
|
|
26
29
|
local getPlayerColor = GetPlayerColor
|
|
27
30
|
local getPlayerName = GetPlayerName
|
|
28
31
|
local getPlayerTechCount = GetPlayerTechCount
|
|
29
32
|
local getPlayerTechMaxAllowed = GetPlayerTechMaxAllowed
|
|
33
|
+
local getTriggerPlayer = GetTriggerPlayer
|
|
34
|
+
local setPlayerAlliance = SetPlayerAlliance
|
|
30
35
|
local setPlayerTechMaxAllowed = SetPlayerTechMaxAllowed
|
|
31
36
|
local setPlayerTechResearched = SetPlayerTechResearched
|
|
32
37
|
local setPlayerAbilityAvailable = SetPlayerAbilityAvailable
|
|
38
|
+
local triggerRegisterPlayerAllianceChange = TriggerRegisterPlayerAllianceChange
|
|
33
39
|
local playerNative = _G.Player
|
|
40
|
+
local nativeByPlayerAllianceType = {
|
|
41
|
+
[0] = ALLIANCE_PASSIVE,
|
|
42
|
+
[1] = ALLIANCE_RESCUABLE,
|
|
43
|
+
[2] = ALLIANCE_HELP_REQUEST,
|
|
44
|
+
[3] = ALLIANCE_HELP_RESPONSE,
|
|
45
|
+
[4] = ALLIANCE_SHARED_XP,
|
|
46
|
+
[5] = ALLIANCE_SHARED_SPELLS,
|
|
47
|
+
[6] = ALLIANCE_SHARED_VISION,
|
|
48
|
+
[7] = ALLIANCE_SHARED_VISION_FORCED,
|
|
49
|
+
[8] = ALLIANCE_SHARED_CONTROL,
|
|
50
|
+
[9] = ALLIANCE_SHARED_ADVANCED_CONTROL
|
|
51
|
+
}
|
|
52
|
+
local playerColorChangedEvent = __TS__New(Event)
|
|
34
53
|
____exports.Player = __TS__Class()
|
|
35
54
|
local Player = ____exports.Player
|
|
36
55
|
Player.name = "Player"
|
|
37
56
|
__TS__ClassExtends(Player, Handle)
|
|
38
57
|
function Player.prototype.____constructor(self, handle)
|
|
39
58
|
Handle.prototype.____constructor(self, handle)
|
|
59
|
+
self.slotState = GetPlayerSlotState(self.handle)
|
|
40
60
|
self.id = GetPlayerId(handle)
|
|
41
61
|
end
|
|
42
62
|
function Player.prototype.onDestroy(self)
|
|
@@ -85,6 +105,12 @@ end
|
|
|
85
105
|
function Player.prototype.isEnemyOf(self, other)
|
|
86
106
|
return IsPlayerEnemy(self.handle, other.handle)
|
|
87
107
|
end
|
|
108
|
+
function Player.prototype.setAlliance(self, other, ____type, value)
|
|
109
|
+
setPlayerAlliance(self.handle, other.handle, nativeByPlayerAllianceType[____type], value)
|
|
110
|
+
end
|
|
111
|
+
function Player.prototype.getAlliance(self, other, ____type)
|
|
112
|
+
return getPlayerAlliance(self.handle, other.handle, nativeByPlayerAllianceType[____type])
|
|
113
|
+
end
|
|
88
114
|
function Player.prototype.setAbilityAvailable(self, abilityId, available)
|
|
89
115
|
setPlayerAbilityAvailable(self.handle, abilityId, available)
|
|
90
116
|
end
|
|
@@ -124,14 +150,11 @@ function Player.getMouseEvent(self, event, collector)
|
|
|
124
150
|
self.events[eventId] = __TS__New(
|
|
125
151
|
TriggerEvent,
|
|
126
152
|
function(trigger)
|
|
127
|
-
Timer:
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
for ____, player in ipairs(____exports.Player.all) do
|
|
131
|
-
TriggerRegisterPlayerEvent(trigger, player.handle, event)
|
|
132
|
-
end
|
|
153
|
+
Timer:run(function()
|
|
154
|
+
for ____, player in ipairs(____exports.Player.all) do
|
|
155
|
+
TriggerRegisterPlayerEvent(trigger, player.handle, event)
|
|
133
156
|
end
|
|
134
|
-
)
|
|
157
|
+
end)
|
|
135
158
|
end,
|
|
136
159
|
collector or (function() return {} end)
|
|
137
160
|
)
|
|
@@ -180,7 +203,7 @@ function Player.getKeyEvent(self, isDown)
|
|
|
180
203
|
TriggerAddCondition(
|
|
181
204
|
trigger,
|
|
182
205
|
Condition(function()
|
|
183
|
-
local player = ____exports.Player:of(
|
|
206
|
+
local player = ____exports.Player:of(getTriggerPlayer())
|
|
184
207
|
local key = BlzGetTriggerPlayerKey()
|
|
185
208
|
local metaKey = BlzGetTriggerPlayerMetaKey()
|
|
186
209
|
Event.invoke(event, player, key, metaKey)
|
|
@@ -279,6 +302,7 @@ __TS__SetDescriptor(
|
|
|
279
302
|
end,
|
|
280
303
|
set = function(self, color)
|
|
281
304
|
SetPlayerColor(self.handle, color.handle)
|
|
305
|
+
Event.invoke(playerColorChangedEvent, self)
|
|
282
306
|
end
|
|
283
307
|
},
|
|
284
308
|
true
|
|
@@ -341,7 +365,7 @@ __TS__SetDescriptor(
|
|
|
341
365
|
Player.prototype,
|
|
342
366
|
"isUser",
|
|
343
367
|
{get = function(self)
|
|
344
|
-
return
|
|
368
|
+
return self.controller == MAP_CONTROL_USER
|
|
345
369
|
end},
|
|
346
370
|
true
|
|
347
371
|
)
|
|
@@ -349,7 +373,7 @@ __TS__SetDescriptor(
|
|
|
349
373
|
Player.prototype,
|
|
350
374
|
"isPlaying",
|
|
351
375
|
{get = function(self)
|
|
352
|
-
return
|
|
376
|
+
return self.slotState == PLAYER_SLOT_STATE_PLAYING
|
|
353
377
|
end},
|
|
354
378
|
true
|
|
355
379
|
)
|
|
@@ -357,17 +381,30 @@ __TS__SetDescriptor(
|
|
|
357
381
|
Player.prototype,
|
|
358
382
|
"controller",
|
|
359
383
|
{get = function(self)
|
|
360
|
-
|
|
384
|
+
local controller = GetPlayerController(self.handle)
|
|
385
|
+
rawset(self, "controller", controller)
|
|
386
|
+
return controller
|
|
361
387
|
end},
|
|
362
388
|
true
|
|
363
389
|
)
|
|
364
|
-
|
|
365
|
-
Player
|
|
366
|
-
"
|
|
390
|
+
__TS__ObjectDefineProperty(
|
|
391
|
+
Player,
|
|
392
|
+
"allianceChangedEvent",
|
|
367
393
|
{get = function(self)
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
394
|
+
local event = lazyRecord(function(____type)
|
|
395
|
+
return __TS__New(
|
|
396
|
+
TriggerEvent,
|
|
397
|
+
function(trigger)
|
|
398
|
+
for ____, player in ipairs(____exports.Player.all) do
|
|
399
|
+
triggerRegisterPlayerAllianceChange(trigger, player.handle, nativeByPlayerAllianceType[____type])
|
|
400
|
+
end
|
|
401
|
+
end,
|
|
402
|
+
function() return ____exports.Player:of(getTriggerPlayer()) end
|
|
403
|
+
)
|
|
404
|
+
end)
|
|
405
|
+
rawset(self, "allianceChangedEvent", event)
|
|
406
|
+
return event
|
|
407
|
+
end}
|
|
371
408
|
)
|
|
372
409
|
__TS__ObjectDefineProperty(
|
|
373
410
|
Player,
|
|
@@ -375,7 +412,7 @@ __TS__ObjectDefineProperty(
|
|
|
375
412
|
{get = function(self)
|
|
376
413
|
return ____exports.Player:getEvent(
|
|
377
414
|
EVENT_PLAYER_LEAVE,
|
|
378
|
-
function() return ____exports.Player:of(
|
|
415
|
+
function() return ____exports.Player:of(getTriggerPlayer()) end
|
|
379
416
|
)
|
|
380
417
|
end}
|
|
381
418
|
)
|
|
@@ -385,7 +422,7 @@ __TS__ObjectDefineProperty(
|
|
|
385
422
|
{get = function(self)
|
|
386
423
|
return ____exports.Player:getMouseEvent(
|
|
387
424
|
EVENT_PLAYER_MOUSE_DOWN,
|
|
388
|
-
function() return ____exports.Player:of(
|
|
425
|
+
function() return ____exports.Player:of(getTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
|
|
389
426
|
)
|
|
390
427
|
end}
|
|
391
428
|
)
|
|
@@ -395,7 +432,7 @@ __TS__ObjectDefineProperty(
|
|
|
395
432
|
{get = function(self)
|
|
396
433
|
return ____exports.Player:getMouseEvent(
|
|
397
434
|
EVENT_PLAYER_MOUSE_UP,
|
|
398
|
-
function() return ____exports.Player:of(
|
|
435
|
+
function() return ____exports.Player:of(getTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
|
|
399
436
|
)
|
|
400
437
|
end}
|
|
401
438
|
)
|
|
@@ -405,7 +442,7 @@ __TS__ObjectDefineProperty(
|
|
|
405
442
|
{get = function(self)
|
|
406
443
|
return ____exports.Player:getMouseEvent(
|
|
407
444
|
EVENT_PLAYER_MOUSE_MOVE,
|
|
408
|
-
function() return ____exports.Player:of(
|
|
445
|
+
function() return ____exports.Player:of(getTriggerPlayer()), vec2(
|
|
409
446
|
BlzGetTriggerPlayerMouseX(),
|
|
410
447
|
BlzGetTriggerPlayerMouseY()
|
|
411
448
|
) end
|
|
@@ -441,10 +478,17 @@ __TS__ObjectDefineProperty(
|
|
|
441
478
|
TriggerRegisterPlayerChatEvent(trigger, player.handle, "", false)
|
|
442
479
|
end
|
|
443
480
|
end,
|
|
444
|
-
function() return ____exports.Player:of(
|
|
481
|
+
function() return ____exports.Player:of(getTriggerPlayer()), GetEventPlayerChatString() end
|
|
445
482
|
)
|
|
446
483
|
rawset(self, "onChat", event)
|
|
447
484
|
return event
|
|
448
485
|
end}
|
|
449
486
|
)
|
|
487
|
+
Player.colorChangedEvent = playerColorChangedEvent
|
|
488
|
+
____exports.Player.onLeave:addListener(
|
|
489
|
+
999999,
|
|
490
|
+
function(player)
|
|
491
|
+
rawset(player, "slotState", PLAYER_SLOT_STATE_LEFT)
|
|
492
|
+
end
|
|
493
|
+
)
|
|
450
494
|
return ____exports
|
|
@@ -13,6 +13,8 @@ local ____frame_2Dcoordinates = require("engine.internal.misc.frame-coordinates"
|
|
|
13
13
|
local FRAME_MAX_Y = ____frame_2Dcoordinates.FRAME_MAX_Y
|
|
14
14
|
local FRAME_MIN_Y = ____frame_2Dcoordinates.FRAME_MIN_Y
|
|
15
15
|
local getFrameMinXMaxX = ____frame_2Dcoordinates.getFrameMinXMaxX
|
|
16
|
+
local ____get_2Dterrain_2Dz = require("engine.internal.misc.get-terrain-z")
|
|
17
|
+
local getTerrainZ = ____get_2Dterrain_2Dz.getTerrainZ
|
|
16
18
|
local getHandleId = GetHandleId
|
|
17
19
|
local setCameraField = SetCameraField
|
|
18
20
|
local getCameraField = GetCameraField
|
|
@@ -26,6 +28,7 @@ local resetToGameCamera = ResetToGameCamera
|
|
|
26
28
|
local cos = math.cos
|
|
27
29
|
local deg = math.deg
|
|
28
30
|
local sin = math.sin
|
|
31
|
+
local sqrt = math.sqrt
|
|
29
32
|
local memoized = {}
|
|
30
33
|
____exports.PlayerCamera = __TS__Class()
|
|
31
34
|
local PlayerCamera = ____exports.PlayerCamera
|
|
@@ -233,4 +236,45 @@ ____exports.worldCoordinatesToFrame = function(x, y, z)
|
|
|
233
236
|
local frameY = 0.42625 - yCenterScreenShift + (cameraAngleOfAttackSinRotationCos * dx + cameraAngleOfAttackSinRotationSin * dy - cameraAngleOfAttackCos * dz) / xPrime
|
|
234
237
|
return frameX, frameY, xPrime < 0 and frameX >= frameMinX and frameX <= frameMaxX and frameY >= FRAME_MIN_Y and frameY <= FRAME_MAX_Y
|
|
235
238
|
end
|
|
239
|
+
---
|
|
240
|
+
-- @internal For use by internal systems only.
|
|
241
|
+
____exports.frameCoordinatesToWorld = function(x, y)
|
|
242
|
+
if not isCameraViewPrecalculated then
|
|
243
|
+
precalculateCameraView()
|
|
244
|
+
end
|
|
245
|
+
local a = (x - 0.4) * scaleFactor
|
|
246
|
+
local b = (0.42625 - yCenterScreenShift - y) * scaleFactor
|
|
247
|
+
local nx = 1 / sqrt(1 + a * a + b * b)
|
|
248
|
+
local ny = sqrt(1 - (1 + b * b) * nx * nx)
|
|
249
|
+
local nz = sqrt(1 - nx * nx - ny * ny)
|
|
250
|
+
if a > 0 then
|
|
251
|
+
ny = -ny
|
|
252
|
+
end
|
|
253
|
+
if b < 0 then
|
|
254
|
+
nz = -nz
|
|
255
|
+
end
|
|
256
|
+
local nxPrime = cameraAngleOfAttackCosRotationCos * nx - cameraRotationSin * ny + cameraAngleOfAttackSinRotationCos * nz
|
|
257
|
+
local nyPrime = cameraAngleOfAttackCosRotationSin * nx + cameraRotationCos * ny + cameraAngleOfAttackSinRotationSin * nz
|
|
258
|
+
local nzPrime = -cameraAngleOfAttackSin * nx + cameraAngleOfAttackCos * nz
|
|
259
|
+
local zGuess = getTerrainZ(cameraEyeX, cameraEyeY)
|
|
260
|
+
local xGuess = cameraEyeX + nxPrime * (cameraEyeZ - zGuess) / nzPrime
|
|
261
|
+
local yGuess = cameraEyeY + nyPrime * (cameraEyeZ - zGuess) / nzPrime
|
|
262
|
+
local zWorld = getTerrainZ(xGuess, yGuess)
|
|
263
|
+
local deltaZ = zWorld - zGuess
|
|
264
|
+
zGuess = zWorld
|
|
265
|
+
local zWorldOld = zWorld
|
|
266
|
+
local deltaZOld = deltaZ
|
|
267
|
+
local i = 0
|
|
268
|
+
while (deltaZ > 1 or deltaZ < -1) and i < 50 do
|
|
269
|
+
xGuess = cameraEyeX + nxPrime * (cameraEyeZ - zGuess) / nzPrime
|
|
270
|
+
yGuess = cameraEyeY + nyPrime * (cameraEyeZ - zGuess) / nzPrime
|
|
271
|
+
zWorld = getTerrainZ(xGuess, yGuess)
|
|
272
|
+
deltaZ = zWorld - zGuess
|
|
273
|
+
zGuess = (deltaZOld * zWorld - deltaZ * zWorldOld) / (deltaZOld - deltaZ)
|
|
274
|
+
zWorldOld = zWorld
|
|
275
|
+
deltaZOld = deltaZ
|
|
276
|
+
i = i + 1
|
|
277
|
+
end
|
|
278
|
+
return xGuess, yGuess, zWorld, i < 50
|
|
279
|
+
end
|
|
236
280
|
return ____exports
|
package/core/types/sound.lua
CHANGED
|
@@ -22,7 +22,7 @@ local setSoundPlayPosition = SetSoundPlayPosition
|
|
|
22
22
|
local stopSound = StopSound
|
|
23
23
|
local attachSoundToUnit = AttachSoundToUnit
|
|
24
24
|
local killSoundWhenDone = KillSoundWhenDone
|
|
25
|
-
____exports.SoundChannel = SoundChannel or ({})
|
|
25
|
+
____exports.SoundChannel = ____exports.SoundChannel or ({})
|
|
26
26
|
____exports.SoundChannel.General = 0
|
|
27
27
|
____exports.SoundChannel[____exports.SoundChannel.General] = "General"
|
|
28
28
|
____exports.SoundChannel.UnitSelection = 1
|
package/core/types/tileCell.d.ts
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
|
-
|
|
2
|
+
import { AttributesHolder } from "../../attributes";
|
|
3
|
+
export declare class TileCell extends AttributesHolder implements Readonly<Vec2> {
|
|
3
4
|
private readonly id;
|
|
4
5
|
readonly x: number;
|
|
5
6
|
readonly y: number;
|
|
6
7
|
readonly z: undefined;
|
|
7
8
|
protected constructor(id: number, x: number, y: number, z: undefined);
|
|
9
|
+
get up(): TileCell;
|
|
10
|
+
get down(): TileCell;
|
|
11
|
+
get left(): TileCell;
|
|
12
|
+
get right(): TileCell;
|
|
13
|
+
get terrainTypeId(): number;
|
|
14
|
+
set terrainTypeId(terrainTypeId: number);
|
|
15
|
+
get terrainVariance(): number;
|
|
16
|
+
set terrainVariance(terrainVariance: number);
|
|
17
|
+
randomizeTerrainVariance(): void;
|
|
8
18
|
isInRangeOf(x: number, y: number, range: number): boolean;
|
|
9
19
|
isInRangeOf(tileCell: TileCell, range: number): boolean;
|
|
10
20
|
static getInRect(minX: number, minY: number, maxX: number, maxY: number): TileCell[];
|
package/core/types/tileCell.lua
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
3
4
|
local __TS__New = ____lualib.__TS__New
|
|
5
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
4
6
|
local ____exports = {}
|
|
7
|
+
local ____attributes = require("attributes")
|
|
8
|
+
local AttributesHolder = ____attributes.AttributesHolder
|
|
9
|
+
local getTerrainType = GetTerrainType
|
|
10
|
+
local setTerrainType = SetTerrainType
|
|
11
|
+
local getTerrainVariance = GetTerrainVariance
|
|
5
12
|
local abs = math.abs
|
|
6
13
|
local ____type = math.type
|
|
7
14
|
local ult = math.ult
|
|
@@ -9,13 +16,27 @@ local tileCellById = {}
|
|
|
9
16
|
____exports.TileCell = __TS__Class()
|
|
10
17
|
local TileCell = ____exports.TileCell
|
|
11
18
|
TileCell.name = "TileCell"
|
|
19
|
+
__TS__ClassExtends(TileCell, AttributesHolder)
|
|
12
20
|
function TileCell.prototype.____constructor(self, id, x, y, z)
|
|
21
|
+
AttributesHolder.prototype.____constructor(self)
|
|
13
22
|
self.id = id
|
|
14
23
|
self.x = x
|
|
15
24
|
self.y = y
|
|
16
25
|
self.z = z
|
|
17
26
|
tileCellById[id] = self
|
|
18
27
|
end
|
|
28
|
+
function TileCell.prototype.randomizeTerrainVariance(self)
|
|
29
|
+
local x = self.x
|
|
30
|
+
local y = self.y
|
|
31
|
+
setTerrainType(
|
|
32
|
+
x,
|
|
33
|
+
y,
|
|
34
|
+
getTerrainType(x, y),
|
|
35
|
+
-1,
|
|
36
|
+
1,
|
|
37
|
+
1
|
|
38
|
+
)
|
|
39
|
+
end
|
|
19
40
|
function TileCell.prototype.isInRangeOf(self, x, y, range)
|
|
20
41
|
if range == nil then
|
|
21
42
|
range = y
|
|
@@ -97,4 +118,80 @@ function TileCell.of(x, y)
|
|
|
97
118
|
nil
|
|
98
119
|
)
|
|
99
120
|
end
|
|
121
|
+
__TS__SetDescriptor(
|
|
122
|
+
TileCell.prototype,
|
|
123
|
+
"up",
|
|
124
|
+
{get = function(self)
|
|
125
|
+
return ____exports.TileCell.of(self.x, self.y + 128)
|
|
126
|
+
end},
|
|
127
|
+
true
|
|
128
|
+
)
|
|
129
|
+
__TS__SetDescriptor(
|
|
130
|
+
TileCell.prototype,
|
|
131
|
+
"down",
|
|
132
|
+
{get = function(self)
|
|
133
|
+
return ____exports.TileCell.of(self.x, self.y - 128)
|
|
134
|
+
end},
|
|
135
|
+
true
|
|
136
|
+
)
|
|
137
|
+
__TS__SetDescriptor(
|
|
138
|
+
TileCell.prototype,
|
|
139
|
+
"left",
|
|
140
|
+
{get = function(self)
|
|
141
|
+
return ____exports.TileCell.of(self.x - 128, self.y)
|
|
142
|
+
end},
|
|
143
|
+
true
|
|
144
|
+
)
|
|
145
|
+
__TS__SetDescriptor(
|
|
146
|
+
TileCell.prototype,
|
|
147
|
+
"right",
|
|
148
|
+
{get = function(self)
|
|
149
|
+
return ____exports.TileCell.of(self.x + 128, self.y)
|
|
150
|
+
end},
|
|
151
|
+
true
|
|
152
|
+
)
|
|
153
|
+
__TS__SetDescriptor(
|
|
154
|
+
TileCell.prototype,
|
|
155
|
+
"terrainTypeId",
|
|
156
|
+
{
|
|
157
|
+
get = function(self)
|
|
158
|
+
return getTerrainType(self.x, self.y)
|
|
159
|
+
end,
|
|
160
|
+
set = function(self, terrainTypeId)
|
|
161
|
+
local x = self.x
|
|
162
|
+
local y = self.y
|
|
163
|
+
setTerrainType(
|
|
164
|
+
x,
|
|
165
|
+
y,
|
|
166
|
+
terrainTypeId,
|
|
167
|
+
getTerrainVariance(x, y),
|
|
168
|
+
1,
|
|
169
|
+
1
|
|
170
|
+
)
|
|
171
|
+
end
|
|
172
|
+
},
|
|
173
|
+
true
|
|
174
|
+
)
|
|
175
|
+
__TS__SetDescriptor(
|
|
176
|
+
TileCell.prototype,
|
|
177
|
+
"terrainVariance",
|
|
178
|
+
{
|
|
179
|
+
get = function(self)
|
|
180
|
+
return getTerrainVariance(self.x, self.y)
|
|
181
|
+
end,
|
|
182
|
+
set = function(self, terrainVariance)
|
|
183
|
+
local x = self.x
|
|
184
|
+
local y = self.y
|
|
185
|
+
setTerrainType(
|
|
186
|
+
x,
|
|
187
|
+
y,
|
|
188
|
+
getTerrainType(x, y),
|
|
189
|
+
terrainVariance,
|
|
190
|
+
1,
|
|
191
|
+
1
|
|
192
|
+
)
|
|
193
|
+
end
|
|
194
|
+
},
|
|
195
|
+
true
|
|
196
|
+
)
|
|
100
197
|
return ____exports
|
package/core/types/timer.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Event } from "../../event";
|
|
3
3
|
import { AbstractDestroyable, Destructor } from "../../destroyable";
|
|
4
|
+
import { CallbackId } from "../../utility/callback-array";
|
|
4
5
|
declare const enum TimerPropertyKey {
|
|
5
6
|
HANDLE = 0,
|
|
6
7
|
DESTROY_ON_EXPIRATION = 1,
|
|
@@ -22,8 +23,8 @@ export declare class Timer extends AbstractDestroyable {
|
|
|
22
23
|
pause(): void;
|
|
23
24
|
resume(): void;
|
|
24
25
|
static create(): Timer;
|
|
25
|
-
static run<T, K extends KeysOfType<T, (this: T, ...args: any) => any>>(object: T, key: K, ...parameters: T[K] extends (this: T, ...args: any) => any ? Parameters<T[K]> : never):
|
|
26
|
-
static run<Args extends any[]>(callback: (this: void, ...args: Args) => void, ...args: Args):
|
|
26
|
+
static run<T, K extends KeysOfType<T, (this: T, ...args: any) => any>>(object: T, key: K, ...parameters: T[K] extends (this: T, ...args: any) => any ? Parameters<T[K]> : never): CallbackId;
|
|
27
|
+
static run<Args extends any[]>(callback: (this: void, ...args: Args) => void, ...args: Args): CallbackId;
|
|
27
28
|
static simple<Args extends any[]>(timeout: number, callback: (...args: Args) => void, ...args: Args): Timer;
|
|
28
29
|
static periodic<Args extends any[]>(period: number, callback: (this: void, timer: Timer, ...args: Args) => void, ...args: Args): Timer;
|
|
29
30
|
static counted(period: number, count: number, callback: (this: void, timer: Timer) => void): Timer;
|