isaacscript-common 17.6.0 → 17.7.1

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/index.d.ts CHANGED
@@ -10883,12 +10883,18 @@ declare class ModdedElementSets extends Feature {
10883
10883
  * - any runes
10884
10884
  * - any objects like Dice Shard
10885
10885
  *
10886
+ * In order to use this function, you must upgrade your mod with `ISCFeature.MODDED_ELEMENT_SETS`.
10887
+ *
10886
10888
  * @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided,
10887
10889
  * the `RNG.Next` method will be called. Default is `getRandomSeed()`.
10888
10890
  * @param exceptions Optional. An array of cards to not select.
10889
10891
  */
10890
10892
  getRandomCard(seedOrRNG?: Seed | RNG, exceptions?: CardType[]): CardType;
10891
10893
  /**
10894
+ * Helper function to get a random card type that matches the provided `ItemConfigCardType`.
10895
+ *
10896
+ * In order to use this function, you must upgrade your mod with `ISCFeature.MODDED_ELEMENT_SETS`.
10897
+ *
10892
10898
  * @param itemConfigCardType The item config card type that represents the pool of cards to select
10893
10899
  * from.
10894
10900
  * @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided,
@@ -10900,6 +10906,8 @@ declare class ModdedElementSets extends Feature {
10900
10906
  * Has an equal chance of returning any rune (e.g. Rune of Hagalaz, Blank Rune, Black Rune, Soul
10901
10907
  * of Isaac, etc.). This will never return a Rune Shard.
10902
10908
  *
10909
+ * In order to use this function, you must upgrade your mod with `ISCFeature.MODDED_ELEMENT_SETS`.
10910
+ *
10903
10911
  * @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided,
10904
10912
  * the `RNG.Next` method will be called. Default is `getRandomSeed()`.
10905
10913
  * @param exceptions Optional. An array of runes to not select.
@@ -11058,6 +11066,17 @@ declare class ModdedElementSets extends Feature {
11058
11066
  */
11059
11067
  export declare class ModFeature {
11060
11068
  private mod;
11069
+ /**
11070
+ * An optional function that allows for conditional callback execution. If specified, any class
11071
+ * method that is annotated with a `@Callback` or `@CallbackCustom` decorator will only be fired
11072
+ * if the executed conditional function returns true.
11073
+ *
11074
+ * This property is used to easily turn entire mod features on and off (rather than repeating
11075
+ * conditional logic and early returning at the beginning of every callback function).
11076
+ *
11077
+ * By default, this is set to null. Override this property in your class if you need to use it.
11078
+ */
11079
+ protected callbackConditionalFunc: (() => boolean) | null;
11061
11080
  /**
11062
11081
  * Whether or not the feature has registered its callbacks yet (and submitted its variables to the
11063
11082
  * save data manager, if any).
@@ -1,6 +1,6 @@
1
1
  --[[
2
2
 
3
- isaacscript-common 17.6.0
3
+ isaacscript-common 17.7.1
4
4
 
5
5
  This is the "isaacscript-common" library, which was created with the IsaacScript tool.
6
6
 
@@ -49212,6 +49212,13 @@ function initDecoratedCallbacks(self, modFeature, constructor, tstlClassName, va
49212
49212
  end
49213
49213
  function addCallback(self, modFeature, modFeatureConstructor, mod, modCallback, callback, parameters, vanilla)
49214
49214
  local function wrappedCallback(____, ...)
49215
+ local conditionalFunc = modFeature.callbackConditionalFunc
49216
+ if conditionalFunc ~= nil then
49217
+ local shouldRun = conditionalFunc(nil)
49218
+ if not shouldRun then
49219
+ return nil
49220
+ end
49221
+ end
49215
49222
  local castedCallback = callback
49216
49223
  return castedCallback(modFeature, ...)
49217
49224
  end
@@ -49300,6 +49307,7 @@ function ModFeature.prototype.____constructor(self, mod, init)
49300
49307
  if init == nil then
49301
49308
  init = true
49302
49309
  end
49310
+ self.callbackConditionalFunc = nil
49303
49311
  self.initialized = false
49304
49312
  self.mod = mod
49305
49313
  if init then
@@ -36,6 +36,17 @@ export declare const ADD_CALLBACK_CUSTOM_ARGS_KEY = "__addCallbackCustomArgs";
36
36
  */
37
37
  export declare class ModFeature {
38
38
  private mod;
39
+ /**
40
+ * An optional function that allows for conditional callback execution. If specified, any class
41
+ * method that is annotated with a `@Callback` or `@CallbackCustom` decorator will only be fired
42
+ * if the executed conditional function returns true.
43
+ *
44
+ * This property is used to easily turn entire mod features on and off (rather than repeating
45
+ * conditional logic and early returning at the beginning of every callback function).
46
+ *
47
+ * By default, this is set to null. Override this property in your class if you need to use it.
48
+ */
49
+ protected callbackConditionalFunc: (() => boolean) | null;
39
50
  /**
40
51
  * Whether or not the feature has registered its callbacks yet (and submitted its variables to the
41
52
  * save data manager, if any).
@@ -1 +1 @@
1
- {"version":3,"file":"ModFeature.d.ts","sourceRoot":"","sources":["../../../src/classes/ModFeature.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AAatE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAAkB;IAE7B;;;;;;OAMG;IACI,WAAW,UAAS;gBAEf,GAAG,EAAE,eAAe,EAAE,IAAI,UAAO;IAQ7C;;;;;OAKG;IACI,IAAI,CAAC,IAAI,UAAO,GAAG,IAAI;IAqB9B;;;;;;OAMG;IACI,MAAM,IAAI,IAAI;CAGtB"}
1
+ {"version":3,"file":"ModFeature.d.ts","sourceRoot":"","sources":["../../../src/classes/ModFeature.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AAatE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAAkB;IAE7B;;;;;;;;;OASG;IACH,SAAS,CAAC,uBAAuB,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI,CAAQ;IAEjE;;;;;;OAMG;IACI,WAAW,UAAS;gBAEf,GAAG,EAAE,eAAe,EAAE,IAAI,UAAO;IAQ7C;;;;;OAKG;IACI,IAAI,CAAC,IAAI,UAAO,GAAG,IAAI;IAqB9B;;;;;;OAMG;IACI,MAAM,IAAI,IAAI;CAGtB"}
@@ -63,6 +63,13 @@ function initDecoratedCallbacks(self, modFeature, constructor, tstlClassName, va
63
63
  end
64
64
  function addCallback(self, modFeature, modFeatureConstructor, mod, modCallback, callback, parameters, vanilla)
65
65
  local function wrappedCallback(____, ...)
66
+ local conditionalFunc = modFeature.callbackConditionalFunc
67
+ if conditionalFunc ~= nil then
68
+ local shouldRun = conditionalFunc(nil)
69
+ if not shouldRun then
70
+ return nil
71
+ end
72
+ end
66
73
  local castedCallback = callback
67
74
  return castedCallback(modFeature, ...)
68
75
  end
@@ -182,6 +189,7 @@ function ModFeature.prototype.____constructor(self, mod, init)
182
189
  if init == nil then
183
190
  init = true
184
191
  end
192
+ self.callbackConditionalFunc = nil
185
193
  self.initialized = false
186
194
  self.mod = mod
187
195
  if init then
@@ -348,12 +348,18 @@ export declare class ModdedElementSets extends Feature {
348
348
  * - any runes
349
349
  * - any objects like Dice Shard
350
350
  *
351
+ * In order to use this function, you must upgrade your mod with `ISCFeature.MODDED_ELEMENT_SETS`.
352
+ *
351
353
  * @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided,
352
354
  * the `RNG.Next` method will be called. Default is `getRandomSeed()`.
353
355
  * @param exceptions Optional. An array of cards to not select.
354
356
  */
355
357
  getRandomCard(seedOrRNG?: Seed | RNG, exceptions?: CardType[]): CardType;
356
358
  /**
359
+ * Helper function to get a random card type that matches the provided `ItemConfigCardType`.
360
+ *
361
+ * In order to use this function, you must upgrade your mod with `ISCFeature.MODDED_ELEMENT_SETS`.
362
+ *
357
363
  * @param itemConfigCardType The item config card type that represents the pool of cards to select
358
364
  * from.
359
365
  * @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided,
@@ -365,6 +371,8 @@ export declare class ModdedElementSets extends Feature {
365
371
  * Has an equal chance of returning any rune (e.g. Rune of Hagalaz, Blank Rune, Black Rune, Soul
366
372
  * of Isaac, etc.). This will never return a Rune Shard.
367
373
  *
374
+ * In order to use this function, you must upgrade your mod with `ISCFeature.MODDED_ELEMENT_SETS`.
375
+ *
368
376
  * @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided,
369
377
  * the `RNG.Next` method will be called. Default is `getRandomSeed()`.
370
378
  * @param exceptions Optional. An array of runes to not select.
@@ -1 +1 @@
1
- {"version":3,"file":"ModdedElementSets.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/other/ModdedElementSets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModdedElementSets.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/other/ModdedElementSets.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,8 @@
3
3
  * automatically register callbacks.
4
4
  *
5
5
  * Currently, there are two decorators:
6
- * - @Callback
7
- * - @CallbackCustom
6
+ * - `@Callback`
7
+ * - `@CallbackCustom`
8
8
  *
9
9
  * For example:
10
10
  *
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../src/functions/decorators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAGL,UAAU,EACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,EAC5C,WAAW,EAAE,CAAC,EACd,GAAG,YAAY,EAAE,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,kGAIvC,MAAM,+CAElB,IAAI,CA+BR;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,iBAAiB,EACxD,iBAAiB,EAAE,CAAC,EACpB,GAAG,YAAY,EAAE,WAAW,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,wGAO7C,MAAM,+CAElB,IAAI,CAiCR"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../src/functions/decorators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAGL,UAAU,EACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD;;;;;GAKG;AAEH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,EAC5C,WAAW,EAAE,CAAC,EACd,GAAG,YAAY,EAAE,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,kGAIvC,MAAM,+CAElB,IAAI,CA+BR;AAED;;;;;GAKG;AAEH,wBAAgB,cAAc,CAAC,CAAC,SAAS,iBAAiB,EACxD,iBAAiB,EAAE,CAAC,EACpB,GAAG,YAAY,EAAE,WAAW,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,wGAO7C,MAAM,+CAElB,IAAI,CAiCR"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "17.6.0",
3
+ "version": "17.7.1",
4
4
  "description": "Helper functions and features for IsaacScript mods.",
5
5
  "keywords": [
6
6
  "isaac",
@@ -62,6 +62,18 @@ type ModFeatureConstructor = TSTLClassMetatable["constructor"] & {
62
62
  export class ModFeature {
63
63
  private mod: ModUpgradedBase;
64
64
 
65
+ /**
66
+ * An optional function that allows for conditional callback execution. If specified, any class
67
+ * method that is annotated with a `@Callback` or `@CallbackCustom` decorator will only be fired
68
+ * if the executed conditional function returns true.
69
+ *
70
+ * This property is used to easily turn entire mod features on and off (rather than repeating
71
+ * conditional logic and early returning at the beginning of every callback function).
72
+ *
73
+ * By default, this is set to null. Override this property in your class if you need to use it.
74
+ */
75
+ protected callbackConditionalFunc: (() => boolean) | null = null;
76
+
65
77
  /**
66
78
  * Whether or not the feature has registered its callbacks yet (and submitted its variables to the
67
79
  * save data manager, if any).
@@ -195,6 +207,15 @@ function addCallback(
195
207
  // We need to wrap the callback in a new function so that we can explicitly pass the class as the
196
208
  // first argument. (Otherwise, the method will not be able to properly access `this`.
197
209
  const wrappedCallback = (...callbackArgs: unknown[]) => {
210
+ // eslint-disable-next-line @typescript-eslint/dot-notation
211
+ const conditionalFunc = modFeature["callbackConditionalFunc"];
212
+ if (conditionalFunc !== null) {
213
+ const shouldRun = conditionalFunc();
214
+ if (!shouldRun) {
215
+ return undefined;
216
+ }
217
+ }
218
+
198
219
  const castedCallback = callback as (
199
220
  this: void,
200
221
  ...args: unknown[]
@@ -1007,6 +1007,8 @@ export class ModdedElementSets extends Feature {
1007
1007
  * - any runes
1008
1008
  * - any objects like Dice Shard
1009
1009
  *
1010
+ * In order to use this function, you must upgrade your mod with `ISCFeature.MODDED_ELEMENT_SETS`.
1011
+ *
1010
1012
  * @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided,
1011
1013
  * the `RNG.Next` method will be called. Default is `getRandomSeed()`.
1012
1014
  * @param exceptions Optional. An array of cards to not select.
@@ -1020,6 +1022,10 @@ export class ModdedElementSets extends Feature {
1020
1022
  }
1021
1023
 
1022
1024
  /**
1025
+ * Helper function to get a random card type that matches the provided `ItemConfigCardType`.
1026
+ *
1027
+ * In order to use this function, you must upgrade your mod with `ISCFeature.MODDED_ELEMENT_SETS`.
1028
+ *
1023
1029
  * @param itemConfigCardType The item config card type that represents the pool of cards to select
1024
1030
  * from.
1025
1031
  * @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided,
@@ -1040,6 +1046,8 @@ export class ModdedElementSets extends Feature {
1040
1046
  * Has an equal chance of returning any rune (e.g. Rune of Hagalaz, Blank Rune, Black Rune, Soul
1041
1047
  * of Isaac, etc.). This will never return a Rune Shard.
1042
1048
  *
1049
+ * In order to use this function, you must upgrade your mod with `ISCFeature.MODDED_ELEMENT_SETS`.
1050
+ *
1043
1051
  * @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided,
1044
1052
  * the `RNG.Next` method will be called. Default is `getRandomSeed()`.
1045
1053
  * @param exceptions Optional. An array of runes to not select.
@@ -3,8 +3,8 @@
3
3
  * automatically register callbacks.
4
4
  *
5
5
  * Currently, there are two decorators:
6
- * - @Callback
7
- * - @CallbackCustom
6
+ * - `@Callback`
7
+ * - `@CallbackCustom`
8
8
  *
9
9
  * For example:
10
10
  *
@@ -37,6 +37,7 @@ import { getTSTLClassName } from "./tstlClass";
37
37
  *
38
38
  * @ignore
39
39
  */
40
+ // We tell TypeDoc to ignore this function because it generates a bunch of spam.
40
41
  export function Callback<T extends ModCallback>(
41
42
  modCallback: T,
42
43
  ...optionalArgs: AllButFirst<AddCallbackParameters[T]>
@@ -84,6 +85,7 @@ export function Callback<T extends ModCallback>(
84
85
  *
85
86
  * @ignore
86
87
  */
88
+ // We tell TypeDoc to ignore this function because it generates a bunch of spam.
87
89
  export function CallbackCustom<T extends ModCallbackCustom>(
88
90
  modCallbackCustom: T,
89
91
  ...optionalArgs: AllButFirst<AddCallbackParametersCustom[T]>