isaacscript-common 1.2.60 → 1.2.63
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/dist/callbacks/postPurchase.lua +36 -37
- package/dist/callbacks/postTransformation.lua +8 -14
- package/dist/features/saveDataManager/save.lua +4 -0
- package/dist/functions/array.lua +1 -2
- package/dist/types/DefaultMap.d.ts +31 -9
- package/dist/types/DefaultMap.lua +11 -10
- package/package.json +1 -1
|
@@ -3,8 +3,10 @@ local ____lualib = require("lualib_bundle")
|
|
|
3
3
|
local Map = ____lualib.Map
|
|
4
4
|
local __TS__New = ____lualib.__TS__New
|
|
5
5
|
local __TS__Iterator = ____lualib.__TS__Iterator
|
|
6
|
+
local __TS__ArrayFind = ____lualib.__TS__ArrayFind
|
|
7
|
+
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
|
|
6
8
|
local ____exports = {}
|
|
7
|
-
local hasSubscriptions, postUpdate, checkPickupsPurchased, storePickupsInMap, storePlayersInMap,
|
|
9
|
+
local hasSubscriptions, postUpdate, checkPickupsPurchased, getPlayerThatIsNoLongerHoldingAnItem, storePickupsInMap, storePlayersInMap, pickupAtIndexStillExists, v
|
|
8
10
|
local ____exports = require("features.saveDataManager.exports")
|
|
9
11
|
local saveDataManager = ____exports.saveDataManager
|
|
10
12
|
local ____entity = require("functions.entity")
|
|
@@ -33,44 +35,42 @@ function checkPickupsPurchased(self, pickups, players)
|
|
|
33
35
|
local index = ____value[1]
|
|
34
36
|
local pickupDescription = ____value[2]
|
|
35
37
|
do
|
|
36
|
-
if
|
|
38
|
+
if pickupAtIndexStillExists(nil, index, pickups) then
|
|
37
39
|
goto __continue7
|
|
38
40
|
end
|
|
39
41
|
v.room.pickupMap:delete(index)
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
postPurchaseFire(
|
|
50
|
-
nil,
|
|
51
|
-
player,
|
|
52
|
-
pickupDescription.variant,
|
|
53
|
-
pickupDescription.subtype,
|
|
54
|
-
pickupDescription.price
|
|
55
|
-
)
|
|
56
|
-
break
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
::__continue9::
|
|
42
|
+
local player = getPlayerThatIsNoLongerHoldingAnItem(nil, players)
|
|
43
|
+
if player ~= nil then
|
|
44
|
+
postPurchaseFire(
|
|
45
|
+
nil,
|
|
46
|
+
player,
|
|
47
|
+
pickupDescription.variant,
|
|
48
|
+
pickupDescription.subtype,
|
|
49
|
+
pickupDescription.price
|
|
50
|
+
)
|
|
60
51
|
end
|
|
61
52
|
end
|
|
62
53
|
::__continue7::
|
|
63
54
|
end
|
|
64
55
|
end
|
|
65
|
-
function
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
v.room.
|
|
56
|
+
function getPlayerThatIsNoLongerHoldingAnItem(self, players)
|
|
57
|
+
return __TS__ArrayFind(
|
|
58
|
+
players,
|
|
59
|
+
function(____, player)
|
|
60
|
+
local playerHoldingItem = player:IsHoldingItem()
|
|
61
|
+
local playerIndex = getPlayerIndex(nil, player)
|
|
62
|
+
local playerHoldingItemLastFrame = v.room.playerHoldingItemLastFrameMap:get(playerIndex)
|
|
63
|
+
return playerHoldingItemLastFrame == false and playerHoldingItem
|
|
72
64
|
end
|
|
73
|
-
|
|
65
|
+
)
|
|
66
|
+
end
|
|
67
|
+
function storePickupsInMap(self, pickups)
|
|
68
|
+
local pickupsWithPrice = __TS__ArrayFilter(
|
|
69
|
+
pickups,
|
|
70
|
+
function(____, pickup) return pickup.Price ~= 0 end
|
|
71
|
+
)
|
|
72
|
+
for ____, pickup in ipairs(pickupsWithPrice) do
|
|
73
|
+
v.room.pickupMap:set(pickup.Index, {variant = pickup.Variant, subtype = pickup.SubType, price = pickup.Price})
|
|
74
74
|
end
|
|
75
75
|
end
|
|
76
76
|
function storePlayersInMap(self, players)
|
|
@@ -80,13 +80,12 @@ function storePlayersInMap(self, players)
|
|
|
80
80
|
v.room.playerHoldingItemLastFrameMap:set(playerIndex, holdingItem)
|
|
81
81
|
end
|
|
82
82
|
end
|
|
83
|
-
function
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
return false
|
|
83
|
+
function pickupAtIndexStillExists(self, index, pickups)
|
|
84
|
+
local pickupAtIndex = __TS__ArrayFind(
|
|
85
|
+
pickups,
|
|
86
|
+
function(____, pickup) return pickup.Index end
|
|
87
|
+
)
|
|
88
|
+
return pickupAtIndex ~= nil and pickupAtIndex:Exists()
|
|
90
89
|
end
|
|
91
90
|
v = {room = {
|
|
92
91
|
pickupMap = __TS__New(Map),
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
local ____lualib = require("lualib_bundle")
|
|
3
3
|
local Set = ____lualib.Set
|
|
4
4
|
local __TS__New = ____lualib.__TS__New
|
|
5
|
-
local
|
|
5
|
+
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
|
|
6
6
|
local ____exports = {}
|
|
7
7
|
local hasSubscriptions, postPEffectUpdateReordered, VALID_TRANSFORMATIONS, v
|
|
8
8
|
local ____exports = require("features.saveDataManager.exports")
|
|
9
9
|
local saveDataManager = ____exports.saveDataManager
|
|
10
|
-
local
|
|
11
|
-
local
|
|
10
|
+
local ____math = require("functions.math")
|
|
11
|
+
local range = ____math.range
|
|
12
12
|
local ____player = require("functions.player")
|
|
13
13
|
local getPlayerIndex = ____player.getPlayerIndex
|
|
14
14
|
local ____DefaultMap = require("types.DefaultMap")
|
|
@@ -37,17 +37,11 @@ function postPEffectUpdateReordered(self, player)
|
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
local UNUSED_TRANSFORMATIONS = __TS__New(Set, {PlayerForm.PLAYERFORM_FLIGHT})
|
|
40
|
-
local
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
__TS__ArrayPush(tempTransformations, i)
|
|
46
|
-
end
|
|
47
|
-
i = i + 1
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
VALID_TRANSFORMATIONS = copyArray(nil, tempTransformations)
|
|
40
|
+
local ALL_TRANSFORMATIONS = range(nil, 0, PlayerForm.NUM_PLAYER_FORMS - 1)
|
|
41
|
+
VALID_TRANSFORMATIONS = __TS__ArrayFilter(
|
|
42
|
+
ALL_TRANSFORMATIONS,
|
|
43
|
+
function(____, playerForm) return not UNUSED_TRANSFORMATIONS:has(playerForm) end
|
|
44
|
+
)
|
|
51
45
|
v = {run = {playersTransformationsMap = __TS__New(
|
|
52
46
|
DefaultMap,
|
|
53
47
|
function() return __TS__New(DefaultMap, false) end
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
--[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
|
|
2
2
|
local ____lualib = require("lualib_bundle")
|
|
3
3
|
local Map = ____lualib.Map
|
|
4
|
+
local __TS__ObjectKeys = ____lualib.__TS__ObjectKeys
|
|
4
5
|
local ____exports = {}
|
|
5
6
|
local getAllSaveDataToWriteToDisk
|
|
6
7
|
local ____deepCopy = require("functions.deepCopy")
|
|
@@ -25,6 +26,9 @@ function getAllSaveDataToWriteToDisk(self, saveDataMap, saveDataConditionalFuncM
|
|
|
25
26
|
end
|
|
26
27
|
end
|
|
27
28
|
local saveDataWithoutRoom = {persistent = saveData.persistent, run = saveData.run, level = saveData.level}
|
|
29
|
+
if #__TS__ObjectKeys(saveDataWithoutRoom) == 0 then
|
|
30
|
+
goto __continue4
|
|
31
|
+
end
|
|
28
32
|
local saveDataCopy = deepCopy(nil, saveDataWithoutRoom, SerializationType.SERIALIZE, subscriberName)
|
|
29
33
|
allSaveData[subscriberName] = saveDataCopy
|
|
30
34
|
end
|
package/dist/functions/array.lua
CHANGED
|
@@ -164,8 +164,7 @@ function ____exports.isArray(self, ____table)
|
|
|
164
164
|
local numEntries = 0
|
|
165
165
|
for key in pairs(____table) do
|
|
166
166
|
numEntries = numEntries + 1
|
|
167
|
-
|
|
168
|
-
if keyType ~= "number" then
|
|
167
|
+
if type(key) ~= "number" then
|
|
169
168
|
return false
|
|
170
169
|
end
|
|
171
170
|
end
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
declare type
|
|
2
|
-
declare type
|
|
1
|
+
declare type FactoryFunction<K, V, A extends unknown[]> = (k: K, ...extraArgs: A) => V;
|
|
2
|
+
declare type FirstArg<K, V, A extends unknown[]> = Iterable<[K, V]> | V | FactoryFunction<K, V, A>;
|
|
3
|
+
declare type SecondArg<K, V, A extends unknown[]> = V | FactoryFunction<K, V, A>;
|
|
3
4
|
/**
|
|
4
|
-
* An extended Map with
|
|
5
|
+
* An extended Map with some new methods:
|
|
5
6
|
*
|
|
6
7
|
* - `getAndSetDefault` - If the key exists, this will return the same thing as the `get` method.
|
|
7
8
|
* Otherwise, it will set a default value to the key, and then return the default value.
|
|
@@ -20,7 +21,7 @@ declare type SecondArg<K, V> = V | ((k: K) => V);
|
|
|
20
21
|
*
|
|
21
22
|
* // Initializes a new empty DefaultMap with a default value of a new Map
|
|
22
23
|
* const defaultMapWithFactory = new DefaultMap<string, Map<string, string>>(() => {
|
|
23
|
-
* return new Map
|
|
24
|
+
* return new Map();
|
|
24
25
|
* })
|
|
25
26
|
*
|
|
26
27
|
* // Initializes a DefaultMap with some initial values and a default value of "bar"
|
|
@@ -29,25 +30,46 @@ declare type SecondArg<K, V> = V | ((k: K) => V);
|
|
|
29
30
|
* ["b1", "b2"],
|
|
30
31
|
* ], "bar");
|
|
31
32
|
* ```
|
|
33
|
+
*
|
|
34
|
+
* If specified, the first argument of a factory function must always be equal to the key:
|
|
35
|
+
*
|
|
36
|
+
* ```ts
|
|
37
|
+
* const defaultMapWithConditionalDefaultValue = new DefaultMap<number, number>((key: number) => {
|
|
38
|
+
* return isOdd(key) ? 0 : 1;
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* You can also specify a factory function that takes a generic amount of arguments beyond the
|
|
43
|
+
* first:
|
|
44
|
+
*
|
|
45
|
+
* ```ts
|
|
46
|
+
* const defaultMapWithExtraArgs = new DefaultMap<string, string>((_key: string, arg2: boolean) => {
|
|
47
|
+
* return arg2 ? 0 : 1;
|
|
48
|
+
* })
|
|
49
|
+
* ```
|
|
32
50
|
*/
|
|
33
|
-
export declare class DefaultMap<K, V> extends Map<K, V> {
|
|
51
|
+
export declare class DefaultMap<K, V, A extends unknown[] = []> extends Map<K, V> {
|
|
34
52
|
private defaultValue;
|
|
35
53
|
private defaultValueFactory;
|
|
36
54
|
/**
|
|
37
55
|
* See the DefaultMap documentation:
|
|
38
56
|
* https://isaacscript.github.io/isaacscript-common/classes/types_DefaultMap.DefaultMap.html
|
|
39
57
|
*/
|
|
40
|
-
constructor(iterableOrDefaultValueOrDefaultValueFactory: FirstArg<K, V>, defaultValueOrDefaultValueFactory?: SecondArg<K, V>);
|
|
58
|
+
constructor(iterableOrDefaultValueOrDefaultValueFactory: FirstArg<K, V, A>, defaultValueOrDefaultValueFactory?: SecondArg<K, V, A>);
|
|
41
59
|
/**
|
|
42
60
|
* If the key exists, this will return the same thing as the `get` method. Otherwise, it will set
|
|
43
61
|
* a default value to the key, and then return the default value.
|
|
44
62
|
*/
|
|
45
|
-
getAndSetDefault(key: K): V;
|
|
63
|
+
getAndSetDefault(key: K, ...extraArgs: A): V;
|
|
46
64
|
/**
|
|
47
65
|
* Returns the default value to be used for a new key. (If a factory function was provided during
|
|
48
66
|
* instantiation, this will execute the factory function.)
|
|
49
67
|
*/
|
|
50
|
-
getDefaultValue(key: K): V;
|
|
51
|
-
|
|
68
|
+
getDefaultValue(key: K, ...extraArgs: A): V;
|
|
69
|
+
/**
|
|
70
|
+
* Helper method for cloning the map. Returns either the default value or a reference to the
|
|
71
|
+
* factory function.
|
|
72
|
+
*/
|
|
73
|
+
getConstructorArg(): V | FactoryFunction<K, V, A>;
|
|
52
74
|
}
|
|
53
75
|
export {};
|
|
@@ -3,13 +3,15 @@ local ____lualib = require("lualib_bundle")
|
|
|
3
3
|
local __TS__Class = ____lualib.__TS__Class
|
|
4
4
|
local Map = ____lualib.Map
|
|
5
5
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
6
|
+
local __TS__TypeOf = ____lualib.__TS__TypeOf
|
|
6
7
|
local ____exports = {}
|
|
7
8
|
local parseArguments, parseArgumentsOne, parseArgumentsTwo, parseDefaultValueOrDefaultValueFactory
|
|
8
9
|
function parseArguments(self, firstArg, secondArg)
|
|
9
10
|
return secondArg == nil and parseArgumentsOne(nil, firstArg) or parseArgumentsTwo(nil, firstArg, secondArg)
|
|
10
11
|
end
|
|
11
12
|
function parseArgumentsOne(self, firstArg)
|
|
12
|
-
local
|
|
13
|
+
local arg = firstArg
|
|
14
|
+
local ____parseDefaultValueOrDefaultValueFactory_result_1 = parseDefaultValueOrDefaultValueFactory(nil, arg)
|
|
13
15
|
local defaultValue = ____parseDefaultValueOrDefaultValueFactory_result_1.defaultValue
|
|
14
16
|
local defaultValueFactory = ____parseDefaultValueOrDefaultValueFactory_result_1.defaultValueFactory
|
|
15
17
|
return {iterable = nil, defaultValue = defaultValue, defaultValueFactory = defaultValueFactory}
|
|
@@ -17,7 +19,7 @@ end
|
|
|
17
19
|
function parseArgumentsTwo(self, firstArg, secondArg)
|
|
18
20
|
local firstArgType = type(firstArg)
|
|
19
21
|
if firstArgType ~= "table" then
|
|
20
|
-
error("A DefaultMap constructor with two arguments must have the first argument be
|
|
22
|
+
error("A DefaultMap constructor with two arguments must have the first argument be the initializer list.")
|
|
21
23
|
end
|
|
22
24
|
local ____parseDefaultValueOrDefaultValueFactory_result_2 = parseDefaultValueOrDefaultValueFactory(nil, secondArg)
|
|
23
25
|
local defaultValue = ____parseDefaultValueOrDefaultValueFactory_result_2.defaultValue
|
|
@@ -25,14 +27,13 @@ function parseArgumentsTwo(self, firstArg, secondArg)
|
|
|
25
27
|
return {iterable = firstArg, defaultValue = defaultValue, defaultValueFactory = defaultValueFactory}
|
|
26
28
|
end
|
|
27
29
|
function parseDefaultValueOrDefaultValueFactory(self, arg)
|
|
28
|
-
|
|
29
|
-
if argType == "function" then
|
|
30
|
+
if type(arg) == "function" then
|
|
30
31
|
return {defaultValue = nil, defaultValueFactory = arg}
|
|
31
32
|
end
|
|
32
|
-
if
|
|
33
|
+
if type(arg) == "boolean" or type(arg) == "number" or type(arg) == "string" then
|
|
33
34
|
return {defaultValue = arg, defaultValueFactory = nil}
|
|
34
35
|
end
|
|
35
|
-
return error("A DefaultMap was instantiated with an unknown type of: " ..
|
|
36
|
+
return error("A DefaultMap was instantiated with an unknown type of: " .. __TS__TypeOf(arg))
|
|
36
37
|
end
|
|
37
38
|
____exports.DefaultMap = __TS__Class()
|
|
38
39
|
local DefaultMap = ____exports.DefaultMap
|
|
@@ -54,21 +55,21 @@ function DefaultMap.prototype.____constructor(self, iterableOrDefaultValueOrDefa
|
|
|
54
55
|
self.defaultValue = defaultValue
|
|
55
56
|
self.defaultValueFactory = defaultValueFactory
|
|
56
57
|
end
|
|
57
|
-
function DefaultMap.prototype.getAndSetDefault(self, key)
|
|
58
|
+
function DefaultMap.prototype.getAndSetDefault(self, key, ...)
|
|
58
59
|
local value = self:get(key)
|
|
59
60
|
if value ~= nil then
|
|
60
61
|
return value
|
|
61
62
|
end
|
|
62
|
-
local defaultValue = self:getDefaultValue(key)
|
|
63
|
+
local defaultValue = self:getDefaultValue(key, ...)
|
|
63
64
|
self:set(key, defaultValue)
|
|
64
65
|
return defaultValue
|
|
65
66
|
end
|
|
66
|
-
function DefaultMap.prototype.getDefaultValue(self, key)
|
|
67
|
+
function DefaultMap.prototype.getDefaultValue(self, key, ...)
|
|
67
68
|
if self.defaultValue ~= nil then
|
|
68
69
|
return self.defaultValue
|
|
69
70
|
end
|
|
70
71
|
if self.defaultValueFactory ~= nil then
|
|
71
|
-
return self:defaultValueFactory(key)
|
|
72
|
+
return self:defaultValueFactory(key, ...)
|
|
72
73
|
end
|
|
73
74
|
return error("A DefaultMap was incorrectly instantiated.")
|
|
74
75
|
end
|