warscript 0.0.1-dev.e1acea3 → 0.0.1-dev.e27e5b1
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 +6 -0
- package/attributes.lua +17 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +2 -3
- package/core/types/effect.lua +95 -48
- package/core/types/frame.d.ts +1 -0
- package/core/types/frame.lua +136 -58
- package/core/types/handle.lua +6 -9
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +18 -1
- package/core/types/player.lua +76 -26
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/playerColor.lua +4 -3
- package/core/types/sound.d.ts +18 -25
- package/core/types/sound.lua +113 -33
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/types/unit.d.ts +4 -0
- package/core/types/unit.lua +4 -0
- package/core/util.d.ts +1 -1
- package/core/util.lua +12 -1
- package/decl/native.d.ts +1718 -964
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- 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 +5 -0
- package/engine/behaviour/ability/apply-buff.lua +36 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +12 -3
- package/engine/behaviour/ability/damage.lua +33 -39
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +21 -6
- package/engine/behaviour/ability/on-command-impact.lua +7 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +13 -1
- package/engine/behaviour/ability/remove-buffs.lua +29 -2
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +23 -6
- package/engine/behaviour/ability.lua +115 -22
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +41 -2
- package/engine/behaviour/unit.lua +270 -6
- package/engine/buff.d.ts +113 -53
- package/engine/buff.lua +544 -288
- package/engine/internal/ability.d.ts +22 -2
- package/engine/internal/ability.lua +151 -27
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item+owner.d.ts +1 -0
- package/engine/internal/item+owner.lua +19 -6
- package/engine/internal/item.d.ts +30 -18
- package/engine/internal/item.lua +292 -102
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- 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/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- 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/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 +35 -0
- package/engine/internal/unit/ability.lua +113 -12
- 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/appearance.d.ts +15 -0
- package/engine/internal/unit/appearance.lua +85 -0
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bag.d.ts +18 -0
- package/engine/internal/unit/bag.lua +63 -0
- package/engine/internal/unit/bonus.d.ts +8 -0
- package/engine/internal/unit/bonus.lua +50 -3
- package/engine/internal/unit/buff.d.ts +2 -2
- package/engine/internal/unit/buff.lua +32 -17
- package/engine/internal/unit/equipment.d.ts +36 -0
- package/engine/internal/unit/equipment.lua +169 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- 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/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/{item.d.ts → inventory.d.ts} +3 -3
- package/engine/internal/unit/inventory.lua +77 -0
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
- package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
- 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+ability.lua +10 -1
- package/engine/internal/unit+bonus.lua +3 -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-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +45 -26
- package/engine/internal/unit.lua +443 -274
- 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 +21 -0
- package/engine/local-client.lua +150 -7
- 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 -2
- 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/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 +13 -0
- package/engine/object-data/auxiliary/equipment-type.lua +2 -0
- 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/item-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- 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/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/{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/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 +3 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +42 -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/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/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/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/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -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/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 +21 -17
- package/engine/object-data/entry/ability-type.lua +177 -40
- package/engine/object-data/entry/buff-type/applicable.lua +122 -137
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +28 -2
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/item-type.d.ts +3 -1
- package/engine/object-data/entry/item-type.lua +15 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- 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 +25 -5
- package/engine/object-data/entry/unit-type.lua +258 -93
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- 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 +12 -6
- package/engine/object-field/ability.lua +10 -6
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -7
- package/engine/object-field.lua +362 -117
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -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/fields/ability.d.ts +4 -2
- package/engine/standard/fields/ability.lua +4 -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 +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +11 -1
- package/engine/unit.lua +11 -1
- package/event.d.ts +1 -1
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.lua +1 -1
- package/network.lua +25 -1
- package/objutil/buff.lua +11 -10
- package/objutil/object.lua +1 -1
- package/objutil/unit.lua +8 -0
- package/operation.d.ts +8 -1
- package/operation.lua +38 -18
- package/package.json +5 -5
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +5 -1
- package/utility/linked-set.lua +49 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- package/engine/internal/unit/item.lua +0 -84
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.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
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
|
+
declare const marker: {};
|
|
2
3
|
export type Attribute<T> = {
|
|
3
4
|
readonly __attribute: unique symbol;
|
|
4
5
|
readonly __type: T;
|
|
6
|
+
readonly __marker: typeof marker;
|
|
5
7
|
} & symbol;
|
|
8
|
+
export declare const attribute: <T>() => Attribute<T>;
|
|
9
|
+
export declare const isAttribute: (value: unknown) => value is Attribute<unknown>;
|
|
6
10
|
export declare namespace Attribute {
|
|
7
11
|
const create: <T>() => Attribute<T>;
|
|
8
12
|
}
|
|
9
13
|
export declare class AttributesHolder {
|
|
10
14
|
readonly get: (<T>(attribute: Attribute<T>) => T | undefined) & LuaExtension<"TableGetMethod">;
|
|
11
15
|
readonly set: (<T>(attribute: Attribute<T>, value: T | undefined) => void) & LuaExtension<"TableSetMethod">;
|
|
16
|
+
getOrPut<T>(attribute: Attribute<T>, defaultValue: () => T): T;
|
|
12
17
|
}
|
|
18
|
+
export {};
|
package/attributes.lua
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
3
|
local ____exports = {}
|
|
4
|
+
local marker = {}
|
|
5
|
+
____exports.attribute = function()
|
|
6
|
+
return {__marker = marker}
|
|
7
|
+
end
|
|
8
|
+
____exports.isAttribute = function(value)
|
|
9
|
+
return type(value) == "table" and rawget(value, "__marker") == marker
|
|
10
|
+
end
|
|
4
11
|
____exports.Attribute = {}
|
|
5
12
|
local Attribute = ____exports.Attribute
|
|
6
13
|
do
|
|
7
14
|
Attribute.create = function()
|
|
8
|
-
return {}
|
|
15
|
+
return {__marker = marker}
|
|
9
16
|
end
|
|
10
17
|
end
|
|
11
18
|
____exports.AttributesHolder = __TS__Class()
|
|
@@ -13,4 +20,13 @@ local AttributesHolder = ____exports.AttributesHolder
|
|
|
13
20
|
AttributesHolder.name = "AttributesHolder"
|
|
14
21
|
function AttributesHolder.prototype.____constructor(self)
|
|
15
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
|
|
16
32
|
return ____exports
|
package/config.d.ts
ADDED
package/config.lua
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
____exports.WarscriptConfig = __TS__Class()
|
|
5
|
+
local WarscriptConfig = ____exports.WarscriptConfig
|
|
6
|
+
WarscriptConfig.name = "WarscriptConfig"
|
|
7
|
+
function WarscriptConfig.prototype.____constructor(self)
|
|
8
|
+
end
|
|
9
|
+
WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH = true
|
|
10
|
+
return ____exports
|
package/core/types/effect.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ declare const enum EffectPropertyKey {
|
|
|
8
8
|
ROLL = 102
|
|
9
9
|
}
|
|
10
10
|
export type EffectParameters = {
|
|
11
|
+
readonly delay?: number;
|
|
11
12
|
readonly scale?: number;
|
|
12
13
|
readonly color?: PlayerColor;
|
|
13
14
|
readonly pitch?: number;
|
|
@@ -29,12 +30,10 @@ export declare class Effect extends Handle<jeffect> {
|
|
|
29
30
|
set pitch(pitch: number);
|
|
30
31
|
get roll(): number;
|
|
31
32
|
set roll(roll: number);
|
|
32
|
-
static create<T extends Effect>(this: typeof Effect & (new (handle: jeffect) => T),
|
|
33
|
-
static createTarget<T extends Effect>(this: typeof Effect & (new (handle: jeffect) => T), model: string, target: Widget, attachPoint: string): T;
|
|
33
|
+
static create<T extends Effect>(this: typeof Effect & (new (handle: jeffect) => T), modelPath: string, xOrWidget: number | Widget, yOrAttachmentPoint?: number | string, parameters?: EffectParameters): T;
|
|
34
34
|
static flash(modelPath: string, ...args: [
|
|
35
35
|
...pointOrWidget: [x: number, y: number] | [widget: Widget, attachmentPoint?: string],
|
|
36
36
|
...parametersOrDuration: [parametersOrDuration?: EffectParameters | number] | [duration?: number, parameters?: EffectParameters]
|
|
37
37
|
]): void;
|
|
38
|
-
static flashTarget(model: string, target: Widget, attachPoint: string, duration?: number): void;
|
|
39
38
|
}
|
|
40
39
|
export {};
|
package/core/types/effect.lua
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
3
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
-
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
5
4
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
5
|
+
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
6
6
|
local ____exports = {}
|
|
7
|
-
local dummyPlayer
|
|
7
|
+
local dummyPlayer, addSpecialEffectInternal, flash
|
|
8
8
|
local ____handle = require("core.types.handle")
|
|
9
9
|
local Handle = ____handle.Handle
|
|
10
10
|
local ____playerColor = require("core.types.playerColor")
|
|
@@ -119,10 +119,18 @@ local function setSpecialEffectColor(effect, color)
|
|
|
119
119
|
dummyPlayer.color = dummyColor
|
|
120
120
|
end
|
|
121
121
|
local setters = {scale = setSpecialEffectScale, color = setSpecialEffectColor, pitch = setSpecialEffectPitchDegrees, roll = setSpecialEffectRollDegrees}
|
|
122
|
+
local setterProperties = {"scale", "color", "pitch", "roll"}
|
|
122
123
|
dummyPlayer = Player.neutralExtra
|
|
123
124
|
local temporaryEffects = {}
|
|
124
125
|
local temporaryEffectsDurations = {}
|
|
125
126
|
local temporaryEffectsCount = 0
|
|
127
|
+
local delayedEffectsModelPath = {}
|
|
128
|
+
local delayedEffectsXOrWidget = {}
|
|
129
|
+
local delayedEffectsYOrAttachmentPoint = {}
|
|
130
|
+
local delayedEffectsDuration = {}
|
|
131
|
+
local delayedEffectsParameters = {}
|
|
132
|
+
local delayedEffectsDelay = {}
|
|
133
|
+
local delayedEffectsCount = 0
|
|
126
134
|
local period = 1 / 32
|
|
127
135
|
Timer.onPeriod[period]:addListener(function()
|
|
128
136
|
local i = 1
|
|
@@ -131,12 +139,36 @@ Timer.onPeriod[period]:addListener(function()
|
|
|
131
139
|
if duration <= 0 then
|
|
132
140
|
destroyEffect(temporaryEffects[i])
|
|
133
141
|
temporaryEffects[i] = temporaryEffects[temporaryEffectsCount]
|
|
142
|
+
temporaryEffectsDurations[i] = temporaryEffectsDurations[temporaryEffectsCount]
|
|
134
143
|
temporaryEffectsCount = temporaryEffectsCount - 1
|
|
135
144
|
else
|
|
136
145
|
temporaryEffectsDurations[i] = duration - period
|
|
137
146
|
i = i + 1
|
|
138
147
|
end
|
|
139
148
|
end
|
|
149
|
+
i = 1
|
|
150
|
+
while i <= delayedEffectsCount do
|
|
151
|
+
local delay = delayedEffectsDelay[i]
|
|
152
|
+
if delay <= 0 then
|
|
153
|
+
flash(
|
|
154
|
+
delayedEffectsModelPath[i],
|
|
155
|
+
delayedEffectsXOrWidget[i],
|
|
156
|
+
delayedEffectsYOrAttachmentPoint[i],
|
|
157
|
+
delayedEffectsDuration[i],
|
|
158
|
+
delayedEffectsParameters[i]
|
|
159
|
+
)
|
|
160
|
+
delayedEffectsModelPath[i] = delayedEffectsModelPath[delayedEffectsCount]
|
|
161
|
+
delayedEffectsXOrWidget[i] = delayedEffectsXOrWidget[delayedEffectsCount]
|
|
162
|
+
delayedEffectsYOrAttachmentPoint[i] = delayedEffectsYOrAttachmentPoint[delayedEffectsCount]
|
|
163
|
+
delayedEffectsDuration[i] = delayedEffectsDuration[delayedEffectsCount]
|
|
164
|
+
delayedEffectsParameters[i] = delayedEffectsParameters[delayedEffectsCount]
|
|
165
|
+
delayedEffectsDelay[i] = delayedEffectsDelay[delayedEffectsCount]
|
|
166
|
+
delayedEffectsCount = delayedEffectsCount - 1
|
|
167
|
+
else
|
|
168
|
+
delayedEffectsDelay[i] = delay - period
|
|
169
|
+
i = i + 1
|
|
170
|
+
end
|
|
171
|
+
end
|
|
140
172
|
end)
|
|
141
173
|
____exports.Effect = __TS__Class()
|
|
142
174
|
local Effect = ____exports.Effect
|
|
@@ -146,66 +178,44 @@ function Effect.prototype.onDestroy(self)
|
|
|
146
178
|
destroyEffect(self.handle)
|
|
147
179
|
return Handle.prototype.onDestroy(self)
|
|
148
180
|
end
|
|
149
|
-
function Effect.create(self,
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
181
|
+
function Effect.create(self, modelPath, xOrWidget, yOrAttachmentPoint, parameters)
|
|
182
|
+
local effect = self:of(addSpecialEffectInternal(modelPath, xOrWidget, yOrAttachmentPoint, parameters))
|
|
183
|
+
if parameters ~= nil then
|
|
184
|
+
effect[100] = parameters.color
|
|
185
|
+
effect[101] = parameters.pitch
|
|
186
|
+
effect[102] = parameters.roll
|
|
187
|
+
end
|
|
188
|
+
return effect
|
|
154
189
|
end
|
|
155
190
|
function Effect.flash(self, modelPath, xOrWidget, yOrOrAttachmentPoint, parametersOrDuration, parameters)
|
|
156
191
|
if type(parametersOrDuration) ~= "number" then
|
|
157
192
|
parameters = parametersOrDuration
|
|
158
193
|
parametersOrDuration = nil
|
|
159
194
|
end
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
if parameters ~= nil then
|
|
169
|
-
for key, value in ____pairs(parameters) do
|
|
170
|
-
if key ~= "zOffset" and key ~= "detached" and key ~= "scaleZOffset" then
|
|
171
|
-
setters[key](effect, value)
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
if isPositional and parameters.zOffset ~= nil then
|
|
175
|
-
moveLocation(location, x, y)
|
|
176
|
-
local z = __TS__InstanceOf(xOrWidget, Unit) and getLocationZ(location) + xOrWidget.flyHeight or getLocationZ(location)
|
|
177
|
-
BlzSetSpecialEffectZ(
|
|
178
|
-
effect,
|
|
179
|
-
z + parameters.zOffset * (parameters.scaleZOffset and getSpecialEffectScale(effect) or 1)
|
|
180
|
-
)
|
|
181
|
-
end
|
|
182
|
-
end
|
|
183
|
-
if parametersOrDuration ~= nil and parametersOrDuration > 0 then
|
|
184
|
-
temporaryEffectsCount = temporaryEffectsCount + 1
|
|
185
|
-
temporaryEffects[temporaryEffectsCount] = effect
|
|
186
|
-
temporaryEffectsDurations[temporaryEffectsCount] = parametersOrDuration
|
|
195
|
+
if parameters and (parameters.delay or 0) > 0 then
|
|
196
|
+
delayedEffectsCount = delayedEffectsCount + 1
|
|
197
|
+
delayedEffectsModelPath[delayedEffectsCount] = modelPath
|
|
198
|
+
delayedEffectsXOrWidget[delayedEffectsCount] = xOrWidget
|
|
199
|
+
delayedEffectsYOrAttachmentPoint[delayedEffectsCount] = yOrOrAttachmentPoint
|
|
200
|
+
delayedEffectsDuration[delayedEffectsCount] = parametersOrDuration
|
|
201
|
+
delayedEffectsParameters[delayedEffectsCount] = parameters
|
|
202
|
+
delayedEffectsDelay[delayedEffectsCount] = parameters.delay
|
|
187
203
|
return
|
|
188
204
|
end
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
temporaryEffects[temporaryEffectsCount] = effect
|
|
197
|
-
temporaryEffectsDurations[temporaryEffectsCount] = duration
|
|
198
|
-
else
|
|
199
|
-
destroyEffect(effect)
|
|
200
|
-
end
|
|
201
|
-
end
|
|
205
|
+
flash(
|
|
206
|
+
modelPath,
|
|
207
|
+
xOrWidget,
|
|
208
|
+
yOrOrAttachmentPoint,
|
|
209
|
+
parametersOrDuration,
|
|
210
|
+
parameters
|
|
211
|
+
)
|
|
202
212
|
end
|
|
203
213
|
__TS__SetDescriptor(
|
|
204
214
|
Effect.prototype,
|
|
205
215
|
"color",
|
|
206
216
|
{
|
|
207
217
|
get = function(self)
|
|
208
|
-
return self[100] or PlayerColor.
|
|
218
|
+
return self[100] or PlayerColor.red
|
|
209
219
|
end,
|
|
210
220
|
set = function(self, color)
|
|
211
221
|
setSpecialEffectColor(self.handle, color)
|
|
@@ -255,4 +265,41 @@ __TS__SetDescriptor(
|
|
|
255
265
|
},
|
|
256
266
|
true
|
|
257
267
|
)
|
|
268
|
+
addSpecialEffectInternal = function(modelPath, xOrWidget, yOrAttachmentPoint, parameters)
|
|
269
|
+
local coordinatesProvided = type(xOrWidget) == "number"
|
|
270
|
+
local isPositional = coordinatesProvided or (parameters and parameters.detached) == true
|
|
271
|
+
local x = not isPositional and 0 or (coordinatesProvided and xOrWidget or xOrWidget.x)
|
|
272
|
+
local y = not isPositional and 0 or (coordinatesProvided and yOrAttachmentPoint or xOrWidget.y)
|
|
273
|
+
local effect = isPositional and addSpecialEffect(modelPath, x, y) or addSpecialEffectTarget(modelPath, xOrWidget.handle, yOrAttachmentPoint or "origin")
|
|
274
|
+
if parameters ~= nil then
|
|
275
|
+
if isPositional and parameters.scale == nil and __TS__InstanceOf(xOrWidget, Unit) then
|
|
276
|
+
setSpecialEffectScale(effect, xOrWidget.scale)
|
|
277
|
+
end
|
|
278
|
+
for ____, property in ipairs(setterProperties) do
|
|
279
|
+
local value = parameters[property]
|
|
280
|
+
if value ~= nil then
|
|
281
|
+
setters[property](effect, value)
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
if isPositional and parameters.zOffset ~= nil then
|
|
285
|
+
moveLocation(location, x, y)
|
|
286
|
+
local z = __TS__InstanceOf(xOrWidget, Unit) and getLocationZ(location) + xOrWidget.flyHeight or getLocationZ(location)
|
|
287
|
+
setSpecialEffectZ(
|
|
288
|
+
effect,
|
|
289
|
+
z + parameters.zOffset * (parameters.scaleZOffset and getSpecialEffectScale(effect) or 1)
|
|
290
|
+
)
|
|
291
|
+
end
|
|
292
|
+
end
|
|
293
|
+
return effect
|
|
294
|
+
end
|
|
295
|
+
flash = function(modelPath, xOrWidget, yOrAttachmentPoint, duration, parameters)
|
|
296
|
+
local effect = addSpecialEffectInternal(modelPath, xOrWidget, yOrAttachmentPoint, parameters)
|
|
297
|
+
if duration ~= nil and duration > 0 then
|
|
298
|
+
temporaryEffectsCount = temporaryEffectsCount + 1
|
|
299
|
+
temporaryEffects[temporaryEffectsCount] = effect
|
|
300
|
+
temporaryEffectsDurations[temporaryEffectsCount] = duration
|
|
301
|
+
return
|
|
302
|
+
end
|
|
303
|
+
destroyEffect(effect)
|
|
304
|
+
end
|
|
258
305
|
return ____exports
|
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<[
|
package/core/types/frame.lua
CHANGED
|
@@ -15,13 +15,32 @@ local Event = ____event.Event
|
|
|
15
15
|
local TriggerEvent = ____event.TriggerEvent
|
|
16
16
|
local ____timer = require("core.types.timer")
|
|
17
17
|
local Timer = ____timer.Timer
|
|
18
|
+
local ____frame_2Dcoordinates = require("engine.internal.misc.frame-coordinates")
|
|
19
|
+
local FRAME_MAX_Y = ____frame_2Dcoordinates.FRAME_MAX_Y
|
|
20
|
+
local FRAME_MIN_Y = ____frame_2Dcoordinates.FRAME_MIN_Y
|
|
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
|
|
18
36
|
local frameClick = BlzFrameClick
|
|
19
37
|
local frameGetEnable = BlzFrameGetEnable
|
|
20
38
|
local frameIsVisible = BlzFrameIsVisible
|
|
21
39
|
local frameSetEnable = BlzFrameSetEnable
|
|
22
40
|
local frameSetScale = BlzFrameSetScale
|
|
23
|
-
local
|
|
24
|
-
local
|
|
41
|
+
local getHandleId = GetHandleId
|
|
42
|
+
local getOriginFrame = BlzGetOriginFrame
|
|
43
|
+
local location = Location
|
|
25
44
|
local ____rawget = _G.rawget
|
|
26
45
|
local rawset = _G.rawset
|
|
27
46
|
local invoke = Event.invoke
|
|
@@ -123,6 +142,79 @@ do
|
|
|
123
142
|
FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
|
|
124
143
|
end
|
|
125
144
|
local tooltipByFrame = setmetatable({}, {__mode = "k"})
|
|
145
|
+
local isMouseInsideLocallyByFrame = mutableLuaMap()
|
|
146
|
+
local mouseEnterLocalEventByFrame = mutableLuaMap()
|
|
147
|
+
local mouseLeaveLocalEventByFrame = mutableLuaMap()
|
|
148
|
+
local isLocalMouseTrackingStarted = false
|
|
149
|
+
--- Reused across ticks to avoid per-tick allocations: only the first `leftFrameCount` /
|
|
150
|
+
-- `enteredFrameCount` entries are meaningful, stale entries beyond them are never read and are
|
|
151
|
+
-- kept collectable by the weak values mode.
|
|
152
|
+
local leftFrames = setmetatable({}, {__mode = "v"})
|
|
153
|
+
local enteredFrames = setmetatable({}, {__mode = "v"})
|
|
154
|
+
--- All frames share a single poll which invokes every mouse leave event before any mouse enter
|
|
155
|
+
-- event within the same tick. With a poll per event, the invocation order would depend on the
|
|
156
|
+
-- event creation order instead, breaking listeners relying on the natural "leave the old frame,
|
|
157
|
+
-- then enter the new frame" order.
|
|
158
|
+
local function startLocalMouseTracking()
|
|
159
|
+
if isLocalMouseTrackingStarted then
|
|
160
|
+
return
|
|
161
|
+
end
|
|
162
|
+
isLocalMouseTrackingStarted = true
|
|
163
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
164
|
+
local leftFrameCount = 0
|
|
165
|
+
local enteredFrameCount = 0
|
|
166
|
+
for frame, wasMouseInside in pairs(isMouseInsideLocallyByFrame) do
|
|
167
|
+
local tooltip = tooltipByFrame[frame]
|
|
168
|
+
local isMouseInside = tooltip ~= nil and tooltip.visible
|
|
169
|
+
if isMouseInside ~= wasMouseInside then
|
|
170
|
+
isMouseInsideLocallyByFrame[frame] = isMouseInside
|
|
171
|
+
if isMouseInside then
|
|
172
|
+
enteredFrames[enteredFrameCount + 1] = frame
|
|
173
|
+
enteredFrameCount = enteredFrameCount + 1
|
|
174
|
+
else
|
|
175
|
+
leftFrames[leftFrameCount + 1] = frame
|
|
176
|
+
leftFrameCount = leftFrameCount + 1
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
for i = 1, leftFrameCount do
|
|
181
|
+
local event = mouseLeaveLocalEventByFrame[leftFrames[i]]
|
|
182
|
+
if event ~= nil then
|
|
183
|
+
Event.invoke(event)
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
for i = 1, enteredFrameCount do
|
|
187
|
+
local event = mouseEnterLocalEventByFrame[enteredFrames[i]]
|
|
188
|
+
if event ~= nil then
|
|
189
|
+
Event.invoke(event)
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
end)
|
|
193
|
+
end
|
|
194
|
+
local keyByAsyncInitOriginFrameType = luaMapOf(ORIGIN_FRAME_PORTRAIT_HP_TEXT, "hp", ORIGIN_FRAME_PORTRAIT_MANA_TEXT, "mana")
|
|
195
|
+
local asyncInitOriginFrameTypeByKey = luaMapInvert(keyByAsyncInitOriginFrameType)
|
|
196
|
+
local seenAsyncInitOriginFrameTypes = mutableLuaSet()
|
|
197
|
+
local seenAsyncInitOriginFrameTypesSocket = __TS__New(Socket)
|
|
198
|
+
local seenPlayersByAsyncInitOriginFrameType = mutableLuaMap()
|
|
199
|
+
seenAsyncInitOriginFrameTypesSocket.onMessage:addListener(function(player, key)
|
|
200
|
+
local asyncInitOriginFrameType = asyncInitOriginFrameTypeByKey[key]
|
|
201
|
+
if asyncInitOriginFrameType ~= nil then
|
|
202
|
+
getOrPut(seenPlayersByAsyncInitOriginFrameType, asyncInitOriginFrameType, mutableLuaSet)[player] = true
|
|
203
|
+
end
|
|
204
|
+
end)
|
|
205
|
+
local function haveAllPlayersSeenAsyncInitOriginFrameType(frame)
|
|
206
|
+
local players = seenPlayersByAsyncInitOriginFrameType[frame]
|
|
207
|
+
if players == nil then
|
|
208
|
+
return false
|
|
209
|
+
end
|
|
210
|
+
for ____, player in ipairs(Player.all) do
|
|
211
|
+
if player.isUser and player.isPlaying and not (players[player] ~= nil) then
|
|
212
|
+
return false
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
keyByAsyncInitOriginFrameType[frame] = nil
|
|
216
|
+
return true
|
|
217
|
+
end
|
|
126
218
|
____exports.Frame = __TS__Class()
|
|
127
219
|
local Frame = ____exports.Frame
|
|
128
220
|
Frame.name = "Frame"
|
|
@@ -155,6 +247,18 @@ function Frame.prototype.getEvent(self, eventType, c)
|
|
|
155
247
|
end
|
|
156
248
|
return self.events[eventId]
|
|
157
249
|
end
|
|
250
|
+
function Frame.prototype.trackMouseLocally(self)
|
|
251
|
+
if not (tooltipByFrame[self] ~= nil) then
|
|
252
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
|
|
253
|
+
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)
|
|
254
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
255
|
+
self:setTooltip(tooltip)
|
|
256
|
+
end
|
|
257
|
+
if not (isMouseInsideLocallyByFrame[self] ~= nil) then
|
|
258
|
+
isMouseInsideLocallyByFrame[self] = false
|
|
259
|
+
startLocalMouseTracking()
|
|
260
|
+
end
|
|
261
|
+
end
|
|
158
262
|
function Frame.prototype.hide(self)
|
|
159
263
|
self.hideCounter = self.hideCounter + 1
|
|
160
264
|
if self.hideCounter > 0 then
|
|
@@ -301,7 +405,17 @@ function Frame.byOrigin(self, frameType, index)
|
|
|
301
405
|
if index == nil then
|
|
302
406
|
index = 0
|
|
303
407
|
end
|
|
304
|
-
|
|
408
|
+
local frame = getOriginFrame(frameType, index)
|
|
409
|
+
local asyncInitOriginFrameTypeKey = keyByAsyncInitOriginFrameType[frameType]
|
|
410
|
+
if index == 0 and asyncInitOriginFrameTypeKey ~= nil and not haveAllPlayersSeenAsyncInitOriginFrameType(frameType) then
|
|
411
|
+
if getHandleId(frame) == 0 or seenAsyncInitOriginFrameTypes[frameType] ~= nil then
|
|
412
|
+
location(0, 0)
|
|
413
|
+
else
|
|
414
|
+
seenAsyncInitOriginFrameTypes[frameType] = true
|
|
415
|
+
seenAsyncInitOriginFrameTypesSocket:send(asyncInitOriginFrameTypeKey)
|
|
416
|
+
end
|
|
417
|
+
end
|
|
418
|
+
return self:of(frame)
|
|
305
419
|
end
|
|
306
420
|
Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
|
|
307
421
|
Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
|
|
@@ -344,27 +458,21 @@ __TS__ObjectDefineProperty(
|
|
|
344
458
|
Frame,
|
|
345
459
|
"minX",
|
|
346
460
|
{get = function(self)
|
|
347
|
-
local
|
|
348
|
-
|
|
349
|
-
local width4by3 = (w - h / 600 * 800) / 2
|
|
350
|
-
local pxtodpi = 0.6 / h
|
|
351
|
-
return -width4by3 * pxtodpi
|
|
461
|
+
local minX = getFrameMinXMaxX()
|
|
462
|
+
return minX
|
|
352
463
|
end}
|
|
353
464
|
)
|
|
354
465
|
__TS__ObjectDefineProperty(
|
|
355
466
|
Frame,
|
|
356
467
|
"maxX",
|
|
357
468
|
{get = function(self)
|
|
358
|
-
local
|
|
359
|
-
|
|
360
|
-
local width4by3 = (w - h / 600 * 800) / 2
|
|
361
|
-
local pxtodpi = 0.6 / h
|
|
362
|
-
return (-width4by3 + w) * pxtodpi
|
|
469
|
+
local ____, maxX = getFrameMinXMaxX()
|
|
470
|
+
return maxX
|
|
363
471
|
end}
|
|
364
472
|
)
|
|
365
473
|
Frame.centerX = 0.4
|
|
366
|
-
Frame.minY =
|
|
367
|
-
Frame.maxY =
|
|
474
|
+
Frame.minY = FRAME_MIN_Y
|
|
475
|
+
Frame.maxY = FRAME_MAX_Y
|
|
368
476
|
Frame.centerY = 0.3
|
|
369
477
|
__TS__SetDescriptor(
|
|
370
478
|
Frame.prototype,
|
|
@@ -626,24 +734,8 @@ __TS__SetDescriptor(
|
|
|
626
734
|
"mouseEnterLocalEvent",
|
|
627
735
|
{get = function(self)
|
|
628
736
|
local event = __TS__New(Event)
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
632
|
-
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
633
|
-
self:setTooltip(tooltip)
|
|
634
|
-
end
|
|
635
|
-
local isMouseInside = false
|
|
636
|
-
Timer.onPeriod[1 / 64]:addListener(function()
|
|
637
|
-
local tooltip = tooltipByFrame[self]
|
|
638
|
-
if tooltip and tooltip.visible then
|
|
639
|
-
if not isMouseInside then
|
|
640
|
-
isMouseInside = true
|
|
641
|
-
Event.invoke(event)
|
|
642
|
-
end
|
|
643
|
-
else
|
|
644
|
-
isMouseInside = false
|
|
645
|
-
end
|
|
646
|
-
end)
|
|
737
|
+
self:trackMouseLocally()
|
|
738
|
+
mouseEnterLocalEventByFrame[self] = event
|
|
647
739
|
rawset(self, "mouseEnterLocalEvent", event)
|
|
648
740
|
return event
|
|
649
741
|
end},
|
|
@@ -654,24 +746,8 @@ __TS__SetDescriptor(
|
|
|
654
746
|
"mouseLeaveLocalEvent",
|
|
655
747
|
{get = function(self)
|
|
656
748
|
local event = __TS__New(Event)
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
660
|
-
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
661
|
-
self:setTooltip(tooltip)
|
|
662
|
-
end
|
|
663
|
-
local isMouseInside = false
|
|
664
|
-
Timer.onPeriod[1 / 64]:addListener(function()
|
|
665
|
-
local tooltip = tooltipByFrame[self]
|
|
666
|
-
if tooltip and tooltip.visible then
|
|
667
|
-
isMouseInside = true
|
|
668
|
-
else
|
|
669
|
-
if isMouseInside then
|
|
670
|
-
isMouseInside = false
|
|
671
|
-
Event.invoke(event)
|
|
672
|
-
end
|
|
673
|
-
end
|
|
674
|
-
end)
|
|
749
|
+
self:trackMouseLocally()
|
|
750
|
+
mouseLeaveLocalEventByFrame[self] = event
|
|
675
751
|
rawset(self, "mouseLeaveLocalEvent", event)
|
|
676
752
|
return event
|
|
677
753
|
end},
|
|
@@ -938,16 +1014,19 @@ __TS__ObjectDefineProperty(
|
|
|
938
1014
|
local event = __TS__New(Event)
|
|
939
1015
|
local syncX = 0
|
|
940
1016
|
local syncY = 0
|
|
941
|
-
local
|
|
942
|
-
local
|
|
1017
|
+
local syncFrameX = 0
|
|
1018
|
+
local syncFrameY = 0
|
|
943
1019
|
local lastX = syncX
|
|
944
1020
|
local lastY = syncY
|
|
945
1021
|
self.onMouseMove:addListener(function(player, x, y)
|
|
946
1022
|
if player.isLocal then
|
|
947
1023
|
syncX = x
|
|
948
1024
|
syncY = y
|
|
949
|
-
|
|
950
|
-
|
|
1025
|
+
syncFrameX, syncFrameY = worldCoordinatesToFrame(
|
|
1026
|
+
x,
|
|
1027
|
+
y,
|
|
1028
|
+
getTerrainZ(x, y)
|
|
1029
|
+
)
|
|
951
1030
|
lastX = x
|
|
952
1031
|
lastY = y
|
|
953
1032
|
invoke(event, x, y)
|
|
@@ -957,9 +1036,8 @@ __TS__ObjectDefineProperty(
|
|
|
957
1036
|
if syncX == 0 and syncY == 0 then
|
|
958
1037
|
return
|
|
959
1038
|
end
|
|
960
|
-
local x
|
|
961
|
-
|
|
962
|
-
if x ~= lastX or y ~= lastY then
|
|
1039
|
+
local x, y, ____, isDefinite = frameCoordinatesToWorld(syncFrameX, syncFrameY)
|
|
1040
|
+
if isDefinite and (x ~= lastX or y ~= lastY) then
|
|
963
1041
|
lastX = x
|
|
964
1042
|
lastY = y
|
|
965
1043
|
invoke(event, x, y)
|
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 = {}
|
|
@@ -66,17 +68,12 @@ function Handle.prototype.onDestroy(self, ...)
|
|
|
66
68
|
return nil
|
|
67
69
|
end
|
|
68
70
|
function Handle.prototype.destroy(self, ...)
|
|
71
|
+
if self[0] == 2 or self[0] == 3 then
|
|
72
|
+
return nil
|
|
73
|
+
end
|
|
69
74
|
local clazz = self.constructor
|
|
70
75
|
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
|
|
76
|
+
checkNotNull(clazz.memoized[id])
|
|
80
77
|
self[0] = 2
|
|
81
78
|
if self.onDestroyEvent then
|
|
82
79
|
Event.invoke(self.onDestroyEvent)
|
package/core/types/item.d.ts
CHANGED