warscript 0.0.1-dev.ee2345e → 0.0.1-dev.ee6f224
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 +5 -1
- package/attributes.lua +8 -1
- package/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +8 -1
- package/core/types/frame.lua +117 -22
- package/core/types/group.d.ts +0 -1
- package/core/types/image.d.ts +0 -1
- package/core/types/missile.d.ts +2 -2
- package/core/types/missile.lua +8 -2
- package/core/types/player.lua +3 -1
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/tileCell.d.ts +9 -0
- package/core/types/tileCell.lua +92 -0
- package/core/types/timer.d.ts +8 -8
- package/core/types/timer.lua +39 -23
- package/core/types/unit.lua +8 -0
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/index.d.ts +1 -0
- package/decl/native.d.ts +846 -790
- package/engine/ability.d.ts +1 -1
- package/engine/behavior.d.ts +15 -10
- package/engine/behavior.lua +112 -33
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +8 -5
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.d.ts +6 -1
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +39 -11
- package/engine/behaviour/ability/damage.lua +83 -37
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +43 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -15
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
- package/engine/behaviour/ability/remove-buffs.lua +28 -0
- package/engine/behaviour/ability/restore-mana.d.ts +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -0
- package/engine/behaviour/ability.d.ts +27 -4
- package/engine/behaviour/ability.lua +152 -26
- package/engine/behaviour/unit/stun-immunity.d.ts +5 -4
- package/engine/behaviour/unit/stun-immunity.lua +43 -27
- package/engine/behaviour/unit.d.ts +40 -2
- package/engine/behaviour/unit.lua +208 -0
- package/engine/buff.d.ts +104 -44
- package/engine/buff.lua +453 -215
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +23 -14
- package/engine/internal/ability.lua +129 -85
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +8 -7
- package/engine/internal/item.lua +153 -51
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +98 -14
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/bonus.d.ts +11 -8
- package/engine/internal/unit/bonus.lua +23 -1
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +78 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit+ability.lua +12 -3
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +33 -7
- package/engine/internal/unit.d.ts +89 -24
- package/engine/internal/unit.lua +594 -206
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +82 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -3
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
- package/engine/object-data/entry/ability-type/mine.lua +39 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
- package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +19 -18
- package/engine/object-data/entry/ability-type.lua +90 -36
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
- package/engine/object-data/entry/buff-type.d.ts +6 -13
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +1 -2
- package/engine/object-data/entry/item-type/blank.d.ts +0 -1
- package/engine/object-data/entry/item-type.d.ts +15 -2
- package/engine/object-data/entry/item-type.lua +93 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -2
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +58 -7
- package/engine/object-data/entry/unit-type.lua +480 -75
- package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
- package/engine/object-data/entry/upgrade.d.ts +1 -2
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +18 -17
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +28 -5
- package/engine/object-field/ability.lua +59 -5
- package/engine/object-field/unit.d.ts +57 -3
- package/engine/object-field/unit.lua +207 -7
- package/engine/object-field.d.ts +17 -7
- package/engine/object-field.lua +190 -90
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +22 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/entries/unit-type.d.ts +39 -1
- package/engine/standard/entries/unit-type.lua +39 -1
- package/engine/standard/fields/ability.d.ts +3 -1
- package/engine/standard/fields/ability.lua +3 -1
- package/engine/standard/fields/unit.d.ts +4 -0
- package/engine/standard/fields/unit.lua +7 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +249 -10
- package/engine/unit.d.ts +4 -0
- package/engine/unit.lua +13 -2
- package/event.d.ts +2 -3
- package/event.lua +9 -5
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +146 -42
- package/math/vec2.d.ts +2 -9
- package/math.d.ts +0 -2
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/ability.d.ts +0 -1
- package/objutil/buff.d.ts +0 -1
- package/objutil/buff.lua +2 -3
- package/objutil/object.d.ts +0 -1
- package/objutil/unit.d.ts +0 -1
- package/objutil/unit.lua +8 -0
- package/package.json +13 -14
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/patch-lualib.lua +1 -1
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/string.d.ts +30 -0
- package/string.lua +14 -0
- package/util/stream.d.ts +0 -1
- package/utility/arrays.d.ts +12 -5
- package/utility/arrays.lua +37 -3
- package/utility/bit-set.d.ts +0 -2
- package/utility/callback-array.d.ts +13 -0
- package/utility/callback-array.lua +46 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +12 -3
- package/utility/linked-set.lua +8 -2
- package/utility/lua-maps.d.ts +16 -4
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +3 -2
- package/utility/lua-sets.lua +7 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +1 -0
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/core/types/missile.lua
CHANGED
|
@@ -41,7 +41,8 @@ function Missile.prototype.____constructor(self, effect, retarget, update)
|
|
|
41
41
|
end
|
|
42
42
|
head = self
|
|
43
43
|
end
|
|
44
|
-
function Missile.launch(self, config, source, target, onArrival)
|
|
44
|
+
function Missile.launch(self, config, source, target, onArrival, ...)
|
|
45
|
+
local parameters = {...}
|
|
45
46
|
local ____opt_0 = config.sourceOffset
|
|
46
47
|
local offsetX = ____opt_0 and ____opt_0.x or 0
|
|
47
48
|
local ____opt_2 = config.sourceOffset
|
|
@@ -142,7 +143,12 @@ function Missile.launch(self, config, source, target, onArrival)
|
|
|
142
143
|
visualPositionArcY = currentVisualTargetY
|
|
143
144
|
visualPositionArcZ = currentVisualTargetZ
|
|
144
145
|
retarget = false
|
|
145
|
-
safeCall(
|
|
146
|
+
safeCall(
|
|
147
|
+
onArrival,
|
|
148
|
+
self,
|
|
149
|
+
true,
|
|
150
|
+
table.unpack(parameters)
|
|
151
|
+
)
|
|
146
152
|
return not retarget
|
|
147
153
|
end
|
|
148
154
|
if arcVSpeed ~= 0 and (currentTargetX ~= initialTargetX or currentTargetY ~= initialTargetY) then
|
package/core/types/player.lua
CHANGED
|
@@ -21,6 +21,8 @@ local ____exception = require("exception")
|
|
|
21
21
|
local IllegalStateException = ____exception.IllegalStateException
|
|
22
22
|
local ____math = require("math")
|
|
23
23
|
local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
|
|
24
|
+
local ____player_2Dlocal_2Dhandle = require("engine.internal.misc.player-local-handle")
|
|
25
|
+
local PLAYER_LOCAL_HANDLE = ____player_2Dlocal_2Dhandle.PLAYER_LOCAL_HANDLE
|
|
24
26
|
local getPlayerColor = GetPlayerColor
|
|
25
27
|
local getPlayerName = GetPlayerName
|
|
26
28
|
local getPlayerTechCount = GetPlayerTechCount
|
|
@@ -249,7 +251,7 @@ Player.all = (function()
|
|
|
249
251
|
end
|
|
250
252
|
return all
|
|
251
253
|
end)()
|
|
252
|
-
Player["local"] = ____exports.Player:of(
|
|
254
|
+
Player["local"] = ____exports.Player:of(PLAYER_LOCAL_HANDLE)
|
|
253
255
|
Player.neutralPassive = ____exports.Player.all[PLAYER_NEUTRAL_PASSIVE + 1]
|
|
254
256
|
Player.neutralAggressive = ____exports.Player.all[PLAYER_NEUTRAL_AGGRESSIVE + 1]
|
|
255
257
|
Player.neutralVictim = ____exports.Player.all[bj_PLAYER_NEUTRAL_VICTIM + 1]
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
|
+
import type { Unit } from "../../engine/internal/unit";
|
|
2
3
|
export declare class PlayerCamera {
|
|
3
4
|
private readonly player;
|
|
4
5
|
private readonly isLocal;
|
|
@@ -28,5 +29,6 @@ export declare class PlayerCamera {
|
|
|
28
29
|
get roll(): number;
|
|
29
30
|
set roll(v: number);
|
|
30
31
|
reset(): void;
|
|
32
|
+
static isUnitInView(unit: Unit): boolean;
|
|
31
33
|
static of(player: jplayer): PlayerCamera;
|
|
32
34
|
}
|
|
@@ -3,33 +3,52 @@ local __TS__Class = ____lualib.__TS__Class
|
|
|
3
3
|
local __TS__New = ____lualib.__TS__New
|
|
4
4
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
5
5
|
local ____exports = {}
|
|
6
|
+
local ____timer = require("core.types.timer")
|
|
7
|
+
local Timer = ____timer.Timer
|
|
8
|
+
local ____player_2Dlocal_2Dhandle = require("engine.internal.misc.player-local-handle")
|
|
9
|
+
local PLAYER_LOCAL_HANDLE = ____player_2Dlocal_2Dhandle.PLAYER_LOCAL_HANDLE
|
|
10
|
+
local ____preconditions = require("utility.preconditions")
|
|
11
|
+
local check = ____preconditions.check
|
|
12
|
+
local ____frame_2Dcoordinates = require("engine.internal.misc.frame-coordinates")
|
|
13
|
+
local FRAME_MAX_Y = ____frame_2Dcoordinates.FRAME_MAX_Y
|
|
14
|
+
local FRAME_MIN_Y = ____frame_2Dcoordinates.FRAME_MIN_Y
|
|
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
|
|
6
18
|
local getHandleId = GetHandleId
|
|
7
19
|
local setCameraField = SetCameraField
|
|
8
20
|
local getCameraField = GetCameraField
|
|
9
21
|
local setCameraPosition = SetCameraPosition
|
|
22
|
+
local getCameraEyePositionX = GetCameraEyePositionX
|
|
23
|
+
local getCameraEyePositionY = GetCameraEyePositionY
|
|
24
|
+
local getCameraEyePositionZ = GetCameraEyePositionZ
|
|
10
25
|
local getCameraTargetPositionX = GetCameraTargetPositionX
|
|
11
26
|
local getCameraTargetPositionY = GetCameraTargetPositionY
|
|
12
27
|
local resetToGameCamera = ResetToGameCamera
|
|
28
|
+
local cos = math.cos
|
|
13
29
|
local deg = math.deg
|
|
14
|
-
local
|
|
30
|
+
local sin = math.sin
|
|
31
|
+
local sqrt = math.sqrt
|
|
15
32
|
local memoized = {}
|
|
16
33
|
____exports.PlayerCamera = __TS__Class()
|
|
17
34
|
local PlayerCamera = ____exports.PlayerCamera
|
|
18
35
|
PlayerCamera.name = "PlayerCamera"
|
|
19
36
|
function PlayerCamera.prototype.____constructor(self, player)
|
|
20
37
|
local id = getHandleId(player)
|
|
21
|
-
|
|
22
|
-
error("Double-constructor run player camera!")
|
|
23
|
-
end
|
|
38
|
+
check(memoized[id] == nil)
|
|
24
39
|
memoized[id] = self
|
|
25
40
|
self.player = player
|
|
26
|
-
self.isLocal = player ==
|
|
41
|
+
self.isLocal = player == PLAYER_LOCAL_HANDLE
|
|
27
42
|
end
|
|
28
43
|
function PlayerCamera.prototype.reset(self)
|
|
29
44
|
if self.isLocal then
|
|
30
45
|
resetToGameCamera(0)
|
|
31
46
|
end
|
|
32
47
|
end
|
|
48
|
+
function PlayerCamera.isUnitInView(self, unit)
|
|
49
|
+
local ____, ____, isInView = ____exports.worldCoordinatesToFrame(unit.x, unit.y, unit.z)
|
|
50
|
+
return isInView
|
|
51
|
+
end
|
|
33
52
|
function PlayerCamera.of(self, player)
|
|
34
53
|
return memoized[getHandleId(player)] or __TS__New(____exports.PlayerCamera, player)
|
|
35
54
|
end
|
|
@@ -159,4 +178,103 @@ __TS__SetDescriptor(
|
|
|
159
178
|
},
|
|
160
179
|
true
|
|
161
180
|
)
|
|
181
|
+
local cameraEyeX = 0
|
|
182
|
+
local cameraEyeY = 0
|
|
183
|
+
local cameraEyeZ = 0
|
|
184
|
+
local cameraAngleOfAttack = 0
|
|
185
|
+
local cameraAngleOfAttackCos = 0
|
|
186
|
+
local cameraAngleOfAttackSin = 0
|
|
187
|
+
local cameraRotation = 0
|
|
188
|
+
local cameraRotationCos = 0
|
|
189
|
+
local cameraRotationSin = 0
|
|
190
|
+
local cameraAngleOfAttackCosRotationCos = 0
|
|
191
|
+
local cameraAngleOfAttackCosRotationSin = 0
|
|
192
|
+
local cameraAngleOfAttackSinRotationCos = 0
|
|
193
|
+
local cameraAngleOfAttackSinRotationSin = 0
|
|
194
|
+
local yCenterScreenShift = 0
|
|
195
|
+
local scaleFactor = 0
|
|
196
|
+
local frameMinX = 0
|
|
197
|
+
local frameMaxX = 0
|
|
198
|
+
local isCameraViewPrecalculated = false
|
|
199
|
+
local function precalculateCameraView()
|
|
200
|
+
cameraEyeX = getCameraEyePositionX()
|
|
201
|
+
cameraEyeY = getCameraEyePositionY()
|
|
202
|
+
cameraEyeZ = getCameraEyePositionZ()
|
|
203
|
+
cameraAngleOfAttack = getCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK)
|
|
204
|
+
cameraAngleOfAttackCos = cos(cameraAngleOfAttack)
|
|
205
|
+
cameraAngleOfAttackSin = sin(cameraAngleOfAttack)
|
|
206
|
+
cameraRotation = getCameraField(CAMERA_FIELD_ROTATION)
|
|
207
|
+
cameraRotationCos = cos(cameraRotation)
|
|
208
|
+
cameraRotationSin = sin(cameraRotation)
|
|
209
|
+
cameraAngleOfAttackCosRotationCos = cameraAngleOfAttackCos * cameraRotationCos
|
|
210
|
+
cameraAngleOfAttackCosRotationSin = cameraAngleOfAttackCos * cameraRotationSin
|
|
211
|
+
cameraAngleOfAttackSinRotationCos = cameraAngleOfAttackSin * cameraRotationCos
|
|
212
|
+
cameraAngleOfAttackSinRotationSin = cameraAngleOfAttackSin * cameraRotationSin
|
|
213
|
+
yCenterScreenShift = 0.1284 * cameraAngleOfAttackCos
|
|
214
|
+
local cameraFieldOfView = getCameraField(CAMERA_FIELD_FIELD_OF_VIEW)
|
|
215
|
+
scaleFactor = 0.0524 * cameraFieldOfView ^ 3 - 0.0283 * cameraFieldOfView ^ 2 + 1.061 * cameraFieldOfView
|
|
216
|
+
frameMinX, frameMaxX = getFrameMinXMaxX()
|
|
217
|
+
isCameraViewPrecalculated = true
|
|
218
|
+
end
|
|
219
|
+
Timer.onPeriod[1 / 64]:addListener(
|
|
220
|
+
4,
|
|
221
|
+
function()
|
|
222
|
+
isCameraViewPrecalculated = false
|
|
223
|
+
end
|
|
224
|
+
)
|
|
225
|
+
---
|
|
226
|
+
-- @internal For use by internal systems only.
|
|
227
|
+
____exports.worldCoordinatesToFrame = function(x, y, z)
|
|
228
|
+
if not isCameraViewPrecalculated then
|
|
229
|
+
precalculateCameraView()
|
|
230
|
+
end
|
|
231
|
+
local dx = x - cameraEyeX
|
|
232
|
+
local dy = y - cameraEyeY
|
|
233
|
+
local dz = z - cameraEyeZ
|
|
234
|
+
local xPrime = scaleFactor * (-cameraAngleOfAttackCosRotationCos * dx - cameraAngleOfAttackCosRotationSin * dy - cameraAngleOfAttackSin * dz)
|
|
235
|
+
local frameX = 0.4 + (cameraRotationCos * dy - cameraRotationSin * dx) / xPrime
|
|
236
|
+
local frameY = 0.42625 - yCenterScreenShift + (cameraAngleOfAttackSinRotationCos * dx + cameraAngleOfAttackSinRotationSin * dy - cameraAngleOfAttackCos * dz) / xPrime
|
|
237
|
+
return frameX, frameY, xPrime < 0 and frameX >= frameMinX and frameX <= frameMaxX and frameY >= FRAME_MIN_Y and frameY <= FRAME_MAX_Y
|
|
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
|
|
162
280
|
return ____exports
|
package/core/types/sound.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Handle, HandleDestructor } from "./handle";
|
|
3
3
|
import { Unit } from "./unit";
|
|
4
|
+
import { SoundEax } from "../../engine/object-data/auxiliary/sound-eax";
|
|
4
5
|
export declare enum SoundChannel {
|
|
5
6
|
General = 0,
|
|
6
7
|
UnitSelection = 1,
|
|
@@ -18,16 +19,7 @@ export declare enum SoundChannel {
|
|
|
18
19
|
Birth = 13,
|
|
19
20
|
Fire = 14
|
|
20
21
|
}
|
|
21
|
-
export
|
|
22
|
-
Default = "DefaultEAXON",
|
|
23
|
-
Acknowledgements = "HeroAcksEAX",
|
|
24
|
-
Environment = "DoodadsEAX",
|
|
25
|
-
Drums = "KotoDrumsEAX",
|
|
26
|
-
Attacks = "CombatSoundsEAX",
|
|
27
|
-
Abilities = "SpellsEAX",
|
|
28
|
-
Missiles = "MissilesEAX"
|
|
29
|
-
}
|
|
30
|
-
export type SoundPreset = Readonly<{
|
|
22
|
+
export type SoundSettings = Readonly<{
|
|
31
23
|
channel?: SoundChannel;
|
|
32
24
|
eax?: SoundEax;
|
|
33
25
|
fadeInRate?: number;
|
|
@@ -36,19 +28,19 @@ export type SoundPreset = Readonly<{
|
|
|
36
28
|
volume?: number;
|
|
37
29
|
pitch?: number;
|
|
38
30
|
}>;
|
|
39
|
-
export type
|
|
31
|
+
export type Sound3DSettings = SoundSettings & Readonly<{
|
|
40
32
|
stopWhenOutOfRange?: boolean;
|
|
41
33
|
minDistance?: number;
|
|
42
34
|
maxDistance?: number;
|
|
43
35
|
distanceCutoff?: number;
|
|
44
36
|
}>;
|
|
45
|
-
export declare namespace
|
|
46
|
-
const UI:
|
|
47
|
-
const Music:
|
|
48
|
-
const Attack:
|
|
49
|
-
const Ability:
|
|
50
|
-
const AbilityLooping:
|
|
51
|
-
const Missile:
|
|
37
|
+
export declare namespace SoundSettings {
|
|
38
|
+
const UI: SoundSettings;
|
|
39
|
+
const Music: SoundSettings;
|
|
40
|
+
const Attack: Sound3DSettings;
|
|
41
|
+
const Ability: Sound3DSettings;
|
|
42
|
+
const AbilityLooping: Sound3DSettings;
|
|
43
|
+
const Missile: Sound3DSettings;
|
|
52
44
|
}
|
|
53
45
|
export declare class Sound extends Handle<jsound, [fadeOut?: boolean]> {
|
|
54
46
|
private _volume?;
|
|
@@ -58,12 +50,13 @@ export declare class Sound extends Handle<jsound, [fadeOut?: boolean]> {
|
|
|
58
50
|
start(milliseconds?: number): void;
|
|
59
51
|
stop(fadeOut?: boolean): void;
|
|
60
52
|
restart(milliseconds?: number): void;
|
|
61
|
-
static play(fileName: string, preset:
|
|
62
|
-
static create(fileName: string, preset:
|
|
53
|
+
static play(fileName: string, preset: SoundSettings): void;
|
|
54
|
+
static create(fileName: string, preset: SoundSettings): Sound;
|
|
63
55
|
}
|
|
64
56
|
export declare class Sound3D extends Sound {
|
|
65
|
-
static playAtPosition(fileName: string, preset:
|
|
66
|
-
static playOnUnit(fileName: string, preset:
|
|
67
|
-
static
|
|
68
|
-
static
|
|
57
|
+
static playAtPosition(fileName: string, preset: Sound3DSettings, x?: number, y?: number, z?: number): void;
|
|
58
|
+
static playOnUnit(fileName: string, preset: Sound3DSettings, unit: Unit): void;
|
|
59
|
+
static playFromLabel(label: string, preset: Sound3DSettings, ...positionOrUnit: [Unit] | [number, number, number?]): void;
|
|
60
|
+
static createAtPosition(fileName: string, preset: Sound3DSettings, x?: number, y?: number, z?: number): Sound3D;
|
|
61
|
+
static createOnUnit(fileName: string, preset: Sound3DSettings, unit: Unit): Sound3D;
|
|
69
62
|
}
|
package/core/types/sound.lua
CHANGED
|
@@ -5,15 +5,18 @@ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
|
5
5
|
local ____exports = {}
|
|
6
6
|
local ____handle = require("core.types.handle")
|
|
7
7
|
local Handle = ____handle.Handle
|
|
8
|
+
local ____sound_2Dpreset = require("engine.object-data.entry.sound-preset")
|
|
9
|
+
local SoundPreset = ____sound_2Dpreset.SoundPreset
|
|
10
|
+
local ____random = require("engine.random")
|
|
11
|
+
local randomInteger = ____random.randomInteger
|
|
8
12
|
local createSound = CreateSound
|
|
13
|
+
local createSoundFromLabel = CreateSoundFromLabel
|
|
9
14
|
local setSoundPitch = SetSoundPitch
|
|
10
15
|
local setSoundChannel = SetSoundChannel
|
|
11
16
|
local setSoundPosition = SetSoundPosition
|
|
12
17
|
local setSoundVolume = SetSoundVolume
|
|
13
18
|
local setSoundDistances = SetSoundDistances
|
|
14
19
|
local setSoundDistanceCutoff = SetSoundDistanceCutoff
|
|
15
|
-
local setSoundConeAngles = SetSoundConeAngles
|
|
16
|
-
local setSoundConeOrientation = SetSoundConeOrientation
|
|
17
20
|
local startSound = StartSound
|
|
18
21
|
local setSoundPlayPosition = SetSoundPlayPosition
|
|
19
22
|
local stopSound = StopSound
|
|
@@ -50,29 +53,21 @@ ____exports.SoundChannel.Birth = 13
|
|
|
50
53
|
____exports.SoundChannel[____exports.SoundChannel.Birth] = "Birth"
|
|
51
54
|
____exports.SoundChannel.Fire = 14
|
|
52
55
|
____exports.SoundChannel[____exports.SoundChannel.Fire] = "Fire"
|
|
53
|
-
____exports.
|
|
54
|
-
|
|
55
|
-
____exports.SoundEax.Acknowledgements = "HeroAcksEAX"
|
|
56
|
-
____exports.SoundEax.Environment = "DoodadsEAX"
|
|
57
|
-
____exports.SoundEax.Drums = "KotoDrumsEAX"
|
|
58
|
-
____exports.SoundEax.Attacks = "CombatSoundsEAX"
|
|
59
|
-
____exports.SoundEax.Abilities = "SpellsEAX"
|
|
60
|
-
____exports.SoundEax.Missiles = "MissilesEAX"
|
|
61
|
-
____exports.SoundPreset = {}
|
|
62
|
-
local SoundPreset = ____exports.SoundPreset
|
|
56
|
+
____exports.SoundSettings = {}
|
|
57
|
+
local SoundSettings = ____exports.SoundSettings
|
|
63
58
|
do
|
|
64
|
-
|
|
65
|
-
|
|
59
|
+
SoundSettings.UI = {channel = ____exports.SoundChannel.UI, eax = "DefaultEAXON", fadeInRate = 12700, fadeOutRate = 12700}
|
|
60
|
+
SoundSettings.Music = {
|
|
66
61
|
channel = ____exports.SoundChannel.Music,
|
|
67
|
-
eax =
|
|
62
|
+
eax = "DefaultEAXON",
|
|
68
63
|
fadeInRate = 12700,
|
|
69
64
|
fadeOutRate = 12700,
|
|
70
65
|
looping = true
|
|
71
66
|
}
|
|
72
|
-
|
|
73
|
-
|
|
67
|
+
SoundSettings.Attack = {channel = ____exports.SoundChannel.Combat, eax = "CombatSoundsEAX", fadeInRate = 10, fadeOutRate = 10}
|
|
68
|
+
SoundSettings.Ability = {
|
|
74
69
|
channel = ____exports.SoundChannel.Animations,
|
|
75
|
-
eax =
|
|
70
|
+
eax = "SpellsEAX",
|
|
76
71
|
stopWhenOutOfRange = true,
|
|
77
72
|
volume = 127,
|
|
78
73
|
fadeInRate = 1,
|
|
@@ -82,9 +77,9 @@ do
|
|
|
82
77
|
maxDistance = 3500,
|
|
83
78
|
distanceCutoff = 3000
|
|
84
79
|
}
|
|
85
|
-
|
|
80
|
+
SoundSettings.AbilityLooping = {
|
|
86
81
|
channel = ____exports.SoundChannel.Birth,
|
|
87
|
-
eax =
|
|
82
|
+
eax = "SpellsEAX",
|
|
88
83
|
looping = true,
|
|
89
84
|
stopWhenOutOfRange = true,
|
|
90
85
|
volume = 127,
|
|
@@ -95,9 +90,9 @@ do
|
|
|
95
90
|
maxDistance = 3000,
|
|
96
91
|
distanceCutoff = 3000
|
|
97
92
|
}
|
|
98
|
-
|
|
93
|
+
SoundSettings.Missile = {
|
|
99
94
|
channel = ____exports.SoundChannel.Animations,
|
|
100
|
-
eax =
|
|
95
|
+
eax = "MissilesEAX",
|
|
101
96
|
stopWhenOutOfRange = true,
|
|
102
97
|
volume = 127,
|
|
103
98
|
fadeInRate = 1,
|
|
@@ -108,6 +103,29 @@ do
|
|
|
108
103
|
distanceCutoff = 3000
|
|
109
104
|
}
|
|
110
105
|
end
|
|
106
|
+
local customSoundPresetDataByLabel = postcompile(function()
|
|
107
|
+
local customSoundPresetDataByLabel = {}
|
|
108
|
+
for ____, soundPreset in ipairs(SoundPreset:getAll()) do
|
|
109
|
+
if soundPreset.isCustom then
|
|
110
|
+
customSoundPresetDataByLabel[soundPreset.id] = {
|
|
111
|
+
filePaths = soundPreset.filePaths,
|
|
112
|
+
volume = soundPreset.volume,
|
|
113
|
+
pitch = soundPreset.pitch,
|
|
114
|
+
channel = soundPreset.channel,
|
|
115
|
+
minimumDistance = soundPreset.minimumDistance,
|
|
116
|
+
maximumDistance = soundPreset.maximumDistance,
|
|
117
|
+
distanceCutoff = soundPreset.distanceCutoff,
|
|
118
|
+
eax = soundPreset.eax
|
|
119
|
+
}
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
return customSoundPresetDataByLabel
|
|
123
|
+
end)
|
|
124
|
+
---
|
|
125
|
+
-- @internal For use by internal systems only.
|
|
126
|
+
____exports.isSoundLabelCustom = function(label)
|
|
127
|
+
return customSoundPresetDataByLabel[label] ~= nil
|
|
128
|
+
end
|
|
111
129
|
local function createPresetSound(fileName, preset)
|
|
112
130
|
local ____fileName_1 = fileName
|
|
113
131
|
local ____preset_looping_0 = preset.looping
|
|
@@ -121,7 +139,7 @@ local function createPresetSound(fileName, preset)
|
|
|
121
139
|
true,
|
|
122
140
|
preset.fadeInRate or 12700,
|
|
123
141
|
preset.fadeOutRate or 12700,
|
|
124
|
-
preset.eax or
|
|
142
|
+
preset.eax or "DefaultEAXON"
|
|
125
143
|
)
|
|
126
144
|
setSoundChannel(sound, preset.channel or ____exports.SoundChannel.General)
|
|
127
145
|
setSoundVolume(sound, preset.volume or 127)
|
|
@@ -144,7 +162,7 @@ local function createPreset3DSound(fileName, preset)
|
|
|
144
162
|
____preset_stopWhenOutOfRange_3,
|
|
145
163
|
preset.fadeInRate or 12700,
|
|
146
164
|
preset.fadeOutRate or 12700,
|
|
147
|
-
preset.eax or
|
|
165
|
+
preset.eax or "DefaultEAXON"
|
|
148
166
|
)
|
|
149
167
|
setSoundChannel(sound, preset.channel or ____exports.SoundChannel.General)
|
|
150
168
|
setSoundVolume(sound, preset.volume or 127)
|
|
@@ -153,6 +171,53 @@ local function createPreset3DSound(fileName, preset)
|
|
|
153
171
|
setSoundDistanceCutoff(sound, preset.distanceCutoff or 1500)
|
|
154
172
|
return sound
|
|
155
173
|
end
|
|
174
|
+
local function createPreset3DSoundFromLabel(label, preset)
|
|
175
|
+
local customSoundPresetData = customSoundPresetDataByLabel[label]
|
|
176
|
+
if customSoundPresetData == nil then
|
|
177
|
+
local ____label_7 = label
|
|
178
|
+
local ____preset_looping_5 = preset.looping
|
|
179
|
+
if ____preset_looping_5 == nil then
|
|
180
|
+
____preset_looping_5 = false
|
|
181
|
+
end
|
|
182
|
+
local ____preset_stopWhenOutOfRange_6 = preset.stopWhenOutOfRange
|
|
183
|
+
if ____preset_stopWhenOutOfRange_6 == nil then
|
|
184
|
+
____preset_stopWhenOutOfRange_6 = true
|
|
185
|
+
end
|
|
186
|
+
return createSoundFromLabel(
|
|
187
|
+
____label_7,
|
|
188
|
+
____preset_looping_5,
|
|
189
|
+
true,
|
|
190
|
+
____preset_stopWhenOutOfRange_6,
|
|
191
|
+
preset.fadeInRate or 12700,
|
|
192
|
+
preset.fadeOutRate or 12700
|
|
193
|
+
)
|
|
194
|
+
else
|
|
195
|
+
local ____customSoundPresetData_filePaths_index_10 = customSoundPresetData.filePaths[randomInteger(#customSoundPresetData.filePaths - 1) + 1]
|
|
196
|
+
local ____preset_looping_8 = preset.looping
|
|
197
|
+
if ____preset_looping_8 == nil then
|
|
198
|
+
____preset_looping_8 = false
|
|
199
|
+
end
|
|
200
|
+
local ____preset_stopWhenOutOfRange_9 = preset.stopWhenOutOfRange
|
|
201
|
+
if ____preset_stopWhenOutOfRange_9 == nil then
|
|
202
|
+
____preset_stopWhenOutOfRange_9 = true
|
|
203
|
+
end
|
|
204
|
+
local sound = createSound(
|
|
205
|
+
____customSoundPresetData_filePaths_index_10,
|
|
206
|
+
____preset_looping_8,
|
|
207
|
+
true,
|
|
208
|
+
____preset_stopWhenOutOfRange_9,
|
|
209
|
+
preset.fadeInRate or 12700,
|
|
210
|
+
preset.fadeOutRate or 12700,
|
|
211
|
+
customSoundPresetData.eax
|
|
212
|
+
)
|
|
213
|
+
setSoundChannel(sound, customSoundPresetData.channel)
|
|
214
|
+
setSoundVolume(sound, customSoundPresetData.volume)
|
|
215
|
+
setSoundPitch(sound, customSoundPresetData.pitch)
|
|
216
|
+
setSoundDistances(sound, customSoundPresetData.minimumDistance, customSoundPresetData.maximumDistance)
|
|
217
|
+
setSoundDistanceCutoff(sound, customSoundPresetData.distanceCutoff)
|
|
218
|
+
return sound
|
|
219
|
+
end
|
|
220
|
+
end
|
|
156
221
|
____exports.Sound = __TS__Class()
|
|
157
222
|
local Sound = ____exports.Sound
|
|
158
223
|
Sound.name = "Sound"
|
|
@@ -225,6 +290,16 @@ function Sound3D.playOnUnit(self, fileName, preset, unit)
|
|
|
225
290
|
startSound(sound)
|
|
226
291
|
killSoundWhenDone(sound)
|
|
227
292
|
end
|
|
293
|
+
function Sound3D.playFromLabel(self, label, preset, unitOrX, y, z)
|
|
294
|
+
local sound = createPreset3DSoundFromLabel(label, preset)
|
|
295
|
+
if type(unitOrX) ~= "number" then
|
|
296
|
+
attachSoundToUnit(sound, unitOrX.handle)
|
|
297
|
+
else
|
|
298
|
+
setSoundPosition(sound, unitOrX, y or 0, z or 0)
|
|
299
|
+
end
|
|
300
|
+
startSound(sound)
|
|
301
|
+
killSoundWhenDone(sound)
|
|
302
|
+
end
|
|
228
303
|
function Sound3D.createAtPosition(self, fileName, preset, x, y, z)
|
|
229
304
|
if x == nil then
|
|
230
305
|
x = 0
|
package/core/types/tileCell.d.ts
CHANGED
|
@@ -5,6 +5,15 @@ export declare class TileCell implements Readonly<Vec2> {
|
|
|
5
5
|
readonly y: number;
|
|
6
6
|
readonly z: undefined;
|
|
7
7
|
protected constructor(id: number, x: number, y: number, z: undefined);
|
|
8
|
+
get up(): TileCell;
|
|
9
|
+
get down(): TileCell;
|
|
10
|
+
get left(): TileCell;
|
|
11
|
+
get right(): TileCell;
|
|
12
|
+
get terrainTypeId(): number;
|
|
13
|
+
set terrainTypeId(terrainTypeId: number);
|
|
14
|
+
get terrainVariance(): number;
|
|
15
|
+
set terrainVariance(terrainVariance: number);
|
|
16
|
+
randomizeTerrainVariance(): void;
|
|
8
17
|
isInRangeOf(x: number, y: number, range: number): boolean;
|
|
9
18
|
isInRangeOf(tileCell: TileCell, range: number): boolean;
|
|
10
19
|
static getInRect(minX: number, minY: number, maxX: number, maxY: number): TileCell[];
|
package/core/types/tileCell.lua
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
3
|
local __TS__New = ____lualib.__TS__New
|
|
4
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
4
5
|
local ____exports = {}
|
|
6
|
+
local getTerrainType = GetTerrainType
|
|
7
|
+
local setTerrainType = SetTerrainType
|
|
8
|
+
local getTerrainVariance = GetTerrainVariance
|
|
5
9
|
local abs = math.abs
|
|
6
10
|
local ____type = math.type
|
|
7
11
|
local ult = math.ult
|
|
@@ -16,6 +20,18 @@ function TileCell.prototype.____constructor(self, id, x, y, z)
|
|
|
16
20
|
self.z = z
|
|
17
21
|
tileCellById[id] = self
|
|
18
22
|
end
|
|
23
|
+
function TileCell.prototype.randomizeTerrainVariance(self)
|
|
24
|
+
local x = self.x
|
|
25
|
+
local y = self.y
|
|
26
|
+
setTerrainType(
|
|
27
|
+
x,
|
|
28
|
+
y,
|
|
29
|
+
getTerrainType(x, y),
|
|
30
|
+
-1,
|
|
31
|
+
1,
|
|
32
|
+
1
|
|
33
|
+
)
|
|
34
|
+
end
|
|
19
35
|
function TileCell.prototype.isInRangeOf(self, x, y, range)
|
|
20
36
|
if range == nil then
|
|
21
37
|
range = y
|
|
@@ -97,4 +113,80 @@ function TileCell.of(x, y)
|
|
|
97
113
|
nil
|
|
98
114
|
)
|
|
99
115
|
end
|
|
116
|
+
__TS__SetDescriptor(
|
|
117
|
+
TileCell.prototype,
|
|
118
|
+
"up",
|
|
119
|
+
{get = function(self)
|
|
120
|
+
return ____exports.TileCell.of(self.x, self.y + 128)
|
|
121
|
+
end},
|
|
122
|
+
true
|
|
123
|
+
)
|
|
124
|
+
__TS__SetDescriptor(
|
|
125
|
+
TileCell.prototype,
|
|
126
|
+
"down",
|
|
127
|
+
{get = function(self)
|
|
128
|
+
return ____exports.TileCell.of(self.x, self.y - 128)
|
|
129
|
+
end},
|
|
130
|
+
true
|
|
131
|
+
)
|
|
132
|
+
__TS__SetDescriptor(
|
|
133
|
+
TileCell.prototype,
|
|
134
|
+
"left",
|
|
135
|
+
{get = function(self)
|
|
136
|
+
return ____exports.TileCell.of(self.x - 128, self.y)
|
|
137
|
+
end},
|
|
138
|
+
true
|
|
139
|
+
)
|
|
140
|
+
__TS__SetDescriptor(
|
|
141
|
+
TileCell.prototype,
|
|
142
|
+
"right",
|
|
143
|
+
{get = function(self)
|
|
144
|
+
return ____exports.TileCell.of(self.x + 128, self.y)
|
|
145
|
+
end},
|
|
146
|
+
true
|
|
147
|
+
)
|
|
148
|
+
__TS__SetDescriptor(
|
|
149
|
+
TileCell.prototype,
|
|
150
|
+
"terrainTypeId",
|
|
151
|
+
{
|
|
152
|
+
get = function(self)
|
|
153
|
+
return getTerrainType(self.x, self.y)
|
|
154
|
+
end,
|
|
155
|
+
set = function(self, terrainTypeId)
|
|
156
|
+
local x = self.x
|
|
157
|
+
local y = self.y
|
|
158
|
+
setTerrainType(
|
|
159
|
+
x,
|
|
160
|
+
y,
|
|
161
|
+
terrainTypeId,
|
|
162
|
+
getTerrainVariance(x, y),
|
|
163
|
+
1,
|
|
164
|
+
1
|
|
165
|
+
)
|
|
166
|
+
end
|
|
167
|
+
},
|
|
168
|
+
true
|
|
169
|
+
)
|
|
170
|
+
__TS__SetDescriptor(
|
|
171
|
+
TileCell.prototype,
|
|
172
|
+
"terrainVariance",
|
|
173
|
+
{
|
|
174
|
+
get = function(self)
|
|
175
|
+
return getTerrainVariance(self.x, self.y)
|
|
176
|
+
end,
|
|
177
|
+
set = function(self, terrainVariance)
|
|
178
|
+
local x = self.x
|
|
179
|
+
local y = self.y
|
|
180
|
+
setTerrainType(
|
|
181
|
+
x,
|
|
182
|
+
y,
|
|
183
|
+
getTerrainType(x, y),
|
|
184
|
+
terrainVariance,
|
|
185
|
+
1,
|
|
186
|
+
1
|
|
187
|
+
)
|
|
188
|
+
end
|
|
189
|
+
},
|
|
190
|
+
true
|
|
191
|
+
)
|
|
100
192
|
return ____exports
|
package/core/types/timer.d.ts
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Event } from "../../event";
|
|
3
|
+
import { AbstractDestroyable, Destructor } from "../../destroyable";
|
|
3
4
|
declare const enum TimerPropertyKey {
|
|
4
5
|
HANDLE = 0,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
ARGS_LENGTH = 4
|
|
6
|
+
DESTROY_ON_EXPIRATION = 1,
|
|
7
|
+
CALLBACK = 2,
|
|
8
|
+
ARGS_LENGTH = 3
|
|
9
9
|
}
|
|
10
|
-
export declare class Timer
|
|
10
|
+
export declare class Timer extends AbstractDestroyable {
|
|
11
11
|
private readonly [TimerPropertyKey.HANDLE];
|
|
12
|
-
private [TimerPropertyKey.DESTROYED]?;
|
|
13
12
|
private [TimerPropertyKey.DESTROY_ON_EXPIRATION]?;
|
|
14
13
|
private [TimerPropertyKey.CALLBACK]?;
|
|
15
14
|
private [TimerPropertyKey.ARGS_LENGTH]?;
|
|
16
15
|
private constructor();
|
|
17
16
|
get handle(): jtimer;
|
|
18
17
|
start<Args extends any[]>(timeout: number, periodic: boolean, callback: (...args: Args) => void, ...args: Args): void;
|
|
18
|
+
onDestroy(): Destructor;
|
|
19
19
|
get elapsed(): number;
|
|
20
20
|
get remaining(): number;
|
|
21
21
|
get timeout(): number;
|
|
22
22
|
pause(): void;
|
|
23
23
|
resume(): void;
|
|
24
|
-
destroy(): void;
|
|
25
24
|
static create(): Timer;
|
|
26
|
-
static run<
|
|
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): void;
|
|
26
|
+
static run<Args extends any[]>(callback: (this: void, ...args: Args) => void, ...args: Args): void;
|
|
27
27
|
static simple<Args extends any[]>(timeout: number, callback: (...args: Args) => void, ...args: Args): Timer;
|
|
28
28
|
static periodic<Args extends any[]>(period: number, callback: (this: void, timer: Timer, ...args: Args) => void, ...args: Args): Timer;
|
|
29
29
|
static counted(period: number, count: number, callback: (this: void, timer: Timer) => void): Timer;
|