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.
@@ -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
- originalValueByInstance[instance] = self:getActualValue(instance)
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 ____self_valueByInstance_instance_0 = self.valueByInstance[instance]
200
- if ____self_valueByInstance_instance_0 == nil then
201
- ____self_valueByInstance_instance_0 = defaultValue
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 ____self_valueByInstance_instance_0_1 = ____self_valueByInstance_instance_0
204
- if ____self_valueByInstance_instance_0_1 == nil then
205
- ____self_valueByInstance_instance_0_1 = self.defaultValue
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 ____self_valueByInstance_instance_0_1
214
+ return ____self_valueByInstance_instance_3_4
208
215
  end
209
216
  end
210
- local ____temp_2 = self:getNativeFieldValue(instance)
211
- if ____temp_2 == nil then
212
- ____temp_2 = self.defaultValue
217
+ local ____temp_5 = self:getNativeFieldValue(instance)
218
+ if ____temp_5 == nil then
219
+ ____temp_5 = self.defaultValue
213
220
  end
214
- return ____temp_2
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 ____self_valueByInstance_instance_3 = self.valueByInstance[instance]
223
- if ____self_valueByInstance_instance_3 == nil then
224
- ____self_valueByInstance_instance_3 = defaultValue
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 ____self_valueByInstance_instance_3_4 = ____self_valueByInstance_instance_3
227
- if ____self_valueByInstance_instance_3_4 == nil then
228
- ____self_valueByInstance_instance_3_4 = self.defaultValue
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 = ____self_valueByInstance_instance_3_4
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 ____opt_5 = self.originalValueByInstance
252
- local originalValue = ____opt_5 and ____opt_5[instance]
253
- local ____opt_7 = self.modifiersByInstance
254
- local modifiers = ____opt_7 and ____opt_7[instance]
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 ____temp_10
326
+ local ____temp_13
320
327
  if index == nil then
321
- ____temp_10 = value
328
+ ____temp_13 = value
322
329
  else
323
- local ____value_index_9 = value[index + 1]
324
- if ____value_index_9 == nil then
325
- ____value_index_9 = self.defaultValue
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
- ____temp_10 = ____value_index_9
334
+ ____temp_13 = ____value_index_12
328
335
  end
329
- return ____temp_10
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 ____temp_12
346
+ local ____temp_15
340
347
  if index == nil then
341
- ____temp_12 = value
348
+ ____temp_15 = value
342
349
  else
343
- local ____value_index_11 = value[index + 1]
344
- if ____value_index_11 == nil then
345
- ____value_index_11 = self.defaultValue
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
- ____temp_12 = ____value_index_11
354
+ ____temp_15 = ____value_index_14
348
355
  end
349
- return ____temp_12
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 ____valueByLevel_index_13 = valueByLevel[level + 1]
395
- if ____valueByLevel_index_13 == nil then
396
- ____valueByLevel_index_13 = self.defaultValue
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 ____valueByLevel_index_13
405
+ return ____valueByLevel_index_16
399
406
  end
400
407
  end
401
408
  return self.defaultValue
402
409
  end
403
- local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
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(entry)
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[entry]
555
+ local valueByLevel = self.valueByInstance[instance]
469
556
  if valueByLevel == nil then
470
557
  valueByLevel = {}
471
- self.valueByInstance[entry] = valueByLevel
558
+ self.valueByInstance[instance] = valueByLevel
472
559
  end
473
- local ____valueByLevel_index_19 = valueByLevel[level + 1]
474
- if ____valueByLevel_index_19 == nil then
475
- ____valueByLevel_index_19 = (defaultValueByLevel or emptyArray())[level + 1]
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 ____valueByLevel_index_19_20 = ____valueByLevel_index_19
478
- if ____valueByLevel_index_19_20 == nil then
479
- ____valueByLevel_index_19_20 = self.defaultValue
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 = ____valueByLevel_index_19_20
568
+ local previousValue = ____valueByLevel_index_23_24
482
569
  if value ~= previousValue then
483
570
  valueByLevel[level + 1] = value
484
571
  self:invokeValueChangeEvent(
485
- entry,
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(entry, level)
585
+ local previousValue = self:getNativeFieldValue(instance, level)
499
586
  if value ~= previousValue then
500
- if not self:setNativeFieldValue(entry, level, value) then
587
+ if not self:setNativeFieldValue(instance, level, value) then
501
588
  return false
502
589
  end
503
590
  self:invokeValueChangeEvent(
504
- entry,
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.trySetValue(self, entry, levelOrValue, value)
514
- if value ~= nil then
515
- if __TS__TypeOf(value) ~= __TS__TypeOf(self.defaultValue) then
516
- return false
517
- end
518
- if type(levelOrValue) ~= "number" then
519
- return false
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 self:setValue(entry, levelOrValue, value)
522
- end
523
- if __TS__TypeOf(levelOrValue) ~= __TS__TypeOf(self.defaultValue) then
524
- return false
613
+ return value
525
614
  end
526
- return self:setValue(entry, levelOrValue)
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
@@ -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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "warscript",
4
- "version": "0.0.1-dev.cdcfbc9",
4
+ "version": "0.0.1-dev.ce2be36",
5
5
  "description": "A typescript library for Warcraft III using Warpack.",
6
6
  "keywords": [
7
7
  "warcraft",
@@ -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;
@@ -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 = n[c]
129
+ c = next
112
130
  end
113
131
  end
114
132
  function LinkedSet.prototype.toArray(self)