warscript 0.0.1-dev.172070c → 0.0.1-dev.1766d07
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +5 -0
- package/attributes.lua +8 -1
- package/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +6 -0
- package/core/types/frame.lua +91 -1
- package/core/types/order.d.ts +1 -0
- package/core/types/order.lua +11 -1
- 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/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/native.d.ts +840 -786
- package/engine/behavior.d.ts +2 -2
- 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.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +32 -12
- package/engine/behaviour/ability/damage.lua +60 -30
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +42 -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 -19
- 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.d.ts +20 -4
- package/engine/behaviour/ability.lua +112 -39
- package/engine/behaviour/unit.d.ts +22 -0
- package/engine/behaviour/unit.lua +134 -4
- package/engine/buff.d.ts +101 -39
- package/engine/buff.lua +458 -203
- package/engine/internal/ability.d.ts +20 -13
- package/engine/internal/ability.lua +97 -76
- package/engine/internal/item/ability.lua +112 -4
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/item.d.ts +7 -4
- package/engine/internal/item.lua +131 -28
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/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 +15 -1
- package/engine/internal/unit/ability.lua +50 -14
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/bonus.d.ts +6 -2
- package/engine/internal/unit/bonus.lua +23 -1
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +78 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit+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-missile-launch.lua +25 -6
- package/engine/internal/unit.d.ts +51 -13
- package/engine/internal/unit.lua +329 -116
- 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 -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/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.lua +12 -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/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +19 -17
- package/engine/object-data/entry/ability-type.lua +89 -33
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- 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 +1 -1
- package/engine/object-data/entry/item-type.d.ts +15 -1
- package/engine/object-data/entry/item-type.lua +93 -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 +10 -3
- package/engine/object-data/entry/unit-type.lua +155 -92
- 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 +26 -3
- package/engine/object-field/ability.lua +54 -1
- package/engine/object-field/unit.d.ts +46 -3
- package/engine/object-field/unit.lua +173 -7
- package/engine/object-field.d.ts +15 -6
- package/engine/object-field.lua +173 -80
- 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 +2 -0
- package/engine/standard/fields/ability.lua +2 -0
- package/engine/unit.d.ts +3 -0
- package/engine/unit.lua +3 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- 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/buff.lua +2 -3
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- 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/utility/arrays.d.ts +9 -1
- package/utility/arrays.lua +37 -3
- 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 +12 -2
- package/utility/linked-set.lua +8 -2
- package/utility/lua-maps.d.ts +3 -0
- package/utility/lua-maps.lua +16 -0
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +3 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +1 -0
package/engine/object-field.d.ts
CHANGED
|
@@ -5,9 +5,10 @@ import { ObjectDataEntry, ObjectDataEntryIdType, ObjectDataEntryLevelFieldValueS
|
|
|
5
5
|
export type ObjectFieldId = number & {
|
|
6
6
|
readonly __objectDataEntryFieldId: unique symbol;
|
|
7
7
|
};
|
|
8
|
-
export type ObjectFieldConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (new (id: number) => T);
|
|
8
|
+
export type ObjectFieldConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (new (id: number, isGlobal?: boolean) => T);
|
|
9
9
|
export type ObjectFieldAbstractConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (abstract new (id: number) => T);
|
|
10
10
|
declare abstract class ObjectFieldBase<ObjectDataEntryType extends ObjectDataEntry, InstanceType extends AnyNotNil, ValueType, NativeFieldType> {
|
|
11
|
+
readonly isGlobal: boolean;
|
|
11
12
|
protected abstract readonly instanceClass: AbstractConstructor<InstanceType> | Function;
|
|
12
13
|
supports(instance: AnyNotNil): instance is InstanceType & {
|
|
13
14
|
readonly __oneSidedTypeGuard: unique symbol;
|
|
@@ -16,8 +17,10 @@ declare abstract class ObjectFieldBase<ObjectDataEntryType extends ObjectDataEnt
|
|
|
16
17
|
readonly id: ObjectFieldId;
|
|
17
18
|
protected abstract getNativeFieldById(id: number): NativeFieldType;
|
|
18
19
|
protected abstract getObjectDataEntryId(instance: InstanceType): ObjectDataEntryIdType<ObjectDataEntryType>;
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
protected abstract hasNativeFieldValue(instance: InstanceType): boolean;
|
|
21
|
+
hasValue(instance: InstanceType): boolean;
|
|
22
|
+
constructor(id: number, isGlobal?: boolean);
|
|
23
|
+
static create<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldConstructor<T>, id?: number, isGlobal?: boolean): T & symbol;
|
|
21
24
|
static of<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldAbstractConstructor<T>, id: number): T | undefined;
|
|
22
25
|
}
|
|
23
26
|
export type ObjectFieldValueChangeEvent<T extends ObjectField<any, any, any, any> | ReadonlyObjectFieldType<ObjectField<any, any, any, any>>> = T extends ObjectField<any, infer InstanceType, infer ValueType, any> ? DispatchingEvent<[
|
|
@@ -33,15 +36,22 @@ export type ObjectFieldValueChangeEvent<T extends ObjectField<any, any, any, any
|
|
|
33
36
|
]> : never;
|
|
34
37
|
export type ReadonlyObjectFieldType<T extends ObjectField<any, any, any, any>> = Omit<T, "setValue" | "removeValue" | "trySetValue">;
|
|
35
38
|
type ReadonlyObjectFieldConstructor<T extends ObjectField> = OmitConstructor<typeof ObjectField> & (abstract new (...args: any[]) => ReadonlyObjectFieldType<T>);
|
|
39
|
+
type ObjectFieldModifier<InstanceType extends AnyNotNil, ValueType extends number | string | boolean> = (instance: InstanceType, currentValue: ValueType, originalValue: ValueType) => ValueType;
|
|
36
40
|
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> {
|
|
37
41
|
protected abstract readonly defaultValue: ValueType;
|
|
38
|
-
protected abstract hasNativeFieldValue(instance: InstanceType): boolean;
|
|
39
42
|
protected abstract getNativeFieldValue(instance: InstanceType): ValueType;
|
|
40
43
|
protected abstract setNativeFieldValue(instance: InstanceType, value: ValueType): boolean;
|
|
41
|
-
|
|
44
|
+
private originalValueByInstance?;
|
|
45
|
+
private modifiersByInstance?;
|
|
46
|
+
getValue(entry: ObjectDataEntryType | InstanceType, includeModifiers?: boolean): ValueType;
|
|
42
47
|
setValue(entry: ObjectDataEntryType | InstanceType, value: ValueType): boolean;
|
|
48
|
+
applyModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): void;
|
|
49
|
+
removeModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): boolean;
|
|
43
50
|
removeValue(entry: ObjectDataEntryType): boolean;
|
|
44
51
|
trySetValue(entry: ObjectDataEntryType | InstanceType, value: unknown): boolean;
|
|
52
|
+
private getActualValue;
|
|
53
|
+
private setActualValue;
|
|
54
|
+
private calculateActualValue;
|
|
45
55
|
private invokeValueChangeEvent;
|
|
46
56
|
private invokeValueChangeEventRecursive;
|
|
47
57
|
protected static getOrCreateValueChangeEvent<T extends ObjectField, R extends ReadonlyObjectFieldType<T>>(this: ReadonlyObjectFieldConstructor<T>): ObjectFieldValueChangeEvent<R>;
|
|
@@ -71,7 +81,6 @@ export declare abstract class ObjectArrayField<ObjectDataEntryType extends Objec
|
|
|
71
81
|
}
|
|
72
82
|
export declare abstract class ObjectLevelField<ObjectDataEntryType extends ObjectDataEntry = ObjectDataEntry, InstanceType extends AnyNotNil = AnyNotNil, ValueType extends number | string | boolean = number | string | boolean, InputValueType extends ValueType = never, NativeFieldType = unknown> extends ObjectFieldBase<ObjectDataEntryType, InstanceType, ValueType[], NativeFieldType> {
|
|
73
83
|
protected abstract readonly defaultValue: ValueType;
|
|
74
|
-
protected abstract hasNativeFieldValue(instance: InstanceType): boolean;
|
|
75
84
|
protected abstract getNativeFieldValue(instance: InstanceType, level: number): ValueType;
|
|
76
85
|
protected abstract setNativeFieldValue(instance: InstanceType, level: number, value: ValueType): boolean;
|
|
77
86
|
protected abstract getLevelCount(entry: ObjectDataEntryType | InstanceType): number;
|
package/engine/object-field.lua
CHANGED
|
@@ -20,6 +20,13 @@ local extractObjectDataEntryLevelFieldValue = ____entry.extractObjectDataEntryLe
|
|
|
20
20
|
local ObjectDataEntry = ____entry.ObjectDataEntry
|
|
21
21
|
local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
|
|
22
22
|
local ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.ObjectDataEntryIdGenerator
|
|
23
|
+
local ____linked_2Dset = require("utility.linked-set")
|
|
24
|
+
local mutableLinkedSet = ____linked_2Dset.mutableLinkedSet
|
|
25
|
+
local ____lua_2Dmaps = require("utility.lua-maps")
|
|
26
|
+
local getOrPut = ____lua_2Dmaps.getOrPut
|
|
27
|
+
local mutableWeakLuaMap = ____lua_2Dmaps.mutableWeakLuaMap
|
|
28
|
+
local ____arrays = require("utility.arrays")
|
|
29
|
+
local emptyArray = ____arrays.emptyArray
|
|
23
30
|
local compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId = {}
|
|
24
31
|
local defaultValueByObjectDataEntryIdByObjectFieldId = postcompile(function() return compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId end)
|
|
25
32
|
local objectFieldById = {}
|
|
@@ -29,7 +36,11 @@ local idGenerator = __TS__New(
|
|
|
29
36
|
)
|
|
30
37
|
local ObjectFieldBase = __TS__Class()
|
|
31
38
|
ObjectFieldBase.name = "ObjectFieldBase"
|
|
32
|
-
function ObjectFieldBase.prototype.____constructor(self, id)
|
|
39
|
+
function ObjectFieldBase.prototype.____constructor(self, id, isGlobal)
|
|
40
|
+
if isGlobal == nil then
|
|
41
|
+
isGlobal = true
|
|
42
|
+
end
|
|
43
|
+
self.isGlobal = isGlobal
|
|
33
44
|
self.valueByInstance = setmetatable({}, {__mode = "k"})
|
|
34
45
|
if objectFieldById[id] ~= nil then
|
|
35
46
|
error(
|
|
@@ -46,10 +57,15 @@ end
|
|
|
46
57
|
function ObjectFieldBase.prototype.supports(self, instance)
|
|
47
58
|
return __TS__InstanceOf(instance, self.instanceClass)
|
|
48
59
|
end
|
|
49
|
-
function ObjectFieldBase.
|
|
60
|
+
function ObjectFieldBase.prototype.hasValue(self, instance)
|
|
61
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
62
|
+
return self.isGlobal or defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)] ~= nil or self:hasNativeFieldValue(instance)
|
|
63
|
+
end
|
|
64
|
+
function ObjectFieldBase.create(self, id, isGlobal)
|
|
50
65
|
return __TS__New(
|
|
51
66
|
self,
|
|
52
|
-
id or idGenerator:next()
|
|
67
|
+
id or idGenerator:next(),
|
|
68
|
+
isGlobal
|
|
53
69
|
)
|
|
54
70
|
end
|
|
55
71
|
function ObjectFieldBase.of(self, id)
|
|
@@ -71,7 +87,7 @@ ____exports.ObjectField = __TS__Class()
|
|
|
71
87
|
local ObjectField = ____exports.ObjectField
|
|
72
88
|
ObjectField.name = "ObjectField"
|
|
73
89
|
__TS__ClassExtends(ObjectField, ObjectFieldBase)
|
|
74
|
-
function ObjectField.prototype.getValue(self, entry)
|
|
90
|
+
function ObjectField.prototype.getValue(self, entry, includeModifiers)
|
|
75
91
|
if __TS__InstanceOf(entry, ObjectDataEntry) then
|
|
76
92
|
local defaultValueByObjectDataEntryId = (warpack.compiletime and compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId or defaultValueByObjectDataEntryIdByObjectFieldId)[self.id]
|
|
77
93
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
@@ -82,22 +98,16 @@ function ObjectField.prototype.getValue(self, entry)
|
|
|
82
98
|
end
|
|
83
99
|
return self.defaultValue
|
|
84
100
|
end
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
____self_valueByInstance_entry_0 = defaultValue
|
|
101
|
+
if includeModifiers == false then
|
|
102
|
+
local originalValueByInstance = self.originalValueByInstance
|
|
103
|
+
if originalValueByInstance ~= nil then
|
|
104
|
+
local originalValue = originalValueByInstance[entry]
|
|
105
|
+
if originalValue ~= nil then
|
|
106
|
+
return originalValue
|
|
92
107
|
end
|
|
93
|
-
return ____self_valueByInstance_entry_0
|
|
94
108
|
end
|
|
95
109
|
end
|
|
96
|
-
|
|
97
|
-
if ____temp_1 == nil then
|
|
98
|
-
____temp_1 = self.defaultValue
|
|
99
|
-
end
|
|
100
|
-
return ____temp_1
|
|
110
|
+
return self:getActualValue(entry)
|
|
101
111
|
end
|
|
102
112
|
function ObjectField.prototype.setValue(self, entry, value)
|
|
103
113
|
if __TS__InstanceOf(entry, ObjectDataEntry) then
|
|
@@ -112,37 +122,53 @@ function ObjectField.prototype.setValue(self, entry, value)
|
|
|
112
122
|
defaultValueByObjectDataEntryId[entry.id] = value
|
|
113
123
|
return true
|
|
114
124
|
end
|
|
115
|
-
local
|
|
116
|
-
if
|
|
117
|
-
local
|
|
118
|
-
if
|
|
119
|
-
local
|
|
120
|
-
if
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
local ____self_valueByInstance_entry_2_3 = ____self_valueByInstance_entry_2
|
|
124
|
-
if ____self_valueByInstance_entry_2_3 == nil then
|
|
125
|
-
____self_valueByInstance_entry_2_3 = self.defaultValue
|
|
125
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
126
|
+
if modifiersByInstance ~= nil then
|
|
127
|
+
local modifiers = modifiersByInstance[entry]
|
|
128
|
+
if modifiers ~= nil and modifiers.size ~= 0 then
|
|
129
|
+
local originalValueByInstance = self.originalValueByInstance
|
|
130
|
+
if originalValueByInstance == nil then
|
|
131
|
+
originalValueByInstance = mutableWeakLuaMap()
|
|
132
|
+
self.originalValueByInstance = originalValueByInstance
|
|
126
133
|
end
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
self.valueByInstance[entry] = value
|
|
130
|
-
self:invokeValueChangeEvent(entry, self, previousValue, value)
|
|
131
|
-
end
|
|
132
|
-
return true
|
|
134
|
+
originalValueByInstance[entry] = value
|
|
135
|
+
value = self:calculateActualValue(entry)
|
|
133
136
|
end
|
|
134
137
|
end
|
|
135
|
-
|
|
136
|
-
|
|
138
|
+
return self:setActualValue(entry, value)
|
|
139
|
+
end
|
|
140
|
+
function ObjectField.prototype.applyModifier(self, instance, modifier)
|
|
141
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
142
|
+
if modifiersByInstance == nil then
|
|
143
|
+
modifiersByInstance = mutableWeakLuaMap()
|
|
144
|
+
self.modifiersByInstance = modifiersByInstance
|
|
145
|
+
end
|
|
146
|
+
if getOrPut(modifiersByInstance, instance, mutableLinkedSet):add(modifier) then
|
|
147
|
+
local originalValueByInstance = self.originalValueByInstance
|
|
148
|
+
if originalValueByInstance == nil then
|
|
149
|
+
originalValueByInstance = mutableWeakLuaMap()
|
|
150
|
+
self.originalValueByInstance = originalValueByInstance
|
|
151
|
+
end
|
|
152
|
+
originalValueByInstance[instance] = self:getActualValue(instance)
|
|
153
|
+
self:setActualValue(
|
|
154
|
+
instance,
|
|
155
|
+
self:calculateActualValue(instance)
|
|
156
|
+
)
|
|
137
157
|
end
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
158
|
+
end
|
|
159
|
+
function ObjectField.prototype.removeModifier(self, instance, modifier)
|
|
160
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
161
|
+
if modifiersByInstance ~= nil then
|
|
162
|
+
local modifiers = modifiersByInstance[instance]
|
|
163
|
+
if modifiers ~= nil and modifiers:remove(modifier) then
|
|
164
|
+
self:setActualValue(
|
|
165
|
+
instance,
|
|
166
|
+
self:calculateActualValue(instance)
|
|
167
|
+
)
|
|
168
|
+
return true
|
|
142
169
|
end
|
|
143
|
-
self:invokeValueChangeEvent(entry, self, previousValue, value)
|
|
144
170
|
end
|
|
145
|
-
return
|
|
171
|
+
return false
|
|
146
172
|
end
|
|
147
173
|
function ObjectField.prototype.removeValue(self, entry)
|
|
148
174
|
if not warpack.compiletime then
|
|
@@ -164,6 +190,73 @@ function ObjectField.prototype.trySetValue(self, entry, value)
|
|
|
164
190
|
end
|
|
165
191
|
return self:setValue(entry, value)
|
|
166
192
|
end
|
|
193
|
+
function ObjectField.prototype.getActualValue(self, instance)
|
|
194
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
195
|
+
if defaultValueByObjectDataEntryId ~= nil then
|
|
196
|
+
local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)]
|
|
197
|
+
if defaultValue ~= nil then
|
|
198
|
+
local ____self_valueByInstance_instance_0 = self.valueByInstance[instance]
|
|
199
|
+
if ____self_valueByInstance_instance_0 == nil then
|
|
200
|
+
____self_valueByInstance_instance_0 = defaultValue
|
|
201
|
+
end
|
|
202
|
+
return ____self_valueByInstance_instance_0
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
local ____temp_1 = self:getNativeFieldValue(instance)
|
|
206
|
+
if ____temp_1 == nil then
|
|
207
|
+
____temp_1 = self.defaultValue
|
|
208
|
+
end
|
|
209
|
+
return ____temp_1
|
|
210
|
+
end
|
|
211
|
+
function ObjectField.prototype.setActualValue(self, instance, value)
|
|
212
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
213
|
+
if defaultValueByObjectDataEntryId ~= nil then
|
|
214
|
+
local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)]
|
|
215
|
+
if defaultValue ~= nil or self.isGlobal then
|
|
216
|
+
local ____self_valueByInstance_instance_2 = self.valueByInstance[instance]
|
|
217
|
+
if ____self_valueByInstance_instance_2 == nil then
|
|
218
|
+
____self_valueByInstance_instance_2 = defaultValue
|
|
219
|
+
end
|
|
220
|
+
local ____self_valueByInstance_instance_2_3 = ____self_valueByInstance_instance_2
|
|
221
|
+
if ____self_valueByInstance_instance_2_3 == nil then
|
|
222
|
+
____self_valueByInstance_instance_2_3 = self.defaultValue
|
|
223
|
+
end
|
|
224
|
+
local previousValue = ____self_valueByInstance_instance_2_3
|
|
225
|
+
if value ~= previousValue then
|
|
226
|
+
self.valueByInstance[instance] = value
|
|
227
|
+
self:invokeValueChangeEvent(instance, self, previousValue, value)
|
|
228
|
+
end
|
|
229
|
+
return true
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
if not self:hasNativeFieldValue(instance) then
|
|
233
|
+
return false
|
|
234
|
+
end
|
|
235
|
+
local previousValue = self:getNativeFieldValue(instance)
|
|
236
|
+
if value ~= previousValue then
|
|
237
|
+
if not self:setNativeFieldValue(instance, value) then
|
|
238
|
+
return false
|
|
239
|
+
end
|
|
240
|
+
self:invokeValueChangeEvent(instance, self, previousValue, value)
|
|
241
|
+
end
|
|
242
|
+
return true
|
|
243
|
+
end
|
|
244
|
+
function ObjectField.prototype.calculateActualValue(self, instance)
|
|
245
|
+
local ____opt_4 = self.originalValueByInstance
|
|
246
|
+
local originalValue = ____opt_4 and ____opt_4[instance]
|
|
247
|
+
local ____opt_6 = self.modifiersByInstance
|
|
248
|
+
local modifiers = ____opt_6 and ____opt_6[instance]
|
|
249
|
+
if originalValue ~= nil then
|
|
250
|
+
local value = originalValue
|
|
251
|
+
if modifiers ~= nil then
|
|
252
|
+
for modifier in pairs(modifiers) do
|
|
253
|
+
value = modifier(instance, value, originalValue)
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
return value
|
|
257
|
+
end
|
|
258
|
+
return self.defaultValue
|
|
259
|
+
end
|
|
167
260
|
function ObjectField.prototype.invokeValueChangeEvent(self, ...)
|
|
168
261
|
self:invokeValueChangeEventRecursive(
|
|
169
262
|
getClass(self),
|
|
@@ -217,17 +310,17 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
|
|
|
217
310
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
218
311
|
local value = defaultValueByObjectDataEntryId[entry.id]
|
|
219
312
|
if value ~= nil then
|
|
220
|
-
local
|
|
313
|
+
local ____temp_9
|
|
221
314
|
if index == nil then
|
|
222
|
-
|
|
315
|
+
____temp_9 = value
|
|
223
316
|
else
|
|
224
|
-
local
|
|
225
|
-
if
|
|
226
|
-
|
|
317
|
+
local ____value_index_8 = value[index + 1]
|
|
318
|
+
if ____value_index_8 == nil then
|
|
319
|
+
____value_index_8 = self.defaultValue
|
|
227
320
|
end
|
|
228
|
-
|
|
321
|
+
____temp_9 = ____value_index_8
|
|
229
322
|
end
|
|
230
|
-
return
|
|
323
|
+
return ____temp_9
|
|
231
324
|
end
|
|
232
325
|
end
|
|
233
326
|
return index == nil and ({}) or self.defaultValue
|
|
@@ -237,17 +330,17 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
|
|
|
237
330
|
local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
|
|
238
331
|
if defaultValue ~= nil then
|
|
239
332
|
local value = self.valueByInstance[entry] or defaultValue
|
|
240
|
-
local
|
|
333
|
+
local ____temp_11
|
|
241
334
|
if index == nil then
|
|
242
|
-
|
|
335
|
+
____temp_11 = value
|
|
243
336
|
else
|
|
244
|
-
local
|
|
245
|
-
if
|
|
246
|
-
|
|
337
|
+
local ____value_index_10 = value[index + 1]
|
|
338
|
+
if ____value_index_10 == nil then
|
|
339
|
+
____value_index_10 = self.defaultValue
|
|
247
340
|
end
|
|
248
|
-
|
|
341
|
+
____temp_11 = ____value_index_10
|
|
249
342
|
end
|
|
250
|
-
return
|
|
343
|
+
return ____temp_11
|
|
251
344
|
end
|
|
252
345
|
end
|
|
253
346
|
if index ~= nil then
|
|
@@ -292,11 +385,11 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
|
|
|
292
385
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
293
386
|
local valueByLevel = defaultValueByObjectDataEntryId[entry.id]
|
|
294
387
|
if valueByLevel ~= nil then
|
|
295
|
-
local
|
|
296
|
-
if
|
|
297
|
-
|
|
388
|
+
local ____valueByLevel_index_12 = valueByLevel[level + 1]
|
|
389
|
+
if ____valueByLevel_index_12 == nil then
|
|
390
|
+
____valueByLevel_index_12 = self.defaultValue
|
|
298
391
|
end
|
|
299
|
-
return
|
|
392
|
+
return ____valueByLevel_index_12
|
|
300
393
|
end
|
|
301
394
|
end
|
|
302
395
|
return self.defaultValue
|
|
@@ -305,23 +398,23 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
|
|
|
305
398
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
306
399
|
local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
|
|
307
400
|
if defaultValueByLevel ~= nil then
|
|
308
|
-
local
|
|
309
|
-
local
|
|
310
|
-
if
|
|
311
|
-
|
|
401
|
+
local ____opt_13 = self.valueByInstance[entry]
|
|
402
|
+
local ____temp_15 = ____opt_13 and ____opt_13[level + 1]
|
|
403
|
+
if ____temp_15 == nil then
|
|
404
|
+
____temp_15 = defaultValueByLevel[level + 1]
|
|
312
405
|
end
|
|
313
|
-
local
|
|
314
|
-
if
|
|
315
|
-
|
|
406
|
+
local ____temp_15_16 = ____temp_15
|
|
407
|
+
if ____temp_15_16 == nil then
|
|
408
|
+
____temp_15_16 = self.defaultValue
|
|
316
409
|
end
|
|
317
|
-
return
|
|
410
|
+
return ____temp_15_16
|
|
318
411
|
end
|
|
319
412
|
end
|
|
320
|
-
local
|
|
321
|
-
if
|
|
322
|
-
|
|
413
|
+
local ____temp_17 = self:getNativeFieldValue(entry, level)
|
|
414
|
+
if ____temp_17 == nil then
|
|
415
|
+
____temp_17 = self.defaultValue
|
|
323
416
|
end
|
|
324
|
-
return
|
|
417
|
+
return ____temp_17
|
|
325
418
|
end
|
|
326
419
|
function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
327
420
|
if value == nil then
|
|
@@ -364,21 +457,21 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
|
364
457
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
365
458
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
366
459
|
local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
|
|
367
|
-
if defaultValueByLevel ~= nil then
|
|
460
|
+
if defaultValueByLevel ~= nil or self.isGlobal then
|
|
368
461
|
local valueByLevel = self.valueByInstance[entry]
|
|
369
462
|
if valueByLevel == nil then
|
|
370
463
|
valueByLevel = {}
|
|
371
464
|
self.valueByInstance[entry] = valueByLevel
|
|
372
465
|
end
|
|
373
|
-
local
|
|
374
|
-
if
|
|
375
|
-
|
|
466
|
+
local ____valueByLevel_index_18 = valueByLevel[level + 1]
|
|
467
|
+
if ____valueByLevel_index_18 == nil then
|
|
468
|
+
____valueByLevel_index_18 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
376
469
|
end
|
|
377
|
-
local
|
|
378
|
-
if
|
|
379
|
-
|
|
470
|
+
local ____valueByLevel_index_18_19 = ____valueByLevel_index_18
|
|
471
|
+
if ____valueByLevel_index_18_19 == nil then
|
|
472
|
+
____valueByLevel_index_18_19 = self.defaultValue
|
|
380
473
|
end
|
|
381
|
-
local previousValue =
|
|
474
|
+
local previousValue = ____valueByLevel_index_18_19
|
|
382
475
|
if value ~= previousValue then
|
|
383
476
|
valueByLevel[level + 1] = value
|
|
384
477
|
self:invokeValueChangeEvent(
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { StandardSoundPresetId } from "../../object-data/entry/sound-preset";
|
|
3
|
+
export declare const ABOMINATION_PISSED_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
4
|
+
export declare const ABOMINATION_READY_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
5
|
+
export declare const ABOMINATION_WAR_CRY_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
6
|
+
export declare const AXE_MEDIUM_CHOP_WOOD_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
7
|
+
export declare const IMPALE_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
8
|
+
export declare const IMPALE_HIT_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
9
|
+
export declare const IMPALE_LAND_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
10
|
+
export declare const IMPALE_CAST_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
____exports.ABOMINATION_PISSED_SOUND_PRESET_ID = "AbominationPissed"
|
|
3
|
+
____exports.ABOMINATION_READY_SOUND_PRESET_ID = "AbominationReady"
|
|
4
|
+
____exports.ABOMINATION_WAR_CRY_SOUND_PRESET_ID = "AbominationWarcry"
|
|
5
|
+
____exports.AXE_MEDIUM_CHOP_WOOD_SOUND_PRESET_ID = "AxeMediumChopWood"
|
|
6
|
+
____exports.IMPALE_SOUND_PRESET_ID = "Impale"
|
|
7
|
+
____exports.IMPALE_HIT_SOUND_PRESET_ID = "ImpaleHit"
|
|
8
|
+
____exports.IMPALE_LAND_SOUND_PRESET_ID = "ImpaleLand"
|
|
9
|
+
____exports.IMPALE_CAST_SOUND_PRESET_ID = "ImpaleCast"
|
|
10
|
+
return ____exports
|
|
@@ -687,6 +687,8 @@ export declare const DISABLE_OTHER_ABILITIES_ABILITY_BOOLEAN_LEVEL_FIELD: Abilit
|
|
|
687
687
|
export declare const ALLOW_BOUNTY_ABILITY_BOOLEAN_LEVEL_FIELD: AbilityBooleanLevelField & symbol;
|
|
688
688
|
export declare const ICON_NORMAL_ABILITY_STRING_LEVEL_FIELD: AbilityStringLevelField & symbol;
|
|
689
689
|
export declare const CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD: AbilityStringArrayField & symbol;
|
|
690
|
+
export declare const CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD: AbilityStringField & symbol;
|
|
691
|
+
export declare const CASTER_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD: AbilityStringField & symbol;
|
|
690
692
|
export declare const TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD: AbilityStringArrayField & symbol;
|
|
691
693
|
export declare const TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD: AbilityStringField & symbol;
|
|
692
694
|
export declare const TARGET_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD: AbilityStringField & symbol;
|
|
@@ -698,6 +698,8 @@ ____exports.DISABLE_OTHER_ABILITIES_ABILITY_BOOLEAN_LEVEL_FIELD = AbilityBoolean
|
|
|
698
698
|
____exports.ALLOW_BOUNTY_ABILITY_BOOLEAN_LEVEL_FIELD = AbilityBooleanLevelField:create(fourCC("Ntm4"))
|
|
699
699
|
____exports.ICON_NORMAL_ABILITY_STRING_LEVEL_FIELD = AbilityStringLevelField:create(fourCC("aart"))
|
|
700
700
|
____exports.CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = AbilityStringArrayField:create(fourCC("acat"))
|
|
701
|
+
____exports.CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = AbilityStringField:create(fourCC("acap"))
|
|
702
|
+
____exports.CASTER_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD = AbilityStringField:create(fourCC("aca1"))
|
|
701
703
|
____exports.TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = AbilityStringArrayField:create(fourCC("atat"))
|
|
702
704
|
____exports.TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = AbilityStringField:create(fourCC("ata0"))
|
|
703
705
|
____exports.TARGET_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD = AbilityStringField:create(fourCC("ata1"))
|
package/engine/unit.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import "./internal/unit/ability";
|
|
|
4
4
|
import "./internal/unit/allowed-targets";
|
|
5
5
|
import "./internal/unit/buff";
|
|
6
6
|
import "./internal/unit/expiration-timer";
|
|
7
|
+
import "./internal/unit/item";
|
|
7
8
|
import "./internal/unit+ability";
|
|
8
9
|
import "./internal/unit+damage";
|
|
9
10
|
import "./internal/unit+rally";
|
|
@@ -15,6 +16,8 @@ import "./internal/unit-missile-launch";
|
|
|
15
16
|
import "./internal/unit/ghost-counter";
|
|
16
17
|
import "./internal/unit/invulnerability-counter";
|
|
17
18
|
import "./internal/unit/detach-missiles";
|
|
19
|
+
import "./internal/unit/main-selected";
|
|
20
|
+
import "./internal/unit/add-item-to-slot-init";
|
|
18
21
|
import "./internal/unit/band-aids/ancestral-spirit-cannibalize";
|
|
19
22
|
export { Unit, DamagingEvent, DamageEvent } from "./internal/unit";
|
|
20
23
|
export * from "./internal/unit+damage";
|
package/engine/unit.lua
CHANGED
|
@@ -4,6 +4,7 @@ require("engine.internal.unit.ability")
|
|
|
4
4
|
require("engine.internal.unit.allowed-targets")
|
|
5
5
|
require("engine.internal.unit.buff")
|
|
6
6
|
require("engine.internal.unit.expiration-timer")
|
|
7
|
+
require("engine.internal.unit.item")
|
|
7
8
|
require("engine.internal.unit+ability")
|
|
8
9
|
require("engine.internal.unit+damage")
|
|
9
10
|
require("engine.internal.unit+rally")
|
|
@@ -15,6 +16,8 @@ require("engine.internal.unit-missile-launch")
|
|
|
15
16
|
require("engine.internal.unit.ghost-counter")
|
|
16
17
|
require("engine.internal.unit.invulnerability-counter")
|
|
17
18
|
require("engine.internal.unit.detach-missiles")
|
|
19
|
+
require("engine.internal.unit.main-selected")
|
|
20
|
+
require("engine.internal.unit.add-item-to-slot-init")
|
|
18
21
|
require("engine.internal.unit.band-aids.ancestral-spirit-cannibalize")
|
|
19
22
|
do
|
|
20
23
|
local ____unit = require("engine.internal.unit")
|
package/index.d.ts
CHANGED
package/index.lua
CHANGED
package/net/socket.d.ts
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Event } from "../event";
|
|
3
3
|
import { Player } from "../core/types/player";
|
|
4
|
+
declare const enum SocketPropertyKey {
|
|
5
|
+
ID = 0,
|
|
6
|
+
CHUNK_ID = 1
|
|
7
|
+
}
|
|
4
8
|
export declare class Socket {
|
|
5
|
-
private readonly
|
|
9
|
+
private readonly [SocketPropertyKey.ID];
|
|
10
|
+
private readonly [SocketPropertyKey.CHUNK_ID];
|
|
6
11
|
readonly onMessage: Event<[Player, string]>;
|
|
7
12
|
constructor();
|
|
8
13
|
send(data: string): void;
|
|
9
14
|
}
|
|
15
|
+
export {};
|
package/net/socket.lua
CHANGED
|
@@ -7,6 +7,11 @@ local Event = ____event.Event
|
|
|
7
7
|
local ____network = require("network")
|
|
8
8
|
local send = ____network.send
|
|
9
9
|
local onReceive = ____network.onReceive
|
|
10
|
+
local MAX_PAYLOAD_LENGTH = ____network.MAX_PAYLOAD_LENGTH
|
|
11
|
+
local ____math = require("math")
|
|
12
|
+
local ceil = ____math.ceil
|
|
13
|
+
local stringSub = string.sub
|
|
14
|
+
local tableConcat = table.concat
|
|
10
15
|
local nextId = 0
|
|
11
16
|
____exports.Socket = __TS__Class()
|
|
12
17
|
local Socket = ____exports.Socket
|
|
@@ -14,13 +19,49 @@ Socket.name = "Socket"
|
|
|
14
19
|
function Socket.prototype.____constructor(self)
|
|
15
20
|
local ____tostring_0 = tostring
|
|
16
21
|
nextId = nextId + 1
|
|
17
|
-
self
|
|
22
|
+
self[0] = ____tostring_0(nextId)
|
|
23
|
+
local ____tostring_1 = tostring
|
|
24
|
+
nextId = nextId + 1
|
|
25
|
+
self[1] = ____tostring_1(nextId)
|
|
18
26
|
self.onMessage = __TS__New(Event)
|
|
19
|
-
|
|
20
|
-
|
|
27
|
+
local chunksByPlayer = {}
|
|
28
|
+
onReceive[self[0]]:addListener(function(sender, data)
|
|
29
|
+
local chunks = chunksByPlayer[sender]
|
|
30
|
+
if chunks ~= nil then
|
|
31
|
+
chunks[#chunks + 1] = data
|
|
32
|
+
Event.invoke(
|
|
33
|
+
self.onMessage,
|
|
34
|
+
sender,
|
|
35
|
+
tableConcat(chunks)
|
|
36
|
+
)
|
|
37
|
+
chunksByPlayer[sender] = nil
|
|
38
|
+
else
|
|
39
|
+
Event.invoke(self.onMessage, sender, data)
|
|
40
|
+
end
|
|
41
|
+
end)
|
|
42
|
+
onReceive[self[1]]:addListener(function(sender, data)
|
|
43
|
+
local chunks = chunksByPlayer[sender]
|
|
44
|
+
if chunks == nil then
|
|
45
|
+
chunks = {}
|
|
46
|
+
chunksByPlayer[sender] = chunks
|
|
47
|
+
end
|
|
48
|
+
chunks[#chunks + 1] = data
|
|
21
49
|
end)
|
|
22
50
|
end
|
|
23
51
|
function Socket.prototype.send(self, data)
|
|
24
|
-
|
|
52
|
+
local chunks = ceil(#data / MAX_PAYLOAD_LENGTH) - 1
|
|
53
|
+
local offset = 1
|
|
54
|
+
for _ = 0, chunks - 1 do
|
|
55
|
+
local nextOffset = offset + MAX_PAYLOAD_LENGTH
|
|
56
|
+
send(
|
|
57
|
+
self[1],
|
|
58
|
+
stringSub(data, offset, nextOffset - 1)
|
|
59
|
+
)
|
|
60
|
+
offset = nextOffset
|
|
61
|
+
end
|
|
62
|
+
send(
|
|
63
|
+
self[0],
|
|
64
|
+
stringSub(data, offset)
|
|
65
|
+
)
|
|
25
66
|
end
|
|
26
67
|
return ____exports
|
package/network.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { Event } from "./event";
|
|
3
3
|
import { Player } from "./core/types/player";
|
|
4
4
|
import { Operation, OperationContinue, OperationMonitor } from "./operation";
|
|
5
|
+
export declare const MAX_PAYLOAD_LENGTH = 255;
|
|
5
6
|
export declare const onReceive: {
|
|
6
7
|
[prefix: string]: Event<[Player, string]>;
|
|
7
8
|
} & {
|
package/network.lua
CHANGED
|
@@ -25,6 +25,7 @@ local concat = table.concat
|
|
|
25
25
|
local pack = string.pack
|
|
26
26
|
local sub = string.sub
|
|
27
27
|
local ____unpack = string.unpack
|
|
28
|
+
____exports.MAX_PAYLOAD_LENGTH = 255
|
|
28
29
|
____exports.onReceive = setmetatable(
|
|
29
30
|
{},
|
|
30
31
|
{__index = function(self, prefix)
|
|
@@ -42,11 +43,11 @@ ____exports.onReceive = setmetatable(
|
|
|
42
43
|
end}
|
|
43
44
|
)
|
|
44
45
|
function ____exports.send(id, payload)
|
|
45
|
-
if #payload >
|
|
46
|
+
if #payload > ____exports.MAX_PAYLOAD_LENGTH then
|
|
46
47
|
error(
|
|
47
48
|
__TS__New(
|
|
48
49
|
IllegalArgumentException,
|
|
49
|
-
"payload length must be <=
|
|
50
|
+
(("payload length must be <= " .. tostring(____exports.MAX_PAYLOAD_LENGTH)) .. ", but was ") .. tostring(#payload)
|
|
50
51
|
),
|
|
51
52
|
0
|
|
52
53
|
)
|