warscript 0.0.1-dev.ea69747 → 0.0.1-dev.eb6b18a
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 +17 -0
- package/attributes.lua +23 -0
- package/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +8 -1
- package/core/types/frame.lua +93 -1
- package/core/types/group.d.ts +0 -1
- package/core/types/handle.d.ts +2 -1
- package/core/types/handle.lua +5 -0
- package/core/types/image.d.ts +0 -1
- package/core/types/missile.d.ts +2 -2
- package/core/types/missile.lua +8 -2
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +6 -7
- package/core/types/timer.lua +18 -21
- package/core/types/unit.lua +8 -0
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/index.d.ts +1 -0
- package/decl/native.d.ts +840 -786
- package/engine/ability.d.ts +1 -1
- package/engine/behavior.d.ts +10 -10
- package/engine/behavior.lua +6 -6
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +8 -5
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.d.ts +13 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +32 -9
- package/engine/behaviour/ability/damage.d.ts +39 -11
- package/engine/behaviour/ability/damage.lua +83 -37
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +42 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -15
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
- package/engine/behaviour/ability/remove-buffs.lua +28 -0
- package/engine/behaviour/ability/restore-mana.d.ts +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -0
- package/engine/behaviour/ability.d.ts +27 -4
- package/engine/behaviour/ability.lua +152 -26
- package/engine/behaviour/unit/stun-immunity.d.ts +5 -4
- package/engine/behaviour/unit/stun-immunity.lua +43 -27
- package/engine/behaviour/unit.d.ts +34 -2
- package/engine/behaviour/unit.lua +181 -0
- package/engine/buff.d.ts +103 -41
- package/engine/buff.lua +465 -212
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +21 -14
- package/engine/internal/ability.lua +97 -76
- package/engine/internal/item/ability.lua +112 -4
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/item.d.ts +7 -4
- package/engine/internal/item.lua +131 -28
- package/engine/internal/mechanics/ability-duration.d.ts +1 -3
- package/engine/internal/mechanics/ability-duration.lua +3 -1
- package/engine/internal/mechanics/cast-ability.d.ts +2 -0
- package/engine/internal/mechanics/cast-ability.lua +86 -0
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +98 -14
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/bonus.d.ts +11 -8
- package/engine/internal/unit/bonus.lua +23 -1
- package/engine/internal/unit/detach-missiles.d.ts +7 -0
- package/engine/internal/unit/detach-missiles.lua +30 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +78 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit+ability.lua +2 -2
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +25 -6
- package/engine/internal/unit.d.ts +85 -19
- package/engine/internal/unit.lua +555 -167
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +82 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -3
- 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/combat-classification.d.ts +0 -2
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blink.d.ts +10 -0
- package/engine/object-data/entry/ability-type/blink.lua +39 -0
- 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/channel.d.ts +0 -1
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +4 -4
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
- package/engine/object-data/entry/ability-type/mine.lua +39 -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/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
- package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +20 -18
- package/engine/object-data/entry/ability-type.lua +90 -33
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- package/engine/object-data/entry/buff-type/applicable.lua +39 -102
- package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
- package/engine/object-data/entry/buff-type.d.ts +6 -13
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +1 -2
- package/engine/object-data/entry/item-type/blank.d.ts +0 -1
- package/engine/object-data/entry/item-type.d.ts +15 -2
- package/engine/object-data/entry/item-type.lua +93 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -2
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +50 -3
- package/engine/object-data/entry/unit-type.lua +452 -61
- package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
- package/engine/object-data/entry/upgrade.d.ts +1 -2
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +18 -17
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +33 -8
- package/engine/object-field/ability.lua +60 -1
- package/engine/object-field/unit.d.ts +50 -2
- package/engine/object-field/unit.lua +186 -4
- package/engine/object-field.d.ts +21 -8
- package/engine/object-field.lua +221 -97
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +9 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/entries/unit-type.d.ts +42 -1
- package/engine/standard/entries/unit-type.lua +42 -1
- package/engine/standard/fields/ability.d.ts +3 -1
- package/engine/standard/fields/ability.lua +3 -1
- package/engine/standard/fields/unit.d.ts +3 -0
- package/engine/standard/fields/unit.lua +5 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +175 -10
- package/engine/unit.d.ts +5 -0
- package/engine/unit.lua +14 -2
- package/event.d.ts +2 -3
- package/event.lua +9 -5
- package/exception.d.ts +2 -0
- package/exception.lua +4 -0
- package/global/vec2.lua +1 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +146 -42
- package/math/vec2.d.ts +2 -9
- package/math.d.ts +0 -2
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/ability.d.ts +0 -1
- package/objutil/buff.d.ts +0 -1
- package/objutil/buff.lua +2 -3
- package/objutil/object.d.ts +0 -1
- package/objutil/unit.d.ts +0 -1
- package/objutil/unit.lua +8 -0
- package/package.json +13 -14
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/string.d.ts +30 -0
- package/string.lua +14 -0
- package/util/stream.d.ts +0 -1
- package/utility/arrays.d.ts +13 -6
- package/utility/arrays.lua +41 -4
- package/utility/bit-set.d.ts +0 -2
- package/utility/functions.d.ts +1 -0
- package/utility/functions.lua +1 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +32 -9
- package/utility/linked-set.lua +24 -2
- package/utility/lua-maps.d.ts +5 -2
- package/utility/lua-maps.lua +20 -0
- package/utility/lua-sets.d.ts +2 -2
- package/utility/lua-sets.lua +3 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -2
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/property.lua
ADDED
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__New = ____lualib.__TS__New
|
|
4
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
5
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
6
|
+
local ____exports = {}
|
|
7
|
+
local savePropertyValues
|
|
8
|
+
local ____binaryreader = require("binaryreader")
|
|
9
|
+
local BinaryReader = ____binaryreader.BinaryReader
|
|
10
|
+
local ____binarywriter = require("binarywriter")
|
|
11
|
+
local BinaryWriter = ____binarywriter.BinaryWriter
|
|
12
|
+
local ____player = require("core.types.player")
|
|
13
|
+
local Player = ____player.Player
|
|
14
|
+
local ____timer = require("core.types.timer")
|
|
15
|
+
local Timer = ____timer.Timer
|
|
16
|
+
local ____event = require("event")
|
|
17
|
+
local Event = ____event.Event
|
|
18
|
+
local file = require("file")
|
|
19
|
+
local ____network = require("network")
|
|
20
|
+
local synchronize = ____network.synchronize
|
|
21
|
+
local base64 = require("utility.base64")
|
|
22
|
+
local lzw = require("utility.lzw")
|
|
23
|
+
local ____preconditions = require("utility.preconditions")
|
|
24
|
+
local ____require = ____preconditions.require
|
|
25
|
+
local invoke = Event.invoke
|
|
26
|
+
____exports.PersistentPropertiesConfig = __TS__Class()
|
|
27
|
+
local PersistentPropertiesConfig = ____exports.PersistentPropertiesConfig
|
|
28
|
+
PersistentPropertiesConfig.name = "PersistentPropertiesConfig"
|
|
29
|
+
function PersistentPropertiesConfig.prototype.____constructor(self)
|
|
30
|
+
end
|
|
31
|
+
PersistentPropertiesConfig.defaultFileName = ""
|
|
32
|
+
____exports.Property = __TS__Class()
|
|
33
|
+
local Property = ____exports.Property
|
|
34
|
+
Property.name = "Property"
|
|
35
|
+
function Property.prototype.____constructor(self, defaultValue)
|
|
36
|
+
self.valueChangeEvent = __TS__New(Event)
|
|
37
|
+
self[0] = defaultValue
|
|
38
|
+
self[1] = defaultValue
|
|
39
|
+
end
|
|
40
|
+
function Property.prototype.reset(self)
|
|
41
|
+
if self[2] then
|
|
42
|
+
self[2] = nil
|
|
43
|
+
local defaultValue = self[0]
|
|
44
|
+
local oldValue = self[1]
|
|
45
|
+
if defaultValue ~= oldValue then
|
|
46
|
+
self[1] = defaultValue
|
|
47
|
+
invoke(self.valueChangeEvent, defaultValue, oldValue)
|
|
48
|
+
end
|
|
49
|
+
return true
|
|
50
|
+
end
|
|
51
|
+
return false
|
|
52
|
+
end
|
|
53
|
+
function Property.prototype.set(self, value)
|
|
54
|
+
self[2] = true
|
|
55
|
+
local oldValue = self[1]
|
|
56
|
+
self[1] = value
|
|
57
|
+
if value ~= oldValue then
|
|
58
|
+
invoke(self.valueChangeEvent, value, oldValue)
|
|
59
|
+
return true
|
|
60
|
+
end
|
|
61
|
+
return false
|
|
62
|
+
end
|
|
63
|
+
function Property.prototype.get(self)
|
|
64
|
+
return self[1]
|
|
65
|
+
end
|
|
66
|
+
__TS__SetDescriptor(
|
|
67
|
+
Property.prototype,
|
|
68
|
+
"defaultValue",
|
|
69
|
+
{
|
|
70
|
+
get = function(self)
|
|
71
|
+
return self[0]
|
|
72
|
+
end,
|
|
73
|
+
set = function(self, defaultValue)
|
|
74
|
+
local oldDefaultValue = self[0]
|
|
75
|
+
if defaultValue ~= oldDefaultValue then
|
|
76
|
+
self[0] = defaultValue
|
|
77
|
+
if not self[2] then
|
|
78
|
+
self[1] = defaultValue
|
|
79
|
+
invoke(self.valueChangeEvent, defaultValue, oldDefaultValue)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
},
|
|
84
|
+
true
|
|
85
|
+
)
|
|
86
|
+
__TS__SetDescriptor(
|
|
87
|
+
Property.prototype,
|
|
88
|
+
"value",
|
|
89
|
+
{
|
|
90
|
+
get = function(self)
|
|
91
|
+
return self:get()
|
|
92
|
+
end,
|
|
93
|
+
set = function(self, value)
|
|
94
|
+
self:set(value)
|
|
95
|
+
end
|
|
96
|
+
},
|
|
97
|
+
true
|
|
98
|
+
)
|
|
99
|
+
__TS__SetDescriptor(
|
|
100
|
+
Property.prototype,
|
|
101
|
+
"isChanged",
|
|
102
|
+
{get = function(self)
|
|
103
|
+
return self[2] == true
|
|
104
|
+
end},
|
|
105
|
+
true
|
|
106
|
+
)
|
|
107
|
+
____exports.PlayerProperty = __TS__Class()
|
|
108
|
+
local PlayerProperty = ____exports.PlayerProperty
|
|
109
|
+
PlayerProperty.name = "PlayerProperty"
|
|
110
|
+
function PlayerProperty.prototype.____constructor(self, defaultValue)
|
|
111
|
+
self.valueChangeEvent = __TS__New(Event)
|
|
112
|
+
self[0] = defaultValue
|
|
113
|
+
self[1] = {}
|
|
114
|
+
self[2] = {}
|
|
115
|
+
end
|
|
116
|
+
function PlayerProperty.prototype.isChanged(self, player)
|
|
117
|
+
return self[2][player] ~= nil
|
|
118
|
+
end
|
|
119
|
+
function PlayerProperty.prototype.reset(self, player)
|
|
120
|
+
if self[2][player] ~= nil then
|
|
121
|
+
self[2][player] = nil
|
|
122
|
+
local initialValue = self[0]
|
|
123
|
+
local oldValue = self[1][player]
|
|
124
|
+
self[1][player] = nil
|
|
125
|
+
if initialValue ~= oldValue then
|
|
126
|
+
invoke(self.valueChangeEvent, player, initialValue, oldValue)
|
|
127
|
+
end
|
|
128
|
+
return true
|
|
129
|
+
end
|
|
130
|
+
return false
|
|
131
|
+
end
|
|
132
|
+
function PlayerProperty.prototype.set(self, player, value)
|
|
133
|
+
self[2][player] = true
|
|
134
|
+
local oldValue = self[1][player]
|
|
135
|
+
self[1][player] = value
|
|
136
|
+
if value ~= oldValue then
|
|
137
|
+
invoke(self.valueChangeEvent, player, value, oldValue)
|
|
138
|
+
return true
|
|
139
|
+
end
|
|
140
|
+
return false
|
|
141
|
+
end
|
|
142
|
+
function PlayerProperty.prototype.get(self, player)
|
|
143
|
+
local ____table_PlayerPropertyPropertyKey_IS_CHANGED_BY_PLAYER_has_result_0
|
|
144
|
+
if self[2][player] ~= nil then
|
|
145
|
+
____table_PlayerPropertyPropertyKey_IS_CHANGED_BY_PLAYER_has_result_0 = self[1][player]
|
|
146
|
+
else
|
|
147
|
+
____table_PlayerPropertyPropertyKey_IS_CHANGED_BY_PLAYER_has_result_0 = self[0]
|
|
148
|
+
end
|
|
149
|
+
return ____table_PlayerPropertyPropertyKey_IS_CHANGED_BY_PLAYER_has_result_0
|
|
150
|
+
end
|
|
151
|
+
local NULL_VALUE = {}
|
|
152
|
+
local loadedValueById
|
|
153
|
+
local loadedValueByIdByPlayer = {}
|
|
154
|
+
local localValueById = {}
|
|
155
|
+
local persistentPropertyById = {}
|
|
156
|
+
local persistentPlayerPropertyById = {}
|
|
157
|
+
____exports.PersistentProperty = __TS__Class()
|
|
158
|
+
local PersistentProperty = ____exports.PersistentProperty
|
|
159
|
+
PersistentProperty.name = "PersistentProperty"
|
|
160
|
+
__TS__ClassExtends(PersistentProperty, ____exports.Property)
|
|
161
|
+
function PersistentProperty.prototype.____constructor(self, id, defaultValue, valueChangeEventListener)
|
|
162
|
+
PersistentProperty.____super.prototype.____constructor(self, defaultValue)
|
|
163
|
+
self.id = id
|
|
164
|
+
____require(not (persistentPropertyById[id] ~= nil) and not (persistentPlayerPropertyById[id] ~= nil))
|
|
165
|
+
persistentPropertyById[id] = self
|
|
166
|
+
if valueChangeEventListener ~= nil then
|
|
167
|
+
self.valueChangeEvent:addListener(valueChangeEventListener)
|
|
168
|
+
end
|
|
169
|
+
local value = loadedValueById and loadedValueById[id]
|
|
170
|
+
if value ~= nil then
|
|
171
|
+
local ____self_set_4 = self.set
|
|
172
|
+
local ____temp_3
|
|
173
|
+
if value == NULL_VALUE then
|
|
174
|
+
____temp_3 = nil
|
|
175
|
+
else
|
|
176
|
+
____temp_3 = value
|
|
177
|
+
end
|
|
178
|
+
____self_set_4(self, ____temp_3)
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
function PersistentProperty.prototype.reset(self)
|
|
182
|
+
if PersistentProperty.____super.prototype.reset(self) then
|
|
183
|
+
localValueById[self.id] = nil
|
|
184
|
+
savePropertyValues()
|
|
185
|
+
return true
|
|
186
|
+
end
|
|
187
|
+
return false
|
|
188
|
+
end
|
|
189
|
+
function PersistentProperty.prototype.set(self, value)
|
|
190
|
+
if PersistentProperty.____super.prototype.set(self, value) then
|
|
191
|
+
localValueById[self.id] = value == nil and NULL_VALUE or value
|
|
192
|
+
savePropertyValues()
|
|
193
|
+
return true
|
|
194
|
+
end
|
|
195
|
+
return false
|
|
196
|
+
end
|
|
197
|
+
____exports.PersistentPlayerProperty = __TS__Class()
|
|
198
|
+
local PersistentPlayerProperty = ____exports.PersistentPlayerProperty
|
|
199
|
+
PersistentPlayerProperty.name = "PersistentPlayerProperty"
|
|
200
|
+
__TS__ClassExtends(PersistentPlayerProperty, ____exports.PlayerProperty)
|
|
201
|
+
function PersistentPlayerProperty.prototype.____constructor(self, id, initialValue, valueChangeEventListener)
|
|
202
|
+
PersistentPlayerProperty.____super.prototype.____constructor(self, initialValue)
|
|
203
|
+
self.id = id
|
|
204
|
+
____require(not (persistentPropertyById[id] ~= nil) and not (persistentPlayerPropertyById[id] ~= nil))
|
|
205
|
+
persistentPlayerPropertyById[id] = self
|
|
206
|
+
if valueChangeEventListener ~= nil then
|
|
207
|
+
self.valueChangeEvent:addListener(valueChangeEventListener)
|
|
208
|
+
end
|
|
209
|
+
for ____, player in ipairs(Player.all) do
|
|
210
|
+
local ____opt_5 = loadedValueByIdByPlayer and loadedValueByIdByPlayer[player]
|
|
211
|
+
local value = ____opt_5 and ____opt_5[id]
|
|
212
|
+
if value ~= nil then
|
|
213
|
+
local ____self_set_10 = self.set
|
|
214
|
+
local ____temp_9
|
|
215
|
+
if value == NULL_VALUE then
|
|
216
|
+
____temp_9 = nil
|
|
217
|
+
else
|
|
218
|
+
____temp_9 = value
|
|
219
|
+
end
|
|
220
|
+
____self_set_10(self, player, ____temp_9)
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
function PersistentPlayerProperty.prototype.reset(self, player)
|
|
225
|
+
if PersistentPlayerProperty.____super.prototype.reset(self, player) then
|
|
226
|
+
if player.isLocal then
|
|
227
|
+
localValueById[self.id] = nil
|
|
228
|
+
end
|
|
229
|
+
savePropertyValues(player)
|
|
230
|
+
return true
|
|
231
|
+
end
|
|
232
|
+
return false
|
|
233
|
+
end
|
|
234
|
+
function PersistentPlayerProperty.prototype.set(self, player, value)
|
|
235
|
+
if PersistentPlayerProperty.____super.prototype.set(self, player, value) then
|
|
236
|
+
if player.isLocal then
|
|
237
|
+
localValueById[self.id] = value
|
|
238
|
+
end
|
|
239
|
+
savePropertyValues(player)
|
|
240
|
+
return true
|
|
241
|
+
end
|
|
242
|
+
return false
|
|
243
|
+
end
|
|
244
|
+
savePropertyValues = function(player)
|
|
245
|
+
if player ~= nil and not player.isLocal or loadedValueById == nil or loadedValueByIdByPlayer[Player["local"]] == nil then
|
|
246
|
+
return
|
|
247
|
+
end
|
|
248
|
+
local writer = __TS__New(BinaryWriter)
|
|
249
|
+
writer:writeUInt32(0)
|
|
250
|
+
local size = 0
|
|
251
|
+
for ____ in pairs(localValueById) do
|
|
252
|
+
size = size + 1
|
|
253
|
+
end
|
|
254
|
+
writer:writeUInt32(size)
|
|
255
|
+
for id, value in pairs(localValueById) do
|
|
256
|
+
writer:writeInt32(id)
|
|
257
|
+
if value == NULL_VALUE then
|
|
258
|
+
writer:writeUInt8(0)
|
|
259
|
+
elseif value == false then
|
|
260
|
+
writer:writeUInt8(1)
|
|
261
|
+
elseif value == true then
|
|
262
|
+
writer:writeUInt8(2)
|
|
263
|
+
elseif type(value) == "number" then
|
|
264
|
+
if math.type(value) == "integer" then
|
|
265
|
+
writer:writeUInt8(3)
|
|
266
|
+
writer:writeInt32(value)
|
|
267
|
+
else
|
|
268
|
+
writer:writeUInt8(4)
|
|
269
|
+
writer:writeFloat(value)
|
|
270
|
+
end
|
|
271
|
+
else
|
|
272
|
+
writer:writeUInt8(5)
|
|
273
|
+
writer:writeUInt32(#value)
|
|
274
|
+
writer:writeBytes(value)
|
|
275
|
+
end
|
|
276
|
+
end
|
|
277
|
+
file.write(
|
|
278
|
+
____exports.PersistentPropertiesConfig.defaultFileName,
|
|
279
|
+
base64.encode(lzw.compress(tostring(writer)))
|
|
280
|
+
)
|
|
281
|
+
end
|
|
282
|
+
local function loadPropertyValues(fileData, player)
|
|
283
|
+
do
|
|
284
|
+
local function ____catch(_)
|
|
285
|
+
return true, {}
|
|
286
|
+
end
|
|
287
|
+
local ____try, ____hasReturned, ____returnValue = pcall(function()
|
|
288
|
+
local valueById = {}
|
|
289
|
+
local reader = __TS__New(
|
|
290
|
+
BinaryReader,
|
|
291
|
+
lzw.decompress(base64.decode(fileData))
|
|
292
|
+
)
|
|
293
|
+
reader:readUInt32()
|
|
294
|
+
local size = reader:readUInt32()
|
|
295
|
+
for _ = 1, size do
|
|
296
|
+
local id = reader:readInt32()
|
|
297
|
+
local dataType = reader:readUInt8()
|
|
298
|
+
if dataType == 0 then
|
|
299
|
+
valueById[id] = NULL_VALUE
|
|
300
|
+
elseif dataType == 1 then
|
|
301
|
+
valueById[id] = false
|
|
302
|
+
elseif dataType == 2 then
|
|
303
|
+
valueById[id] = true
|
|
304
|
+
elseif dataType == 3 then
|
|
305
|
+
valueById[id] = reader:readInt32()
|
|
306
|
+
elseif dataType == 4 then
|
|
307
|
+
valueById[id] = reader:readFloat()
|
|
308
|
+
elseif dataType == 5 then
|
|
309
|
+
valueById[id] = reader:readBytes(reader:readUInt32())
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
for id, value in pairs(valueById) do
|
|
313
|
+
local persistentProperty = persistentPropertyById[id]
|
|
314
|
+
if persistentProperty ~= nil then
|
|
315
|
+
if not persistentProperty.isChanged then
|
|
316
|
+
local ____persistentProperty_set_12 = persistentProperty.set
|
|
317
|
+
local ____temp_11
|
|
318
|
+
if value == NULL_VALUE then
|
|
319
|
+
____temp_11 = nil
|
|
320
|
+
else
|
|
321
|
+
____temp_11 = value
|
|
322
|
+
end
|
|
323
|
+
____persistentProperty_set_12(persistentProperty, ____temp_11)
|
|
324
|
+
end
|
|
325
|
+
elseif player ~= nil then
|
|
326
|
+
local persistentPlayerProperty = persistentPlayerPropertyById[id]
|
|
327
|
+
if persistentPlayerProperty ~= nil then
|
|
328
|
+
if not persistentPlayerProperty:isChanged(player) then
|
|
329
|
+
local ____persistentPlayerProperty_set_15 = persistentPlayerProperty.set
|
|
330
|
+
local ____player_14 = player
|
|
331
|
+
local ____temp_13
|
|
332
|
+
if value == NULL_VALUE then
|
|
333
|
+
____temp_13 = nil
|
|
334
|
+
else
|
|
335
|
+
____temp_13 = value
|
|
336
|
+
end
|
|
337
|
+
____persistentPlayerProperty_set_15(persistentPlayerProperty, ____player_14, ____temp_13)
|
|
338
|
+
end
|
|
339
|
+
elseif player.isLocal then
|
|
340
|
+
localValueById[id] = value
|
|
341
|
+
end
|
|
342
|
+
else
|
|
343
|
+
localValueById[id] = value
|
|
344
|
+
end
|
|
345
|
+
end
|
|
346
|
+
return true, valueById
|
|
347
|
+
end)
|
|
348
|
+
if not ____try then
|
|
349
|
+
____hasReturned, ____returnValue = ____catch(____hasReturned)
|
|
350
|
+
end
|
|
351
|
+
if ____hasReturned then
|
|
352
|
+
return ____returnValue
|
|
353
|
+
end
|
|
354
|
+
end
|
|
355
|
+
end
|
|
356
|
+
Timer:run(function()
|
|
357
|
+
local data = file.read(____exports.PersistentPropertiesConfig.defaultFileName) or ""
|
|
358
|
+
loadedValueById = loadPropertyValues(data)
|
|
359
|
+
for ____, player in ipairs(Player.all) do
|
|
360
|
+
local ____self_16 = synchronize(player, data)
|
|
361
|
+
____self_16["then"](
|
|
362
|
+
____self_16,
|
|
363
|
+
function(____, synchronizedData)
|
|
364
|
+
loadedValueByIdByPlayer[player] = loadPropertyValues(synchronizedData, player)
|
|
365
|
+
savePropertyValues(player)
|
|
366
|
+
end,
|
|
367
|
+
function()
|
|
368
|
+
loadedValueByIdByPlayer[player] = {}
|
|
369
|
+
savePropertyValues(player)
|
|
370
|
+
end
|
|
371
|
+
)
|
|
372
|
+
end
|
|
373
|
+
end)
|
|
374
|
+
return ____exports
|
package/string.d.ts
CHANGED
|
@@ -59,6 +59,22 @@ declare global {
|
|
|
59
59
|
function toNumber(string: string): number;
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
|
+
declare global {
|
|
63
|
+
namespace string {
|
|
64
|
+
/**
|
|
65
|
+
* Returns the index within the string of the first occurrence of the specified substring, starting from the specified `startIndex`,
|
|
66
|
+
* or -1 if the string does not contain such substring.
|
|
67
|
+
*/
|
|
68
|
+
function indexOf(string: string, substring: string, startIndex?: number): number;
|
|
69
|
+
}
|
|
70
|
+
interface String {
|
|
71
|
+
/**
|
|
72
|
+
* Returns the index within this string of the first occurrence of the specified substring, starting from the specified `startIndex`,
|
|
73
|
+
* or -1 if the string does not contain such substring.
|
|
74
|
+
*/
|
|
75
|
+
indexOf(substring: string, startIndex?: number): number;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
62
78
|
declare global {
|
|
63
79
|
interface String {
|
|
64
80
|
/**
|
|
@@ -103,4 +119,18 @@ declare global {
|
|
|
103
119
|
function isNotBlank(string: string): boolean;
|
|
104
120
|
}
|
|
105
121
|
}
|
|
122
|
+
declare global {
|
|
123
|
+
namespace string {
|
|
124
|
+
/**
|
|
125
|
+
* Returns the number of characters matching the given predicate.
|
|
126
|
+
*/
|
|
127
|
+
function count(string: string, predicate: (char: string) => boolean): number;
|
|
128
|
+
}
|
|
129
|
+
interface String {
|
|
130
|
+
/**
|
|
131
|
+
* Returns the number of characters matching the given predicate.
|
|
132
|
+
*/
|
|
133
|
+
count(predicate: (char: string) => boolean): number;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
106
136
|
export {};
|
package/string.lua
CHANGED
|
@@ -2,6 +2,7 @@ local ____exports = {}
|
|
|
2
2
|
local ____error = _G.error
|
|
3
3
|
local tonumber = _G.tonumber
|
|
4
4
|
local match = string.match
|
|
5
|
+
local find = string.find
|
|
5
6
|
local sub = string.sub
|
|
6
7
|
_G.string.removePrefix = function(____string, prefix)
|
|
7
8
|
local prefixLength = #prefix
|
|
@@ -17,6 +18,10 @@ end
|
|
|
17
18
|
_G.string.toNumber = function(____string)
|
|
18
19
|
return tonumber(____string) or ____error(("'" .. ____string) .. "' is not a valid representation of a number.")
|
|
19
20
|
end
|
|
21
|
+
_G.string.indexOf = function(____string, substring, startIndex)
|
|
22
|
+
local index = find(____string, substring, (startIndex or 0) + 1, true)
|
|
23
|
+
return (index or 0) - 1
|
|
24
|
+
end
|
|
20
25
|
_G.string.indexOfLast = function(____string, predicate)
|
|
21
26
|
for i = #____string, 1, -1 do
|
|
22
27
|
if predicate(sub(____string, i, i)) then
|
|
@@ -31,4 +36,13 @@ end
|
|
|
31
36
|
_G.string.isNotBlank = function(____string)
|
|
32
37
|
return (match(____string, "^%s*$")) == nil
|
|
33
38
|
end
|
|
39
|
+
_G.string.count = function(____string, predicate)
|
|
40
|
+
local result = 0
|
|
41
|
+
for i = 1, #____string do
|
|
42
|
+
if predicate(sub(____string, i, i)) then
|
|
43
|
+
result = result + 1
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
return result
|
|
47
|
+
end
|
|
34
48
|
return ____exports
|
package/util/stream.d.ts
CHANGED
package/utility/arrays.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
/// <reference types="@typescript-to-lua/language-extensions" />
|
|
2
1
|
/** @noSelfInFile */
|
|
3
2
|
import { TupleOf } from "./types";
|
|
4
|
-
export declare const
|
|
3
|
+
export declare const emptyArray: <T>() => readonly T[];
|
|
5
4
|
export declare const joinToString: <T>(array: readonly T[], separator: string, transform?: (element: T) => string) => string;
|
|
6
|
-
export declare const arrayOfNotNull: <T>(...elements: readonly (T |
|
|
5
|
+
export declare const arrayOfNotNull: <T>(...elements: readonly (T | undefined | null)[]) => T[];
|
|
7
6
|
export declare const array: <T, N extends number>(length: N, initialize: (index: number) => T) => TupleOf<T, N>;
|
|
8
7
|
export declare const toLuaSet: <T extends AnyNotNil>(array: readonly T[]) => LuaSet<T>;
|
|
9
|
-
export declare const forEach: <T, Args extends any[]>(array: readonly T[], consumerOrKey:
|
|
8
|
+
export declare const forEach: <T, Args extends any[]>(array: readonly T[], consumerOrKey: ((value: T, ...args: Args) => void) | KeysOfType<T, (this: T, ...args: Args) => void>, ...args: Args) => void;
|
|
10
9
|
export declare const all: {
|
|
11
10
|
<T>(array: readonly T[], transform: (value: T) => boolean): boolean;
|
|
12
11
|
<T>(array: readonly T[], key: KeysOfType<T, boolean>): boolean;
|
|
@@ -23,6 +22,7 @@ export declare const mapToLuaSet: {
|
|
|
23
22
|
<T, R extends AnyNotNil>(array: readonly T[], transform: (value: T) => R): LuaSet<R>;
|
|
24
23
|
<T, K extends KeysOfType<T, AnyNotNil>>(array: readonly T[], key: K): LuaSet<T[K] extends AnyNotNil ? T[K] : never>;
|
|
25
24
|
};
|
|
25
|
+
export declare const flatten: <T>(array: readonly (readonly T[])[]) => T[];
|
|
26
26
|
export declare const flatMap: {
|
|
27
27
|
<T, R>(array: readonly T[], transform: (value: T) => readonly R[]): R[];
|
|
28
28
|
<T, K extends KeysOfType<T, readonly any[]>>(array: readonly T[], key: K): (T[K] extends readonly (infer R)[] ? R : never)[];
|
|
@@ -33,7 +33,10 @@ export declare const flatMapToLuaSet: {
|
|
|
33
33
|
};
|
|
34
34
|
export declare const mapIndexed: <T, R>(array: readonly T[], transform: (index: number, value: T) => R) => R[];
|
|
35
35
|
export declare const associate: <T, K extends AnyNotNil, V>(array: readonly T[], keySelector: (value: T) => K, valueSelector: (value: T) => V) => LuaMap<K, V>;
|
|
36
|
-
export declare const associateBy:
|
|
36
|
+
export declare const associateBy: {
|
|
37
|
+
<K extends AnyNotNil, V>(array: readonly V[], keySelector: (value: V) => K): LuaMap<K, V>;
|
|
38
|
+
<K extends KeysOfType<V, AnyNotNil>, V>(array: readonly V[], keySelector: K): LuaMap<V[K] extends AnyNotNil ? V[K] : never, V>;
|
|
39
|
+
};
|
|
37
40
|
export declare const associateByIndexed: <K extends AnyNotNil, V>(array: readonly V[], keySelector: (index: number, value: V) => K) => LuaMap<K, V>;
|
|
38
41
|
export declare const associateWith: <K extends AnyNotNil, V>(array: readonly K[], valueSelector: (value: K) => V) => LuaMap<K, V>;
|
|
39
42
|
export declare const associateWithIndexed: <K extends AnyNotNil, V>(array: readonly K[], valueSelector: (index: number, value: K) => V) => LuaMap<K, V>;
|
|
@@ -42,10 +45,14 @@ export declare const average: (array: readonly number[]) => number;
|
|
|
42
45
|
export declare const sum: (array: readonly number[]) => number;
|
|
43
46
|
export declare const product: (array: readonly number[]) => number;
|
|
44
47
|
export declare const max: (array: readonly number[]) => number;
|
|
48
|
+
export declare const maxBy: {
|
|
49
|
+
<T, Args extends any[]>(array: readonly T[], selector: (value: T, ...args: Args) => number, ...args: Args): T | undefined;
|
|
50
|
+
<T, K extends KeysOfType<T, number>>(array: readonly T[], key: K): T | undefined;
|
|
51
|
+
};
|
|
45
52
|
export declare const intersperse: <T>(array: readonly T[], delimiter: T) => T[];
|
|
46
53
|
export declare const zip: <T, R, V>(array: readonly T[], otherArray: readonly R[], transform: (value: T, otherValue: R) => V) => V[];
|
|
47
54
|
export declare const chunked: <T>(array: readonly T[], size: number) => T[][];
|
|
48
|
-
export declare const sortBy: <T, R>(array: T[], selector:
|
|
55
|
+
export declare const sortBy: <T, R>(array: T[], selector: ((value: T) => R) | KeysOfType<T, R>) => void;
|
|
49
56
|
export declare const sortedBy: {
|
|
50
57
|
<T, R>(array: readonly T[], selector: (value: T) => R): T[];
|
|
51
58
|
<T, K extends keyof T>(array: readonly T[], key: K): T[];
|
package/utility/arrays.lua
CHANGED
|
@@ -3,12 +3,17 @@ local __TS__New = ____lualib.__TS__New
|
|
|
3
3
|
local ____exports = {}
|
|
4
4
|
local ____exception = require("exception")
|
|
5
5
|
local IllegalArgumentException = ____exception.IllegalArgumentException
|
|
6
|
+
local ____functions = require("utility.functions")
|
|
7
|
+
local identity = ____functions.identity
|
|
6
8
|
local mathMax = math.max
|
|
7
9
|
local mathMin = math.min
|
|
8
10
|
local select = _G.select
|
|
9
11
|
local tableConcat = table.concat
|
|
10
12
|
local tableSort = table.sort
|
|
11
|
-
|
|
13
|
+
local EMPTY_ARRAY = {}
|
|
14
|
+
____exports.emptyArray = function()
|
|
15
|
+
return EMPTY_ARRAY
|
|
16
|
+
end
|
|
12
17
|
____exports.joinToString = function(array, separator, transform)
|
|
13
18
|
if transform == nil then
|
|
14
19
|
transform = tostring
|
|
@@ -117,6 +122,7 @@ ____exports.mapToLuaSet = function(array, transform)
|
|
|
117
122
|
end
|
|
118
123
|
return result
|
|
119
124
|
end
|
|
125
|
+
____exports.flatten = function(array) return ____exports.flatMap(array, identity) end
|
|
120
126
|
____exports.flatMap = function(array, transform)
|
|
121
127
|
local result = {}
|
|
122
128
|
local k = 1
|
|
@@ -175,9 +181,16 @@ ____exports.associate = function(array, keySelector, valueSelector)
|
|
|
175
181
|
end
|
|
176
182
|
____exports.associateBy = function(array, keySelector)
|
|
177
183
|
local result = {}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
184
|
+
if type(keySelector) == "function" then
|
|
185
|
+
for i = 1, #array do
|
|
186
|
+
local value = array[i]
|
|
187
|
+
result[keySelector(value)] = value
|
|
188
|
+
end
|
|
189
|
+
else
|
|
190
|
+
for i = 1, #array do
|
|
191
|
+
local value = array[i]
|
|
192
|
+
result[value[keySelector]] = value
|
|
193
|
+
end
|
|
181
194
|
end
|
|
182
195
|
return result
|
|
183
196
|
end
|
|
@@ -248,6 +261,30 @@ ____exports.max = function(array)
|
|
|
248
261
|
end
|
|
249
262
|
return mathMax(table.unpack(array))
|
|
250
263
|
end
|
|
264
|
+
____exports.maxBy = function(array, selector, ...)
|
|
265
|
+
local result = nil
|
|
266
|
+
local maxValue = -math.huge
|
|
267
|
+
if type(selector) == "function" then
|
|
268
|
+
for i = 1, #array do
|
|
269
|
+
local element = array[i]
|
|
270
|
+
local value = selector(element, ...)
|
|
271
|
+
if value > maxValue then
|
|
272
|
+
result = element
|
|
273
|
+
maxValue = value
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
else
|
|
277
|
+
for i = 1, #array do
|
|
278
|
+
local element = array[i]
|
|
279
|
+
local value = element[selector]
|
|
280
|
+
if value > maxValue then
|
|
281
|
+
result = element
|
|
282
|
+
maxValue = value
|
|
283
|
+
end
|
|
284
|
+
end
|
|
285
|
+
end
|
|
286
|
+
return result
|
|
287
|
+
end
|
|
251
288
|
____exports.intersperse = function(array, delimiter)
|
|
252
289
|
local result = {}
|
|
253
290
|
local length = #array
|
package/utility/bit-set.d.ts
CHANGED
package/utility/functions.d.ts
CHANGED
|
@@ -3,3 +3,4 @@ export declare const apply: {
|
|
|
3
3
|
<T, ConsumerParameters extends any[]>(object: T, consumer: (value: T, ...parameters: ConsumerParameters) => void, ...parameters: ConsumerParameters): T;
|
|
4
4
|
<T, ConsumerParameters extends any[], K extends KeysOfType<T, (...parameters: ConsumerParameters) => void>>(object: T, key: K, ...parameters: ConsumerParameters): T;
|
|
5
5
|
};
|
|
6
|
+
export declare const identity: <T>(value: T) => T;
|
package/utility/functions.lua
CHANGED
package/utility/lazy.lua
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local rawset = _G.rawset
|
|
3
|
+
local setmetatable = _G.setmetatable
|
|
4
|
+
____exports.lazyRecord = function(initializer)
|
|
5
|
+
return setmetatable(
|
|
6
|
+
{},
|
|
7
|
+
{__index = function(self, key)
|
|
8
|
+
local value = initializer(key)
|
|
9
|
+
rawset(self, key, value)
|
|
10
|
+
return value
|
|
11
|
+
end}
|
|
12
|
+
)
|
|
13
|
+
end
|
|
14
|
+
return ____exports
|
package/utility/linked-set.d.ts
CHANGED
|
@@ -1,13 +1,33 @@
|
|
|
1
|
-
/// <reference types="@typescript-to-lua/language-extensions" />
|
|
2
1
|
/** @noSelfInFile */
|
|
2
|
+
import { NonEmptyArray, ReadonlyNonEmptyArray } from "./types";
|
|
3
3
|
type IteratorState<T extends AnyNotNil> = {
|
|
4
4
|
t: LuaMap<T, T>;
|
|
5
5
|
n?: T;
|
|
6
6
|
};
|
|
7
|
-
|
|
8
|
-
readonly
|
|
7
|
+
type OneSidedTypeGuard = {
|
|
8
|
+
readonly __oneSidedTypeGuard: unique symbol;
|
|
9
|
+
};
|
|
10
|
+
export interface ReadonlyLinkedSet<T extends AnyNotNil> extends LuaPairsKeyIterable<T> {
|
|
11
|
+
copyOf(): LinkedSet<T>;
|
|
12
|
+
first(): T | undefined;
|
|
13
|
+
last(): T | undefined;
|
|
14
|
+
next(key: T): T | undefined;
|
|
15
|
+
previous(key: T): T | undefined;
|
|
16
|
+
contains(key: AnyNotNil): key is T & OneSidedTypeGuard;
|
|
17
|
+
size: number;
|
|
18
|
+
forEach<Args extends any[]>(action: (value: T, ...args: Args) => void, ...args: Args): void;
|
|
19
|
+
toArray(): T[];
|
|
20
|
+
sumOf(selector: ((value: T) => number) | KeysOfType<T, number>): number;
|
|
21
|
+
}
|
|
22
|
+
export interface ReadonlyNonEmptyLinkedSet<T extends AnyNotNil> extends ReadonlyLinkedSet<T> {
|
|
23
|
+
first(): T;
|
|
24
|
+
last(): T;
|
|
25
|
+
toArray(): NonEmptyArray<T>;
|
|
26
|
+
}
|
|
27
|
+
export interface LinkedSet<T extends AnyNotNil> extends LuaPairsKeyIterable<T> {
|
|
28
|
+
readonly __linkedSet: unique symbol;
|
|
9
29
|
}
|
|
10
|
-
export declare class LinkedSet<T extends AnyNotNil> {
|
|
30
|
+
export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet<T> {
|
|
11
31
|
private n;
|
|
12
32
|
private p;
|
|
13
33
|
private f?;
|
|
@@ -20,9 +40,7 @@ export declare class LinkedSet<T extends AnyNotNil> {
|
|
|
20
40
|
previous(key: T): T | undefined;
|
|
21
41
|
add(key: T): boolean;
|
|
22
42
|
remove(key: T): boolean;
|
|
23
|
-
contains(key: AnyNotNil): key is T &
|
|
24
|
-
readonly __oneSidedTypeGuard: unique symbol;
|
|
25
|
-
};
|
|
43
|
+
contains(key: AnyNotNil): key is T & OneSidedTypeGuard;
|
|
26
44
|
clear(): void;
|
|
27
45
|
get size(): number;
|
|
28
46
|
forEach<Args extends any[]>(action: (value: T, ...args: Args) => void, ...args: Args): void;
|
|
@@ -31,6 +49,11 @@ export declare class LinkedSet<T extends AnyNotNil> {
|
|
|
31
49
|
sortBy<R>(selector: ((value: T) => R) | KeysOfType<T, R>): void;
|
|
32
50
|
protected __pairs(this: LinkedSet<T>): LuaIterator<T | undefined, IteratorState<T>>;
|
|
33
51
|
}
|
|
34
|
-
export declare const
|
|
35
|
-
export declare const
|
|
52
|
+
export declare const emptyLinkedSet: <T extends AnyNotNil>() => ReadonlyLinkedSet<T>;
|
|
53
|
+
export declare const mutableLinkedSet: <T extends AnyNotNil>() => LinkedSet<T>;
|
|
54
|
+
export declare const mutableLinkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => LinkedSet<T>;
|
|
55
|
+
export declare const mutableLinkedSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | undefined | null)[]) => LinkedSet<T>;
|
|
56
|
+
export declare const linkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => ReadonlyLinkedSet<T>;
|
|
57
|
+
export declare const linkedSetOfNotNull: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => ReadonlyLinkedSet<T>;
|
|
58
|
+
export declare const nonEmptyLinkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyNonEmptyArray<T>) => ReadonlyNonEmptyLinkedSet<T>;
|
|
36
59
|
export {};
|