warscript 0.0.1-dev.6389eac → 0.0.1-dev.671d3cf

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.
@@ -7,6 +7,9 @@ local __TS__Class = ____lualib.__TS__Class
7
7
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
8
8
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
9
9
  local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
10
+ local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
11
+ local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
12
+ local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
10
13
  local __TS__InstanceOf = ____lualib.__TS__InstanceOf
11
14
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
12
15
  local Set = ____lualib.Set
@@ -279,16 +282,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
279
282
  end
280
283
  local function dispatch(event, idGetter, argsGetter)
281
284
  local initialized = false
282
- local x = {}
283
285
  return setmetatable(
284
- x,
286
+ {},
285
287
  {
286
288
  __index = function(self, id)
287
289
  if type(id) ~= "number" then
288
290
  return event[id]
289
291
  end
290
292
  if not initialized then
291
- local invoke = Event.invoke
292
293
  event:addListener(function(...)
293
294
  local id = idGetter(...)
294
295
  local dispatched = rawget(self, id)
@@ -326,7 +327,6 @@ local function dispatchAbility(event)
326
327
  return event[id]
327
328
  end
328
329
  if not initialized then
329
- local invoke = Event.invoke
330
330
  event:addListener(function(unit, ability, ...)
331
331
  local dispatched = rawget(self, ability.typeId)
332
332
  if dispatched ~= nil then
@@ -817,8 +817,15 @@ end
817
817
  function Unit.prototype.kill(self)
818
818
  killUnit(self.handle)
819
819
  end
820
- function Unit.prototype.revive(self, pos, doEffect)
821
- ReviveHero(self.handle, pos.x, pos.y, doEffect)
820
+ function Unit.prototype.revive(self, x, y, doEffect)
821
+ local ____ReviveHero_4 = ReviveHero
822
+ local ____array_3 = __TS__SparseArrayNew(self.handle, x, y)
823
+ local ____doEffect_2 = doEffect
824
+ if ____doEffect_2 == nil then
825
+ ____doEffect_2 = false
826
+ end
827
+ __TS__SparseArrayPush(____array_3, ____doEffect_2)
828
+ ____ReviveHero_4(__TS__SparseArraySpread(____array_3))
822
829
  end
823
830
  function Unit.prototype.healTarget(self, target, amount)
824
831
  if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
@@ -1385,13 +1392,13 @@ __TS__SetDescriptor(
1385
1392
  end,
1386
1393
  set = function(self, isTeamGlowVisible)
1387
1394
  showUnitTeamGlow(self.handle, isTeamGlowVisible)
1388
- local ____temp_2
1395
+ local ____temp_5
1389
1396
  if not isTeamGlowVisible then
1390
- ____temp_2 = true
1397
+ ____temp_5 = true
1391
1398
  else
1392
- ____temp_2 = nil
1399
+ ____temp_5 = nil
1393
1400
  end
1394
- self[105] = ____temp_2
1401
+ self[105] = ____temp_5
1395
1402
  end
1396
1403
  },
1397
1404
  true
@@ -2055,7 +2062,6 @@ Unit.onDecay = __TS__New(
2055
2062
  Unit.onResurrect = __TS__New(
2056
2063
  InitializingEvent,
2057
2064
  function(event)
2058
- local invoke = Event.invoke
2059
2065
  local dead = setmetatable({}, {__mode = "k"})
2060
2066
  ____exports.Unit.deathEvent:addListener(function(unit)
2061
2067
  dead[unit] = true
@@ -2071,10 +2077,15 @@ Unit.onResurrect = __TS__New(
2071
2077
  Unit.morphEvent = __TS__New(
2072
2078
  InitializingEvent,
2073
2079
  function(event)
2080
+ local function ifNotLeft(unit)
2081
+ local handle = unit.handle
2082
+ if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
2083
+ invoke(event, unit)
2084
+ end
2085
+ end
2074
2086
  ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2075
2087
  if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
2076
- assert(unitAddAbility(unit.handle, morphDetectAbilityId))
2077
- Timer:run(Event.invoke, event, unit)
2088
+ Timer:run(ifNotLeft, unit)
2078
2089
  end
2079
2090
  end)
2080
2091
  end
@@ -2112,27 +2123,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
2112
2123
  Unit.onTargetCast = dispatchId(__TS__New(
2113
2124
  InitializingEvent,
2114
2125
  function(event)
2115
- local invoke = Event.invoke
2116
2126
  local function listener(unit, id)
2117
- local ____GetSpellTargetUnit_result_5
2127
+ local ____GetSpellTargetUnit_result_8
2118
2128
  if GetSpellTargetUnit() then
2119
- ____GetSpellTargetUnit_result_5 = ____exports.Unit:of(GetSpellTargetUnit())
2129
+ ____GetSpellTargetUnit_result_8 = ____exports.Unit:of(GetSpellTargetUnit())
2120
2130
  else
2121
- local ____GetSpellTargetItem_result_4
2131
+ local ____GetSpellTargetItem_result_7
2122
2132
  if GetSpellTargetItem() then
2123
- ____GetSpellTargetItem_result_4 = Item:of(GetSpellTargetItem())
2133
+ ____GetSpellTargetItem_result_7 = Item:of(GetSpellTargetItem())
2124
2134
  else
2125
- local ____GetSpellTargetDestructable_result_3
2135
+ local ____GetSpellTargetDestructable_result_6
2126
2136
  if GetSpellTargetDestructable() then
2127
- ____GetSpellTargetDestructable_result_3 = Destructable:of(GetSpellTargetDestructable())
2137
+ ____GetSpellTargetDestructable_result_6 = Destructable:of(GetSpellTargetDestructable())
2128
2138
  else
2129
- ____GetSpellTargetDestructable_result_3 = nil
2139
+ ____GetSpellTargetDestructable_result_6 = nil
2130
2140
  end
2131
- ____GetSpellTargetItem_result_4 = ____GetSpellTargetDestructable_result_3
2141
+ ____GetSpellTargetItem_result_7 = ____GetSpellTargetDestructable_result_6
2132
2142
  end
2133
- ____GetSpellTargetUnit_result_5 = ____GetSpellTargetItem_result_4
2143
+ ____GetSpellTargetUnit_result_8 = ____GetSpellTargetItem_result_7
2134
2144
  end
2135
- local target = ____GetSpellTargetUnit_result_5
2145
+ local target = ____GetSpellTargetUnit_result_8
2136
2146
  if target then
2137
2147
  invoke(event, unit, id, target)
2138
2148
  end
@@ -2329,7 +2339,6 @@ Unit.autoAttackStartEvent = __TS__New(
2329
2339
  )
2330
2340
  Unit.onDamaging = (function()
2331
2341
  local event = __TS__New(Event)
2332
- local invoke = Event.invoke
2333
2342
  local trigger = CreateTrigger()
2334
2343
  TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
2335
2344
  TriggerAddCondition(
@@ -2428,7 +2437,6 @@ end)()
2428
2437
  Unit.onDamage = __TS__New(
2429
2438
  InitializingEvent,
2430
2439
  function(event)
2431
- local invoke = Event.invoke
2432
2440
  local trigger = CreateTrigger()
2433
2441
  TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
2434
2442
  TriggerAddCondition(
package/event.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** @noSelfInFile */
2
- export type EventListener<T extends any[]> = (...args: T) => void;
2
+ export type EventListener<T extends any[]> = (this: void, ...args: T) => void;
3
3
  export declare const enum EventListenerPriority {
4
4
  LOWEST = 0,
5
5
  LOW = 1,
@@ -37,7 +37,7 @@ export type EventDispatchTable<EventType extends Event<any>, KeyType extends num
37
37
  };
38
38
  export type DispatchingEvent<P extends any[], T extends Event<P> = Event<P>, S extends Event<P> = Event<P>> = T & EventDispatchTable<S>;
39
39
  export declare const createDispatchingEvent: {
40
- <T extends Event<any>, S extends Event<EventParameters<T>>>(underlyingEvent: T, extractKey: (...args: EventParameters<T>) => number, ...createEvent: [...(Event<any> extends S ? [(() => S)?] : [() => S])]): DispatchingEvent<EventParameters<T>, T>;
40
+ <T extends Event<any>, S extends Event<EventParameters<T>>>(underlyingEvent: T, extractKey: (this: void, ...args: EventParameters<T>) => number, invokeEvent?: (this: void, event: S, ...args: EventParameters<T>) => unknown, ...createEvent: [...(Event<any> extends S ? [((this: void) => S)?] : [(this: void) => S])]): DispatchingEvent<EventParameters<T>, T, S>;
41
41
  };
42
42
  export declare class DependentInitializingEvent<T extends any[], R extends any[]> extends InitializingEvent<R, EventListener<T>> {
43
43
  constructor(underlyingEvent: Event<T>, priority: EventListenerPriority, collector: (...args: T) => LuaMultiReturn<[false] | [true, ...R]>);
package/event.lua CHANGED
@@ -146,8 +146,13 @@ function TriggerEvent.prototype.____constructor(self, r, c)
146
146
  end
147
147
  )
148
148
  end
149
- ____exports.createDispatchingEvent = function(underlyingEvent, extractKey, createEvent)
150
- local actualCreateEvent = createEvent or (function() return __TS__New(____exports.Event) end)
149
+ ____exports.createDispatchingEvent = function(underlyingEvent, extractKey, invokeEvent, createEvent)
150
+ if invokeEvent == nil then
151
+ invokeEvent = ____exports.Event.invoke
152
+ end
153
+ if createEvent == nil then
154
+ createEvent = function() return __TS__New(____exports.Event) end
155
+ end
151
156
  local initialized = false
152
157
  return setmetatable(
153
158
  {},
@@ -157,17 +162,16 @@ ____exports.createDispatchingEvent = function(underlyingEvent, extractKey, creat
157
162
  return underlyingEvent[id]
158
163
  end
159
164
  if not initialized then
160
- local invoke = ____exports.Event.invoke
161
165
  underlyingEvent:addListener(function(...)
162
166
  local key = extractKey(...)
163
167
  local event = rawget(self, key)
164
168
  if event then
165
- invoke(event, ...)
169
+ invokeEvent(event, ...)
166
170
  end
167
171
  end)
168
172
  initialized = true
169
173
  end
170
- local event = actualCreateEvent()
174
+ local event = createEvent()
171
175
  rawset(self, id, event)
172
176
  return event
173
177
  end,
package/lualib_bundle.lua CHANGED
@@ -1094,6 +1094,11 @@ do
1094
1094
  end
1095
1095
  if __TS__StringIncludes(_VERSION, "Lua 5.0") then
1096
1096
  return debug.traceback(("[Level " .. tostring(level)) .. "]")
1097
+ elseif _VERSION == "Lua 5.1" then
1098
+ return string.sub(
1099
+ debug.traceback("", level),
1100
+ 2
1101
+ )
1097
1102
  else
1098
1103
  return debug.traceback(nil, level)
1099
1104
  end
@@ -1102,7 +1107,7 @@ do
1102
1107
  return function(self)
1103
1108
  local description = getDescription(self)
1104
1109
  local caller = debug.getinfo(3, "f")
1105
- local isClassicLua = __TS__StringIncludes(_VERSION, "Lua 5.0") or _VERSION == "Lua 5.1"
1110
+ local isClassicLua = __TS__StringIncludes(_VERSION, "Lua 5.0")
1106
1111
  if isClassicLua or caller and caller.func ~= error then
1107
1112
  return description
1108
1113
  else
@@ -1126,7 +1131,7 @@ do
1126
1131
  end
1127
1132
  self.message = message
1128
1133
  self.name = "Error"
1129
- self.stack = getErrorStack(nil, self.constructor.new)
1134
+ self.stack = getErrorStack(nil, __TS__New)
1130
1135
  local metatable = getmetatable(self)
1131
1136
  if metatable and not metatable.__errorToStringPatched then
1132
1137
  metatable.__errorToStringPatched = true
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.6389eac",
4
+ "version": "0.0.1-dev.671d3cf",
5
5
  "description": "A typescript library for Warcraft III using Warpack.",
6
6
  "keywords": [
7
7
  "warcraft",
@@ -24,7 +24,7 @@
24
24
  "@warscript/language-extensions": "^0.0.1",
25
25
  "@warscript/tstl-plugin": "^0.0.4",
26
26
  "lua-types": "^2.13.1",
27
- "warpack": "0.0.1-dev.07dd222"
27
+ "warpack": "0.0.1-dev.880fc91"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@typescript-eslint/eslint-plugin": "^8.13.0",
package/property.d.ts ADDED
@@ -0,0 +1,55 @@
1
+ /** @noSelfInFile */
2
+ import { Player } from "./core/types/player";
3
+ import { Event } from "./event";
4
+ export declare class PersistentPropertiesConfig {
5
+ static defaultFileName: string;
6
+ }
7
+ declare const enum PropertyPropertyKey {
8
+ DEFAULT_VALUE = 0,
9
+ VALUE = 1,
10
+ IS_CHANGED = 2
11
+ }
12
+ export declare class Property<T> {
13
+ readonly valueChangeEvent: Event<[newValue: T, oldValue: T]>;
14
+ private [PropertyPropertyKey.DEFAULT_VALUE];
15
+ private [PropertyPropertyKey.VALUE];
16
+ private [PropertyPropertyKey.IS_CHANGED]?;
17
+ constructor(defaultValue: T);
18
+ get defaultValue(): T;
19
+ set defaultValue(defaultValue: T);
20
+ get value(): T;
21
+ set value(value: T);
22
+ get isChanged(): boolean;
23
+ reset(): boolean;
24
+ set(value: T): boolean;
25
+ get(): T;
26
+ }
27
+ declare const enum PlayerPropertyPropertyKey {
28
+ DEFAULT_VALUE = 0,
29
+ VALUE_BY_PLAYER = 1,
30
+ IS_CHANGED_BY_PLAYER = 2
31
+ }
32
+ export declare class PlayerProperty<T> {
33
+ readonly valueChangeEvent: Event<[player: Player, newValue: T, oldValue: T]>;
34
+ private readonly [PlayerPropertyPropertyKey.DEFAULT_VALUE];
35
+ private readonly [PlayerPropertyPropertyKey.VALUE_BY_PLAYER];
36
+ private readonly [PlayerPropertyPropertyKey.IS_CHANGED_BY_PLAYER];
37
+ constructor(defaultValue: T);
38
+ isChanged(player: Player): boolean;
39
+ reset(player: Player): boolean;
40
+ set(player: Player, value: T): boolean;
41
+ get(player: Player): T;
42
+ }
43
+ export declare class PersistentProperty<T extends undefined | boolean | number | string> extends Property<T> {
44
+ readonly id: number;
45
+ constructor(id: number, defaultValue: T, valueChangeEventListener?: (newValue: T, oldValue: T) => void);
46
+ reset(): boolean;
47
+ set(value: T): boolean;
48
+ }
49
+ export declare class PersistentPlayerProperty<T extends string | number | boolean> extends PlayerProperty<T> {
50
+ readonly id: number;
51
+ constructor(id: number, initialValue: T, valueChangeEventListener?: (player: Player, newValue: T, oldValue: T) => void);
52
+ reset(player: Player): boolean;
53
+ set(player: Player, value: T): boolean;
54
+ }
55
+ export {};
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
@@ -1,8 +0,0 @@
1
- /** @noSelfInFile */
2
- import { Rect } from "./types/rect";
3
- import { Region } from "./types/region";
4
- export declare const boundRect: Rect;
5
- export declare const boundRegion: Region;
6
- export declare const boundMin: Readonly<Vec2>;
7
- export declare const boundMax: Readonly<Vec2>;
8
- export declare const boundCenter: Readonly<Vec2>;