isaacscript-common 20.0.0 → 20.1.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
@@ -1268,16 +1268,22 @@ export declare function clearCollectibleSprite(collectible: EntityPickup): void;
1268
1268
  export declare function clearFloorDisplayFlags(): void;
1269
1269
 
1270
1270
  /**
1271
- * Helper function to clear all layers or specific layers from a sprite.
1271
+ * Helper function to clear all layers or specific layers from a sprite without unloading the
1272
+ * attached anm2 file.
1272
1273
  *
1273
- * This function is variadic, so pass as many layer IDs as you want to clear. If no specific layers
1274
- * are passed, it will clear every layer.
1274
+ * This function is variadic, which means you can pass as many layer IDs as you want to clear. If no
1275
+ * specific layers are passed, the function will clear every layer.
1275
1276
  *
1276
- * Since there is no official API method to "clear" a sprite, we can work around it by setting the
1277
- * spritesheet to a non-existent or completely transparent file. If the path to the spritesheet does
1278
- * not exist, then this function might cause spurious errors to appear in the "log.txt file". To
1279
- * silence these errors, create a transparent 1 pixel PNG file in your mod's resources folder at the
1280
- * path corresponding to the "EMPTY_PNG_PATH" constant.
1277
+ * If you want to clear all of the layers of a sprite and don't care about unloading the attached
1278
+ * anm2 file, then use the `Sprite.Reset` method instead.
1279
+ *
1280
+ * Since there is no official API method to clear specific layers from a sprite, we work around it
1281
+ * by setting the spritesheet to a transparent PNG file corresponding to the `EMPTY_PNG_PATH`
1282
+ * constant.
1283
+ *
1284
+ * This function will still work identically if PNG file does not exist, but it will cause a
1285
+ * spurious error to appear in the "log.txt" file. If silencing these errors is desired, you can
1286
+ * create a transparent 1 pixel PNG file in your mod's resources folder at `EMPTY_PNG_PATH`.
1281
1287
  */
1282
1288
  export declare function clearSprite(sprite: Sprite, ...layerIDs: int[]): void;
1283
1289
 
@@ -4287,8 +4293,13 @@ export declare function getCircleDiscretizedPoints(centerPos: Vector, radius: fl
4287
4293
  * const gapers = getEntities(EntityType.GAPER);
4288
4294
  * const closestGaper = getClosestEntityTo(player, gapers);
4289
4295
  * ```
4296
+ *
4297
+ * @param referenceEntity The entity that is close by.
4298
+ * @param entities The array of entities to look through.
4299
+ * @param filterFunc Optional. A function to filter for a specific type of entity, like e.g. an
4300
+ * enemy with a certain amount of HP left.
4290
4301
  */
4291
- export declare function getClosestEntityTo<T extends AnyEntity>(referenceEntity: Entity, entities: T[]): T | undefined;
4302
+ export declare function getClosestEntityTo<T extends AnyEntity>(referenceEntity: Entity, entities: T[], filterFunc?: (entity: T) => boolean): T | undefined;
4292
4303
 
4293
4304
  export declare function getClosestPlayer(position: Vector): EntityPlayer;
4294
4305
 
@@ -13838,10 +13849,11 @@ export declare function setEntityVelocities(entityVelocities: Map<PtrHash, Vecto
13838
13849
  export declare function setFloorDisplayFlags(displayFlagsMap: Map<int, BitFlags<DisplayFlag>>): void;
13839
13850
 
13840
13851
  /**
13841
- * Helper function to make a grid entity invisible. This is accomplished by setting its sprite to an
13842
- * empty/missing PNG file.
13852
+ * Helper function to make a grid entity invisible. This is accomplished by resetting the sprite.
13843
13853
  *
13844
- * For more information, see the documentation for the `clearSprite` helper function.
13854
+ * Note that this function is destructive such that once you make a grid entity invisible, it can no
13855
+ * longer become visible. (This is because the information about the sprite is lost when it is
13856
+ * reset.)
13845
13857
  */
13846
13858
  export declare function setGridEntityInvisible(gridEntity: GridEntity): void;
13847
13859
 
@@ -13935,8 +13947,8 @@ export declare function setTracebackFunctionsGlobal(): void;
13935
13947
  * @param trinket The trinket whose sprite you want to modify.
13936
13948
  * @param pngPath Equal to either the spritesheet path to load (e.g.
13937
13949
  * "gfx/items/trinkets/trinket_001_swallowedpenny.png") or undefined. If undefined,
13938
- * the sprite will be removed, making it appear like the collectible has already been
13939
- * taken by the player.
13950
+ * the sprite will be removed, making the trinket effectively invisible (except for
13951
+ * the shadow underneath it).
13940
13952
  */
13941
13953
  export declare function setTrinketSprite(trinket: EntityPickup, pngPath: string | undefined): void;
13942
13954
 
@@ -1,6 +1,6 @@
1
1
  --[[
2
2
 
3
- isaacscript-common 20.0.0
3
+ isaacscript-common 20.1.1
4
4
 
5
5
  This is the "isaacscript-common" library, which was created with the IsaacScript tool.
6
6
 
@@ -19478,12 +19478,12 @@ function ____exports.doesEntityExist(self, entityType, variant, subType, ignoreF
19478
19478
  )
19479
19479
  return count > 0
19480
19480
  end
19481
- function ____exports.getClosestEntityTo(self, referenceEntity, entities)
19481
+ function ____exports.getClosestEntityTo(self, referenceEntity, entities, filterFunc)
19482
19482
  local closestEntity
19483
19483
  local closestDistance = math.huge
19484
19484
  for ____, entity in ipairs(entities) do
19485
19485
  local distance = referenceEntity.Position:Distance(entity.Position)
19486
- if distance < closestDistance then
19486
+ if distance < closestDistance and (filterFunc == nil or filterFunc(nil, entity)) then
19487
19487
  closestEntity = entity
19488
19488
  closestDistance = distance
19489
19489
  end
@@ -25948,8 +25948,6 @@ local ____math = require("src.functions.math")
25948
25948
  local isCircleIntersectingRectangle = ____math.isCircleIntersectingRectangle
25949
25949
  local ____rooms = require("src.functions.rooms")
25950
25950
  local roomUpdateSafe = ____rooms.roomUpdateSafe
25951
- local ____sprites = require("src.functions.sprites")
25952
- local clearSprite = ____sprites.clearSprite
25953
25951
  local ____types = require("src.functions.types")
25954
25952
  local asNumber = ____types.asNumber
25955
25953
  local isNumber = ____types.isNumber
@@ -26289,7 +26287,7 @@ function ____exports.removeGridEntities(self, gridEntities, updateRoom, cap)
26289
26287
  end
26290
26288
  function ____exports.setGridEntityInvisible(self, gridEntity)
26291
26289
  local sprite = gridEntity:GetSprite()
26292
- clearSprite(nil, sprite)
26290
+ sprite:Reset()
26293
26291
  end
26294
26292
  function ____exports.spawnGiantPoop(self, topLeftGridIndex)
26295
26293
  local room = game:GetRoom()
@@ -27429,7 +27427,7 @@ function ____exports.setTrinketSprite(self, trinket, pngPath)
27429
27427
  end
27430
27428
  local sprite = trinket:GetSprite()
27431
27429
  if pngPath == nil then
27432
- clearSprite(nil, sprite, TRINKET_SPRITE_LAYER)
27430
+ clearSprite(nil, sprite)
27433
27431
  else
27434
27432
  sprite:ReplaceSpritesheet(TRINKET_SPRITE_LAYER, pngPath)
27435
27433
  sprite:LoadGraphics()
@@ -1 +1 @@
1
- {"version":3,"file":"collectibles.d.ts","sourceRoot":"","sources":["../../../src/functions/collectibles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collectibles.d.ts","sourceRoot":"","sources":["../../../src/functions/collectibles.ts"],"names":[],"mappings":"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"}
@@ -34,8 +34,13 @@ export declare function doesEntityExist(entityType?: EntityType, variant?: numbe
34
34
  * const gapers = getEntities(EntityType.GAPER);
35
35
  * const closestGaper = getClosestEntityTo(player, gapers);
36
36
  * ```
37
+ *
38
+ * @param referenceEntity The entity that is close by.
39
+ * @param entities The array of entities to look through.
40
+ * @param filterFunc Optional. A function to filter for a specific type of entity, like e.g. an
41
+ * enemy with a certain amount of HP left.
37
42
  */
38
- export declare function getClosestEntityTo<T extends AnyEntity>(referenceEntity: Entity, entities: T[]): T | undefined;
43
+ export declare function getClosestEntityTo<T extends AnyEntity>(referenceEntity: Entity, entities: T[], filterFunc?: (entity: T) => boolean): T | undefined;
39
44
  /** Helper function to get the entity type, variant, and sub-type from an `EntityID`. */
40
45
  export declare function getConstituentsFromEntityID(entityID: EntityID): [entityType: EntityType, variant: int, subType: int];
41
46
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/functions/entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/functions/entities.ts"],"names":[],"mappings":"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"}
@@ -143,12 +143,17 @@ end
143
143
  -- const gapers = getEntities(EntityType.GAPER);
144
144
  -- const closestGaper = getClosestEntityTo(player, gapers);
145
145
  -- ```
146
- function ____exports.getClosestEntityTo(self, referenceEntity, entities)
146
+ --
147
+ -- @param referenceEntity The entity that is close by.
148
+ -- @param entities The array of entities to look through.
149
+ -- @param filterFunc Optional. A function to filter for a specific type of entity, like e.g. an
150
+ -- enemy with a certain amount of HP left.
151
+ function ____exports.getClosestEntityTo(self, referenceEntity, entities, filterFunc)
147
152
  local closestEntity
148
153
  local closestDistance = math.huge
149
154
  for ____, entity in ipairs(entities) do
150
155
  local distance = referenceEntity.Position:Distance(entity.Position)
151
- if distance < closestDistance then
156
+ if distance < closestDistance and (filterFunc == nil or filterFunc(nil, entity)) then
152
157
  closestEntity = entity
153
158
  closestDistance = distance
154
159
  end
@@ -183,10 +183,11 @@ export declare function removeGridEntities<T extends AnyGridEntity>(gridEntities
183
183
  */
184
184
  export declare function removeGridEntity(gridEntityOrGridIndex: GridEntity | int, updateRoom: boolean): void;
185
185
  /**
186
- * Helper function to make a grid entity invisible. This is accomplished by setting its sprite to an
187
- * empty/missing PNG file.
186
+ * Helper function to make a grid entity invisible. This is accomplished by resetting the sprite.
188
187
  *
189
- * For more information, see the documentation for the `clearSprite` helper function.
188
+ * Note that this function is destructive such that once you make a grid entity invisible, it can no
189
+ * longer become visible. (This is because the information about the sprite is lost when it is
190
+ * reset.)
190
191
  */
191
192
  export declare function setGridEntityInvisible(gridEntity: GridEntity): void;
192
193
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"gridEntities.d.ts","sourceRoot":"","sources":["../../../src/functions/gridEntities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gridEntities.d.ts","sourceRoot":"","sources":["../../../src/functions/gridEntities.ts"],"names":[],"mappings":"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"}
@@ -33,8 +33,6 @@ local ____math = require("src.functions.math")
33
33
  local isCircleIntersectingRectangle = ____math.isCircleIntersectingRectangle
34
34
  local ____rooms = require("src.functions.rooms")
35
35
  local roomUpdateSafe = ____rooms.roomUpdateSafe
36
- local ____sprites = require("src.functions.sprites")
37
- local clearSprite = ____sprites.clearSprite
38
36
  local ____types = require("src.functions.types")
39
37
  local asNumber = ____types.asNumber
40
38
  local isNumber = ____types.isNumber
@@ -502,13 +500,14 @@ function ____exports.removeGridEntities(self, gridEntities, updateRoom, cap)
502
500
  end
503
501
  return gridEntitiesRemoved
504
502
  end
505
- --- Helper function to make a grid entity invisible. This is accomplished by setting its sprite to an
506
- -- empty/missing PNG file.
503
+ --- Helper function to make a grid entity invisible. This is accomplished by resetting the sprite.
507
504
  --
508
- -- For more information, see the documentation for the `clearSprite` helper function.
505
+ -- Note that this function is destructive such that once you make a grid entity invisible, it can no
506
+ -- longer become visible. (This is because the information about the sprite is lost when it is
507
+ -- reset.)
509
508
  function ____exports.setGridEntityInvisible(self, gridEntity)
510
509
  local sprite = gridEntity:GetSprite()
511
- clearSprite(nil, sprite)
510
+ sprite:Reset()
512
511
  end
513
512
  --- Helper function to spawn a giant poop. This is performed by spawning each of the four quadrant
514
513
  -- grid entities in the appropriate positions.
@@ -2,16 +2,22 @@
2
2
  /// <reference types="isaac-typescript-definitions" />
3
3
  /// <reference types="isaac-typescript-definitions" />
4
4
  /**
5
- * Helper function to clear all layers or specific layers from a sprite.
5
+ * Helper function to clear all layers or specific layers from a sprite without unloading the
6
+ * attached anm2 file.
6
7
  *
7
- * This function is variadic, so pass as many layer IDs as you want to clear. If no specific layers
8
- * are passed, it will clear every layer.
8
+ * This function is variadic, which means you can pass as many layer IDs as you want to clear. If no
9
+ * specific layers are passed, the function will clear every layer.
9
10
  *
10
- * Since there is no official API method to "clear" a sprite, we can work around it by setting the
11
- * spritesheet to a non-existent or completely transparent file. If the path to the spritesheet does
12
- * not exist, then this function might cause spurious errors to appear in the "log.txt file". To
13
- * silence these errors, create a transparent 1 pixel PNG file in your mod's resources folder at the
14
- * path corresponding to the "EMPTY_PNG_PATH" constant.
11
+ * If you want to clear all of the layers of a sprite and don't care about unloading the attached
12
+ * anm2 file, then use the `Sprite.Reset` method instead.
13
+ *
14
+ * Since there is no official API method to clear specific layers from a sprite, we work around it
15
+ * by setting the spritesheet to a transparent PNG file corresponding to the `EMPTY_PNG_PATH`
16
+ * constant.
17
+ *
18
+ * This function will still work identically if PNG file does not exist, but it will cause a
19
+ * spurious error to appear in the "log.txt" file. If silencing these errors is desired, you can
20
+ * create a transparent 1 pixel PNG file in your mod's resources folder at `EMPTY_PNG_PATH`.
15
21
  */
16
22
  export declare function clearSprite(sprite: Sprite, ...layerIDs: int[]): void;
17
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sprites.d.ts","sourceRoot":"","sources":["../../../src/functions/sprites.ts"],"names":[],"mappings":";;;AAIA;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,CAWpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,GAAG,CAmBL;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,GAAG,EACZ,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,GAAG,EACf,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,GAAG,GACd,OAAO,CAaT;AAED,uFAAuF;AACvF,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,GAAG,GACX,OAAO,CAIT"}
1
+ {"version":3,"file":"sprites.d.ts","sourceRoot":"","sources":["../../../src/functions/sprites.ts"],"names":[],"mappings":";;;AAIA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,CAWpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,GAAG,CAmBL;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,GAAG,EACZ,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,GAAG,EACf,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,GAAG,GACd,OAAO,CAaT;AAED,uFAAuF;AACvF,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,GAAG,GACX,OAAO,CAIT"}
@@ -12,16 +12,22 @@ function ____exports.texelEquals(self, sprite1, sprite2, position, layerID)
12
12
  local kColor2 = sprite2:GetTexel(position, VectorZero, 1, layerID)
13
13
  return kColorEquals(nil, kColor1, kColor2)
14
14
  end
15
- --- Helper function to clear all layers or specific layers from a sprite.
15
+ --- Helper function to clear all layers or specific layers from a sprite without unloading the
16
+ -- attached anm2 file.
16
17
  --
17
- -- This function is variadic, so pass as many layer IDs as you want to clear. If no specific layers
18
- -- are passed, it will clear every layer.
18
+ -- This function is variadic, which means you can pass as many layer IDs as you want to clear. If no
19
+ -- specific layers are passed, the function will clear every layer.
19
20
  --
20
- -- Since there is no official API method to "clear" a sprite, we can work around it by setting the
21
- -- spritesheet to a non-existent or completely transparent file. If the path to the spritesheet does
22
- -- not exist, then this function might cause spurious errors to appear in the "log.txt file". To
23
- -- silence these errors, create a transparent 1 pixel PNG file in your mod's resources folder at the
24
- -- path corresponding to the "EMPTY_PNG_PATH" constant.
21
+ -- If you want to clear all of the layers of a sprite and don't care about unloading the attached
22
+ -- anm2 file, then use the `Sprite.Reset` method instead.
23
+ --
24
+ -- Since there is no official API method to clear specific layers from a sprite, we work around it
25
+ -- by setting the spritesheet to a transparent PNG file corresponding to the `EMPTY_PNG_PATH`
26
+ -- constant.
27
+ --
28
+ -- This function will still work identically if PNG file does not exist, but it will cause a
29
+ -- spurious error to appear in the "log.txt" file. If silencing these errors is desired, you can
30
+ -- create a transparent 1 pixel PNG file in your mod's resources folder at `EMPTY_PNG_PATH`.
25
31
  function ____exports.clearSprite(self, sprite, ...)
26
32
  local layerIDs = {...}
27
33
  if #layerIDs == 0 then
@@ -80,8 +80,8 @@ export declare function newTrinketSprite(trinketType: TrinketType): Sprite;
80
80
  * @param trinket The trinket whose sprite you want to modify.
81
81
  * @param pngPath Equal to either the spritesheet path to load (e.g.
82
82
  * "gfx/items/trinkets/trinket_001_swallowedpenny.png") or undefined. If undefined,
83
- * the sprite will be removed, making it appear like the collectible has already been
84
- * taken by the player.
83
+ * the sprite will be removed, making the trinket effectively invisible (except for
84
+ * the shadow underneath it).
85
85
  */
86
86
  export declare function setTrinketSprite(trinket: EntityPickup, pngPath: string | undefined): void;
87
87
  /** Helper function to check in the item config if a given trinket has a given cache flag. */
@@ -1 +1 @@
1
- {"version":3,"file":"trinkets.d.ts","sourceRoot":"","sources":["../../../src/functions/trinkets.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAGT,WAAW,EACZ,MAAM,8BAA8B,CAAC;AAmCtC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW,CAE1E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,GAAG,GAAG,SAAS,CAkBxE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CActE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAOtE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAc/D;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,IAAI,WAAW,EAAE,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAOhE;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAErE;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAErE;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAEtE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAYjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,IAAI,CAeN;AAED,6FAA6F;AAC7F,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,GACnB,OAAO,CAOT"}
1
+ {"version":3,"file":"trinkets.d.ts","sourceRoot":"","sources":["../../../src/functions/trinkets.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAGT,WAAW,EACZ,MAAM,8BAA8B,CAAC;AAmCtC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW,CAE1E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,GAAG,GAAG,SAAS,CAkBxE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CActE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAOtE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAc/D;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,IAAI,WAAW,EAAE,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAOhE;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAErE;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAErE;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAEtE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAYjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,IAAI,CAiBN;AAED,6FAA6F;AAC7F,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,GACnB,OAAO,CAOT"}
@@ -167,8 +167,8 @@ end
167
167
  -- @param trinket The trinket whose sprite you want to modify.
168
168
  -- @param pngPath Equal to either the spritesheet path to load (e.g.
169
169
  -- "gfx/items/trinkets/trinket_001_swallowedpenny.png") or undefined. If undefined,
170
- -- the sprite will be removed, making it appear like the collectible has already been
171
- -- taken by the player.
170
+ -- the sprite will be removed, making the trinket effectively invisible (except for
171
+ -- the shadow underneath it).
172
172
  function ____exports.setTrinketSprite(self, trinket, pngPath)
173
173
  if not isTrinket(nil, trinket) then
174
174
  local entityID = getEntityID(nil, trinket)
@@ -176,7 +176,7 @@ function ____exports.setTrinketSprite(self, trinket, pngPath)
176
176
  end
177
177
  local sprite = trinket:GetSprite()
178
178
  if pngPath == nil then
179
- clearSprite(nil, sprite, TRINKET_SPRITE_LAYER)
179
+ clearSprite(nil, sprite)
180
180
  else
181
181
  sprite:ReplaceSpritesheet(TRINKET_SPRITE_LAYER, pngPath)
182
182
  sprite:LoadGraphics()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "20.0.0",
3
+ "version": "20.1.1",
4
4
  "description": "Helper functions and features for IsaacScript mods.",
5
5
  "keywords": [
6
6
  "isaac",
@@ -22,6 +22,6 @@
22
22
  "main": "dist/src/index",
23
23
  "types": "dist/src/index.d.ts",
24
24
  "dependencies": {
25
- "isaac-typescript-definitions": "^10.1.3"
25
+ "isaac-typescript-definitions": "^10.1.4"
26
26
  }
27
27
  }
@@ -526,7 +526,8 @@ export function newCollectibleSprite(collectibleType: CollectibleType): Sprite {
526
526
  sprite.Load(COLLECTIBLE_ANM2_PATH, false);
527
527
 
528
528
  // We want to clear the pedestal layers so that the returned sprite only has the collectible
529
- // image.
529
+ // image. We can't use the `Sprite.Reset` method for this purpose because that would unload the
530
+ // anm2 file.
530
531
  clearSprite(sprite);
531
532
 
532
533
  const gfxFileName = getCollectibleGfxFilename(collectibleType);
@@ -83,17 +83,26 @@ export function doesEntityExist(
83
83
  * const gapers = getEntities(EntityType.GAPER);
84
84
  * const closestGaper = getClosestEntityTo(player, gapers);
85
85
  * ```
86
+ *
87
+ * @param referenceEntity The entity that is close by.
88
+ * @param entities The array of entities to look through.
89
+ * @param filterFunc Optional. A function to filter for a specific type of entity, like e.g. an
90
+ * enemy with a certain amount of HP left.
86
91
  */
87
92
  export function getClosestEntityTo<T extends AnyEntity>(
88
93
  referenceEntity: Entity,
89
94
  entities: T[],
95
+ filterFunc?: (entity: T) => boolean,
90
96
  ): T | undefined {
91
97
  let closestEntity: T | undefined;
92
98
  let closestDistance = math.huge;
93
99
  for (const entity of entities) {
94
100
  const distance = referenceEntity.Position.Distance(entity.Position);
95
101
 
96
- if (distance < closestDistance) {
102
+ if (
103
+ distance < closestDistance &&
104
+ (filterFunc === undefined || filterFunc(entity))
105
+ ) {
97
106
  closestEntity = entity;
98
107
  closestDistance = distance;
99
108
  }
@@ -21,7 +21,6 @@ import { removeEntities } from "./entities";
21
21
  import { getEffects } from "./entitiesSpecific";
22
22
  import { isCircleIntersectingRectangle } from "./math";
23
23
  import { roomUpdateSafe } from "./rooms";
24
- import { clearSprite } from "./sprites";
25
24
  import { asNumber, isNumber } from "./types";
26
25
  import { eRange, iRange } from "./utils";
27
26
  import { isVector, vectorEquals } from "./vector";
@@ -630,14 +629,15 @@ export function removeGridEntity(
630
629
  }
631
630
 
632
631
  /**
633
- * Helper function to make a grid entity invisible. This is accomplished by setting its sprite to an
634
- * empty/missing PNG file.
632
+ * Helper function to make a grid entity invisible. This is accomplished by resetting the sprite.
635
633
  *
636
- * For more information, see the documentation for the `clearSprite` helper function.
634
+ * Note that this function is destructive such that once you make a grid entity invisible, it can no
635
+ * longer become visible. (This is because the information about the sprite is lost when it is
636
+ * reset.)
637
637
  */
638
638
  export function setGridEntityInvisible(gridEntity: GridEntity): void {
639
639
  const sprite = gridEntity.GetSprite();
640
- clearSprite(sprite);
640
+ sprite.Reset();
641
641
  }
642
642
 
643
643
  /**
@@ -3,16 +3,22 @@ import { kColorEquals } from "./kColor";
3
3
  import { eRange } from "./utils";
4
4
 
5
5
  /**
6
- * Helper function to clear all layers or specific layers from a sprite.
6
+ * Helper function to clear all layers or specific layers from a sprite without unloading the
7
+ * attached anm2 file.
7
8
  *
8
- * This function is variadic, so pass as many layer IDs as you want to clear. If no specific layers
9
- * are passed, it will clear every layer.
9
+ * This function is variadic, which means you can pass as many layer IDs as you want to clear. If no
10
+ * specific layers are passed, the function will clear every layer.
10
11
  *
11
- * Since there is no official API method to "clear" a sprite, we can work around it by setting the
12
- * spritesheet to a non-existent or completely transparent file. If the path to the spritesheet does
13
- * not exist, then this function might cause spurious errors to appear in the "log.txt file". To
14
- * silence these errors, create a transparent 1 pixel PNG file in your mod's resources folder at the
15
- * path corresponding to the "EMPTY_PNG_PATH" constant.
12
+ * If you want to clear all of the layers of a sprite and don't care about unloading the attached
13
+ * anm2 file, then use the `Sprite.Reset` method instead.
14
+ *
15
+ * Since there is no official API method to clear specific layers from a sprite, we work around it
16
+ * by setting the spritesheet to a transparent PNG file corresponding to the `EMPTY_PNG_PATH`
17
+ * constant.
18
+ *
19
+ * This function will still work identically if PNG file does not exist, but it will cause a
20
+ * spurious error to appear in the "log.txt" file. If silencing these errors is desired, you can
21
+ * create a transparent 1 pixel PNG file in your mod's resources folder at `EMPTY_PNG_PATH`.
16
22
  */
17
23
  export function clearSprite(sprite: Sprite, ...layerIDs: int[]): void {
18
24
  if (layerIDs.length === 0) {
@@ -212,8 +212,8 @@ export function newTrinketSprite(trinketType: TrinketType): Sprite {
212
212
  * @param trinket The trinket whose sprite you want to modify.
213
213
  * @param pngPath Equal to either the spritesheet path to load (e.g.
214
214
  * "gfx/items/trinkets/trinket_001_swallowedpenny.png") or undefined. If undefined,
215
- * the sprite will be removed, making it appear like the collectible has already been
216
- * taken by the player.
215
+ * the sprite will be removed, making the trinket effectively invisible (except for
216
+ * the shadow underneath it).
217
217
  */
218
218
  export function setTrinketSprite(
219
219
  trinket: EntityPickup,
@@ -228,7 +228,9 @@ export function setTrinketSprite(
228
228
 
229
229
  const sprite = trinket.GetSprite();
230
230
  if (pngPath === undefined) {
231
- clearSprite(sprite, TRINKET_SPRITE_LAYER);
231
+ // We use `clearSpriteLayer` instead of `Sprite.Reset` to maintain parity with the
232
+ // `setCollectibleSprite` function.
233
+ clearSprite(sprite);
232
234
  } else {
233
235
  sprite.ReplaceSpritesheet(TRINKET_SPRITE_LAYER, pngPath);
234
236
  sprite.LoadGraphics();