warscript 0.0.1-dev.ea69747 → 0.0.1-dev.eb24bc1
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 +17 -0
- package/attributes.lua +23 -0
- 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 +93 -1
- package/core/types/group.d.ts +0 -1
- package/core/types/handle.d.ts +2 -1
- package/core/types/handle.lua +5 -0
- 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/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +6 -7
- package/core/types/timer.lua +18 -21
- 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 +840 -786
- package/engine/ability.d.ts +1 -1
- package/engine/behavior.d.ts +10 -10
- package/engine/behavior.lua +6 -6
- 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 +13 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +32 -9
- 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 +35 -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 -17
- package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
- package/engine/behaviour/unit.d.ts +10 -2
- package/engine/behaviour/unit.lua +27 -0
- package/engine/buff.d.ts +103 -41
- package/engine/buff.lua +465 -212
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +17 -14
- package/engine/internal/ability.lua +80 -76
- package/engine/internal/item/ability.lua +106 -0
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/item.d.ts +4 -3
- package/engine/internal/item.lua +56 -25
- package/engine/internal/mechanics/ability-duration.d.ts +1 -3
- package/engine/internal/mechanics/ability-duration.lua +3 -1
- package/engine/internal/mechanics/cast-ability.d.ts +2 -0
- package/engine/internal/mechanics/cast-ability.lua +86 -0
- 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/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 +10 -1
- package/engine/internal/unit/ability.lua +36 -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/bonus.d.ts +11 -8
- package/engine/internal/unit/bonus.lua +23 -1
- package/engine/internal/unit/detach-missiles.d.ts +7 -0
- package/engine/internal/unit/detach-missiles.lua +30 -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/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+ability.lua +2 -2
- 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 +25 -6
- package/engine/internal/unit.d.ts +76 -18
- package/engine/internal/unit.lua +466 -167
- 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/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/blink.d.ts +10 -0
- package/engine/object-data/entry/ability-type/blink.lua +39 -0
- 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 +4 -4
- 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/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 +20 -18
- package/engine/object-data/entry/ability-type.lua +90 -33
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- package/engine/object-data/entry/buff-type/applicable.lua +39 -102
- 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 +50 -3
- package/engine/object-data/entry/unit-type.lua +452 -61
- 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 +33 -8
- package/engine/object-field/ability.lua +60 -1
- package/engine/object-field/unit.d.ts +46 -2
- package/engine/object-field/unit.lua +173 -4
- package/engine/object-field.d.ts +15 -5
- package/engine/object-field.lua +196 -84
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +9 -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 +42 -1
- package/engine/standard/entries/unit-type.lua +42 -1
- package/engine/standard/fields/ability.d.ts +3 -1
- package/engine/standard/fields/ability.lua +3 -1
- 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/exception.d.ts +2 -0
- package/exception.lua +4 -0
- package/global/vec2.lua +1 -0
- 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/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 +13 -6
- package/utility/arrays.lua +41 -4
- package/utility/bit-set.d.ts +0 -2
- package/utility/functions.d.ts +1 -0
- package/utility/functions.lua +1 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +32 -9
- package/utility/linked-set.lua +24 -2
- package/utility/lua-maps.d.ts +4 -2
- package/utility/lua-maps.lua +16 -0
- package/utility/lua-sets.d.ts +2 -2
- package/utility/lua-sets.lua +3 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -2
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
|
@@ -1,15 +1,59 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Unit } from "../internal/unit";
|
|
3
|
-
import { ObjectField } from "../object-field";
|
|
3
|
+
import { ObjectField, ObjectLevelField, ObjectLevelFieldValueChangeEvent, ReadonlyObjectLevelFieldType } from "../object-field";
|
|
4
4
|
import { UnitType, UnitTypeId } from "../object-data/entry/unit-type";
|
|
5
|
+
import { ReadonlyNonEmptyLinkedSet } from "../../utility/linked-set";
|
|
6
|
+
import { AttackType } from "../object-data/auxiliary/attack-type";
|
|
5
7
|
export declare abstract class UnitField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = any> extends ObjectField<UnitType, Unit, ValueType, NativeFieldType> {
|
|
6
8
|
protected get instanceClass(): typeof Unit;
|
|
7
9
|
protected getObjectDataEntryId(instance: Unit): UnitTypeId;
|
|
10
|
+
protected hasNativeFieldValue(): boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare class UnitBooleanField extends UnitField<boolean, junitbooleanfield> {
|
|
13
|
+
protected get defaultValue(): boolean;
|
|
14
|
+
protected getNativeFieldById(id: number): junitbooleanfield;
|
|
15
|
+
protected getNativeFieldValue(instance: Unit): boolean;
|
|
16
|
+
protected setNativeFieldValue(instance: Unit, value: boolean): boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare class UnitFloatField extends UnitField<number, junitrealfield> {
|
|
19
|
+
protected get defaultValue(): number;
|
|
20
|
+
protected getNativeFieldById(id: number): junitrealfield;
|
|
21
|
+
protected getNativeFieldValue(instance: Unit): number;
|
|
22
|
+
protected setNativeFieldValue(instance: Unit, value: number): boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare class UnitIntegerField extends UnitField<number, junitintegerfield> {
|
|
25
|
+
protected get defaultValue(): number;
|
|
26
|
+
protected getNativeFieldById(id: number): junitintegerfield;
|
|
27
|
+
protected getNativeFieldValue(instance: Unit): number;
|
|
28
|
+
protected setNativeFieldValue(instance: Unit, value: number): boolean;
|
|
8
29
|
}
|
|
9
30
|
export declare class UnitStringField extends UnitField<string, junitstringfield> {
|
|
10
31
|
protected get defaultValue(): string;
|
|
11
32
|
protected getNativeFieldById(id: number): junitstringfield;
|
|
12
33
|
protected getNativeFieldValue(instance: Unit): string;
|
|
13
|
-
protected getObjectDataEntryId(instance: Unit): UnitTypeId;
|
|
14
34
|
protected setNativeFieldValue(instance: Unit, value: string): boolean;
|
|
15
35
|
}
|
|
36
|
+
type junitweaponfield = junitweaponbooleanfield | junitweaponintegerfield | junitweaponrealfield | junitweaponstringfield;
|
|
37
|
+
export declare abstract class UnitWeaponField<ValueType extends number | string | boolean = number | string | boolean, InputValueType extends ValueType = never, NativeFieldType extends junitweaponfield = junitweaponfield> extends ObjectLevelField<UnitType, Unit, ValueType, InputValueType, NativeFieldType> {
|
|
38
|
+
protected get instanceClass(): typeof Unit;
|
|
39
|
+
protected getLevelCount(): number;
|
|
40
|
+
protected getObjectDataEntryId(instance: Unit): UnitTypeId;
|
|
41
|
+
protected hasNativeFieldValue(): boolean;
|
|
42
|
+
static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<ReadonlyObjectLevelFieldType<UnitWeaponField>>;
|
|
43
|
+
}
|
|
44
|
+
export declare abstract class UnitNumberWeaponField<NativeFieldType extends junitweaponintegerfield | junitweaponrealfield = junitweaponintegerfield | junitweaponrealfield> extends UnitWeaponField<number, number, NativeFieldType> {
|
|
45
|
+
protected get defaultValue(): number;
|
|
46
|
+
static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<UnitNumberWeaponField>;
|
|
47
|
+
}
|
|
48
|
+
export declare abstract class UnitEnumWeaponField<T extends number> extends UnitWeaponField<T, T, junitweaponintegerfield> {
|
|
49
|
+
protected abstract values: ReadonlyNonEmptyLinkedSet<T>;
|
|
50
|
+
protected get defaultValue(): T;
|
|
51
|
+
protected getNativeFieldById(id: number): junitweaponintegerfield;
|
|
52
|
+
protected getNativeFieldValue(instance: Unit, index: number): T;
|
|
53
|
+
protected setNativeFieldValue(instance: Unit, index: number, value: T): boolean;
|
|
54
|
+
static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<UnitEnumWeaponField<number>>;
|
|
55
|
+
}
|
|
56
|
+
export declare class UnitAttackTypeWeaponField extends UnitEnumWeaponField<AttackType> {
|
|
57
|
+
protected values: ReadonlyNonEmptyLinkedSet<AttackType>;
|
|
58
|
+
}
|
|
59
|
+
export {};
|
|
@@ -2,11 +2,22 @@ local ____lualib = require("lualib_bundle")
|
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
3
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
4
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
5
|
+
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
5
6
|
local ____exports = {}
|
|
6
7
|
local ____unit = require("engine.internal.unit")
|
|
7
8
|
local Unit = ____unit.Unit
|
|
8
9
|
local ____object_2Dfield = require("engine.object-field")
|
|
9
10
|
local ObjectField = ____object_2Dfield.ObjectField
|
|
11
|
+
local ObjectLevelField = ____object_2Dfield.ObjectLevelField
|
|
12
|
+
local ____linked_2Dset = require("utility.linked-set")
|
|
13
|
+
local nonEmptyLinkedSetOf = ____linked_2Dset.nonEmptyLinkedSetOf
|
|
14
|
+
local convertUnitBooleanField = ConvertUnitBooleanField
|
|
15
|
+
local convertUnitIntegerField = ConvertUnitIntegerField
|
|
16
|
+
local convertUnitRealField = ConvertUnitRealField
|
|
17
|
+
local convertUnitStringField = ConvertUnitStringField
|
|
18
|
+
local convertUnitWeaponIntegerField = ConvertUnitWeaponIntegerField
|
|
19
|
+
local getUnitWeaponIntegerField = BlzGetUnitWeaponIntegerField
|
|
20
|
+
local setUnitWeaponIntegerField = BlzSetUnitWeaponIntegerField
|
|
10
21
|
____exports.UnitField = __TS__Class()
|
|
11
22
|
local UnitField = ____exports.UnitField
|
|
12
23
|
UnitField.name = "UnitField"
|
|
@@ -14,6 +25,9 @@ __TS__ClassExtends(UnitField, ObjectField)
|
|
|
14
25
|
function UnitField.prototype.getObjectDataEntryId(self, instance)
|
|
15
26
|
return instance.typeId
|
|
16
27
|
end
|
|
28
|
+
function UnitField.prototype.hasNativeFieldValue(self)
|
|
29
|
+
return true
|
|
30
|
+
end
|
|
17
31
|
__TS__SetDescriptor(
|
|
18
32
|
UnitField.prototype,
|
|
19
33
|
"instanceClass",
|
|
@@ -22,19 +36,79 @@ __TS__SetDescriptor(
|
|
|
22
36
|
end},
|
|
23
37
|
true
|
|
24
38
|
)
|
|
39
|
+
____exports.UnitBooleanField = __TS__Class()
|
|
40
|
+
local UnitBooleanField = ____exports.UnitBooleanField
|
|
41
|
+
UnitBooleanField.name = "UnitBooleanField"
|
|
42
|
+
__TS__ClassExtends(UnitBooleanField, ____exports.UnitField)
|
|
43
|
+
function UnitBooleanField.prototype.getNativeFieldById(self, id)
|
|
44
|
+
return convertUnitBooleanField(id)
|
|
45
|
+
end
|
|
46
|
+
function UnitBooleanField.prototype.getNativeFieldValue(self, instance)
|
|
47
|
+
return instance:getField(self.nativeField)
|
|
48
|
+
end
|
|
49
|
+
function UnitBooleanField.prototype.setNativeFieldValue(self, instance, value)
|
|
50
|
+
return instance:setField(self.nativeField, value)
|
|
51
|
+
end
|
|
52
|
+
__TS__SetDescriptor(
|
|
53
|
+
UnitBooleanField.prototype,
|
|
54
|
+
"defaultValue",
|
|
55
|
+
{get = function(self)
|
|
56
|
+
return false
|
|
57
|
+
end},
|
|
58
|
+
true
|
|
59
|
+
)
|
|
60
|
+
____exports.UnitFloatField = __TS__Class()
|
|
61
|
+
local UnitFloatField = ____exports.UnitFloatField
|
|
62
|
+
UnitFloatField.name = "UnitFloatField"
|
|
63
|
+
__TS__ClassExtends(UnitFloatField, ____exports.UnitField)
|
|
64
|
+
function UnitFloatField.prototype.getNativeFieldById(self, id)
|
|
65
|
+
return convertUnitRealField(id)
|
|
66
|
+
end
|
|
67
|
+
function UnitFloatField.prototype.getNativeFieldValue(self, instance)
|
|
68
|
+
return instance:getField(self.nativeField)
|
|
69
|
+
end
|
|
70
|
+
function UnitFloatField.prototype.setNativeFieldValue(self, instance, value)
|
|
71
|
+
return instance:setField(self.nativeField, value)
|
|
72
|
+
end
|
|
73
|
+
__TS__SetDescriptor(
|
|
74
|
+
UnitFloatField.prototype,
|
|
75
|
+
"defaultValue",
|
|
76
|
+
{get = function(self)
|
|
77
|
+
return 0
|
|
78
|
+
end},
|
|
79
|
+
true
|
|
80
|
+
)
|
|
81
|
+
____exports.UnitIntegerField = __TS__Class()
|
|
82
|
+
local UnitIntegerField = ____exports.UnitIntegerField
|
|
83
|
+
UnitIntegerField.name = "UnitIntegerField"
|
|
84
|
+
__TS__ClassExtends(UnitIntegerField, ____exports.UnitField)
|
|
85
|
+
function UnitIntegerField.prototype.getNativeFieldById(self, id)
|
|
86
|
+
return convertUnitIntegerField(id)
|
|
87
|
+
end
|
|
88
|
+
function UnitIntegerField.prototype.getNativeFieldValue(self, instance)
|
|
89
|
+
return instance:getField(self.nativeField)
|
|
90
|
+
end
|
|
91
|
+
function UnitIntegerField.prototype.setNativeFieldValue(self, instance, value)
|
|
92
|
+
return instance:setField(self.nativeField, value)
|
|
93
|
+
end
|
|
94
|
+
__TS__SetDescriptor(
|
|
95
|
+
UnitIntegerField.prototype,
|
|
96
|
+
"defaultValue",
|
|
97
|
+
{get = function(self)
|
|
98
|
+
return 0
|
|
99
|
+
end},
|
|
100
|
+
true
|
|
101
|
+
)
|
|
25
102
|
____exports.UnitStringField = __TS__Class()
|
|
26
103
|
local UnitStringField = ____exports.UnitStringField
|
|
27
104
|
UnitStringField.name = "UnitStringField"
|
|
28
105
|
__TS__ClassExtends(UnitStringField, ____exports.UnitField)
|
|
29
106
|
function UnitStringField.prototype.getNativeFieldById(self, id)
|
|
30
|
-
return
|
|
107
|
+
return convertUnitStringField(id)
|
|
31
108
|
end
|
|
32
109
|
function UnitStringField.prototype.getNativeFieldValue(self, instance)
|
|
33
110
|
return instance:getField(self.nativeField)
|
|
34
111
|
end
|
|
35
|
-
function UnitStringField.prototype.getObjectDataEntryId(self, instance)
|
|
36
|
-
return instance.typeId
|
|
37
|
-
end
|
|
38
112
|
function UnitStringField.prototype.setNativeFieldValue(self, instance, value)
|
|
39
113
|
return instance:setField(self.nativeField, value)
|
|
40
114
|
end
|
|
@@ -46,4 +120,99 @@ __TS__SetDescriptor(
|
|
|
46
120
|
end},
|
|
47
121
|
true
|
|
48
122
|
)
|
|
123
|
+
____exports.UnitWeaponField = __TS__Class()
|
|
124
|
+
local UnitWeaponField = ____exports.UnitWeaponField
|
|
125
|
+
UnitWeaponField.name = "UnitWeaponField"
|
|
126
|
+
__TS__ClassExtends(UnitWeaponField, ObjectLevelField)
|
|
127
|
+
function UnitWeaponField.prototype.getLevelCount(self)
|
|
128
|
+
return 2
|
|
129
|
+
end
|
|
130
|
+
function UnitWeaponField.prototype.getObjectDataEntryId(self, instance)
|
|
131
|
+
return instance.typeId
|
|
132
|
+
end
|
|
133
|
+
function UnitWeaponField.prototype.hasNativeFieldValue(self)
|
|
134
|
+
return true
|
|
135
|
+
end
|
|
136
|
+
__TS__SetDescriptor(
|
|
137
|
+
UnitWeaponField.prototype,
|
|
138
|
+
"instanceClass",
|
|
139
|
+
{get = function(self)
|
|
140
|
+
return Unit
|
|
141
|
+
end},
|
|
142
|
+
true
|
|
143
|
+
)
|
|
144
|
+
__TS__ObjectDefineProperty(
|
|
145
|
+
UnitWeaponField,
|
|
146
|
+
"valueChangeEvent",
|
|
147
|
+
{get = function(self)
|
|
148
|
+
return self:getOrCreateValueChangeEvent()
|
|
149
|
+
end}
|
|
150
|
+
)
|
|
151
|
+
____exports.UnitNumberWeaponField = __TS__Class()
|
|
152
|
+
local UnitNumberWeaponField = ____exports.UnitNumberWeaponField
|
|
153
|
+
UnitNumberWeaponField.name = "UnitNumberWeaponField"
|
|
154
|
+
__TS__ClassExtends(UnitNumberWeaponField, ____exports.UnitWeaponField)
|
|
155
|
+
__TS__SetDescriptor(
|
|
156
|
+
UnitNumberWeaponField.prototype,
|
|
157
|
+
"defaultValue",
|
|
158
|
+
{get = function(self)
|
|
159
|
+
return 0
|
|
160
|
+
end},
|
|
161
|
+
true
|
|
162
|
+
)
|
|
163
|
+
__TS__ObjectDefineProperty(
|
|
164
|
+
UnitNumberWeaponField,
|
|
165
|
+
"valueChangeEvent",
|
|
166
|
+
{get = function(self)
|
|
167
|
+
return self:getOrCreateValueChangeEvent()
|
|
168
|
+
end}
|
|
169
|
+
)
|
|
170
|
+
____exports.UnitEnumWeaponField = __TS__Class()
|
|
171
|
+
local UnitEnumWeaponField = ____exports.UnitEnumWeaponField
|
|
172
|
+
UnitEnumWeaponField.name = "UnitEnumWeaponField"
|
|
173
|
+
__TS__ClassExtends(UnitEnumWeaponField, ____exports.UnitWeaponField)
|
|
174
|
+
function UnitEnumWeaponField.prototype.getNativeFieldById(self, id)
|
|
175
|
+
return convertUnitWeaponIntegerField(id)
|
|
176
|
+
end
|
|
177
|
+
function UnitEnumWeaponField.prototype.getNativeFieldValue(self, instance, index)
|
|
178
|
+
local value = getUnitWeaponIntegerField(instance.handle, self.nativeField, index)
|
|
179
|
+
if self.values:contains(value) then
|
|
180
|
+
return value
|
|
181
|
+
end
|
|
182
|
+
return self.values:first()
|
|
183
|
+
end
|
|
184
|
+
function UnitEnumWeaponField.prototype.setNativeFieldValue(self, instance, index, value)
|
|
185
|
+
return setUnitWeaponIntegerField(instance.handle, self.nativeField, index, value)
|
|
186
|
+
end
|
|
187
|
+
__TS__SetDescriptor(
|
|
188
|
+
UnitEnumWeaponField.prototype,
|
|
189
|
+
"defaultValue",
|
|
190
|
+
{get = function(self)
|
|
191
|
+
return self.values:first()
|
|
192
|
+
end},
|
|
193
|
+
true
|
|
194
|
+
)
|
|
195
|
+
__TS__ObjectDefineProperty(
|
|
196
|
+
UnitEnumWeaponField,
|
|
197
|
+
"valueChangeEvent",
|
|
198
|
+
{get = function(self)
|
|
199
|
+
return self:getOrCreateValueChangeEvent()
|
|
200
|
+
end}
|
|
201
|
+
)
|
|
202
|
+
____exports.UnitAttackTypeWeaponField = __TS__Class()
|
|
203
|
+
local UnitAttackTypeWeaponField = ____exports.UnitAttackTypeWeaponField
|
|
204
|
+
UnitAttackTypeWeaponField.name = "UnitAttackTypeWeaponField"
|
|
205
|
+
__TS__ClassExtends(UnitAttackTypeWeaponField, ____exports.UnitEnumWeaponField)
|
|
206
|
+
function UnitAttackTypeWeaponField.prototype.____constructor(self, ...)
|
|
207
|
+
UnitAttackTypeWeaponField.____super.prototype.____constructor(self, ...)
|
|
208
|
+
self.values = nonEmptyLinkedSetOf(
|
|
209
|
+
1,
|
|
210
|
+
2,
|
|
211
|
+
3,
|
|
212
|
+
0,
|
|
213
|
+
5,
|
|
214
|
+
4,
|
|
215
|
+
6
|
|
216
|
+
)
|
|
217
|
+
end
|
|
49
218
|
return ____exports
|
package/engine/object-field.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="@typescript-to-lua/language-extensions" />
|
|
2
1
|
/** @noSelfInFile */
|
|
3
2
|
import { DispatchingEvent } from "../event";
|
|
4
3
|
import { AbstractConstructor } from "../utility/types";
|
|
@@ -9,7 +8,6 @@ export type ObjectFieldId = number & {
|
|
|
9
8
|
export type ObjectFieldConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (new (id: number) => T);
|
|
10
9
|
export type ObjectFieldAbstractConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (abstract new (id: number) => T);
|
|
11
10
|
declare abstract class ObjectFieldBase<ObjectDataEntryType extends ObjectDataEntry, InstanceType extends AnyNotNil, ValueType, NativeFieldType> {
|
|
12
|
-
protected readonly valueByInstance: LuaMap<InstanceType, ValueType>;
|
|
13
11
|
protected abstract readonly instanceClass: AbstractConstructor<InstanceType> | Function;
|
|
14
12
|
supports(instance: AnyNotNil): instance is InstanceType & {
|
|
15
13
|
readonly __oneSidedTypeGuard: unique symbol;
|
|
@@ -18,6 +16,8 @@ declare abstract class ObjectFieldBase<ObjectDataEntryType extends ObjectDataEnt
|
|
|
18
16
|
readonly id: ObjectFieldId;
|
|
19
17
|
protected abstract getNativeFieldById(id: number): NativeFieldType;
|
|
20
18
|
protected abstract getObjectDataEntryId(instance: InstanceType): ObjectDataEntryIdType<ObjectDataEntryType>;
|
|
19
|
+
protected abstract hasNativeFieldValue(instance: InstanceType): boolean;
|
|
20
|
+
hasValue(instance: InstanceType): boolean;
|
|
21
21
|
constructor(id: number);
|
|
22
22
|
static create<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldConstructor<T>, id?: number): T & symbol;
|
|
23
23
|
static of<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldAbstractConstructor<T>, id: number): T | undefined;
|
|
@@ -33,21 +33,30 @@ export type ObjectFieldValueChangeEvent<T extends ObjectField<any, any, any, any
|
|
|
33
33
|
previousValue: ValueType,
|
|
34
34
|
newValue: ValueType
|
|
35
35
|
]> : never;
|
|
36
|
-
export type ReadonlyObjectFieldType<T extends ObjectField<any, any, any, any>> = Omit<T, "setValue" | "removeValue">;
|
|
36
|
+
export type ReadonlyObjectFieldType<T extends ObjectField<any, any, any, any>> = Omit<T, "setValue" | "removeValue" | "trySetValue">;
|
|
37
37
|
type ReadonlyObjectFieldConstructor<T extends ObjectField> = OmitConstructor<typeof ObjectField> & (abstract new (...args: any[]) => ReadonlyObjectFieldType<T>);
|
|
38
|
+
type ObjectFieldModifier<InstanceType extends AnyNotNil, ValueType extends number | string | boolean> = (instance: InstanceType, currentValue: ValueType, originalValue: ValueType) => ValueType;
|
|
38
39
|
export declare abstract class ObjectField<ObjectDataEntryType extends ObjectDataEntry = ObjectDataEntry, InstanceType extends AnyNotNil = AnyNotNil, ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = unknown> extends ObjectFieldBase<ObjectDataEntryType, InstanceType, ValueType, NativeFieldType> {
|
|
39
40
|
protected abstract readonly defaultValue: ValueType;
|
|
40
41
|
protected abstract getNativeFieldValue(instance: InstanceType): ValueType;
|
|
41
42
|
protected abstract setNativeFieldValue(instance: InstanceType, value: ValueType): boolean;
|
|
42
|
-
|
|
43
|
+
private originalValueByInstance?;
|
|
44
|
+
private modifiersByInstance?;
|
|
45
|
+
getValue(entry: ObjectDataEntryType | InstanceType, includeModifiers?: boolean): ValueType;
|
|
43
46
|
setValue(entry: ObjectDataEntryType | InstanceType, value: ValueType): boolean;
|
|
47
|
+
applyModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): void;
|
|
48
|
+
removeModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): boolean;
|
|
44
49
|
removeValue(entry: ObjectDataEntryType): boolean;
|
|
50
|
+
trySetValue(entry: ObjectDataEntryType | InstanceType, value: unknown): boolean;
|
|
51
|
+
private getActualValue;
|
|
52
|
+
private setActualValue;
|
|
53
|
+
private calculateActualValue;
|
|
45
54
|
private invokeValueChangeEvent;
|
|
46
55
|
private invokeValueChangeEventRecursive;
|
|
47
56
|
protected static getOrCreateValueChangeEvent<T extends ObjectField, R extends ReadonlyObjectFieldType<T>>(this: ReadonlyObjectFieldConstructor<T>): ObjectFieldValueChangeEvent<R>;
|
|
48
57
|
static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<ObjectField>>;
|
|
49
58
|
}
|
|
50
|
-
export type ReadonlyObjectLevelFieldType<T extends ObjectLevelField<any, any, any, any>> = Omit<T, "setValue">;
|
|
59
|
+
export type ReadonlyObjectLevelFieldType<T extends ObjectLevelField<any, any, any, any>> = Omit<T, "setValue" | "trySetValue">;
|
|
51
60
|
export type ObjectLevelFieldValueChangeEvent<T extends ObjectLevelField<any, any, any, any> | ReadonlyObjectLevelFieldType<ObjectLevelField<any, any, any, any>>> = T extends ObjectLevelField<any, infer InstanceType, infer ValueType, any, any> ? DispatchingEvent<[
|
|
52
61
|
instance: InstanceType,
|
|
53
62
|
field: T,
|
|
@@ -76,6 +85,7 @@ export declare abstract class ObjectLevelField<ObjectDataEntryType extends Objec
|
|
|
76
85
|
protected abstract getLevelCount(entry: ObjectDataEntryType | InstanceType): number;
|
|
77
86
|
getValue<LevelType extends [number] | []>(entry: ObjectDataEntryType | InstanceType, ...[level]: LevelType): LevelType extends [number] ? ValueType : ValueType[];
|
|
78
87
|
setValue(entry: ObjectDataEntryType | InstanceType, ...[levelOrValue, value]: [value: ObjectDataEntryLevelFieldValueSupplier<InputValueType, ValueType>] | [level: number, value: InputValueType]): boolean;
|
|
88
|
+
trySetValue(entry: ObjectDataEntryType | InstanceType, levelOrValue: number | unknown, value?: unknown): boolean;
|
|
79
89
|
private invokeValueChangeEvent;
|
|
80
90
|
private invokeValueChangeEventRecursive;
|
|
81
91
|
protected static getOrCreateValueChangeEvent<T extends ObjectLevelField, R extends ReadonlyObjectLevelFieldType<T>>(this: ReadonlyObjectLevelFieldConstructor<T>): ObjectLevelFieldValueChangeEvent<R>;
|