isaacscript-common 20.10.0 → 20.11.0

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.
@@ -2,6 +2,7 @@ import { PlayerType } from "isaac-typescript-definitions";
2
2
  import { Feature } from "../../private/Feature";
3
3
  export declare class RunInNFrames extends Feature {
4
4
  vConditionalFunc: () => boolean;
5
+ private roomHistory;
5
6
  private postUpdate;
6
7
  private postRender;
7
8
  /**
@@ -25,8 +26,13 @@ export declare class RunInNFrames extends Feature {
25
26
  * deferred functions manually using serializable data.
26
27
  *
27
28
  * In order to use this function, you must upgrade your mod with `ISCFeature.RUN_IN_N_FRAMES`.
29
+ *
30
+ * @param func The function to run.
31
+ * @param gameFrames The amount of game frames to wait before running the function.
32
+ * @param cancelIfRoomChanges Optional. Whether or not to cancel running the function if a new
33
+ * room is loaded in the interim. Default is false.
28
34
  */
29
- runInNGameFrames(func: () => void, gameFrames: int): void;
35
+ runInNGameFrames(func: () => void, gameFrames: int, cancelIfRoomChanges?: boolean): void;
30
36
  /**
31
37
  * Supply a function to run N render frames from now in the `POST_RENDER` callback.
32
38
  *
@@ -38,8 +44,13 @@ export declare class RunInNFrames extends Feature {
38
44
  * deferred functions manually using serializable data.
39
45
  *
40
46
  * In order to use this function, you must upgrade your mod with `ISCFeature.RUN_IN_N_FRAMES`.
47
+ *
48
+ * @param func The function to run.
49
+ * @param renderFrames The amount of render frames to wait before running the function.
50
+ * @param cancelIfRoomChanges Optional. Whether or not to cancel running the function if a new
51
+ * room is loaded in the interim. Default is false.
41
52
  */
42
- runInNRenderFrames(func: () => void, renderFrames: int): void;
53
+ runInNRenderFrames(func: () => void, renderFrames: int, cancelIfRoomChanges?: boolean): void;
43
54
  /**
44
55
  * Supply a function to run on the next `POST_UPDATE` callback.
45
56
  *
@@ -69,8 +80,12 @@ export declare class RunInNFrames extends Feature {
69
80
  * deferred functions manually using serializable data.
70
81
  *
71
82
  * In order to use this function, you must upgrade your mod with `ISCFeature.RUN_IN_N_FRAMES`.
83
+ *
84
+ * @param func The function to run.
85
+ * @param cancelIfRoomChanges Optional. Whether or not to cancel running the function if a new
86
+ * room is loaded in the interim. Default is false.
72
87
  */
73
- runNextGameFrame(func: () => void): void;
88
+ runNextGameFrame(func: () => void, cancelIfRoomChanges?: boolean): void;
74
89
  /**
75
90
  * Supply a function to run on the next `POST_RENDER` callback.
76
91
  *
@@ -80,8 +95,12 @@ export declare class RunInNFrames extends Feature {
80
95
  * Note that this function will not handle saving and quitting.
81
96
  *
82
97
  * In order to use this function, you must upgrade your mod with `ISCFeature.RUN_IN_N_FRAMES`.
98
+ *
99
+ * @param func The function to run.
100
+ * @param cancelIfRoomChanges Optional. Whether or not to cancel running the function if a new
101
+ * room is loaded in the interim. Default is false.
83
102
  */
84
- runNextRenderFrame(func: () => void): void;
103
+ runNextRenderFrame(func: () => void, cancelIfRoomChanges?: boolean): void;
85
104
  /**
86
105
  * Supply a function to be repeatedly run on an interval of N game frames in the `POST_UPDATE`
87
106
  * callback. The function will continue to be fired until `false` is returned from the function.
@@ -99,8 +118,10 @@ export declare class RunInNFrames extends Feature {
99
118
  * @param gameFrames The amount of game frames to wait between each run.
100
119
  * @param runImmediately Whether or not to execute the function right now before waiting for the
101
120
  * interval.
121
+ * @param cancelIfRoomChanges Optional. Whether or not to cancel running the function if a new
122
+ * room is loaded in the interim. Default is false.
102
123
  */
103
- setIntervalGameFrames(func: () => boolean, gameFrames: int, runImmediately: boolean): void;
124
+ setIntervalGameFrames(func: () => boolean, gameFrames: int, runImmediately: boolean, cancelIfRoomChanges?: boolean): void;
104
125
  /**
105
126
  * Supply a function to be repeatedly run on an interval of N render frames in the `POST_RENDER`
106
127
  * callback. The function will continue to be fired until `false` is returned from the function.
@@ -118,7 +139,9 @@ export declare class RunInNFrames extends Feature {
118
139
  * @param renderFrames The amount of game frames to wait between each run.
119
140
  * @param runImmediately Whether or not to execute the function right now before waiting for the
120
141
  * interval.
142
+ * @param cancelIfRoomChanges Optional. Whether or not to cancel running the function if a new
143
+ * room is loaded in the interim. Default is false.
121
144
  */
122
- setIntervalRenderFrames(func: () => boolean, renderFrames: int, runImmediately: boolean): void;
145
+ setIntervalRenderFrames(func: () => boolean, renderFrames: int, runImmediately: boolean, cancelIfRoomChanges?: boolean): void;
123
146
  }
124
147
  //# sourceMappingURL=RunInNFrames.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RunInNFrames.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/other/RunInNFrames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAKvE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAgBhD,qBAAa,YAAa,SAAQ,OAAO;IAavB,gBAAgB,QAAO,OAAO,CAAU;IAgBxD,OAAO,CAAC,UAAU,CAWhB;IAGF,OAAO,CAAC,UAAU,CAWhB;IAEF;;;;;;;;OAQG;IAEI,sBAAsB,CAAC,SAAS,CAAC,EAAE,UAAU,GAAG,IAAI;IAM3D;;;;;;;;;;;OAWG;IAEI,gBAAgB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,UAAU,EAAE,GAAG,GAAG,IAAI;IAOhE;;;;;;;;;;;OAWG;IAEI,kBAAkB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,YAAY,EAAE,GAAG,GAAG,IAAI;IAOpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IAEI,gBAAgB,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;IAI/C;;;;;;;;;OASG;IAEI,kBAAkB,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;IAIjD;;;;;;;;;;;;;;;;;OAiBG;IAEI,qBAAqB,CAC1B,IAAI,EAAE,MAAM,OAAO,EACnB,UAAU,EAAE,GAAG,EACf,cAAc,EAAE,OAAO,GACtB,IAAI;IAWP;;;;;;;;;;;;;;;;;OAiBG;IAEI,uBAAuB,CAC5B,IAAI,EAAE,MAAM,OAAO,EACnB,YAAY,EAAE,GAAG,EACjB,cAAc,EAAE,OAAO,GACtB,IAAI;CAcR"}
1
+ {"version":3,"file":"RunInNFrames.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/other/RunInNFrames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAMvE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAwBhD,qBAAa,YAAa,SAAQ,OAAO;IAavB,gBAAgB,QAAO,OAAO,CAAU;IAExD,OAAO,CAAC,WAAW,CAAc;IAoBjC,OAAO,CAAC,UAAU,CAchB;IAGF,OAAO,CAAC,UAAU,CAchB;IAEF;;;;;;;;OAQG;IAEI,sBAAsB,CAAC,SAAS,CAAC,EAAE,UAAU,GAAG,IAAI;IAM3D;;;;;;;;;;;;;;;;OAgBG;IAEI,gBAAgB,CACrB,IAAI,EAAE,MAAM,IAAI,EAChB,UAAU,EAAE,GAAG,EACf,mBAAmB,UAAQ,GAC1B,IAAI;IAcP;;;;;;;;;;;;;;;;OAgBG;IAEI,kBAAkB,CACvB,IAAI,EAAE,MAAM,IAAI,EAChB,YAAY,EAAE,GAAG,EACjB,mBAAmB,UAAQ,GAC1B,IAAI;IAcP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IAEI,gBAAgB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,mBAAmB,UAAQ,GAAG,IAAI;IAI5E;;;;;;;;;;;;;OAaG;IAEI,kBAAkB,CACvB,IAAI,EAAE,MAAM,IAAI,EAChB,mBAAmB,UAAQ,GAC1B,IAAI;IAIP;;;;;;;;;;;;;;;;;;;OAmBG;IAEI,qBAAqB,CAC1B,IAAI,EAAE,MAAM,OAAO,EACnB,UAAU,EAAE,GAAG,EACf,cAAc,EAAE,OAAO,EACvB,mBAAmB,UAAQ,GAC1B,IAAI;IAkBP;;;;;;;;;;;;;;;;;;;OAmBG;IAEI,uBAAuB,CAC5B,IAAI,EAAE,MAAM,OAAO,EACnB,YAAY,EAAE,GAAG,EACjB,cAAc,EAAE,OAAO,EACvB,mBAAmB,UAAQ,GAC1B,IAAI;CAiBR"}
@@ -11,44 +11,61 @@ local ____cachedClasses = require("src.core.cachedClasses")
11
11
  local game = ____cachedClasses.game
12
12
  local ____decorators = require("src.decorators")
13
13
  local Exported = ____decorators.Exported
14
+ local ____ISCFeature = require("src.enums.ISCFeature")
15
+ local ISCFeature = ____ISCFeature.ISCFeature
14
16
  local ____array = require("src.functions.array")
15
17
  local arrayRemoveInPlace = ____array.arrayRemoveInPlace
16
18
  local ____run = require("src.functions.run")
17
19
  local restart = ____run.restart
18
20
  local ____Feature = require("src.classes.private.Feature")
19
21
  local Feature = ____Feature.Feature
20
- function checkExecuteQueuedFunctions(self, frameCount, functionTuples)
22
+ function checkExecuteQueuedFunctions(self, functionTuples, frameCount, newNumRoomsEntered)
21
23
  local firingFunctions = __TS__ArrayFilter(
22
24
  functionTuples,
23
25
  function(____, ____bindingPattern0)
24
26
  local frameCountToFire
25
- frameCountToFire = ____bindingPattern0[1]
27
+ frameCountToFire = ____bindingPattern0.frameCountToFire
26
28
  return frameCount >= frameCountToFire
27
29
  end
28
30
  )
29
- for ____, tuple in ipairs(firingFunctions) do
30
- local _frameCountToFire, func = table.unpack(tuple)
31
- func(nil)
32
- arrayRemoveInPlace(nil, functionTuples, tuple)
31
+ for ____, firingFunction in ipairs(firingFunctions) do
32
+ local func = firingFunction.func
33
+ local cancelIfRoomChanges = firingFunction.cancelIfRoomChanges
34
+ local numRoomsEntered = firingFunction.numRoomsEntered
35
+ if not cancelIfRoomChanges or numRoomsEntered == newNumRoomsEntered then
36
+ func(nil)
37
+ end
38
+ arrayRemoveInPlace(nil, functionTuples, firingFunction)
33
39
  end
34
40
  end
35
- function checkExecuteIntervalFunctions(self, frameCount, functionTuples)
41
+ function checkExecuteIntervalFunctions(self, functionTuples, frameCount, newNumRoomsEntered)
36
42
  local firingFunctions = __TS__ArrayFilter(
37
43
  functionTuples,
38
44
  function(____, ____bindingPattern0)
39
45
  local frameCountToFire
40
- frameCountToFire = ____bindingPattern0[1]
46
+ frameCountToFire = ____bindingPattern0.frameCountToFire
41
47
  return frameCount >= frameCountToFire
42
48
  end
43
49
  )
44
- for ____, tuple in ipairs(firingFunctions) do
45
- local _frameCountToFire, func, numIntervalFrames = table.unpack(tuple)
46
- local returnValue = func(nil)
47
- arrayRemoveInPlace(nil, functionTuples, tuple)
50
+ for ____, firingFunction in ipairs(firingFunctions) do
51
+ local func = firingFunction.func
52
+ local cancelIfRoomChanges = firingFunction.cancelIfRoomChanges
53
+ local numRoomsEntered = firingFunction.numRoomsEntered
54
+ local numIntervalFrames = firingFunction.numIntervalFrames
55
+ local returnValue = false
56
+ if not cancelIfRoomChanges or numRoomsEntered == newNumRoomsEntered then
57
+ returnValue = func(nil)
58
+ end
59
+ arrayRemoveInPlace(nil, functionTuples, firingFunction)
48
60
  if returnValue then
49
- local nextFireFrame = frameCount + numIntervalFrames
50
- local newTuple = {nextFireFrame, func, numIntervalFrames}
51
- functionTuples[#functionTuples + 1] = newTuple
61
+ local newIntervalFunction = {
62
+ func = func,
63
+ frameCountToFire = frameCount + numIntervalFrames,
64
+ numRoomsEntered = numRoomsEntered,
65
+ cancelIfRoomChanges = cancelIfRoomChanges,
66
+ numIntervalFrames = numIntervalFrames
67
+ }
68
+ functionTuples[#functionTuples + 1] = newIntervalFunction
52
69
  end
53
70
  end
54
71
  end
@@ -56,63 +73,99 @@ ____exports.RunInNFrames = __TS__Class()
56
73
  local RunInNFrames = ____exports.RunInNFrames
57
74
  RunInNFrames.name = "RunInNFrames"
58
75
  __TS__ClassExtends(RunInNFrames, Feature)
59
- function RunInNFrames.prototype.____constructor(self)
76
+ function RunInNFrames.prototype.____constructor(self, roomHistory)
60
77
  Feature.prototype.____constructor(self)
61
- self.v = {run = {queuedGameFunctionTuples = {}, queuedRenderFunctionTuples = {}, intervalGameFunctionTuples = {}, intervalRenderFunctionTuples = {}}}
78
+ self.v = {run = {queuedGameFunctions = {}, queuedRenderFunctions = {}, intervalGameFunctions = {}, intervalRenderFunctions = {}}}
62
79
  self.vConditionalFunc = function() return false end
63
80
  self.postUpdate = function()
64
81
  local gameFrameCount = game:GetFrameCount()
65
- checkExecuteQueuedFunctions(nil, gameFrameCount, self.v.run.queuedGameFunctionTuples)
66
- checkExecuteIntervalFunctions(nil, gameFrameCount, self.v.run.intervalGameFunctionTuples)
82
+ local numRoomsEntered = self.roomHistory:getNumRoomsEntered()
83
+ checkExecuteQueuedFunctions(nil, self.v.run.queuedGameFunctions, gameFrameCount, numRoomsEntered)
84
+ checkExecuteIntervalFunctions(nil, self.v.run.intervalGameFunctions, gameFrameCount, numRoomsEntered)
67
85
  end
68
86
  self.postRender = function()
69
87
  local renderFrameCount = Isaac.GetFrameCount()
70
- checkExecuteQueuedFunctions(nil, renderFrameCount, self.v.run.queuedRenderFunctionTuples)
71
- checkExecuteIntervalFunctions(nil, renderFrameCount, self.v.run.intervalRenderFunctionTuples)
88
+ local numRoomsEntered = self.roomHistory:getNumRoomsEntered()
89
+ checkExecuteQueuedFunctions(nil, self.v.run.queuedRenderFunctions, renderFrameCount, numRoomsEntered)
90
+ checkExecuteIntervalFunctions(nil, self.v.run.intervalRenderFunctions, renderFrameCount, numRoomsEntered)
72
91
  end
92
+ self.featuresUsed = {ISCFeature.ROOM_HISTORY}
73
93
  self.callbacksUsed = {{ModCallback.POST_UPDATE, self.postUpdate}, {ModCallback.POST_RENDER, self.postRender}}
94
+ self.roomHistory = roomHistory
74
95
  end
75
96
  function RunInNFrames.prototype.restartNextRenderFrame(self, character)
76
97
  self:runNextRenderFrame(function()
77
98
  restart(nil, character)
78
99
  end)
79
100
  end
80
- function RunInNFrames.prototype.runInNGameFrames(self, func, gameFrames)
101
+ function RunInNFrames.prototype.runInNGameFrames(self, func, gameFrames, cancelIfRoomChanges)
102
+ if cancelIfRoomChanges == nil then
103
+ cancelIfRoomChanges = false
104
+ end
81
105
  local gameFrameCount = game:GetFrameCount()
82
- local functionFireFrame = gameFrameCount + gameFrames
83
- local tuple = {functionFireFrame, func}
84
- local ____self_v_run_queuedGameFunctionTuples_0 = self.v.run.queuedGameFunctionTuples
85
- ____self_v_run_queuedGameFunctionTuples_0[#____self_v_run_queuedGameFunctionTuples_0 + 1] = tuple
106
+ local numRoomsEntered = self.roomHistory:getNumRoomsEntered()
107
+ local frameCountToFire = gameFrameCount + gameFrames
108
+ local queuedFunction = {func = func, frameCountToFire = frameCountToFire, numRoomsEntered = numRoomsEntered, cancelIfRoomChanges = cancelIfRoomChanges}
109
+ local ____self_v_run_queuedGameFunctions_0 = self.v.run.queuedGameFunctions
110
+ ____self_v_run_queuedGameFunctions_0[#____self_v_run_queuedGameFunctions_0 + 1] = queuedFunction
86
111
  end
87
- function RunInNFrames.prototype.runInNRenderFrames(self, func, renderFrames)
112
+ function RunInNFrames.prototype.runInNRenderFrames(self, func, renderFrames, cancelIfRoomChanges)
113
+ if cancelIfRoomChanges == nil then
114
+ cancelIfRoomChanges = false
115
+ end
88
116
  local renderFrameCount = Isaac.GetFrameCount()
89
- local functionFireFrame = renderFrameCount + renderFrames
90
- local tuple = {functionFireFrame, func}
91
- local ____self_v_run_queuedRenderFunctionTuples_1 = self.v.run.queuedRenderFunctionTuples
92
- ____self_v_run_queuedRenderFunctionTuples_1[#____self_v_run_queuedRenderFunctionTuples_1 + 1] = tuple
117
+ local numRoomsEntered = self.roomHistory:getNumRoomsEntered()
118
+ local frameCountToFire = renderFrameCount + renderFrames
119
+ local queuedFunction = {func = func, frameCountToFire = frameCountToFire, numRoomsEntered = numRoomsEntered, cancelIfRoomChanges = cancelIfRoomChanges}
120
+ local ____self_v_run_queuedRenderFunctions_1 = self.v.run.queuedRenderFunctions
121
+ ____self_v_run_queuedRenderFunctions_1[#____self_v_run_queuedRenderFunctions_1 + 1] = queuedFunction
93
122
  end
94
- function RunInNFrames.prototype.runNextGameFrame(self, func)
95
- self:runInNGameFrames(func, 1)
123
+ function RunInNFrames.prototype.runNextGameFrame(self, func, cancelIfRoomChanges)
124
+ if cancelIfRoomChanges == nil then
125
+ cancelIfRoomChanges = false
126
+ end
127
+ self:runInNGameFrames(func, 1, cancelIfRoomChanges)
96
128
  end
97
- function RunInNFrames.prototype.runNextRenderFrame(self, func)
98
- self:runInNRenderFrames(func, 1)
129
+ function RunInNFrames.prototype.runNextRenderFrame(self, func, cancelIfRoomChanges)
130
+ if cancelIfRoomChanges == nil then
131
+ cancelIfRoomChanges = false
132
+ end
133
+ self:runInNRenderFrames(func, 1, cancelIfRoomChanges)
99
134
  end
100
- function RunInNFrames.prototype.setIntervalGameFrames(self, func, gameFrames, runImmediately)
135
+ function RunInNFrames.prototype.setIntervalGameFrames(self, func, gameFrames, runImmediately, cancelIfRoomChanges)
136
+ if cancelIfRoomChanges == nil then
137
+ cancelIfRoomChanges = false
138
+ end
101
139
  local gameFrameCount = game:GetFrameCount()
102
- local functionFireFrame = gameFrameCount + gameFrames
103
- local tuple = {functionFireFrame, func, gameFrames}
104
- local ____self_v_run_intervalGameFunctionTuples_2 = self.v.run.intervalGameFunctionTuples
105
- ____self_v_run_intervalGameFunctionTuples_2[#____self_v_run_intervalGameFunctionTuples_2 + 1] = tuple
140
+ local numRoomsEntered = self.roomHistory:getNumRoomsEntered()
141
+ local intervalFunction = {
142
+ func = func,
143
+ frameCountToFire = gameFrameCount + gameFrames,
144
+ numRoomsEntered = numRoomsEntered,
145
+ cancelIfRoomChanges = cancelIfRoomChanges,
146
+ numIntervalFrames = gameFrames
147
+ }
148
+ local ____self_v_run_intervalGameFunctions_2 = self.v.run.intervalGameFunctions
149
+ ____self_v_run_intervalGameFunctions_2[#____self_v_run_intervalGameFunctions_2 + 1] = intervalFunction
106
150
  if runImmediately then
107
151
  func(nil)
108
152
  end
109
153
  end
110
- function RunInNFrames.prototype.setIntervalRenderFrames(self, func, renderFrames, runImmediately)
154
+ function RunInNFrames.prototype.setIntervalRenderFrames(self, func, renderFrames, runImmediately, cancelIfRoomChanges)
155
+ if cancelIfRoomChanges == nil then
156
+ cancelIfRoomChanges = false
157
+ end
111
158
  local renderFrameCount = Isaac.GetFrameCount()
112
- local functionFireFrame = renderFrameCount + renderFrames
113
- local tuple = {functionFireFrame, func, renderFrames}
114
- local ____self_v_run_intervalGameFunctionTuples_3 = self.v.run.intervalGameFunctionTuples
115
- ____self_v_run_intervalGameFunctionTuples_3[#____self_v_run_intervalGameFunctionTuples_3 + 1] = tuple
159
+ local numRoomsEntered = self.roomHistory:getNumRoomsEntered()
160
+ local intervalFunction = {
161
+ func = func,
162
+ frameCountToFire = renderFrameCount + renderFrames,
163
+ numRoomsEntered = numRoomsEntered,
164
+ cancelIfRoomChanges = cancelIfRoomChanges,
165
+ numIntervalFrames = renderFrames
166
+ }
167
+ local ____self_v_run_intervalGameFunctions_3 = self.v.run.intervalGameFunctions
168
+ ____self_v_run_intervalGameFunctions_3[#____self_v_run_intervalGameFunctions_3 + 1] = intervalFunction
116
169
  if runImmediately then
117
170
  func(nil)
118
171
  end
@@ -1 +1 @@
1
- {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/features.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/features.ts"],"names":[],"mappings":"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"}
@@ -132,10 +132,10 @@ function ____exports.getFeatures(self, mod, callbacks)
132
132
  local preventCollectibleRotation = __TS__New(PreventCollectibleRotation)
133
133
  local roomClearFrame = __TS__New(RoomClearFrame)
134
134
  local roomHistory = __TS__New(RoomHistory)
135
- local runInNFrames = __TS__New(RunInNFrames)
136
135
  local runNextRoom = __TS__New(RunNextRoom)
137
136
  local saveDataManager = __TS__New(SaveDataManager, mod)
138
137
  local stageHistory = __TS__New(StageHistory)
138
+ local runInNFrames = __TS__New(RunInNFrames, roomHistory)
139
139
  local customGridEntities = __TS__New(CustomGridEntities, runInNFrames)
140
140
  local moddedElementSets = __TS__New(ModdedElementSets, moddedElementDetection)
141
141
  local itemPoolDetection = __TS__New(ItemPoolDetection, moddedElementSets)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "20.10.0",
3
+ "version": "20.11.0",
4
4
  "description": "Helper functions and features for IsaacScript mods.",
5
5
  "keywords": [
6
6
  "isaac",
@@ -16,6 +16,7 @@ import {
16
16
  EntityType,
17
17
  ModCallback,
18
18
  } from "isaac-typescript-definitions";
19
+ import { ISCFeature } from "../../../enums/ISCFeature";
19
20
  import { ModCallbackCustom } from "../../../enums/ModCallbackCustom";
20
21
  import { SlotDestructionType } from "../../../enums/SlotDestructionType";
21
22
  import { isSlotMachine } from "../../../functions/slots";
@@ -36,6 +37,8 @@ export class SlotDestroyedDetection extends Feature {
36
37
  constructor(postSlotDestroyed: PostSlotDestroyed, roomHistory: RoomHistory) {
37
38
  super();
38
39
 
40
+ this.featuresUsed = [ISCFeature.ROOM_HISTORY];
41
+
39
42
  this.callbacksUsed = [
40
43
  // 67
41
44
  [
@@ -68,14 +68,14 @@ export class RoomHistory extends Feature {
68
68
  };
69
69
 
70
70
  /**
71
- * Helper function to get the total number of rooms that the player has visited thus far on the
72
- * run.
71
+ * Helper function to get the total number of rooms that the player has entered thus far on the
72
+ * run. (Re-entering the same room will increment the number returned.)
73
73
  *
74
74
  * In order to use this function, you must upgrade your mod with `ISCFeature.ROOM_HISTORY`.
75
75
  */
76
76
  @Exported
77
- public getNumRoomsVisited(): ReadonlyArray<Readonly<RoomDescription>> {
78
- return this.v.run.roomHistory;
77
+ public getNumRoomsEntered(): int {
78
+ return this.v.run.roomHistory.length;
79
79
  }
80
80
 
81
81
  /**