warscript 0.0.1-dev.47f470c → 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/effect.d.ts +1 -3
- package/core/types/effect.lua +26 -29
- 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/sound.d.ts +17 -25
- package/core/types/sound.lua +91 -46
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.lua +6 -1
- package/decl/native.d.ts +846 -790
- 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/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +18 -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.d.ts +5 -1
- package/engine/behaviour/ability.lua +26 -21
- 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 +34 -0
- package/engine/behaviour/unit.lua +190 -4
- package/engine/buff.d.ts +24 -12
- package/engine/buff.lua +190 -121
- 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 +18 -17
- package/engine/internal/item.lua +135 -49
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/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+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 +45 -14
- package/engine/internal/unit.d.ts +42 -17
- package/engine/internal/unit.lua +331 -165
- 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/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/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 +0 -9
- 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/curse.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/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/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/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 +18 -16
- package/engine/object-data/entry/ability-type.lua +77 -16
- package/engine/object-data/entry/buff-type/applicable.lua +9 -4
- package/engine/object-data/entry/buff-type.d.ts +5 -11
- package/engine/object-data/entry/buff-type.lua +11 -27
- package/engine/object-data/entry/sound-preset.d.ts +18 -2
- package/engine/object-data/entry/sound-preset.lua +105 -15
- package/engine/object-data/entry/unit-type.d.ts +13 -4
- package/engine/object-data/entry/unit-type.lua +156 -88
- package/engine/object-data/entry.d.ts +2 -2
- package/engine/object-data/entry.lua +14 -7
- package/engine/object-field/ability.d.ts +4 -4
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +69 -3
- package/engine/object-field/unit.lua +264 -7
- package/engine/object-field.d.ts +23 -6
- package/engine/object-field.lua +304 -127
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -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 +2 -3
- package/objutil/unit.lua +2 -2
- package/package.json +2 -2
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-set.d.ts +2 -0
- package/utility/linked-set.lua +22 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/reflection.lua +11 -7
- 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.lua
CHANGED
|
@@ -20,6 +20,15 @@ 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 emptyLuaMap = ____lua_2Dmaps.emptyLuaMap
|
|
27
|
+
local getOrPut = ____lua_2Dmaps.getOrPut
|
|
28
|
+
local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
|
|
29
|
+
local mutableWeakLuaMap = ____lua_2Dmaps.mutableWeakLuaMap
|
|
30
|
+
local ____arrays = require("utility.arrays")
|
|
31
|
+
local emptyArray = ____arrays.emptyArray
|
|
23
32
|
local compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId = {}
|
|
24
33
|
local defaultValueByObjectDataEntryIdByObjectFieldId = postcompile(function() return compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId end)
|
|
25
34
|
local objectFieldById = {}
|
|
@@ -29,7 +38,11 @@ local idGenerator = __TS__New(
|
|
|
29
38
|
)
|
|
30
39
|
local ObjectFieldBase = __TS__Class()
|
|
31
40
|
ObjectFieldBase.name = "ObjectFieldBase"
|
|
32
|
-
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
|
|
33
46
|
self.valueByInstance = setmetatable({}, {__mode = "k"})
|
|
34
47
|
if objectFieldById[id] ~= nil then
|
|
35
48
|
error(
|
|
@@ -46,14 +59,15 @@ end
|
|
|
46
59
|
function ObjectFieldBase.prototype.supports(self, instance)
|
|
47
60
|
return __TS__InstanceOf(instance, self.instanceClass)
|
|
48
61
|
end
|
|
49
|
-
function ObjectFieldBase.prototype.hasValue(self,
|
|
62
|
+
function ObjectFieldBase.prototype.hasValue(self, objectDataEntryId)
|
|
50
63
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
51
|
-
return defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[
|
|
64
|
+
return self.isGlobal or defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[objectDataEntryId] ~= nil or self:hasNativeFieldValue(objectDataEntryId)
|
|
52
65
|
end
|
|
53
|
-
function ObjectFieldBase.create(self, id)
|
|
66
|
+
function ObjectFieldBase.create(self, id, isGlobal)
|
|
54
67
|
return __TS__New(
|
|
55
68
|
self,
|
|
56
|
-
id or idGenerator:next()
|
|
69
|
+
id or idGenerator:next(),
|
|
70
|
+
isGlobal
|
|
57
71
|
)
|
|
58
72
|
end
|
|
59
73
|
function ObjectFieldBase.of(self, id)
|
|
@@ -75,7 +89,7 @@ ____exports.ObjectField = __TS__Class()
|
|
|
75
89
|
local ObjectField = ____exports.ObjectField
|
|
76
90
|
ObjectField.name = "ObjectField"
|
|
77
91
|
__TS__ClassExtends(ObjectField, ObjectFieldBase)
|
|
78
|
-
function ObjectField.prototype.getValue(self, entry)
|
|
92
|
+
function ObjectField.prototype.getValue(self, entry, includeModifiers)
|
|
79
93
|
if __TS__InstanceOf(entry, ObjectDataEntry) then
|
|
80
94
|
local defaultValueByObjectDataEntryId = (warpack.compiletime and compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId or defaultValueByObjectDataEntryIdByObjectFieldId)[self.id]
|
|
81
95
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
@@ -86,22 +100,16 @@ function ObjectField.prototype.getValue(self, entry)
|
|
|
86
100
|
end
|
|
87
101
|
return self.defaultValue
|
|
88
102
|
end
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
____self_valueByInstance_entry_0 = defaultValue
|
|
103
|
+
if includeModifiers == false then
|
|
104
|
+
local originalValueByInstance = self.originalValueByInstance
|
|
105
|
+
if originalValueByInstance ~= nil then
|
|
106
|
+
local originalValue = originalValueByInstance[entry]
|
|
107
|
+
if originalValue ~= nil then
|
|
108
|
+
return originalValue
|
|
96
109
|
end
|
|
97
|
-
return ____self_valueByInstance_entry_0
|
|
98
110
|
end
|
|
99
111
|
end
|
|
100
|
-
|
|
101
|
-
if ____temp_1 == nil then
|
|
102
|
-
____temp_1 = self.defaultValue
|
|
103
|
-
end
|
|
104
|
-
return ____temp_1
|
|
112
|
+
return self:getActualValue(entry)
|
|
105
113
|
end
|
|
106
114
|
function ObjectField.prototype.setValue(self, entry, value)
|
|
107
115
|
if __TS__InstanceOf(entry, ObjectDataEntry) then
|
|
@@ -116,37 +124,59 @@ function ObjectField.prototype.setValue(self, entry, value)
|
|
|
116
124
|
defaultValueByObjectDataEntryId[entry.id] = value
|
|
117
125
|
return true
|
|
118
126
|
end
|
|
119
|
-
local
|
|
120
|
-
if
|
|
121
|
-
local
|
|
122
|
-
if
|
|
123
|
-
local
|
|
124
|
-
if
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
local ____self_valueByInstance_entry_2_3 = ____self_valueByInstance_entry_2
|
|
128
|
-
if ____self_valueByInstance_entry_2_3 == nil then
|
|
129
|
-
____self_valueByInstance_entry_2_3 = self.defaultValue
|
|
127
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
128
|
+
if modifiersByInstance ~= nil then
|
|
129
|
+
local modifiers = modifiersByInstance[entry]
|
|
130
|
+
if modifiers ~= nil and modifiers.size ~= 0 then
|
|
131
|
+
local originalValueByInstance = self.originalValueByInstance
|
|
132
|
+
if originalValueByInstance == nil then
|
|
133
|
+
originalValueByInstance = mutableWeakLuaMap()
|
|
134
|
+
self.originalValueByInstance = originalValueByInstance
|
|
130
135
|
end
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
self.valueByInstance[entry] = value
|
|
134
|
-
self:invokeValueChangeEvent(entry, self, previousValue, value)
|
|
135
|
-
end
|
|
136
|
-
return true
|
|
136
|
+
originalValueByInstance[entry] = value
|
|
137
|
+
value = self:calculateActualValue(entry)
|
|
137
138
|
end
|
|
138
139
|
end
|
|
139
|
-
|
|
140
|
-
|
|
140
|
+
return self:setActualValue(entry, value)
|
|
141
|
+
end
|
|
142
|
+
function ObjectField.prototype.applyModifier(self, instance, modifier)
|
|
143
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
144
|
+
if modifiersByInstance == nil then
|
|
145
|
+
modifiersByInstance = mutableWeakLuaMap()
|
|
146
|
+
self.modifiersByInstance = modifiersByInstance
|
|
147
|
+
end
|
|
148
|
+
if getOrPut(modifiersByInstance, instance, mutableLinkedSet):add(modifier) then
|
|
149
|
+
local originalValueByInstance = self.originalValueByInstance
|
|
150
|
+
if originalValueByInstance == nil then
|
|
151
|
+
originalValueByInstance = mutableWeakLuaMap()
|
|
152
|
+
self.originalValueByInstance = originalValueByInstance
|
|
153
|
+
end
|
|
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
|
|
161
|
+
self:setActualValue(
|
|
162
|
+
instance,
|
|
163
|
+
self:calculateActualValue(instance)
|
|
164
|
+
)
|
|
141
165
|
end
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
166
|
+
end
|
|
167
|
+
function ObjectField.prototype.removeModifier(self, instance, modifier)
|
|
168
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
169
|
+
if modifiersByInstance ~= nil then
|
|
170
|
+
local modifiers = modifiersByInstance[instance]
|
|
171
|
+
if modifiers ~= nil and modifiers:remove(modifier) then
|
|
172
|
+
self:setActualValue(
|
|
173
|
+
instance,
|
|
174
|
+
self:calculateActualValue(instance)
|
|
175
|
+
)
|
|
176
|
+
return true
|
|
146
177
|
end
|
|
147
|
-
self:invokeValueChangeEvent(entry, self, previousValue, value)
|
|
148
178
|
end
|
|
149
|
-
return
|
|
179
|
+
return false
|
|
150
180
|
end
|
|
151
181
|
function ObjectField.prototype.removeValue(self, entry)
|
|
152
182
|
if not warpack.compiletime then
|
|
@@ -168,6 +198,74 @@ function ObjectField.prototype.trySetValue(self, entry, value)
|
|
|
168
198
|
end
|
|
169
199
|
return self:setValue(entry, value)
|
|
170
200
|
end
|
|
201
|
+
function ObjectField.prototype.getActualValue(self, instance)
|
|
202
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
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
|
|
209
|
+
end
|
|
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
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
local ____temp_5 = self:getNativeFieldValue(instance)
|
|
218
|
+
if ____temp_5 == nil then
|
|
219
|
+
____temp_5 = self.defaultValue
|
|
220
|
+
end
|
|
221
|
+
return ____temp_5
|
|
222
|
+
end
|
|
223
|
+
function ObjectField.prototype.setActualValue(self, instance, value)
|
|
224
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
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
|
|
232
|
+
end
|
|
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
|
|
236
|
+
end
|
|
237
|
+
local previousValue = ____self_valueByInstance_instance_6_7
|
|
238
|
+
self.valueByInstance[instance] = value
|
|
239
|
+
self:invokeValueChangeEvent(instance, self, previousValue, value)
|
|
240
|
+
return true
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
if not self:hasNativeFieldValue(objectDataEntryId) then
|
|
244
|
+
return false
|
|
245
|
+
end
|
|
246
|
+
local previousValue = self:getNativeFieldValue(instance)
|
|
247
|
+
if value ~= previousValue and not self:setNativeFieldValue(instance, value) then
|
|
248
|
+
return false
|
|
249
|
+
end
|
|
250
|
+
self:invokeValueChangeEvent(instance, self, previousValue, value)
|
|
251
|
+
return true
|
|
252
|
+
end
|
|
253
|
+
function ObjectField.prototype.calculateActualValue(self, instance)
|
|
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]
|
|
258
|
+
if originalValue ~= nil then
|
|
259
|
+
local value = originalValue
|
|
260
|
+
if modifiers ~= nil then
|
|
261
|
+
for modifier in pairs(modifiers) do
|
|
262
|
+
value = modifier(instance, value, originalValue)
|
|
263
|
+
end
|
|
264
|
+
end
|
|
265
|
+
return value
|
|
266
|
+
end
|
|
267
|
+
return self.defaultValue
|
|
268
|
+
end
|
|
171
269
|
function ObjectField.prototype.invokeValueChangeEvent(self, ...)
|
|
172
270
|
self:invokeValueChangeEventRecursive(
|
|
173
271
|
getClass(self),
|
|
@@ -221,37 +319,37 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
|
|
|
221
319
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
222
320
|
local value = defaultValueByObjectDataEntryId[entry.id]
|
|
223
321
|
if value ~= nil then
|
|
224
|
-
local
|
|
322
|
+
local ____temp_13
|
|
225
323
|
if index == nil then
|
|
226
|
-
|
|
324
|
+
____temp_13 = value
|
|
227
325
|
else
|
|
228
|
-
local
|
|
229
|
-
if
|
|
230
|
-
|
|
326
|
+
local ____value_index_12 = value[index + 1]
|
|
327
|
+
if ____value_index_12 == nil then
|
|
328
|
+
____value_index_12 = self.defaultValue
|
|
231
329
|
end
|
|
232
|
-
|
|
330
|
+
____temp_13 = ____value_index_12
|
|
233
331
|
end
|
|
234
|
-
return
|
|
332
|
+
return ____temp_13
|
|
235
333
|
end
|
|
236
334
|
end
|
|
237
335
|
return index == nil and ({}) or self.defaultValue
|
|
238
336
|
end
|
|
239
337
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
240
|
-
if defaultValueByObjectDataEntryId ~= nil then
|
|
241
|
-
local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
|
|
242
|
-
if defaultValue ~= nil then
|
|
243
|
-
local value = self.valueByInstance[entry] or defaultValue
|
|
244
|
-
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
|
|
245
343
|
if index == nil then
|
|
246
|
-
|
|
344
|
+
____temp_15 = value
|
|
247
345
|
else
|
|
248
|
-
local
|
|
249
|
-
if
|
|
250
|
-
|
|
346
|
+
local ____value_index_14 = value[index + 1]
|
|
347
|
+
if ____value_index_14 == nil then
|
|
348
|
+
____value_index_14 = self.defaultValue
|
|
251
349
|
end
|
|
252
|
-
|
|
350
|
+
____temp_15 = ____value_index_14
|
|
253
351
|
end
|
|
254
|
-
return
|
|
352
|
+
return ____temp_15
|
|
255
353
|
end
|
|
256
354
|
end
|
|
257
355
|
if index ~= nil then
|
|
@@ -296,36 +394,16 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
|
|
|
296
394
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
297
395
|
local valueByLevel = defaultValueByObjectDataEntryId[entry.id]
|
|
298
396
|
if valueByLevel ~= nil then
|
|
299
|
-
local
|
|
300
|
-
if
|
|
301
|
-
|
|
397
|
+
local ____valueByLevel_index_16 = valueByLevel[level + 1]
|
|
398
|
+
if ____valueByLevel_index_16 == nil then
|
|
399
|
+
____valueByLevel_index_16 = self.defaultValue
|
|
302
400
|
end
|
|
303
|
-
return
|
|
401
|
+
return ____valueByLevel_index_16
|
|
304
402
|
end
|
|
305
403
|
end
|
|
306
404
|
return self.defaultValue
|
|
307
405
|
end
|
|
308
|
-
|
|
309
|
-
if defaultValueByObjectDataEntryId ~= nil then
|
|
310
|
-
local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
|
|
311
|
-
if defaultValueByLevel ~= nil then
|
|
312
|
-
local ____opt_9 = self.valueByInstance[entry]
|
|
313
|
-
local ____temp_11 = ____opt_9 and ____opt_9[level + 1]
|
|
314
|
-
if ____temp_11 == nil then
|
|
315
|
-
____temp_11 = defaultValueByLevel[level + 1]
|
|
316
|
-
end
|
|
317
|
-
local ____temp_11_12 = ____temp_11
|
|
318
|
-
if ____temp_11_12 == nil then
|
|
319
|
-
____temp_11_12 = self.defaultValue
|
|
320
|
-
end
|
|
321
|
-
return ____temp_11_12
|
|
322
|
-
end
|
|
323
|
-
end
|
|
324
|
-
local ____temp_13 = self:getNativeFieldValue(entry, level)
|
|
325
|
-
if ____temp_13 == nil then
|
|
326
|
-
____temp_13 = self.defaultValue
|
|
327
|
-
end
|
|
328
|
-
return ____temp_13
|
|
406
|
+
return self:getActualValue(entry, level)
|
|
329
407
|
end
|
|
330
408
|
function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
331
409
|
if value == nil then
|
|
@@ -365,54 +443,66 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
|
365
443
|
valueByLevel[level + 1] = value
|
|
366
444
|
return true
|
|
367
445
|
end
|
|
368
|
-
local
|
|
369
|
-
if
|
|
370
|
-
local
|
|
371
|
-
if
|
|
372
|
-
local
|
|
373
|
-
if
|
|
374
|
-
|
|
375
|
-
self.
|
|
376
|
-
end
|
|
377
|
-
local ____valueByLevel_index_14 = valueByLevel[level + 1]
|
|
378
|
-
if ____valueByLevel_index_14 == nil then
|
|
379
|
-
____valueByLevel_index_14 = 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
|
|
380
454
|
end
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
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)
|
|
384
479
|
end
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
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,
|
|
391
498
|
level,
|
|
392
|
-
|
|
393
|
-
value
|
|
499
|
+
self:calculateActualValue(instance, level)
|
|
394
500
|
)
|
|
395
501
|
end
|
|
396
502
|
return true
|
|
397
503
|
end
|
|
398
504
|
end
|
|
399
|
-
|
|
400
|
-
return false
|
|
401
|
-
end
|
|
402
|
-
local previousValue = self:getNativeFieldValue(entry, level)
|
|
403
|
-
if value ~= previousValue then
|
|
404
|
-
if not self:setNativeFieldValue(entry, level, value) then
|
|
405
|
-
return false
|
|
406
|
-
end
|
|
407
|
-
self:invokeValueChangeEvent(
|
|
408
|
-
entry,
|
|
409
|
-
self,
|
|
410
|
-
level,
|
|
411
|
-
previousValue,
|
|
412
|
-
value
|
|
413
|
-
)
|
|
414
|
-
end
|
|
415
|
-
return true
|
|
505
|
+
return false
|
|
416
506
|
end
|
|
417
507
|
function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value)
|
|
418
508
|
if value ~= nil then
|
|
@@ -429,6 +519,93 @@ function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value
|
|
|
429
519
|
end
|
|
430
520
|
return self:setValue(entry, levelOrValue)
|
|
431
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
|
|
432
609
|
function ObjectLevelField.prototype.invokeValueChangeEvent(self, ...)
|
|
433
610
|
self:invokeValueChangeEventRecursive(
|
|
434
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
|
+
}
|