warscript 0.0.1-dev.3324599 → 0.0.1-dev.33b52d0
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/dummy.lua +4 -2
- package/core/types/effect.d.ts +11 -1
- package/core/types/effect.lua +43 -77
- package/core/types/frame.d.ts +16 -2
- package/core/types/frame.lua +81 -66
- package/core/types/handle.lua +9 -9
- package/core/types/missile.lua +8 -7
- package/core/types/player.d.ts +2 -1
- package/core/types/player.lua +18 -13
- package/core/types/playerColor.lua +4 -3
- package/core/types/sound.d.ts +1 -1
- package/core/types/sound.lua +13 -8
- package/core/types/tileCell.d.ts +7 -2
- package/core/types/tileCell.lua +11 -0
- package/core/types/unit.d.ts +5 -0
- package/core/types/unit.lua +5 -0
- package/core/util.d.ts +3 -1
- package/core/util.lua +109 -3
- package/decl/native.d.ts +706 -7
- package/engine/ability-type-extended-tooltip.d.ts +8 -0
- package/engine/ability-type-extended-tooltip.lua +44 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
- package/engine/behaviour/ability/damage.d.ts +1 -0
- package/engine/behaviour/ability/damage.lua +12 -14
- package/engine/behaviour/ability/emulate-impact.d.ts +14 -0
- package/engine/behaviour/ability/emulate-impact.lua +79 -5
- package/engine/behaviour/ability/instant-impact.d.ts +12 -1
- package/engine/behaviour/ability/instant-impact.lua +17 -2
- package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
- package/engine/behaviour/ability/on-command-impact.lua +1 -0
- package/engine/behaviour/ability.d.ts +8 -0
- package/engine/behaviour/ability.lua +89 -8
- package/engine/behaviour/unit.d.ts +1 -0
- package/engine/behaviour/unit.lua +1 -0
- package/engine/buff.d.ts +65 -54
- package/engine/buff.lua +318 -243
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +7 -0
- package/engine/internal/ability.lua +65 -36
- package/engine/internal/item/owner-cache.d.ts +5 -0
- package/engine/internal/item/owner-cache.lua +4 -0
- package/engine/internal/item+owner.d.ts +2 -0
- package/engine/internal/item+owner.lua +27 -4
- package/engine/internal/item.d.ts +20 -1
- package/engine/internal/item.lua +146 -20
- package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
- package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
- package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
- package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
- package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
- package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
- package/engine/internal/unit/ability.lua +16 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
- package/engine/internal/unit/add-item-to-slot.lua +53 -12
- package/engine/internal/unit/appearance.d.ts +15 -0
- package/engine/internal/unit/appearance.lua +85 -0
- package/engine/internal/unit/bonus.d.ts +11 -0
- package/engine/internal/unit/bonus.lua +80 -5
- package/engine/internal/unit/buff.d.ts +2 -2
- package/engine/internal/unit/buff.lua +34 -19
- package/engine/internal/unit/equipment-inventory.d.ts +44 -0
- package/engine/internal/unit/equipment-inventory.lua +233 -0
- package/engine/internal/unit/expiration-timer.lua +1 -1
- package/engine/internal/unit/extended-inventory.d.ts +25 -0
- package/engine/internal/unit/extended-inventory.lua +99 -0
- package/engine/internal/unit/ignore-events-items.lua +10 -1
- package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
- package/engine/internal/unit/inventory.lua +87 -0
- package/engine/internal/unit/item-container.d.ts +25 -0
- package/engine/internal/unit/item-container.lua +11 -0
- package/engine/internal/unit/item-order-events.d.ts +17 -0
- package/engine/internal/unit/item-order-events.lua +67 -0
- package/engine/internal/unit/item-slot.d.ts +27 -0
- package/engine/internal/unit/item-slot.lua +92 -0
- package/engine/internal/unit/order.d.ts +3 -3
- package/engine/internal/unit/order.lua +10 -10
- package/engine/internal/unit+ability.d.ts +2 -1
- package/engine/internal/unit+ability.lua +73 -2
- package/engine/internal/unit+damage.d.ts +9 -0
- package/engine/internal/unit+damage.lua +33 -0
- package/engine/internal/unit+rally.lua +9 -31
- package/engine/internal/unit-missile-data.lua +96 -68
- package/engine/internal/unit-missile-launch.lua +13 -13
- package/engine/internal/unit.d.ts +2 -10
- package/engine/internal/unit.lua +53 -100
- package/engine/lightning.lua +4 -4
- package/engine/local-client.d.ts +21 -0
- package/engine/local-client.lua +242 -57
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
- package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
- package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
- package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-type.lua +26 -0
- package/engine/object-data/auxiliary/item-class.d.ts +11 -0
- package/engine/object-data/auxiliary/item-class.lua +2 -0
- package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- package/engine/object-data/auxiliary/order-type.d.ts +939 -0
- package/engine/object-data/auxiliary/order-type.lua +2 -0
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
- package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
- package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
- package/engine/object-data/entry/ability-type/banshee.lua +13 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
- package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
- package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
- package/engine/object-data/entry/ability-type/barrage.d.ts +12 -0
- package/engine/object-data/entry/ability-type/barrage.lua +52 -0
- package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
- package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +2 -2
- package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
- package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
- package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
- package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
- package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
- package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
- package/engine/object-data/entry/ability-type/channel.lua +3 -3
- package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
- package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
- package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
- package/engine/object-data/entry/ability-type/consecration.lua +52 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
- package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment.lua +27 -0
- package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
- package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
- package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
- package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
- package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
- package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
- package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
- package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
- package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
- package/engine/object-data/entry/ability-type/grit.lua +65 -0
- package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
- package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
- package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
- package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
- package/engine/object-data/entry/ability-type/healing-modifier.d.ts +9 -0
- package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
- package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
- package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
- package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
- package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
- package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
- package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
- package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
- package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
- package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
- package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
- package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
- package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
- package/engine/object-data/entry/ability-type/provoke.lua +66 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
- package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
- package/engine/object-data/entry/ability-type/resolve.lua +39 -0
- package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
- package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
- package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
- package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
- package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
- package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
- package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
- package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
- package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
- package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
- package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
- package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
- package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
- package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
- package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
- package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
- package/engine/object-data/entry/ability-type/talents.lua +27 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
- package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
- package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
- package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
- package/engine/object-data/entry/ability-type/warcry.lua +26 -0
- package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
- package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
- package/engine/object-data/entry/ability-type.d.ts +33 -8
- package/engine/object-data/entry/ability-type.lua +256 -48
- package/engine/object-data/entry/buff-type/applicable.lua +10 -3
- package/engine/object-data/entry/buff-type.d.ts +6 -2
- package/engine/object-data/entry/buff-type.lua +26 -0
- package/engine/object-data/entry/destructible-type.d.ts +6 -2
- package/engine/object-data/entry/destructible-type.lua +26 -0
- package/engine/object-data/entry/item-type.d.ts +18 -3
- package/engine/object-data/entry/item-type.lua +84 -0
- package/engine/object-data/entry/lightning-type.d.ts +6 -8
- package/engine/object-data/entry/lightning-type.lua +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +2 -2
- package/engine/object-data/entry/unit-type.d.ts +57 -2
- package/engine/object-data/entry/unit-type.lua +412 -64
- package/engine/object-data/entry/upgrade.d.ts +2 -2
- package/engine/object-data/entry.d.ts +6 -1
- package/engine/object-data/entry.lua +8 -0
- package/engine/random.lua +1 -1
- package/engine/standard/entries/ability-type.d.ts +3102 -7
- package/engine/standard/entries/ability-type.lua +0 -6
- package/engine/standard/entries/buff-type.d.ts +45 -0
- package/engine/standard/entries/buff-type.lua +43 -0
- package/engine/standard/entries/item-type.d.ts +1299 -0
- package/engine/standard/entries/item-type.lua +2 -0
- package/engine/standard/entries/lightning-type.d.ts +42 -15
- package/engine/standard/entries/lightning-type.lua +0 -14
- package/engine/standard/entries/unit-type.d.ts +5 -0
- package/engine/standard/entries/unit-type.lua +5 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/text-tag.d.ts +13 -1
- package/engine/text-tag.lua +76 -37
- package/engine/unit.d.ts +5 -1
- package/engine/unit.lua +5 -1
- package/event.d.ts +1 -1
- package/network.lua +25 -1
- package/objutil/buff.lua +1 -1
- package/operation.d.ts +8 -1
- package/operation.lua +37 -14
- package/package.json +2 -22
- package/utility/arrays.d.ts +7 -1
- package/utility/arrays.lua +17 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/unordered-map.lua +9 -4
- package/engine/internal/unit/item.lua +0 -78
package/core/dummy.lua
CHANGED
|
@@ -15,6 +15,8 @@ local ____preconditions = require("utility.preconditions")
|
|
|
15
15
|
local checkNotNull = ____preconditions.checkNotNull
|
|
16
16
|
local ____ability = require("engine.internal.ability")
|
|
17
17
|
local getOrderIdByAbilityTypeId = ____ability.getOrderIdByAbilityTypeId
|
|
18
|
+
local ____unit_2Dability_2Dlevel_2Dnatives = require("engine.internal.misc.unit-ability-level-natives")
|
|
19
|
+
local rawSetUnitAbilityLevel = ____unit_2Dability_2Dlevel_2Dnatives.rawSetUnitAbilityLevel
|
|
18
20
|
local neutralVictim = Player.neutralVictim.handle
|
|
19
21
|
____exports.InstantDummyCaster = __TS__Class()
|
|
20
22
|
local InstantDummyCaster = ____exports.InstantDummyCaster
|
|
@@ -42,7 +44,7 @@ function InstantDummyCaster.prototype.prepare(self, owner, abilityId, level)
|
|
|
42
44
|
if type(abilityId) == "number" then
|
|
43
45
|
UnitAddAbility(dummy, abilityId)
|
|
44
46
|
if type(level) == "number" then
|
|
45
|
-
|
|
47
|
+
rawSetUnitAbilityLevel(dummy, abilityId, level + 1)
|
|
46
48
|
else
|
|
47
49
|
level(UnitAbility:of(
|
|
48
50
|
checkNotNull(BlzGetUnitAbility(dummy, abilityId)),
|
|
@@ -56,7 +58,7 @@ function InstantDummyCaster.prototype.prepare(self, owner, abilityId, level)
|
|
|
56
58
|
end
|
|
57
59
|
if __TS__ArrayIsArray(level) then
|
|
58
60
|
for i = 1, #abilityId do
|
|
59
|
-
|
|
61
|
+
rawSetUnitAbilityLevel(dummy, abilityId[i], level[i] + 1)
|
|
60
62
|
end
|
|
61
63
|
else
|
|
62
64
|
local abilities = {}
|
package/core/types/effect.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ import { PlayerColor } from "./playerColor";
|
|
|
5
5
|
declare const enum EffectPropertyKey {
|
|
6
6
|
COLOR = 100,
|
|
7
7
|
PITCH = 101,
|
|
8
|
-
ROLL = 102
|
|
8
|
+
ROLL = 102,
|
|
9
|
+
BLEND_TIME = 103,
|
|
10
|
+
TIME_SCALE = 104
|
|
9
11
|
}
|
|
10
12
|
export type EffectParameters = {
|
|
11
13
|
readonly delay?: number;
|
|
@@ -21,7 +23,15 @@ export declare class Effect extends Handle<jeffect> {
|
|
|
21
23
|
private [EffectPropertyKey.COLOR]?;
|
|
22
24
|
private [EffectPropertyKey.PITCH]?;
|
|
23
25
|
private [EffectPropertyKey.ROLL]?;
|
|
26
|
+
private [EffectPropertyKey.BLEND_TIME]?;
|
|
27
|
+
private [EffectPropertyKey.TIME_SCALE]?;
|
|
24
28
|
protected onDestroy(): HandleDestructor;
|
|
29
|
+
setAnimation(animation: string): void;
|
|
30
|
+
queueAnimation(animation: string): void;
|
|
31
|
+
get blendTime(): number;
|
|
32
|
+
set blendTime(blendTime: number);
|
|
33
|
+
get timeScale(): number;
|
|
34
|
+
set timeScale(timeScale: number);
|
|
25
35
|
get color(): PlayerColor;
|
|
26
36
|
set color(color: PlayerColor);
|
|
27
37
|
get scale(): number;
|
package/core/types/effect.lua
CHANGED
|
@@ -15,25 +15,22 @@ local ____timer = require("core.types.timer")
|
|
|
15
15
|
local Timer = ____timer.Timer
|
|
16
16
|
local ____unit = require("engine.internal.unit")
|
|
17
17
|
local Unit = ____unit.Unit
|
|
18
|
-
local ____pairs = _G.pairs
|
|
19
|
-
local select = _G.select
|
|
20
|
-
local mathRad = math.rad
|
|
21
18
|
local addSpecialEffect = AddSpecialEffect
|
|
22
19
|
local addSpecialEffectTarget = AddSpecialEffectTarget
|
|
23
20
|
local destroyEffect = DestroyEffect
|
|
21
|
+
local getLocationZ = GetLocationZ
|
|
24
22
|
local getSpecialEffectScale = BlzGetSpecialEffectScale
|
|
25
|
-
local
|
|
26
|
-
local
|
|
23
|
+
local moveLocation = MoveLocation
|
|
24
|
+
local queueSpecialEffectAnimation = BlzQueueSpecialEffectAnimation
|
|
25
|
+
local setSpecialEffectAnimation = BlzSetSpecialEffectAnimation
|
|
26
|
+
local setSpecialEffectAnimationBlendTime = BlzSetSpecialEffectAnimationBlendTime
|
|
27
|
+
local setSpecialEffectTimeScale = BlzSetSpecialEffectTimeScale
|
|
28
|
+
local setSpecialEffectColorByPlayer = BlzSetSpecialEffectColorByPlayer
|
|
27
29
|
local setSpecialEffectPitch = BlzSetSpecialEffectPitch
|
|
28
30
|
local setSpecialEffectRoll = BlzSetSpecialEffectRoll
|
|
29
|
-
local
|
|
30
|
-
local specialEffectAddSubAnimation = BlzSpecialEffectAddSubAnimation
|
|
31
|
-
local specialEffectClearSubAnimations = BlzSpecialEffectClearSubAnimations
|
|
32
|
-
local specialEffectRemoveSubAnimation = BlzSpecialEffectRemoveSubAnimation
|
|
31
|
+
local setSpecialEffectScale = BlzSetSpecialEffectScale
|
|
33
32
|
local setSpecialEffectZ = BlzSetSpecialEffectZ
|
|
34
|
-
local
|
|
35
|
-
local getUnitZ = BlzGetUnitZ
|
|
36
|
-
local moveLocation = MoveLocation
|
|
33
|
+
local mathRad = math.rad
|
|
37
34
|
local location = Location(0, 0)
|
|
38
35
|
local function setSpecialEffectPitchDegrees(effect, pitch)
|
|
39
36
|
setSpecialEffectPitch(
|
|
@@ -47,71 +44,6 @@ local function setSpecialEffectRollDegrees(effect, roll)
|
|
|
47
44
|
-mathRad(roll)
|
|
48
45
|
)
|
|
49
46
|
end
|
|
50
|
-
local animTypeByAnimationName = {
|
|
51
|
-
attack = ANIM_TYPE_ATTACK,
|
|
52
|
-
birth = ANIM_TYPE_BIRTH,
|
|
53
|
-
death = ANIM_TYPE_DEATH,
|
|
54
|
-
decay = ANIM_TYPE_DECAY,
|
|
55
|
-
dissipate = ANIM_TYPE_DISSIPATE,
|
|
56
|
-
morph = ANIM_TYPE_MORPH,
|
|
57
|
-
portrait = ANIM_TYPE_PORTRAIT,
|
|
58
|
-
sleep = ANIM_TYPE_SLEEP,
|
|
59
|
-
spell = ANIM_TYPE_SPELL,
|
|
60
|
-
stand = ANIM_TYPE_STAND,
|
|
61
|
-
walk = ANIM_TYPE_WALK
|
|
62
|
-
}
|
|
63
|
-
local subAnimTypeByAnimationQualifier = {
|
|
64
|
-
alternate = SUBANIM_TYPE_ROOTED,
|
|
65
|
-
alternateex = SUBANIM_TYPE_ALTERNATE_EX,
|
|
66
|
-
chain = SUBANIM_TYPE_CHAINLIGHTNING,
|
|
67
|
-
channel = SUBANIM_TYPE_CHANNEL,
|
|
68
|
-
complete = SUBANIM_TYPE_COMPLETE,
|
|
69
|
-
critical = SUBANIM_TYPE_CRITICAL,
|
|
70
|
-
defend = SUBANIM_TYPE_DEFEND,
|
|
71
|
-
drain = SUBANIM_TYPE_DRAIN,
|
|
72
|
-
eattree = SUBANIM_TYPE_EATTREE,
|
|
73
|
-
fast = SUBANIM_TYPE_FAST,
|
|
74
|
-
fill = SUBANIM_TYPE_FILL,
|
|
75
|
-
flail = SUBANIM_TYPE_FLAIL,
|
|
76
|
-
flesh = SUBANIM_TYPE_FLESH,
|
|
77
|
-
fifth = SUBANIM_TYPE_FIFTH,
|
|
78
|
-
fire = SUBANIM_TYPE_FIRE,
|
|
79
|
-
first = SUBANIM_TYPE_FIRST,
|
|
80
|
-
five = SUBANIM_TYPE_FIVE,
|
|
81
|
-
four = SUBANIM_TYPE_FOUR,
|
|
82
|
-
fourth = SUBANIM_TYPE_FOURTH,
|
|
83
|
-
gold = SUBANIM_TYPE_GOLD,
|
|
84
|
-
hit = SUBANIM_TYPE_HIT,
|
|
85
|
-
large = SUBANIM_TYPE_LARGE,
|
|
86
|
-
left = SUBANIM_TYPE_LEFT,
|
|
87
|
-
light = SUBANIM_TYPE_LIGHT,
|
|
88
|
-
looping = SUBANIM_TYPE_LOOPING,
|
|
89
|
-
lumber = SUBANIM_TYPE_LUMBER,
|
|
90
|
-
medium = SUBANIM_TYPE_MEDIUM,
|
|
91
|
-
moderate = SUBANIM_TYPE_MODERATE,
|
|
92
|
-
off = SUBANIM_TYPE_OFF,
|
|
93
|
-
one = SUBANIM_TYPE_ONE,
|
|
94
|
-
puke = SUBANIM_TYPE_PUKE,
|
|
95
|
-
ready = SUBANIM_TYPE_READY,
|
|
96
|
-
right = SUBANIM_TYPE_RIGHT,
|
|
97
|
-
second = SUBANIM_TYPE_SECOND,
|
|
98
|
-
severe = SUBANIM_TYPE_SEVERE,
|
|
99
|
-
slam = SUBANIM_TYPE_SLAM,
|
|
100
|
-
small = SUBANIM_TYPE_SMALL,
|
|
101
|
-
spiked = SUBANIM_TYPE_SPIKED,
|
|
102
|
-
spin = SUBANIM_TYPE_SPIN,
|
|
103
|
-
swim = SUBANIM_TYPE_SWIM,
|
|
104
|
-
talk = SUBANIM_TYPE_TALK,
|
|
105
|
-
third = SUBANIM_TYPE_THIRD,
|
|
106
|
-
three = SUBANIM_TYPE_THREE,
|
|
107
|
-
throw = SUBANIM_TYPE_THROW,
|
|
108
|
-
two = SUBANIM_TYPE_TWO,
|
|
109
|
-
turn = SUBANIM_TYPE_TURN,
|
|
110
|
-
victory = SUBANIM_TYPE_VICTORY,
|
|
111
|
-
work = SUBANIM_TYPE_WORK,
|
|
112
|
-
wounded = SUBANIM_TYPE_WOUNDED,
|
|
113
|
-
upgrade = SUBANIM_TYPE_UPGRADE
|
|
114
|
-
}
|
|
115
47
|
local function setSpecialEffectColor(effect, color)
|
|
116
48
|
local dummyColor = dummyPlayer.color
|
|
117
49
|
dummyPlayer.color = color
|
|
@@ -178,6 +110,12 @@ function Effect.prototype.onDestroy(self)
|
|
|
178
110
|
destroyEffect(self.handle)
|
|
179
111
|
return Handle.prototype.onDestroy(self)
|
|
180
112
|
end
|
|
113
|
+
function Effect.prototype.setAnimation(self, animation)
|
|
114
|
+
setSpecialEffectAnimation(self.handle, animation)
|
|
115
|
+
end
|
|
116
|
+
function Effect.prototype.queueAnimation(self, animation)
|
|
117
|
+
queueSpecialEffectAnimation(self.handle, animation)
|
|
118
|
+
end
|
|
181
119
|
function Effect.create(self, modelPath, xOrWidget, yOrAttachmentPoint, parameters)
|
|
182
120
|
local effect = self:of(addSpecialEffectInternal(modelPath, xOrWidget, yOrAttachmentPoint, parameters))
|
|
183
121
|
if parameters ~= nil then
|
|
@@ -210,6 +148,34 @@ function Effect.flash(self, modelPath, xOrWidget, yOrOrAttachmentPoint, paramete
|
|
|
210
148
|
parameters
|
|
211
149
|
)
|
|
212
150
|
end
|
|
151
|
+
__TS__SetDescriptor(
|
|
152
|
+
Effect.prototype,
|
|
153
|
+
"blendTime",
|
|
154
|
+
{
|
|
155
|
+
get = function(self)
|
|
156
|
+
return self[103] or 0
|
|
157
|
+
end,
|
|
158
|
+
set = function(self, blendTime)
|
|
159
|
+
setSpecialEffectAnimationBlendTime(self.handle, blendTime)
|
|
160
|
+
self[103] = blendTime
|
|
161
|
+
end
|
|
162
|
+
},
|
|
163
|
+
true
|
|
164
|
+
)
|
|
165
|
+
__TS__SetDescriptor(
|
|
166
|
+
Effect.prototype,
|
|
167
|
+
"timeScale",
|
|
168
|
+
{
|
|
169
|
+
get = function(self)
|
|
170
|
+
return self[104] or 1
|
|
171
|
+
end,
|
|
172
|
+
set = function(self, timeScale)
|
|
173
|
+
setSpecialEffectTimeScale(self.handle, timeScale)
|
|
174
|
+
self[104] = timeScale
|
|
175
|
+
end
|
|
176
|
+
},
|
|
177
|
+
true
|
|
178
|
+
)
|
|
213
179
|
__TS__SetDescriptor(
|
|
214
180
|
Effect.prototype,
|
|
215
181
|
"color",
|
package/core/types/frame.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ export declare class Frame extends Handle<jframehandle> {
|
|
|
80
80
|
get onMouseLeave(): FrameEvent;
|
|
81
81
|
get onMouseUp(): FrameEvent;
|
|
82
82
|
get onMouseWheel(): FrameEvent<[number]>;
|
|
83
|
+
private trackMouseLocally;
|
|
83
84
|
get mouseEnterLocalEvent(): Event;
|
|
84
85
|
get mouseLeaveLocalEvent(): Event;
|
|
85
86
|
get popupMenuItemChangeEvent(): FrameEvent<[
|
|
@@ -136,8 +137,21 @@ export declare class Frame extends Handle<jframehandle> {
|
|
|
136
137
|
static get onMouseUp(): Event<[Player, jmousebuttontype, number, number]>;
|
|
137
138
|
private static onMouseDownEvent?;
|
|
138
139
|
static get onMouseDown(): Event<[Player, jmousebuttontype, number, number]>;
|
|
139
|
-
|
|
140
|
-
|
|
140
|
+
/**
|
|
141
|
+
* Synchronized native mouse movement of every player. Each movement of every player's
|
|
142
|
+
* cursor is sent over the network, so with several players moving their mice this floods
|
|
143
|
+
* the network and raises the latency for everyone. Prefer {@link mouseMoveLocalEvent} and
|
|
144
|
+
* synchronize the needed coordinates explicitly, only when they matter (e.g. on a click).
|
|
145
|
+
*/
|
|
146
|
+
static get mouseMoveEvent(): Event<[player: Player, x: number, y: number]>;
|
|
147
|
+
/**
|
|
148
|
+
* Fires on the local client when the world point under the cursor changes, whether the
|
|
149
|
+
* cursor or the camera moved. Polls the local cursor position every 1/64 second and sends
|
|
150
|
+
* nothing over the network. The point is the camera ray's intersection with the terrain,
|
|
151
|
+
* so it ignores units and doodads under the cursor. It is also computed while the cursor
|
|
152
|
+
* is over the UI; check {@link isMouseOnWorld} where that matters.
|
|
153
|
+
*/
|
|
154
|
+
static get mouseMoveLocalEvent(): Event<[x: number, y: number]>;
|
|
141
155
|
static createSimple<T extends Frame>(this: FrameSubclass<T>, name: string, parent?: Frame, createContext?: number): T;
|
|
142
156
|
static create<T extends Frame>(this: FrameSubclass<T>, name: string, parent: Frame, priority?: number, createContext?: number): T;
|
|
143
157
|
static createByType<T extends Frame>(this: FrameSubclass<T>, typeName: "BACKDROP" | "BUTTON" | "CHATDISPLAY" | "CHECKBOX" | "CONTROL" | "DIALOG" | "EDITBOX" | "FRAME" | "GLUEBUTTON" | "GLUECHECKBOX" | "GLUETEXTBUTTON" | "HIGHLIGHT" | "LISTBOX" | "MENU" | "POPUPMENU" | "SCROLLBAR" | "SLIDER" | "TEXT" | "TEXTAREA" | "TEXTBUTTON", name: string, parent: Frame, inherits?: string, createContext?: number): T;
|
package/core/types/frame.lua
CHANGED
|
@@ -21,9 +21,6 @@ local FRAME_MIN_Y = ____frame_2Dcoordinates.FRAME_MIN_Y
|
|
|
21
21
|
local getFrameMinXMaxX = ____frame_2Dcoordinates.getFrameMinXMaxX
|
|
22
22
|
local ____playerCamera = require("core.types.playerCamera")
|
|
23
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
24
|
local ____lua_2Dsets = require("utility.lua-sets")
|
|
28
25
|
local mutableLuaSet = ____lua_2Dsets.mutableLuaSet
|
|
29
26
|
local ____socket = require("net.socket")
|
|
@@ -39,8 +36,13 @@ local frameIsVisible = BlzFrameIsVisible
|
|
|
39
36
|
local frameSetEnable = BlzFrameSetEnable
|
|
40
37
|
local frameSetScale = BlzFrameSetScale
|
|
41
38
|
local getHandleId = GetHandleId
|
|
39
|
+
local getLocalClientHeight = BlzGetLocalClientHeight
|
|
40
|
+
local getMouseScreenPosX = BlzGetMouseScreenPosX
|
|
41
|
+
local getMouseScreenPosY = BlzGetMouseScreenPosY
|
|
42
42
|
local getOriginFrame = BlzGetOriginFrame
|
|
43
43
|
local location = Location
|
|
44
|
+
local pixelToFrameX = BlzPixelToFrameX
|
|
45
|
+
local pixelToFrameY = BlzPixelToFrameY
|
|
44
46
|
local ____rawget = _G.rawget
|
|
45
47
|
local rawset = _G.rawset
|
|
46
48
|
local invoke = Event.invoke
|
|
@@ -142,6 +144,55 @@ do
|
|
|
142
144
|
FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
|
|
143
145
|
end
|
|
144
146
|
local tooltipByFrame = setmetatable({}, {__mode = "k"})
|
|
147
|
+
local isMouseInsideLocallyByFrame = mutableLuaMap()
|
|
148
|
+
local mouseEnterLocalEventByFrame = mutableLuaMap()
|
|
149
|
+
local mouseLeaveLocalEventByFrame = mutableLuaMap()
|
|
150
|
+
local isLocalMouseTrackingStarted = false
|
|
151
|
+
--- Reused across ticks to avoid per-tick allocations: only the first `leftFrameCount` /
|
|
152
|
+
-- `enteredFrameCount` entries are meaningful, stale entries beyond them are never read and are
|
|
153
|
+
-- kept collectable by the weak values mode.
|
|
154
|
+
local leftFrames = setmetatable({}, {__mode = "v"})
|
|
155
|
+
local enteredFrames = setmetatable({}, {__mode = "v"})
|
|
156
|
+
--- All frames share a single poll which invokes every mouse leave event before any mouse enter
|
|
157
|
+
-- event within the same tick. With a poll per event, the invocation order would depend on the
|
|
158
|
+
-- event creation order instead, breaking listeners relying on the natural "leave the old frame,
|
|
159
|
+
-- then enter the new frame" order.
|
|
160
|
+
local function startLocalMouseTracking()
|
|
161
|
+
if isLocalMouseTrackingStarted then
|
|
162
|
+
return
|
|
163
|
+
end
|
|
164
|
+
isLocalMouseTrackingStarted = true
|
|
165
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
166
|
+
local leftFrameCount = 0
|
|
167
|
+
local enteredFrameCount = 0
|
|
168
|
+
for frame, wasMouseInside in pairs(isMouseInsideLocallyByFrame) do
|
|
169
|
+
local tooltip = tooltipByFrame[frame]
|
|
170
|
+
local isMouseInside = tooltip ~= nil and tooltip.visible
|
|
171
|
+
if isMouseInside ~= wasMouseInside then
|
|
172
|
+
isMouseInsideLocallyByFrame[frame] = isMouseInside
|
|
173
|
+
if isMouseInside then
|
|
174
|
+
enteredFrames[enteredFrameCount + 1] = frame
|
|
175
|
+
enteredFrameCount = enteredFrameCount + 1
|
|
176
|
+
else
|
|
177
|
+
leftFrames[leftFrameCount + 1] = frame
|
|
178
|
+
leftFrameCount = leftFrameCount + 1
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
for i = 1, leftFrameCount do
|
|
183
|
+
local event = mouseLeaveLocalEventByFrame[leftFrames[i]]
|
|
184
|
+
if event ~= nil then
|
|
185
|
+
Event.invoke(event)
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
for i = 1, enteredFrameCount do
|
|
189
|
+
local event = mouseEnterLocalEventByFrame[enteredFrames[i]]
|
|
190
|
+
if event ~= nil then
|
|
191
|
+
Event.invoke(event)
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
end)
|
|
195
|
+
end
|
|
145
196
|
local keyByAsyncInitOriginFrameType = luaMapOf(ORIGIN_FRAME_PORTRAIT_HP_TEXT, "hp", ORIGIN_FRAME_PORTRAIT_MANA_TEXT, "mana")
|
|
146
197
|
local asyncInitOriginFrameTypeByKey = luaMapInvert(keyByAsyncInitOriginFrameType)
|
|
147
198
|
local seenAsyncInitOriginFrameTypes = mutableLuaSet()
|
|
@@ -198,6 +249,18 @@ function Frame.prototype.getEvent(self, eventType, c)
|
|
|
198
249
|
end
|
|
199
250
|
return self.events[eventId]
|
|
200
251
|
end
|
|
252
|
+
function Frame.prototype.trackMouseLocally(self)
|
|
253
|
+
if not (tooltipByFrame[self] ~= nil) then
|
|
254
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
|
|
255
|
+
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
256
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
257
|
+
self:setTooltip(tooltip)
|
|
258
|
+
end
|
|
259
|
+
if not (isMouseInsideLocallyByFrame[self] ~= nil) then
|
|
260
|
+
isMouseInsideLocallyByFrame[self] = false
|
|
261
|
+
startLocalMouseTracking()
|
|
262
|
+
end
|
|
263
|
+
end
|
|
201
264
|
function Frame.prototype.hide(self)
|
|
202
265
|
self.hideCounter = self.hideCounter + 1
|
|
203
266
|
if self.hideCounter > 0 then
|
|
@@ -673,24 +736,8 @@ __TS__SetDescriptor(
|
|
|
673
736
|
"mouseEnterLocalEvent",
|
|
674
737
|
{get = function(self)
|
|
675
738
|
local event = __TS__New(Event)
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
679
|
-
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
680
|
-
self:setTooltip(tooltip)
|
|
681
|
-
end
|
|
682
|
-
local isMouseInside = false
|
|
683
|
-
Timer.onPeriod[1 / 64]:addListener(function()
|
|
684
|
-
local tooltip = tooltipByFrame[self]
|
|
685
|
-
if tooltip and tooltip.visible then
|
|
686
|
-
if not isMouseInside then
|
|
687
|
-
isMouseInside = true
|
|
688
|
-
Event.invoke(event)
|
|
689
|
-
end
|
|
690
|
-
else
|
|
691
|
-
isMouseInside = false
|
|
692
|
-
end
|
|
693
|
-
end)
|
|
739
|
+
self:trackMouseLocally()
|
|
740
|
+
mouseEnterLocalEventByFrame[self] = event
|
|
694
741
|
rawset(self, "mouseEnterLocalEvent", event)
|
|
695
742
|
return event
|
|
696
743
|
end},
|
|
@@ -701,24 +748,8 @@ __TS__SetDescriptor(
|
|
|
701
748
|
"mouseLeaveLocalEvent",
|
|
702
749
|
{get = function(self)
|
|
703
750
|
local event = __TS__New(Event)
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
707
|
-
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
708
|
-
self:setTooltip(tooltip)
|
|
709
|
-
end
|
|
710
|
-
local isMouseInside = false
|
|
711
|
-
Timer.onPeriod[1 / 64]:addListener(function()
|
|
712
|
-
local tooltip = tooltipByFrame[self]
|
|
713
|
-
if tooltip and tooltip.visible then
|
|
714
|
-
isMouseInside = true
|
|
715
|
-
else
|
|
716
|
-
if isMouseInside then
|
|
717
|
-
isMouseInside = false
|
|
718
|
-
Event.invoke(event)
|
|
719
|
-
end
|
|
720
|
-
end
|
|
721
|
-
end)
|
|
751
|
+
self:trackMouseLocally()
|
|
752
|
+
mouseLeaveLocalEventByFrame[self] = event
|
|
722
753
|
rawset(self, "mouseLeaveLocalEvent", event)
|
|
723
754
|
return event
|
|
724
755
|
end},
|
|
@@ -959,7 +990,7 @@ __TS__ObjectDefineProperty(
|
|
|
959
990
|
)
|
|
960
991
|
__TS__ObjectDefineProperty(
|
|
961
992
|
Frame,
|
|
962
|
-
"
|
|
993
|
+
"mouseMoveEvent",
|
|
963
994
|
{get = function(self)
|
|
964
995
|
local event = __TS__New(
|
|
965
996
|
TriggerEvent,
|
|
@@ -973,48 +1004,32 @@ __TS__ObjectDefineProperty(
|
|
|
973
1004
|
) end,
|
|
974
1005
|
function() return Player:of(GetTriggerPlayer()), BlzGetTriggerPlayerMouseX(), BlzGetTriggerPlayerMouseY() end
|
|
975
1006
|
)
|
|
976
|
-
rawset(____exports.Frame, "
|
|
1007
|
+
rawset(____exports.Frame, "mouseMoveEvent", event)
|
|
977
1008
|
return event
|
|
978
1009
|
end}
|
|
979
1010
|
)
|
|
980
1011
|
__TS__ObjectDefineProperty(
|
|
981
1012
|
Frame,
|
|
982
|
-
"
|
|
1013
|
+
"mouseMoveLocalEvent",
|
|
983
1014
|
{get = function(self)
|
|
984
|
-
local invoke = Event.invoke
|
|
985
1015
|
local event = __TS__New(Event)
|
|
986
|
-
local
|
|
987
|
-
local
|
|
988
|
-
local syncFrameX = 0
|
|
989
|
-
local syncFrameY = 0
|
|
990
|
-
local lastX = syncX
|
|
991
|
-
local lastY = syncY
|
|
992
|
-
self.onMouseMove:addListener(function(player, x, y)
|
|
993
|
-
if player.isLocal then
|
|
994
|
-
syncX = x
|
|
995
|
-
syncY = y
|
|
996
|
-
syncFrameX, syncFrameY = worldCoordinatesToFrame(
|
|
997
|
-
x,
|
|
998
|
-
y,
|
|
999
|
-
getTerrainZ(x, y)
|
|
1000
|
-
)
|
|
1001
|
-
lastX = x
|
|
1002
|
-
lastY = y
|
|
1003
|
-
invoke(event, x, y)
|
|
1004
|
-
end
|
|
1005
|
-
end)
|
|
1016
|
+
local lastX = 0
|
|
1017
|
+
local lastY = 0
|
|
1006
1018
|
Timer.onPeriod[1 / 64]:addListener(function()
|
|
1007
|
-
if
|
|
1019
|
+
if getLocalClientHeight() == 0 then
|
|
1008
1020
|
return
|
|
1009
1021
|
end
|
|
1010
|
-
local x, y, ____, isDefinite = frameCoordinatesToWorld(
|
|
1022
|
+
local x, y, ____, isDefinite = frameCoordinatesToWorld(
|
|
1023
|
+
pixelToFrameX(getMouseScreenPosX()),
|
|
1024
|
+
pixelToFrameY(getMouseScreenPosY())
|
|
1025
|
+
)
|
|
1011
1026
|
if isDefinite and (x ~= lastX or y ~= lastY) then
|
|
1012
1027
|
lastX = x
|
|
1013
1028
|
lastY = y
|
|
1014
1029
|
invoke(event, x, y)
|
|
1015
1030
|
end
|
|
1016
1031
|
end)
|
|
1017
|
-
rawset(____exports.Frame, "
|
|
1032
|
+
rawset(____exports.Frame, "mouseMoveLocalEvent", event)
|
|
1018
1033
|
return event
|
|
1019
1034
|
end}
|
|
1020
1035
|
)
|
package/core/types/handle.lua
CHANGED
|
@@ -15,6 +15,8 @@ local ____exception = require("exception")
|
|
|
15
15
|
local IllegalStateException = ____exception.IllegalStateException
|
|
16
16
|
local ____attributes = require("attributes")
|
|
17
17
|
local AttributesHolder = ____attributes.AttributesHolder
|
|
18
|
+
local ____preconditions = require("utility.preconditions")
|
|
19
|
+
local checkNotNull = ____preconditions.checkNotNull
|
|
18
20
|
local getHandleId = GetHandleId
|
|
19
21
|
local onCreateEventByHandleConstructor = {}
|
|
20
22
|
local onDestroyEventByHandleConstructor = {}
|
|
@@ -58,6 +60,9 @@ function Handle.invokeOnCreateEvent(self, clazz, handle)
|
|
|
58
60
|
Event.invoke(onCreateEvent, handle)
|
|
59
61
|
end
|
|
60
62
|
end
|
|
63
|
+
function Handle.isWrapped(self, handle)
|
|
64
|
+
return self.memoized[getHandleId(handle)] ~= nil
|
|
65
|
+
end
|
|
61
66
|
function Handle.prototype.__tostring(self)
|
|
62
67
|
return (self.constructor.name .. "@") .. tostring(getHandleId(self.handle))
|
|
63
68
|
end
|
|
@@ -66,17 +71,12 @@ function Handle.prototype.onDestroy(self, ...)
|
|
|
66
71
|
return nil
|
|
67
72
|
end
|
|
68
73
|
function Handle.prototype.destroy(self, ...)
|
|
74
|
+
if self[0] == 2 or self[0] == 3 then
|
|
75
|
+
return nil
|
|
76
|
+
end
|
|
69
77
|
local clazz = self.constructor
|
|
70
78
|
local id = getHandleId(self.handle)
|
|
71
|
-
|
|
72
|
-
error(
|
|
73
|
-
__TS__New(
|
|
74
|
-
IllegalStateException,
|
|
75
|
-
"Double-destroy run for handle " .. tostring(id)
|
|
76
|
-
),
|
|
77
|
-
0
|
|
78
|
-
)
|
|
79
|
-
end
|
|
79
|
+
checkNotNull(clazz.memoized[id])
|
|
80
80
|
self[0] = 2
|
|
81
81
|
if self.onDestroyEvent then
|
|
82
82
|
Event.invoke(self.onDestroyEvent)
|
package/core/types/missile.lua
CHANGED
|
@@ -25,6 +25,7 @@ local getHandleId = GetHandleId
|
|
|
25
25
|
local getUnitX = GetUnitX
|
|
26
26
|
local getUnitY = GetUnitY
|
|
27
27
|
local safeCall = warpack.safeCall
|
|
28
|
+
local UPDATE_PERIOD = 1 / 64
|
|
28
29
|
local head
|
|
29
30
|
local next = {}
|
|
30
31
|
local previous = {}
|
|
@@ -56,15 +57,15 @@ function Missile.launch(self, config, source, target, onArrival, ...)
|
|
|
56
57
|
local data = MISSILE_DATA_BY_UNIT_TYPE_ID[source.typeId]
|
|
57
58
|
local launchX = data.launchOffsetX
|
|
58
59
|
local launchY = data.launchOffsetY
|
|
59
|
-
local projectileVisOffsetX = data.launchVisualOffsetX
|
|
60
|
-
local projectileVisOffsetY = data.launchVisualOffsetY
|
|
61
60
|
local angle = rad(source.facing - 90)
|
|
62
61
|
local s = sin(angle)
|
|
63
62
|
local c = cos(angle)
|
|
64
63
|
offsetX = offsetX + (c * launchX - s * launchY)
|
|
65
64
|
offsetY = offsetY + (s * launchX + c * launchY)
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
local projectileVisOffsetX = data.launchVisualOffsetX
|
|
66
|
+
local projectileVisOffsetY = data.launchVisualOffsetY
|
|
67
|
+
visualOffsetX = visualOffsetX + (c * projectileVisOffsetY - s * projectileVisOffsetX)
|
|
68
|
+
visualOffsetY = visualOffsetY + (s * projectileVisOffsetY + c * projectileVisOffsetX)
|
|
68
69
|
visualOffsetZ = visualOffsetZ + data.launchOffsetZ
|
|
69
70
|
end
|
|
70
71
|
local ____opt_7 = config.targetOffset
|
|
@@ -101,8 +102,8 @@ function Missile.launch(self, config, source, target, onArrival, ...)
|
|
|
101
102
|
if config.scale then
|
|
102
103
|
setSpecialEffectScale(effect, config.scale)
|
|
103
104
|
end
|
|
104
|
-
local acceleration = (config.acceleration or 0)
|
|
105
|
-
local speed = config.speed
|
|
105
|
+
local acceleration = (config.acceleration or 0) * UPDATE_PERIOD * UPDATE_PERIOD
|
|
106
|
+
local speed = config.speed * UPDATE_PERIOD + acceleration / 2
|
|
106
107
|
local arcVAcceleration = 0
|
|
107
108
|
local arcVSpeed = 0
|
|
108
109
|
if config.arc then
|
|
@@ -226,7 +227,7 @@ function Missile.prototype.destroy(self)
|
|
|
226
227
|
previous[self] = nil
|
|
227
228
|
next[self] = nil
|
|
228
229
|
end
|
|
229
|
-
Timer.onPeriod[
|
|
230
|
+
Timer.onPeriod[UPDATE_PERIOD]:addListener(function()
|
|
230
231
|
local missile = head
|
|
231
232
|
while missile do
|
|
232
233
|
local nextMissile = next[missile]
|
package/core/types/player.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export declare class Player extends Handle<jplayer> {
|
|
|
28
28
|
static readonly neutralExtra: Player;
|
|
29
29
|
private static events;
|
|
30
30
|
readonly id: number;
|
|
31
|
+
readonly slotState: jplayerslotstate;
|
|
31
32
|
constructor(handle: jplayer);
|
|
32
33
|
onDestroy(): HandleDestructor;
|
|
33
34
|
toString(): string;
|
|
@@ -45,11 +46,11 @@ export declare class Player extends Handle<jplayer> {
|
|
|
45
46
|
get isUser(): boolean;
|
|
46
47
|
get isPlaying(): boolean;
|
|
47
48
|
get controller(): jmapcontrol;
|
|
48
|
-
get slotState(): jplayerslotstate;
|
|
49
49
|
clearSelection(): void;
|
|
50
50
|
selectSingle(unit: Unit): void;
|
|
51
51
|
select(unit: Unit): void;
|
|
52
52
|
deselect(unit: Unit): void;
|
|
53
|
+
setRaceSkin(racePreference: jracepreference): void;
|
|
53
54
|
forceUIKey(key: string): void;
|
|
54
55
|
forceUICancel(): void;
|
|
55
56
|
isAllyOf(other: Player): boolean;
|
package/core/types/player.lua
CHANGED
|
@@ -31,12 +31,13 @@ local getPlayerName = GetPlayerName
|
|
|
31
31
|
local getPlayerTechCount = GetPlayerTechCount
|
|
32
32
|
local getPlayerTechMaxAllowed = GetPlayerTechMaxAllowed
|
|
33
33
|
local getTriggerPlayer = GetTriggerPlayer
|
|
34
|
+
local playerNative = _G.Player
|
|
35
|
+
local setPlayerAbilityAvailable = SetPlayerAbilityAvailable
|
|
34
36
|
local setPlayerAlliance = SetPlayerAlliance
|
|
37
|
+
local setPlayerRaceSkin = SetPlayerRaceSkin
|
|
35
38
|
local setPlayerTechMaxAllowed = SetPlayerTechMaxAllowed
|
|
36
39
|
local setPlayerTechResearched = SetPlayerTechResearched
|
|
37
|
-
local setPlayerAbilityAvailable = SetPlayerAbilityAvailable
|
|
38
40
|
local triggerRegisterPlayerAllianceChange = TriggerRegisterPlayerAllianceChange
|
|
39
|
-
local playerNative = _G.Player
|
|
40
41
|
local nativeByPlayerAllianceType = {
|
|
41
42
|
[0] = ALLIANCE_PASSIVE,
|
|
42
43
|
[1] = ALLIANCE_RESCUABLE,
|
|
@@ -56,6 +57,7 @@ Player.name = "Player"
|
|
|
56
57
|
__TS__ClassExtends(Player, Handle)
|
|
57
58
|
function Player.prototype.____constructor(self, handle)
|
|
58
59
|
Handle.prototype.____constructor(self, handle)
|
|
60
|
+
self.slotState = GetPlayerSlotState(self.handle)
|
|
59
61
|
self.id = GetPlayerId(handle)
|
|
60
62
|
end
|
|
61
63
|
function Player.prototype.onDestroy(self)
|
|
@@ -88,6 +90,9 @@ function Player.prototype.deselect(self, unit)
|
|
|
88
90
|
SelectUnit(unit.handle, false)
|
|
89
91
|
end
|
|
90
92
|
end
|
|
93
|
+
function Player.prototype.setRaceSkin(self, racePreference)
|
|
94
|
+
setPlayerRaceSkin(self.handle, racePreference)
|
|
95
|
+
end
|
|
91
96
|
function Player.prototype.forceUIKey(self, key)
|
|
92
97
|
if self.isLocal then
|
|
93
98
|
ForceUIKey(key)
|
|
@@ -364,7 +369,7 @@ __TS__SetDescriptor(
|
|
|
364
369
|
Player.prototype,
|
|
365
370
|
"isUser",
|
|
366
371
|
{get = function(self)
|
|
367
|
-
return
|
|
372
|
+
return self.controller == MAP_CONTROL_USER
|
|
368
373
|
end},
|
|
369
374
|
true
|
|
370
375
|
)
|
|
@@ -372,7 +377,7 @@ __TS__SetDescriptor(
|
|
|
372
377
|
Player.prototype,
|
|
373
378
|
"isPlaying",
|
|
374
379
|
{get = function(self)
|
|
375
|
-
return
|
|
380
|
+
return self.slotState == PLAYER_SLOT_STATE_PLAYING
|
|
376
381
|
end},
|
|
377
382
|
true
|
|
378
383
|
)
|
|
@@ -380,15 +385,9 @@ __TS__SetDescriptor(
|
|
|
380
385
|
Player.prototype,
|
|
381
386
|
"controller",
|
|
382
387
|
{get = function(self)
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
)
|
|
387
|
-
__TS__SetDescriptor(
|
|
388
|
-
Player.prototype,
|
|
389
|
-
"slotState",
|
|
390
|
-
{get = function(self)
|
|
391
|
-
return GetPlayerSlotState(self.handle)
|
|
388
|
+
local controller = GetPlayerController(self.handle)
|
|
389
|
+
rawset(self, "controller", controller)
|
|
390
|
+
return controller
|
|
392
391
|
end},
|
|
393
392
|
true
|
|
394
393
|
)
|
|
@@ -490,4 +489,10 @@ __TS__ObjectDefineProperty(
|
|
|
490
489
|
end}
|
|
491
490
|
)
|
|
492
491
|
Player.colorChangedEvent = playerColorChangedEvent
|
|
492
|
+
____exports.Player.onLeave:addListener(
|
|
493
|
+
999999,
|
|
494
|
+
function(player)
|
|
495
|
+
rawset(player, "slotState", PLAYER_SLOT_STATE_LEFT)
|
|
496
|
+
end
|
|
497
|
+
)
|
|
493
498
|
return ____exports
|