warscript 0.0.1-dev.4cfb266 → 0.0.1-dev.4f51f48
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/core/types/frame.lua +24 -21
- package/core/types/player.d.ts +15 -0
- package/core/types/player.lua +56 -14
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +3 -1
- package/core/types/timer.lua +27 -2
- package/decl/native.d.ts +6 -4
- package/engine/behavior.d.ts +5 -0
- package/engine/behavior.lua +106 -27
- package/engine/behaviour/ability/apply-buff.lua +1 -1
- package/engine/behaviour/ability/damage.d.ts +4 -2
- package/engine/behaviour/ability/damage.lua +24 -36
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +11 -3
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.lua +8 -17
- package/engine/behaviour/unit/stun-immunity.d.ts +7 -3
- package/engine/behaviour/unit/stun-immunity.lua +52 -27
- package/engine/behaviour/unit.d.ts +33 -1
- package/engine/behaviour/unit.lua +190 -4
- package/engine/buff.d.ts +12 -5
- package/engine/buff.lua +125 -87
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +49 -9
- package/engine/internal/item/ability.lua +63 -11
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +16 -16
- package/engine/internal/item.lua +135 -49
- 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/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +98 -9
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -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/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-missile-launch.lua +45 -14
- package/engine/internal/unit.d.ts +29 -18
- package/engine/internal/unit.lua +257 -140
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -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/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.lua +5 -4
- package/engine/object-data/entry/unit-type.d.ts +11 -2
- package/engine/object-data/entry/unit-type.lua +59 -1
- package/engine/object-field/ability.d.ts +3 -3
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +24 -1
- package/engine/object-field/unit.lua +91 -0
- package/engine/object-field.d.ts +15 -6
- package/engine/object-field.lua +219 -124
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/fields/unit.d.ts +6 -0
- package/engine/standard/fields/unit.lua +11 -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 +3 -0
- package/engine/unit.lua +3 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +1 -1
- package/package.json +2 -2
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +1 -0
- package/utility/arrays.lua +8 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +7 -0
- package/utility/functions.lua +12 -0
- package/utility/linked-set.d.ts +1 -0
- package/utility/linked-set.lua +19 -1
- package/utility/lua-maps.d.ts +12 -2
- package/utility/lua-maps.lua +37 -2
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +4 -0
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
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,10 +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
|
-
protected abstract hasNativeFieldValue(
|
|
20
|
-
hasValue(
|
|
21
|
-
constructor(id: number);
|
|
22
|
-
static create<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldConstructor<T>, id?: number): T & symbol;
|
|
20
|
+
protected abstract hasNativeFieldValue(objectDataEntryId: ObjectDataEntryIdType<ObjectDataEntryType>): boolean;
|
|
21
|
+
hasValue(objectDataEntryId: ObjectDataEntryIdType<ObjectDataEntryType>): 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;
|
|
23
24
|
static of<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldAbstractConstructor<T>, id: number): T | undefined;
|
|
24
25
|
}
|
|
25
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<[
|
|
@@ -35,7 +36,8 @@ export type ObjectFieldValueChangeEvent<T extends ObjectField<any, any, any, any
|
|
|
35
36
|
]> : never;
|
|
36
37
|
export type ReadonlyObjectFieldType<T extends ObjectField<any, any, any, any>> = Omit<T, "setValue" | "removeValue" | "trySetValue">;
|
|
37
38
|
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;
|
|
39
|
+
export type ObjectFieldModifier<InstanceType extends AnyNotNil, ValueType extends number | string | boolean> = (instance: InstanceType, currentValue: ValueType, originalValue: ValueType) => ValueType;
|
|
40
|
+
export type ObjectLevelFieldModifier<InstanceType extends AnyNotNil, ValueType extends number | string | boolean> = (instance: InstanceType, level: number, currentValue: ValueType, originalValue: ValueType) => ValueType;
|
|
39
41
|
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> {
|
|
40
42
|
protected abstract readonly defaultValue: ValueType;
|
|
41
43
|
protected abstract getNativeFieldValue(instance: InstanceType): ValueType;
|
|
@@ -79,13 +81,20 @@ export declare abstract class ObjectArrayField<ObjectDataEntryType extends Objec
|
|
|
79
81
|
setValue(entry: ObjectDataEntryType | InstanceType, value: ValueType[]): boolean;
|
|
80
82
|
}
|
|
81
83
|
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> {
|
|
84
|
+
private originalValueByLevelByInstance?;
|
|
85
|
+
private modifiersByInstance?;
|
|
82
86
|
protected abstract readonly defaultValue: ValueType;
|
|
83
87
|
protected abstract getNativeFieldValue(instance: InstanceType, level: number): ValueType;
|
|
84
88
|
protected abstract setNativeFieldValue(instance: InstanceType, level: number, value: ValueType): boolean;
|
|
85
89
|
protected abstract getLevelCount(entry: ObjectDataEntryType | InstanceType): number;
|
|
86
90
|
getValue<LevelType extends [number] | []>(entry: ObjectDataEntryType | InstanceType, ...[level]: LevelType): LevelType extends [number] ? ValueType : ValueType[];
|
|
87
91
|
setValue(entry: ObjectDataEntryType | InstanceType, ...[levelOrValue, value]: [value: ObjectDataEntryLevelFieldValueSupplier<InputValueType, ValueType>] | [level: number, value: InputValueType]): boolean;
|
|
92
|
+
applyModifier(instance: InstanceType, modifier: ObjectLevelFieldModifier<InstanceType, ValueType>): void;
|
|
93
|
+
removeModifier(instance: InstanceType, modifier: ObjectLevelFieldModifier<InstanceType, ValueType>): boolean;
|
|
88
94
|
trySetValue(entry: ObjectDataEntryType | InstanceType, levelOrValue: number | unknown, value?: unknown): boolean;
|
|
95
|
+
private getActualValue;
|
|
96
|
+
private setActualValue;
|
|
97
|
+
private calculateActualValue;
|
|
89
98
|
private invokeValueChangeEvent;
|
|
90
99
|
private invokeValueChangeEventRecursive;
|
|
91
100
|
protected static getOrCreateValueChangeEvent<T extends ObjectLevelField, R extends ReadonlyObjectLevelFieldType<T>>(this: ReadonlyObjectLevelFieldConstructor<T>): ObjectLevelFieldValueChangeEvent<R>;
|
package/engine/object-field.lua
CHANGED
|
@@ -23,8 +23,12 @@ local ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.Ob
|
|
|
23
23
|
local ____linked_2Dset = require("utility.linked-set")
|
|
24
24
|
local mutableLinkedSet = ____linked_2Dset.mutableLinkedSet
|
|
25
25
|
local ____lua_2Dmaps = require("utility.lua-maps")
|
|
26
|
+
local emptyLuaMap = ____lua_2Dmaps.emptyLuaMap
|
|
26
27
|
local getOrPut = ____lua_2Dmaps.getOrPut
|
|
28
|
+
local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
|
|
27
29
|
local mutableWeakLuaMap = ____lua_2Dmaps.mutableWeakLuaMap
|
|
30
|
+
local ____arrays = require("utility.arrays")
|
|
31
|
+
local emptyArray = ____arrays.emptyArray
|
|
28
32
|
local compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId = {}
|
|
29
33
|
local defaultValueByObjectDataEntryIdByObjectFieldId = postcompile(function() return compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId end)
|
|
30
34
|
local objectFieldById = {}
|
|
@@ -34,7 +38,11 @@ local idGenerator = __TS__New(
|
|
|
34
38
|
)
|
|
35
39
|
local ObjectFieldBase = __TS__Class()
|
|
36
40
|
ObjectFieldBase.name = "ObjectFieldBase"
|
|
37
|
-
function ObjectFieldBase.prototype.____constructor(self, id)
|
|
41
|
+
function ObjectFieldBase.prototype.____constructor(self, id, isGlobal)
|
|
42
|
+
if isGlobal == nil then
|
|
43
|
+
isGlobal = false
|
|
44
|
+
end
|
|
45
|
+
self.isGlobal = isGlobal
|
|
38
46
|
self.valueByInstance = setmetatable({}, {__mode = "k"})
|
|
39
47
|
if objectFieldById[id] ~= nil then
|
|
40
48
|
error(
|
|
@@ -51,14 +59,15 @@ end
|
|
|
51
59
|
function ObjectFieldBase.prototype.supports(self, instance)
|
|
52
60
|
return __TS__InstanceOf(instance, self.instanceClass)
|
|
53
61
|
end
|
|
54
|
-
function ObjectFieldBase.prototype.hasValue(self,
|
|
62
|
+
function ObjectFieldBase.prototype.hasValue(self, objectDataEntryId)
|
|
55
63
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
56
|
-
return defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[
|
|
64
|
+
return self.isGlobal or defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[objectDataEntryId] ~= nil or self:hasNativeFieldValue(objectDataEntryId)
|
|
57
65
|
end
|
|
58
|
-
function ObjectFieldBase.create(self, id)
|
|
66
|
+
function ObjectFieldBase.create(self, id, isGlobal)
|
|
59
67
|
return __TS__New(
|
|
60
68
|
self,
|
|
61
|
-
id or idGenerator:next()
|
|
69
|
+
id or idGenerator:next(),
|
|
70
|
+
isGlobal
|
|
62
71
|
)
|
|
63
72
|
end
|
|
64
73
|
function ObjectFieldBase.of(self, id)
|
|
@@ -142,7 +151,13 @@ function ObjectField.prototype.applyModifier(self, instance, modifier)
|
|
|
142
151
|
originalValueByInstance = mutableWeakLuaMap()
|
|
143
152
|
self.originalValueByInstance = originalValueByInstance
|
|
144
153
|
end
|
|
145
|
-
|
|
154
|
+
local ____originalValueByInstance_1 = originalValueByInstance
|
|
155
|
+
local ____instance_2 = instance
|
|
156
|
+
local ____originalValueByInstance_instance_0 = originalValueByInstance[instance]
|
|
157
|
+
if ____originalValueByInstance_instance_0 == nil then
|
|
158
|
+
____originalValueByInstance_instance_0 = self:getActualValue(instance)
|
|
159
|
+
end
|
|
160
|
+
____originalValueByInstance_1[____instance_2] = ____originalValueByInstance_instance_0
|
|
146
161
|
self:setActualValue(
|
|
147
162
|
instance,
|
|
148
163
|
self:calculateActualValue(instance)
|
|
@@ -185,60 +200,61 @@ function ObjectField.prototype.trySetValue(self, entry, value)
|
|
|
185
200
|
end
|
|
186
201
|
function ObjectField.prototype.getActualValue(self, instance)
|
|
187
202
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
188
|
-
if defaultValueByObjectDataEntryId ~= nil then
|
|
189
|
-
local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)]
|
|
190
|
-
if defaultValue ~= nil then
|
|
191
|
-
local
|
|
192
|
-
if
|
|
193
|
-
|
|
203
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
204
|
+
local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
|
|
205
|
+
if defaultValue ~= nil or self.isGlobal then
|
|
206
|
+
local ____self_valueByInstance_instance_3 = self.valueByInstance[instance]
|
|
207
|
+
if ____self_valueByInstance_instance_3 == nil then
|
|
208
|
+
____self_valueByInstance_instance_3 = defaultValue
|
|
194
209
|
end
|
|
195
|
-
|
|
210
|
+
local ____self_valueByInstance_instance_3_4 = ____self_valueByInstance_instance_3
|
|
211
|
+
if ____self_valueByInstance_instance_3_4 == nil then
|
|
212
|
+
____self_valueByInstance_instance_3_4 = self.defaultValue
|
|
213
|
+
end
|
|
214
|
+
return ____self_valueByInstance_instance_3_4
|
|
196
215
|
end
|
|
197
216
|
end
|
|
198
|
-
local
|
|
199
|
-
if
|
|
200
|
-
|
|
217
|
+
local ____temp_5 = self:getNativeFieldValue(instance)
|
|
218
|
+
if ____temp_5 == nil then
|
|
219
|
+
____temp_5 = self.defaultValue
|
|
201
220
|
end
|
|
202
|
-
return
|
|
221
|
+
return ____temp_5
|
|
203
222
|
end
|
|
204
223
|
function ObjectField.prototype.setActualValue(self, instance, value)
|
|
205
224
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
local ____self_valueByInstance_instance_2_3 = ____self_valueByInstance_instance_2
|
|
214
|
-
if ____self_valueByInstance_instance_2_3 == nil then
|
|
215
|
-
____self_valueByInstance_instance_2_3 = self.defaultValue
|
|
225
|
+
local objectDataEntryId = self:getObjectDataEntryId(instance)
|
|
226
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
227
|
+
local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[objectDataEntryId]
|
|
228
|
+
if defaultValue ~= nil or self.isGlobal then
|
|
229
|
+
local ____self_valueByInstance_instance_6 = self.valueByInstance[instance]
|
|
230
|
+
if ____self_valueByInstance_instance_6 == nil then
|
|
231
|
+
____self_valueByInstance_instance_6 = defaultValue
|
|
216
232
|
end
|
|
217
|
-
local
|
|
218
|
-
if
|
|
219
|
-
|
|
220
|
-
self:invokeValueChangeEvent(instance, self, previousValue, value)
|
|
233
|
+
local ____self_valueByInstance_instance_6_7 = ____self_valueByInstance_instance_6
|
|
234
|
+
if ____self_valueByInstance_instance_6_7 == nil then
|
|
235
|
+
____self_valueByInstance_instance_6_7 = self.defaultValue
|
|
221
236
|
end
|
|
237
|
+
local previousValue = ____self_valueByInstance_instance_6_7
|
|
238
|
+
self.valueByInstance[instance] = value
|
|
239
|
+
self:invokeValueChangeEvent(instance, self, previousValue, value)
|
|
222
240
|
return true
|
|
223
241
|
end
|
|
224
242
|
end
|
|
225
|
-
if not self:hasNativeFieldValue(
|
|
243
|
+
if not self:hasNativeFieldValue(objectDataEntryId) then
|
|
226
244
|
return false
|
|
227
245
|
end
|
|
228
246
|
local previousValue = self:getNativeFieldValue(instance)
|
|
229
|
-
if value ~= previousValue then
|
|
230
|
-
|
|
231
|
-
return false
|
|
232
|
-
end
|
|
233
|
-
self:invokeValueChangeEvent(instance, self, previousValue, value)
|
|
247
|
+
if value ~= previousValue and not self:setNativeFieldValue(instance, value) then
|
|
248
|
+
return false
|
|
234
249
|
end
|
|
250
|
+
self:invokeValueChangeEvent(instance, self, previousValue, value)
|
|
235
251
|
return true
|
|
236
252
|
end
|
|
237
253
|
function ObjectField.prototype.calculateActualValue(self, instance)
|
|
238
|
-
local
|
|
239
|
-
local originalValue =
|
|
240
|
-
local
|
|
241
|
-
local modifiers =
|
|
254
|
+
local ____opt_8 = self.originalValueByInstance
|
|
255
|
+
local originalValue = ____opt_8 and ____opt_8[instance]
|
|
256
|
+
local ____opt_10 = self.modifiersByInstance
|
|
257
|
+
local modifiers = ____opt_10 and ____opt_10[instance]
|
|
242
258
|
if originalValue ~= nil then
|
|
243
259
|
local value = originalValue
|
|
244
260
|
if modifiers ~= nil then
|
|
@@ -303,37 +319,37 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
|
|
|
303
319
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
304
320
|
local value = defaultValueByObjectDataEntryId[entry.id]
|
|
305
321
|
if value ~= nil then
|
|
306
|
-
local
|
|
322
|
+
local ____temp_13
|
|
307
323
|
if index == nil then
|
|
308
|
-
|
|
324
|
+
____temp_13 = value
|
|
309
325
|
else
|
|
310
|
-
local
|
|
311
|
-
if
|
|
312
|
-
|
|
326
|
+
local ____value_index_12 = value[index + 1]
|
|
327
|
+
if ____value_index_12 == nil then
|
|
328
|
+
____value_index_12 = self.defaultValue
|
|
313
329
|
end
|
|
314
|
-
|
|
330
|
+
____temp_13 = ____value_index_12
|
|
315
331
|
end
|
|
316
|
-
return
|
|
332
|
+
return ____temp_13
|
|
317
333
|
end
|
|
318
334
|
end
|
|
319
335
|
return index == nil and ({}) or self.defaultValue
|
|
320
336
|
end
|
|
321
337
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
322
|
-
if defaultValueByObjectDataEntryId ~= nil then
|
|
323
|
-
local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
|
|
324
|
-
if defaultValue ~= nil then
|
|
325
|
-
local value = self.valueByInstance[entry] or defaultValue
|
|
326
|
-
local
|
|
338
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
339
|
+
local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(entry)]
|
|
340
|
+
if defaultValue ~= nil or self.isGlobal then
|
|
341
|
+
local value = self.valueByInstance[entry] or defaultValue or emptyArray()
|
|
342
|
+
local ____temp_15
|
|
327
343
|
if index == nil then
|
|
328
|
-
|
|
344
|
+
____temp_15 = value
|
|
329
345
|
else
|
|
330
|
-
local
|
|
331
|
-
if
|
|
332
|
-
|
|
346
|
+
local ____value_index_14 = value[index + 1]
|
|
347
|
+
if ____value_index_14 == nil then
|
|
348
|
+
____value_index_14 = self.defaultValue
|
|
333
349
|
end
|
|
334
|
-
|
|
350
|
+
____temp_15 = ____value_index_14
|
|
335
351
|
end
|
|
336
|
-
return
|
|
352
|
+
return ____temp_15
|
|
337
353
|
end
|
|
338
354
|
end
|
|
339
355
|
if index ~= nil then
|
|
@@ -378,36 +394,16 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
|
|
|
378
394
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
379
395
|
local valueByLevel = defaultValueByObjectDataEntryId[entry.id]
|
|
380
396
|
if valueByLevel ~= nil then
|
|
381
|
-
local
|
|
382
|
-
if
|
|
383
|
-
|
|
397
|
+
local ____valueByLevel_index_16 = valueByLevel[level + 1]
|
|
398
|
+
if ____valueByLevel_index_16 == nil then
|
|
399
|
+
____valueByLevel_index_16 = self.defaultValue
|
|
384
400
|
end
|
|
385
|
-
return
|
|
401
|
+
return ____valueByLevel_index_16
|
|
386
402
|
end
|
|
387
403
|
end
|
|
388
404
|
return self.defaultValue
|
|
389
405
|
end
|
|
390
|
-
|
|
391
|
-
if defaultValueByObjectDataEntryId ~= nil then
|
|
392
|
-
local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
|
|
393
|
-
if defaultValueByLevel ~= nil then
|
|
394
|
-
local ____opt_13 = self.valueByInstance[entry]
|
|
395
|
-
local ____temp_15 = ____opt_13 and ____opt_13[level + 1]
|
|
396
|
-
if ____temp_15 == nil then
|
|
397
|
-
____temp_15 = defaultValueByLevel[level + 1]
|
|
398
|
-
end
|
|
399
|
-
local ____temp_15_16 = ____temp_15
|
|
400
|
-
if ____temp_15_16 == nil then
|
|
401
|
-
____temp_15_16 = self.defaultValue
|
|
402
|
-
end
|
|
403
|
-
return ____temp_15_16
|
|
404
|
-
end
|
|
405
|
-
end
|
|
406
|
-
local ____temp_17 = self:getNativeFieldValue(entry, level)
|
|
407
|
-
if ____temp_17 == nil then
|
|
408
|
-
____temp_17 = self.defaultValue
|
|
409
|
-
end
|
|
410
|
-
return ____temp_17
|
|
406
|
+
return self:getActualValue(entry, level)
|
|
411
407
|
end
|
|
412
408
|
function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
413
409
|
if value == nil then
|
|
@@ -447,54 +443,66 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
|
447
443
|
valueByLevel[level + 1] = value
|
|
448
444
|
return true
|
|
449
445
|
end
|
|
450
|
-
local
|
|
451
|
-
if
|
|
452
|
-
local
|
|
453
|
-
if
|
|
454
|
-
local
|
|
455
|
-
if
|
|
456
|
-
|
|
457
|
-
self.
|
|
458
|
-
end
|
|
459
|
-
local ____valueByLevel_index_18 = valueByLevel[level + 1]
|
|
460
|
-
if ____valueByLevel_index_18 == nil then
|
|
461
|
-
____valueByLevel_index_18 = defaultValueByLevel[level + 1]
|
|
446
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
447
|
+
if modifiersByInstance ~= nil then
|
|
448
|
+
local modifiers = modifiersByInstance[entry]
|
|
449
|
+
if modifiers ~= nil and modifiers.size ~= 0 then
|
|
450
|
+
local originalValueByLevelByInstance = self.originalValueByLevelByInstance
|
|
451
|
+
if originalValueByLevelByInstance == nil then
|
|
452
|
+
originalValueByLevelByInstance = mutableWeakLuaMap()
|
|
453
|
+
self.originalValueByLevelByInstance = originalValueByLevelByInstance
|
|
462
454
|
end
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
455
|
+
getOrPut(originalValueByLevelByInstance, entry, mutableLuaMap)[level] = value
|
|
456
|
+
value = self:calculateActualValue(entry, level)
|
|
457
|
+
end
|
|
458
|
+
end
|
|
459
|
+
return self:setActualValue(entry, level, value)
|
|
460
|
+
end
|
|
461
|
+
function ObjectLevelField.prototype.applyModifier(self, instance, modifier)
|
|
462
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
463
|
+
if modifiersByInstance == nil then
|
|
464
|
+
modifiersByInstance = mutableWeakLuaMap()
|
|
465
|
+
self.modifiersByInstance = modifiersByInstance
|
|
466
|
+
end
|
|
467
|
+
if getOrPut(modifiersByInstance, instance, mutableLinkedSet):add(modifier) then
|
|
468
|
+
local originalValueByLevelByInstance = self.originalValueByLevelByInstance
|
|
469
|
+
if originalValueByLevelByInstance == nil then
|
|
470
|
+
originalValueByLevelByInstance = mutableWeakLuaMap()
|
|
471
|
+
self.originalValueByLevelByInstance = originalValueByLevelByInstance
|
|
472
|
+
end
|
|
473
|
+
local originalValueByLevel = getOrPut(originalValueByLevelByInstance, instance, mutableLuaMap)
|
|
474
|
+
local levelCount = self:getLevelCount(instance)
|
|
475
|
+
for level = 0, levelCount - 1 do
|
|
476
|
+
local ____originalValueByLevel_level_17 = originalValueByLevel[level]
|
|
477
|
+
if ____originalValueByLevel_level_17 == nil then
|
|
478
|
+
____originalValueByLevel_level_17 = self:getActualValue(instance, level)
|
|
466
479
|
end
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
480
|
+
originalValueByLevel[level] = ____originalValueByLevel_level_17
|
|
481
|
+
self:setActualValue(
|
|
482
|
+
instance,
|
|
483
|
+
level,
|
|
484
|
+
self:calculateActualValue(instance, level)
|
|
485
|
+
)
|
|
486
|
+
end
|
|
487
|
+
end
|
|
488
|
+
end
|
|
489
|
+
function ObjectLevelField.prototype.removeModifier(self, instance, modifier)
|
|
490
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
491
|
+
if modifiersByInstance ~= nil then
|
|
492
|
+
local modifiers = modifiersByInstance[instance]
|
|
493
|
+
if modifiers ~= nil and modifiers:remove(modifier) then
|
|
494
|
+
local levelCount = self:getLevelCount(instance)
|
|
495
|
+
for level = 0, levelCount - 1 do
|
|
496
|
+
self:setActualValue(
|
|
497
|
+
instance,
|
|
473
498
|
level,
|
|
474
|
-
|
|
475
|
-
value
|
|
499
|
+
self:calculateActualValue(instance, level)
|
|
476
500
|
)
|
|
477
501
|
end
|
|
478
502
|
return true
|
|
479
503
|
end
|
|
480
504
|
end
|
|
481
|
-
|
|
482
|
-
return false
|
|
483
|
-
end
|
|
484
|
-
local previousValue = self:getNativeFieldValue(entry, level)
|
|
485
|
-
if value ~= previousValue then
|
|
486
|
-
if not self:setNativeFieldValue(entry, level, value) then
|
|
487
|
-
return false
|
|
488
|
-
end
|
|
489
|
-
self:invokeValueChangeEvent(
|
|
490
|
-
entry,
|
|
491
|
-
self,
|
|
492
|
-
level,
|
|
493
|
-
previousValue,
|
|
494
|
-
value
|
|
495
|
-
)
|
|
496
|
-
end
|
|
497
|
-
return true
|
|
505
|
+
return false
|
|
498
506
|
end
|
|
499
507
|
function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value)
|
|
500
508
|
if value ~= nil then
|
|
@@ -511,6 +519,93 @@ function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value
|
|
|
511
519
|
end
|
|
512
520
|
return self:setValue(entry, levelOrValue)
|
|
513
521
|
end
|
|
522
|
+
function ObjectLevelField.prototype.getActualValue(self, instance, level)
|
|
523
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
524
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
525
|
+
local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
|
|
526
|
+
if defaultValueByLevel ~= nil or self.isGlobal then
|
|
527
|
+
local ____opt_18 = self.valueByInstance[instance]
|
|
528
|
+
local ____temp_20 = ____opt_18 and ____opt_18[level + 1]
|
|
529
|
+
if ____temp_20 == nil then
|
|
530
|
+
____temp_20 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
531
|
+
end
|
|
532
|
+
local ____temp_20_21 = ____temp_20
|
|
533
|
+
if ____temp_20_21 == nil then
|
|
534
|
+
____temp_20_21 = self.defaultValue
|
|
535
|
+
end
|
|
536
|
+
return ____temp_20_21
|
|
537
|
+
end
|
|
538
|
+
end
|
|
539
|
+
local ____temp_22 = self:getNativeFieldValue(instance, level)
|
|
540
|
+
if ____temp_22 == nil then
|
|
541
|
+
____temp_22 = self.defaultValue
|
|
542
|
+
end
|
|
543
|
+
return ____temp_22
|
|
544
|
+
end
|
|
545
|
+
function ObjectLevelField.prototype.setActualValue(self, instance, level, value)
|
|
546
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
547
|
+
local objectDataEntryId = self:getObjectDataEntryId(instance)
|
|
548
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
549
|
+
local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[objectDataEntryId]
|
|
550
|
+
if defaultValueByLevel ~= nil or self.isGlobal then
|
|
551
|
+
local valueByLevel = self.valueByInstance[instance]
|
|
552
|
+
if valueByLevel == nil then
|
|
553
|
+
valueByLevel = {}
|
|
554
|
+
self.valueByInstance[instance] = valueByLevel
|
|
555
|
+
end
|
|
556
|
+
local ____valueByLevel_index_23 = valueByLevel[level + 1]
|
|
557
|
+
if ____valueByLevel_index_23 == nil then
|
|
558
|
+
____valueByLevel_index_23 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
559
|
+
end
|
|
560
|
+
local ____valueByLevel_index_23_24 = ____valueByLevel_index_23
|
|
561
|
+
if ____valueByLevel_index_23_24 == nil then
|
|
562
|
+
____valueByLevel_index_23_24 = self.defaultValue
|
|
563
|
+
end
|
|
564
|
+
local previousValue = ____valueByLevel_index_23_24
|
|
565
|
+
valueByLevel[level + 1] = value
|
|
566
|
+
self:invokeValueChangeEvent(
|
|
567
|
+
instance,
|
|
568
|
+
self,
|
|
569
|
+
level,
|
|
570
|
+
previousValue,
|
|
571
|
+
value
|
|
572
|
+
)
|
|
573
|
+
return true
|
|
574
|
+
end
|
|
575
|
+
end
|
|
576
|
+
if not self:hasNativeFieldValue(objectDataEntryId) then
|
|
577
|
+
return false
|
|
578
|
+
end
|
|
579
|
+
local previousValue = self:getNativeFieldValue(instance, level)
|
|
580
|
+
if value ~= previousValue and not self:setNativeFieldValue(instance, level, value) then
|
|
581
|
+
return false
|
|
582
|
+
end
|
|
583
|
+
self:invokeValueChangeEvent(
|
|
584
|
+
instance,
|
|
585
|
+
self,
|
|
586
|
+
level,
|
|
587
|
+
previousValue,
|
|
588
|
+
value
|
|
589
|
+
)
|
|
590
|
+
return true
|
|
591
|
+
end
|
|
592
|
+
function ObjectLevelField.prototype.calculateActualValue(self, instance, level)
|
|
593
|
+
local ____opt_27 = self.originalValueByLevelByInstance
|
|
594
|
+
local ____opt_25 = ____opt_27 and ____opt_27[instance]
|
|
595
|
+
local originalValue = ____opt_25 and ____opt_25[level]
|
|
596
|
+
local ____opt_29 = self.modifiersByInstance
|
|
597
|
+
local modifiers = ____opt_29 and ____opt_29[instance]
|
|
598
|
+
if originalValue ~= nil then
|
|
599
|
+
local value = originalValue
|
|
600
|
+
if modifiers ~= nil then
|
|
601
|
+
for modifier in pairs(modifiers) do
|
|
602
|
+
value = modifier(instance, level, value, originalValue)
|
|
603
|
+
end
|
|
604
|
+
end
|
|
605
|
+
return value
|
|
606
|
+
end
|
|
607
|
+
return self.defaultValue
|
|
608
|
+
end
|
|
514
609
|
function ObjectLevelField.prototype.invokeValueChangeEvent(self, ...)
|
|
515
610
|
self:invokeValueChangeEventRecursive(
|
|
516
611
|
getClass(self),
|
package/engine/random.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
|
+
import { ReadonlyNonEmptyArray } from "../utility/types";
|
|
2
3
|
export declare const randomAngle: () => number;
|
|
3
4
|
export declare const randomInteger: {
|
|
4
5
|
(upperBound?: number): number;
|
|
@@ -9,3 +10,11 @@ export declare const randomFloat: {
|
|
|
9
10
|
(lowerBound: number, upperBound: number): number;
|
|
10
11
|
};
|
|
11
12
|
export declare const randomXY: (centerX: number, centerY: number, range: number) => LuaMultiReturn<[x: number, y: number]>;
|
|
13
|
+
export declare const randomElement: {
|
|
14
|
+
<T>(array: ReadonlyNonEmptyArray<T>): T;
|
|
15
|
+
<T>(array: ReadonlyArray<T>): T | undefined;
|
|
16
|
+
};
|
|
17
|
+
export declare const random: {
|
|
18
|
+
<T>(element: T, ...elements: T[]): T;
|
|
19
|
+
<T>(...elements: T[]): T | undefined;
|
|
20
|
+
};
|
package/engine/random.lua
CHANGED
|
@@ -4,6 +4,7 @@ local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
|
|
|
4
4
|
local PI = ____math.PI
|
|
5
5
|
local getRandomInt = GetRandomInt
|
|
6
6
|
local getRandomReal = GetRandomReal
|
|
7
|
+
local select = _G.select
|
|
7
8
|
local cos = math.cos
|
|
8
9
|
local sin = math.sin
|
|
9
10
|
local sqrt = math.sqrt
|
|
@@ -15,4 +16,16 @@ ____exports.randomXY = function(centerX, centerY, range)
|
|
|
15
16
|
local t = getRandomReal(0, 1) * 2 * PI
|
|
16
17
|
return centerX + r * cos(t), centerY + r * sin(t)
|
|
17
18
|
end
|
|
19
|
+
____exports.randomElement = function(array)
|
|
20
|
+
return array[getRandomInt(1, #array)]
|
|
21
|
+
end
|
|
22
|
+
____exports.random = function(...)
|
|
23
|
+
return (select(
|
|
24
|
+
getRandomInt(
|
|
25
|
+
1,
|
|
26
|
+
select("#", ...)
|
|
27
|
+
),
|
|
28
|
+
...
|
|
29
|
+
))
|
|
30
|
+
end
|
|
18
31
|
return ____exports
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { UnitClassificationsField, UnitFlyHeightField, UnitPropulsionWindowField, UnitScalingValueField } from "../../object-field/unit";
|
|
3
|
+
export declare const PROPULSION_WINDOW_UNIT_FLOAT_FIELD: UnitPropulsionWindowField & symbol;
|
|
4
|
+
export declare const UNIT_CLASSIFICATIONS_FIELD: UnitClassificationsField & symbol;
|
|
5
|
+
export declare const FLY_HEIGHT_UNIT_FLOAT_FIELD: UnitFlyHeightField & symbol;
|
|
6
|
+
export declare const SCALING_VALUE_UNIT_FLOAT_FIELD: UnitScalingValueField & symbol;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____unit = require("engine.object-field.unit")
|
|
3
|
+
local UnitClassificationsField = ____unit.UnitClassificationsField
|
|
4
|
+
local UnitFlyHeightField = ____unit.UnitFlyHeightField
|
|
5
|
+
local UnitPropulsionWindowField = ____unit.UnitPropulsionWindowField
|
|
6
|
+
local UnitScalingValueField = ____unit.UnitScalingValueField
|
|
7
|
+
____exports.PROPULSION_WINDOW_UNIT_FLOAT_FIELD = UnitPropulsionWindowField:create(fourCC("urpw"))
|
|
8
|
+
____exports.UNIT_CLASSIFICATIONS_FIELD = UnitClassificationsField:create(fourCC("utyp"))
|
|
9
|
+
____exports.FLY_HEIGHT_UNIT_FLOAT_FIELD = UnitFlyHeightField:create(fourCC("ufyh"))
|
|
10
|
+
____exports.SCALING_VALUE_UNIT_FLOAT_FIELD = UnitScalingValueField:create(fourCC("usca"))
|
|
11
|
+
return ____exports
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { Player } from "../core/types/player";
|
|
3
|
+
import { Event } from "../event";
|
|
4
|
+
export declare const synchronizer: <T, K extends number>(getSyncId: (object: T) => K, getObject: (syncId: K) => T | undefined) => ((player: Player, object: T | undefined) => Promise<T | undefined>);
|
|
5
|
+
export declare class ObjectBus<T, K extends number> {
|
|
6
|
+
private readonly getSyncId;
|
|
7
|
+
readonly event: Event<[Player, T | undefined]>;
|
|
8
|
+
private readonly syncSlider;
|
|
9
|
+
constructor(getSyncId: (object: T) => K, getObject: (syncId: K) => T | undefined);
|
|
10
|
+
send(object: T | undefined): void;
|
|
11
|
+
}
|