warscript 0.0.1-dev.cdcfbc9 → 0.0.1-dev.ce2be36
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 +1 -0
- package/attributes.lua +9 -0
- package/core/types/player.d.ts +15 -0
- package/core/types/player.lua +53 -13
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/buff.d.ts +10 -1
- package/engine/buff.lua +60 -7
- package/engine/internal/unit/ability.lua +3 -3
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit-missile-launch.lua +41 -23
- package/engine/internal/unit.d.ts +13 -6
- package/engine/internal/unit.lua +83 -37
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -0
- package/engine/object-field.d.ts +7 -1
- package/engine/object-field.lua +177 -88
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.lua +2 -1
- package/net/socket.lua +1 -1
- package/package.json +1 -1
- package/utility/linked-set.d.ts +1 -0
- package/utility/linked-set.lua +19 -1
package/engine/object-field.lua
CHANGED
|
@@ -25,6 +25,7 @@ local mutableLinkedSet = ____linked_2Dset.mutableLinkedSet
|
|
|
25
25
|
local ____lua_2Dmaps = require("utility.lua-maps")
|
|
26
26
|
local emptyLuaMap = ____lua_2Dmaps.emptyLuaMap
|
|
27
27
|
local getOrPut = ____lua_2Dmaps.getOrPut
|
|
28
|
+
local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
|
|
28
29
|
local mutableWeakLuaMap = ____lua_2Dmaps.mutableWeakLuaMap
|
|
29
30
|
local ____arrays = require("utility.arrays")
|
|
30
31
|
local emptyArray = ____arrays.emptyArray
|
|
@@ -150,7 +151,13 @@ function ObjectField.prototype.applyModifier(self, instance, modifier)
|
|
|
150
151
|
originalValueByInstance = mutableWeakLuaMap()
|
|
151
152
|
self.originalValueByInstance = originalValueByInstance
|
|
152
153
|
end
|
|
153
|
-
|
|
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
|
|
154
161
|
self:setActualValue(
|
|
155
162
|
instance,
|
|
156
163
|
self:calculateActualValue(instance)
|
|
@@ -196,22 +203,22 @@ function ObjectField.prototype.getActualValue(self, instance)
|
|
|
196
203
|
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
197
204
|
local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
|
|
198
205
|
if defaultValue ~= nil or self.isGlobal then
|
|
199
|
-
local
|
|
200
|
-
if
|
|
201
|
-
|
|
206
|
+
local ____self_valueByInstance_instance_3 = self.valueByInstance[instance]
|
|
207
|
+
if ____self_valueByInstance_instance_3 == nil then
|
|
208
|
+
____self_valueByInstance_instance_3 = defaultValue
|
|
202
209
|
end
|
|
203
|
-
local
|
|
204
|
-
if
|
|
205
|
-
|
|
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
|
|
206
213
|
end
|
|
207
|
-
return
|
|
214
|
+
return ____self_valueByInstance_instance_3_4
|
|
208
215
|
end
|
|
209
216
|
end
|
|
210
|
-
local
|
|
211
|
-
if
|
|
212
|
-
|
|
217
|
+
local ____temp_5 = self:getNativeFieldValue(instance)
|
|
218
|
+
if ____temp_5 == nil then
|
|
219
|
+
____temp_5 = self.defaultValue
|
|
213
220
|
end
|
|
214
|
-
return
|
|
221
|
+
return ____temp_5
|
|
215
222
|
end
|
|
216
223
|
function ObjectField.prototype.setActualValue(self, instance, value)
|
|
217
224
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
@@ -219,15 +226,15 @@ function ObjectField.prototype.setActualValue(self, instance, value)
|
|
|
219
226
|
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
220
227
|
local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[objectDataEntryId]
|
|
221
228
|
if defaultValue ~= nil or self.isGlobal then
|
|
222
|
-
local
|
|
223
|
-
if
|
|
224
|
-
|
|
229
|
+
local ____self_valueByInstance_instance_6 = self.valueByInstance[instance]
|
|
230
|
+
if ____self_valueByInstance_instance_6 == nil then
|
|
231
|
+
____self_valueByInstance_instance_6 = defaultValue
|
|
225
232
|
end
|
|
226
|
-
local
|
|
227
|
-
if
|
|
228
|
-
|
|
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
|
|
229
236
|
end
|
|
230
|
-
local previousValue =
|
|
237
|
+
local previousValue = ____self_valueByInstance_instance_6_7
|
|
231
238
|
if value ~= previousValue then
|
|
232
239
|
self.valueByInstance[instance] = value
|
|
233
240
|
self:invokeValueChangeEvent(instance, self, previousValue, value)
|
|
@@ -248,10 +255,10 @@ function ObjectField.prototype.setActualValue(self, instance, value)
|
|
|
248
255
|
return true
|
|
249
256
|
end
|
|
250
257
|
function ObjectField.prototype.calculateActualValue(self, instance)
|
|
251
|
-
local
|
|
252
|
-
local originalValue =
|
|
253
|
-
local
|
|
254
|
-
local modifiers =
|
|
258
|
+
local ____opt_8 = self.originalValueByInstance
|
|
259
|
+
local originalValue = ____opt_8 and ____opt_8[instance]
|
|
260
|
+
local ____opt_10 = self.modifiersByInstance
|
|
261
|
+
local modifiers = ____opt_10 and ____opt_10[instance]
|
|
255
262
|
if originalValue ~= nil then
|
|
256
263
|
local value = originalValue
|
|
257
264
|
if modifiers ~= nil then
|
|
@@ -316,17 +323,17 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
|
|
|
316
323
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
317
324
|
local value = defaultValueByObjectDataEntryId[entry.id]
|
|
318
325
|
if value ~= nil then
|
|
319
|
-
local
|
|
326
|
+
local ____temp_13
|
|
320
327
|
if index == nil then
|
|
321
|
-
|
|
328
|
+
____temp_13 = value
|
|
322
329
|
else
|
|
323
|
-
local
|
|
324
|
-
if
|
|
325
|
-
|
|
330
|
+
local ____value_index_12 = value[index + 1]
|
|
331
|
+
if ____value_index_12 == nil then
|
|
332
|
+
____value_index_12 = self.defaultValue
|
|
326
333
|
end
|
|
327
|
-
|
|
334
|
+
____temp_13 = ____value_index_12
|
|
328
335
|
end
|
|
329
|
-
return
|
|
336
|
+
return ____temp_13
|
|
330
337
|
end
|
|
331
338
|
end
|
|
332
339
|
return index == nil and ({}) or self.defaultValue
|
|
@@ -336,17 +343,17 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
|
|
|
336
343
|
local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(entry)]
|
|
337
344
|
if defaultValue ~= nil or self.isGlobal then
|
|
338
345
|
local value = self.valueByInstance[entry] or defaultValue or emptyArray()
|
|
339
|
-
local
|
|
346
|
+
local ____temp_15
|
|
340
347
|
if index == nil then
|
|
341
|
-
|
|
348
|
+
____temp_15 = value
|
|
342
349
|
else
|
|
343
|
-
local
|
|
344
|
-
if
|
|
345
|
-
|
|
350
|
+
local ____value_index_14 = value[index + 1]
|
|
351
|
+
if ____value_index_14 == nil then
|
|
352
|
+
____value_index_14 = self.defaultValue
|
|
346
353
|
end
|
|
347
|
-
|
|
354
|
+
____temp_15 = ____value_index_14
|
|
348
355
|
end
|
|
349
|
-
return
|
|
356
|
+
return ____temp_15
|
|
350
357
|
end
|
|
351
358
|
end
|
|
352
359
|
if index ~= nil then
|
|
@@ -391,36 +398,16 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
|
|
|
391
398
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
392
399
|
local valueByLevel = defaultValueByObjectDataEntryId[entry.id]
|
|
393
400
|
if valueByLevel ~= nil then
|
|
394
|
-
local
|
|
395
|
-
if
|
|
396
|
-
|
|
401
|
+
local ____valueByLevel_index_16 = valueByLevel[level + 1]
|
|
402
|
+
if ____valueByLevel_index_16 == nil then
|
|
403
|
+
____valueByLevel_index_16 = self.defaultValue
|
|
397
404
|
end
|
|
398
|
-
return
|
|
405
|
+
return ____valueByLevel_index_16
|
|
399
406
|
end
|
|
400
407
|
end
|
|
401
408
|
return self.defaultValue
|
|
402
409
|
end
|
|
403
|
-
|
|
404
|
-
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
405
|
-
local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(entry)]
|
|
406
|
-
if defaultValueByLevel ~= nil or self.isGlobal then
|
|
407
|
-
local ____opt_14 = self.valueByInstance[entry]
|
|
408
|
-
local ____temp_16 = ____opt_14 and ____opt_14[level + 1]
|
|
409
|
-
if ____temp_16 == nil then
|
|
410
|
-
____temp_16 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
411
|
-
end
|
|
412
|
-
local ____temp_16_17 = ____temp_16
|
|
413
|
-
if ____temp_16_17 == nil then
|
|
414
|
-
____temp_16_17 = self.defaultValue
|
|
415
|
-
end
|
|
416
|
-
return ____temp_16_17
|
|
417
|
-
end
|
|
418
|
-
end
|
|
419
|
-
local ____temp_18 = self:getNativeFieldValue(entry, level)
|
|
420
|
-
if ____temp_18 == nil then
|
|
421
|
-
____temp_18 = self.defaultValue
|
|
422
|
-
end
|
|
423
|
-
return ____temp_18
|
|
410
|
+
return self:getActualValue(entry, level)
|
|
424
411
|
end
|
|
425
412
|
function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
426
413
|
if value == nil then
|
|
@@ -460,29 +447,129 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
|
460
447
|
valueByLevel[level + 1] = value
|
|
461
448
|
return true
|
|
462
449
|
end
|
|
450
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
451
|
+
if modifiersByInstance ~= nil then
|
|
452
|
+
local modifiers = modifiersByInstance[entry]
|
|
453
|
+
if modifiers ~= nil and modifiers.size ~= 0 then
|
|
454
|
+
local originalValueByLevelByInstance = self.originalValueByLevelByInstance
|
|
455
|
+
if originalValueByLevelByInstance == nil then
|
|
456
|
+
originalValueByLevelByInstance = mutableWeakLuaMap()
|
|
457
|
+
self.originalValueByLevelByInstance = originalValueByLevelByInstance
|
|
458
|
+
end
|
|
459
|
+
getOrPut(originalValueByLevelByInstance, entry, mutableLuaMap)[level] = value
|
|
460
|
+
value = self:calculateActualValue(entry, level)
|
|
461
|
+
end
|
|
462
|
+
end
|
|
463
|
+
return self:setActualValue(entry, level, value)
|
|
464
|
+
end
|
|
465
|
+
function ObjectLevelField.prototype.applyModifier(self, instance, modifier)
|
|
466
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
467
|
+
if modifiersByInstance == nil then
|
|
468
|
+
modifiersByInstance = mutableWeakLuaMap()
|
|
469
|
+
self.modifiersByInstance = modifiersByInstance
|
|
470
|
+
end
|
|
471
|
+
if getOrPut(modifiersByInstance, instance, mutableLinkedSet):add(modifier) then
|
|
472
|
+
local originalValueByLevelByInstance = self.originalValueByLevelByInstance
|
|
473
|
+
if originalValueByLevelByInstance == nil then
|
|
474
|
+
originalValueByLevelByInstance = mutableWeakLuaMap()
|
|
475
|
+
self.originalValueByLevelByInstance = originalValueByLevelByInstance
|
|
476
|
+
end
|
|
477
|
+
local originalValueByLevel = getOrPut(originalValueByLevelByInstance, instance, mutableLuaMap)
|
|
478
|
+
local levelCount = self:getLevelCount(instance)
|
|
479
|
+
for level = 0, levelCount - 1 do
|
|
480
|
+
local ____originalValueByLevel_level_17 = originalValueByLevel[level]
|
|
481
|
+
if ____originalValueByLevel_level_17 == nil then
|
|
482
|
+
____originalValueByLevel_level_17 = self:getActualValue(instance, level)
|
|
483
|
+
end
|
|
484
|
+
originalValueByLevel[level] = ____originalValueByLevel_level_17
|
|
485
|
+
self:setActualValue(
|
|
486
|
+
instance,
|
|
487
|
+
level,
|
|
488
|
+
self:calculateActualValue(instance, level)
|
|
489
|
+
)
|
|
490
|
+
end
|
|
491
|
+
end
|
|
492
|
+
end
|
|
493
|
+
function ObjectLevelField.prototype.removeModifier(self, instance, modifier)
|
|
494
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
495
|
+
if modifiersByInstance ~= nil then
|
|
496
|
+
local modifiers = modifiersByInstance[instance]
|
|
497
|
+
if modifiers ~= nil and modifiers:remove(modifier) then
|
|
498
|
+
local levelCount = self:getLevelCount(instance)
|
|
499
|
+
for level = 0, levelCount - 1 do
|
|
500
|
+
self:setActualValue(
|
|
501
|
+
instance,
|
|
502
|
+
level,
|
|
503
|
+
self:calculateActualValue(instance, level)
|
|
504
|
+
)
|
|
505
|
+
end
|
|
506
|
+
return true
|
|
507
|
+
end
|
|
508
|
+
end
|
|
509
|
+
return false
|
|
510
|
+
end
|
|
511
|
+
function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value)
|
|
512
|
+
if value ~= nil then
|
|
513
|
+
if __TS__TypeOf(value) ~= __TS__TypeOf(self.defaultValue) then
|
|
514
|
+
return false
|
|
515
|
+
end
|
|
516
|
+
if type(levelOrValue) ~= "number" then
|
|
517
|
+
return false
|
|
518
|
+
end
|
|
519
|
+
return self:setValue(entry, levelOrValue, value)
|
|
520
|
+
end
|
|
521
|
+
if __TS__TypeOf(levelOrValue) ~= __TS__TypeOf(self.defaultValue) then
|
|
522
|
+
return false
|
|
523
|
+
end
|
|
524
|
+
return self:setValue(entry, levelOrValue)
|
|
525
|
+
end
|
|
526
|
+
function ObjectLevelField.prototype.getActualValue(self, instance, level)
|
|
527
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
528
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
529
|
+
local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
|
|
530
|
+
if defaultValueByLevel ~= nil or self.isGlobal then
|
|
531
|
+
local ____opt_18 = self.valueByInstance[instance]
|
|
532
|
+
local ____temp_20 = ____opt_18 and ____opt_18[level + 1]
|
|
533
|
+
if ____temp_20 == nil then
|
|
534
|
+
____temp_20 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
535
|
+
end
|
|
536
|
+
local ____temp_20_21 = ____temp_20
|
|
537
|
+
if ____temp_20_21 == nil then
|
|
538
|
+
____temp_20_21 = self.defaultValue
|
|
539
|
+
end
|
|
540
|
+
return ____temp_20_21
|
|
541
|
+
end
|
|
542
|
+
end
|
|
543
|
+
local ____temp_22 = self:getNativeFieldValue(instance, level)
|
|
544
|
+
if ____temp_22 == nil then
|
|
545
|
+
____temp_22 = self.defaultValue
|
|
546
|
+
end
|
|
547
|
+
return ____temp_22
|
|
548
|
+
end
|
|
549
|
+
function ObjectLevelField.prototype.setActualValue(self, instance, level, value)
|
|
463
550
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
464
|
-
local objectDataEntryId = self:getObjectDataEntryId(
|
|
551
|
+
local objectDataEntryId = self:getObjectDataEntryId(instance)
|
|
465
552
|
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
466
553
|
local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[objectDataEntryId]
|
|
467
554
|
if defaultValueByLevel ~= nil or self.isGlobal then
|
|
468
|
-
local valueByLevel = self.valueByInstance[
|
|
555
|
+
local valueByLevel = self.valueByInstance[instance]
|
|
469
556
|
if valueByLevel == nil then
|
|
470
557
|
valueByLevel = {}
|
|
471
|
-
self.valueByInstance[
|
|
558
|
+
self.valueByInstance[instance] = valueByLevel
|
|
472
559
|
end
|
|
473
|
-
local
|
|
474
|
-
if
|
|
475
|
-
|
|
560
|
+
local ____valueByLevel_index_23 = valueByLevel[level + 1]
|
|
561
|
+
if ____valueByLevel_index_23 == nil then
|
|
562
|
+
____valueByLevel_index_23 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
476
563
|
end
|
|
477
|
-
local
|
|
478
|
-
if
|
|
479
|
-
|
|
564
|
+
local ____valueByLevel_index_23_24 = ____valueByLevel_index_23
|
|
565
|
+
if ____valueByLevel_index_23_24 == nil then
|
|
566
|
+
____valueByLevel_index_23_24 = self.defaultValue
|
|
480
567
|
end
|
|
481
|
-
local previousValue =
|
|
568
|
+
local previousValue = ____valueByLevel_index_23_24
|
|
482
569
|
if value ~= previousValue then
|
|
483
570
|
valueByLevel[level + 1] = value
|
|
484
571
|
self:invokeValueChangeEvent(
|
|
485
|
-
|
|
572
|
+
instance,
|
|
486
573
|
self,
|
|
487
574
|
level,
|
|
488
575
|
previousValue,
|
|
@@ -495,13 +582,13 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
|
495
582
|
if not self:hasNativeFieldValue(objectDataEntryId) then
|
|
496
583
|
return false
|
|
497
584
|
end
|
|
498
|
-
local previousValue = self:getNativeFieldValue(
|
|
585
|
+
local previousValue = self:getNativeFieldValue(instance, level)
|
|
499
586
|
if value ~= previousValue then
|
|
500
|
-
if not self:setNativeFieldValue(
|
|
587
|
+
if not self:setNativeFieldValue(instance, level, value) then
|
|
501
588
|
return false
|
|
502
589
|
end
|
|
503
590
|
self:invokeValueChangeEvent(
|
|
504
|
-
|
|
591
|
+
instance,
|
|
505
592
|
self,
|
|
506
593
|
level,
|
|
507
594
|
previousValue,
|
|
@@ -510,20 +597,22 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
|
510
597
|
end
|
|
511
598
|
return true
|
|
512
599
|
end
|
|
513
|
-
function ObjectLevelField.prototype.
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
600
|
+
function ObjectLevelField.prototype.calculateActualValue(self, instance, level)
|
|
601
|
+
local ____opt_27 = self.originalValueByLevelByInstance
|
|
602
|
+
local ____opt_25 = ____opt_27 and ____opt_27[instance]
|
|
603
|
+
local originalValue = ____opt_25 and ____opt_25[level]
|
|
604
|
+
local ____opt_29 = self.modifiersByInstance
|
|
605
|
+
local modifiers = ____opt_29 and ____opt_29[instance]
|
|
606
|
+
if originalValue ~= nil then
|
|
607
|
+
local value = originalValue
|
|
608
|
+
if modifiers ~= nil then
|
|
609
|
+
for modifier in pairs(modifiers) do
|
|
610
|
+
value = modifier(instance, level, value, originalValue)
|
|
611
|
+
end
|
|
520
612
|
end
|
|
521
|
-
return
|
|
522
|
-
end
|
|
523
|
-
if __TS__TypeOf(levelOrValue) ~= __TS__TypeOf(self.defaultValue) then
|
|
524
|
-
return false
|
|
613
|
+
return value
|
|
525
614
|
end
|
|
526
|
-
return self
|
|
615
|
+
return self.defaultValue
|
|
527
616
|
end
|
|
528
617
|
function ObjectLevelField.prototype.invokeValueChangeEvent(self, ...)
|
|
529
618
|
self:invokeValueChangeEventRecursive(
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__New = ____lualib.__TS__New
|
|
3
|
+
local __TS__Promise = ____lualib.__TS__Promise
|
|
4
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
5
|
+
local ____exports = {}
|
|
6
|
+
local ____player = require("core.types.player")
|
|
7
|
+
local Player = ____player.Player
|
|
8
|
+
local ____math = require("math")
|
|
9
|
+
local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
|
|
10
|
+
local MINIMUM_INTEGER = ____math.MINIMUM_INTEGER
|
|
11
|
+
local ____linked_2Dset = require("utility.linked-set")
|
|
12
|
+
local LinkedSet = ____linked_2Dset.LinkedSet
|
|
13
|
+
local ____event = require("event")
|
|
14
|
+
local Event = ____event.Event
|
|
15
|
+
local eventInvoke = Event.invoke
|
|
16
|
+
local createFrameByType = BlzCreateFrameByType
|
|
17
|
+
local createTrigger = CreateTrigger
|
|
18
|
+
local getOriginFrame = BlzGetOriginFrame
|
|
19
|
+
local getTriggerFrameValue = BlzGetTriggerFrameValue
|
|
20
|
+
local getTriggerPlayer = GetTriggerPlayer
|
|
21
|
+
local frameSetMinMaxValue = BlzFrameSetMinMaxValue
|
|
22
|
+
local frameSetValue = BlzFrameSetValue
|
|
23
|
+
local triggerAddAction = TriggerAddAction
|
|
24
|
+
local triggerRegisterFrameEvent = BlzTriggerRegisterFrameEvent
|
|
25
|
+
____exports.synchronizer = function(getSyncId, getObject)
|
|
26
|
+
local queue = __TS__New(LinkedSet)
|
|
27
|
+
local socket = __TS__New(____exports.ObjectBus, getSyncId, getObject)
|
|
28
|
+
socket.event:addListener(function(_, object)
|
|
29
|
+
local ____opt_0 = queue:pop()
|
|
30
|
+
if ____opt_0 ~= nil then
|
|
31
|
+
____opt_0(object)
|
|
32
|
+
end
|
|
33
|
+
end)
|
|
34
|
+
local function executor(____, resolve)
|
|
35
|
+
queue:add(resolve)
|
|
36
|
+
end
|
|
37
|
+
return function(player, object)
|
|
38
|
+
if player.isLocal then
|
|
39
|
+
socket:send(object)
|
|
40
|
+
end
|
|
41
|
+
return __TS__New(__TS__Promise, executor)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
____exports.ObjectBus = __TS__Class()
|
|
45
|
+
local ObjectBus = ____exports.ObjectBus
|
|
46
|
+
ObjectBus.name = "ObjectBus"
|
|
47
|
+
function ObjectBus.prototype.____constructor(self, getSyncId, getObject)
|
|
48
|
+
self.getSyncId = getSyncId
|
|
49
|
+
local syncSlider = createFrameByType(
|
|
50
|
+
"SLIDER",
|
|
51
|
+
"Synchronizer",
|
|
52
|
+
getOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0),
|
|
53
|
+
"",
|
|
54
|
+
0
|
|
55
|
+
)
|
|
56
|
+
frameSetMinMaxValue(syncSlider, MINIMUM_INTEGER, MAXIMUM_INTEGER)
|
|
57
|
+
self.syncSlider = syncSlider
|
|
58
|
+
local event = __TS__New(Event)
|
|
59
|
+
local trigger = createTrigger()
|
|
60
|
+
triggerRegisterFrameEvent(trigger, syncSlider, FRAMEEVENT_SLIDER_VALUE_CHANGED)
|
|
61
|
+
triggerAddAction(
|
|
62
|
+
trigger,
|
|
63
|
+
function()
|
|
64
|
+
eventInvoke(
|
|
65
|
+
event,
|
|
66
|
+
Player:of(getTriggerPlayer()),
|
|
67
|
+
getObject(getTriggerFrameValue())
|
|
68
|
+
)
|
|
69
|
+
end
|
|
70
|
+
)
|
|
71
|
+
self.event = event
|
|
72
|
+
end
|
|
73
|
+
function ObjectBus.prototype.send(self, object)
|
|
74
|
+
local syncId = object ~= nil and self.getSyncId(object) or 0
|
|
75
|
+
frameSetValue(self.syncSlider, syncId)
|
|
76
|
+
end
|
|
77
|
+
return ____exports
|
package/engine/text-tag.lua
CHANGED
|
@@ -36,6 +36,7 @@ local isUnitVisible = IsUnitVisible
|
|
|
36
36
|
local getUnitFlyHeight = GetUnitFlyHeight
|
|
37
37
|
local getUnitX = GetUnitX
|
|
38
38
|
local getUnitY = GetUnitY
|
|
39
|
+
local unitAlive = UnitAlive
|
|
39
40
|
local DEFAULT_FONT_SIZE = 0.024
|
|
40
41
|
local function applyConfiguration(textTag, configuration)
|
|
41
42
|
setTextTagFadepoint(textTag, configuration.fadepoint)
|
|
@@ -333,7 +334,7 @@ Timer.onPeriod[1 / 64]:addListener(function()
|
|
|
333
334
|
y,
|
|
334
335
|
getUnitFlyHeight(unit) + getTerrainZ(x, y)
|
|
335
336
|
)
|
|
336
|
-
if isInView and not isUnitHidden(unit) and not isUnitLoaded(unit) and isUnitVisible(unit, PLAYER_LOCAL_HANDLE) then
|
|
337
|
+
if isInView and not isUnitHidden(unit) and not isUnitLoaded(unit) and isUnitVisible(unit, PLAYER_LOCAL_HANDLE) and unitAlive(unit) then
|
|
337
338
|
setTextTagPosUnit(
|
|
338
339
|
ensureHandle(textTag),
|
|
339
340
|
unit,
|
package/net/socket.lua
CHANGED
|
@@ -28,13 +28,13 @@ function Socket.prototype.____constructor(self)
|
|
|
28
28
|
onReceive[self[0]]:addListener(function(sender, data)
|
|
29
29
|
local chunks = chunksByPlayer[sender]
|
|
30
30
|
if chunks ~= nil then
|
|
31
|
+
chunksByPlayer[sender] = nil
|
|
31
32
|
chunks[#chunks + 1] = data
|
|
32
33
|
Event.invoke(
|
|
33
34
|
self.onMessage,
|
|
34
35
|
sender,
|
|
35
36
|
tableConcat(chunks)
|
|
36
37
|
)
|
|
37
|
-
chunksByPlayer[sender] = nil
|
|
38
38
|
else
|
|
39
39
|
Event.invoke(self.onMessage, sender, data)
|
|
40
40
|
end
|
package/package.json
CHANGED
package/utility/linked-set.d.ts
CHANGED
|
@@ -36,6 +36,7 @@ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet
|
|
|
36
36
|
copyOf(): LinkedSet<T>;
|
|
37
37
|
first(): T | undefined;
|
|
38
38
|
last(): T | undefined;
|
|
39
|
+
pop(): T | undefined;
|
|
39
40
|
next(key: T): T | undefined;
|
|
40
41
|
previous(key: T): T | undefined;
|
|
41
42
|
add(key: T): boolean;
|
package/utility/linked-set.lua
CHANGED
|
@@ -42,6 +42,23 @@ end
|
|
|
42
42
|
function LinkedSet.prototype.last(self)
|
|
43
43
|
return self.l
|
|
44
44
|
end
|
|
45
|
+
function LinkedSet.prototype.pop(self)
|
|
46
|
+
local f = self.f
|
|
47
|
+
if f == nil then
|
|
48
|
+
return nil
|
|
49
|
+
end
|
|
50
|
+
local n = self.n
|
|
51
|
+
local next = n[f]
|
|
52
|
+
n[f] = nil
|
|
53
|
+
self.f = next
|
|
54
|
+
if next ~= nil then
|
|
55
|
+
self.p[next] = nil
|
|
56
|
+
else
|
|
57
|
+
self.l = nil
|
|
58
|
+
end
|
|
59
|
+
self.s = self.s - 1
|
|
60
|
+
return f
|
|
61
|
+
end
|
|
45
62
|
function LinkedSet.prototype.next(self, key)
|
|
46
63
|
return self.n[key]
|
|
47
64
|
end
|
|
@@ -107,8 +124,9 @@ function LinkedSet.prototype.forEach(self, action, ...)
|
|
|
107
124
|
local n = self.n
|
|
108
125
|
local c = self.f
|
|
109
126
|
while c ~= nil do
|
|
127
|
+
local next = n[c]
|
|
110
128
|
action(c, ...)
|
|
111
|
-
c =
|
|
129
|
+
c = next
|
|
112
130
|
end
|
|
113
131
|
end
|
|
114
132
|
function LinkedSet.prototype.toArray(self)
|