isaacscript-common 14.1.3 → 14.2.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.
- package/dist/index.d.ts +919 -141
- package/dist/isaacscript-common.lua +4752 -1790
- package/dist/src/callbacks.d.ts +102 -20
- package/dist/src/callbacks.d.ts.map +1 -1
- package/dist/src/callbacks.lua +124 -1
- package/dist/src/classes/ModFeature.d.ts.map +1 -1
- package/dist/src/classes/ModFeature.lua +22 -1
- package/dist/src/classes/ModUpgraded.d.ts +10 -5
- package/dist/src/classes/ModUpgraded.d.ts.map +1 -1
- package/dist/src/classes/ModUpgraded.lua +30 -11
- package/dist/src/classes/callbacks/PostCustomRevive.d.ts +5 -2
- package/dist/src/classes/callbacks/PostCustomRevive.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostCustomRevive.lua +12 -4
- package/dist/src/classes/callbacks/PostGridEntityBroken.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCollision.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCustomBroken.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCustomCollision.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCustomInit.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCustomRemove.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCustomRender.d.ts +6 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomRender.lua +17 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomStateChanged.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCustomUpdate.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityInit.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityRemove.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityRender.d.ts +6 -0
- package/dist/src/classes/callbacks/PostGridEntityRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityRender.lua +17 -0
- package/dist/src/classes/callbacks/PostGridEntityStateChanged.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityUpdate.lua +1 -1
- package/dist/src/classes/callbacks/PostHolyMantleRemoved.d.ts +1 -1
- package/dist/src/classes/callbacks/PostHolyMantleRemoved.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostHolyMantleRemoved.lua +3 -4
- package/dist/src/classes/callbacks/PostItemDischarge.d.ts +43 -0
- package/dist/src/classes/callbacks/PostItemDischarge.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostItemDischarge.lua +113 -0
- package/dist/src/classes/callbacks/PostItemPickup.d.ts +6 -0
- package/dist/src/classes/callbacks/PostItemPickup.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostItemPickup.lua +17 -0
- package/dist/src/classes/callbacks/PostLaserInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostLaserInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostLaserInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostNPCInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostNPCInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostNPCInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostNPCStateChanged.d.ts +14 -0
- package/dist/src/classes/callbacks/PostNPCStateChanged.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostNPCStateChanged.lua +33 -0
- package/dist/src/classes/callbacks/PostPickupCollect.d.ts +12 -0
- package/dist/src/classes/callbacks/PostPickupCollect.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPickupCollect.lua +35 -0
- package/dist/src/classes/callbacks/PostPickupInitFirst.d.ts +12 -0
- package/dist/src/classes/callbacks/PostPickupInitFirst.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPickupInitFirst.lua +32 -0
- package/dist/src/classes/callbacks/PostPickupInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostPickupInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPickupInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostPickupStateChanged.d.ts +13 -0
- package/dist/src/classes/callbacks/PostPickupStateChanged.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPickupStateChanged.lua +33 -0
- package/dist/src/classes/callbacks/PostPitUpdate.d.ts +7 -0
- package/dist/src/classes/callbacks/PostPitUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPitUpdate.lua +24 -0
- package/dist/src/classes/callbacks/PostPlayerChangeHealth.d.ts +15 -0
- package/dist/src/classes/callbacks/PostPlayerChangeHealth.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerChangeHealth.lua +52 -0
- package/dist/src/classes/callbacks/PostPlayerChangeStat.d.ts +16 -0
- package/dist/src/classes/callbacks/PostPlayerChangeStat.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerChangeStat.lua +94 -0
- package/dist/src/classes/callbacks/PostPlayerChangeType.d.ts +15 -0
- package/dist/src/classes/callbacks/PostPlayerChangeType.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerChangeType.lua +37 -0
- package/dist/src/classes/callbacks/PostPlayerCollectibleAdded.d.ts +6 -0
- package/dist/src/classes/callbacks/PostPlayerCollectibleAdded.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerCollectibleAdded.lua +17 -0
- package/dist/src/classes/callbacks/PostPlayerCollectibleRemoved.d.ts +6 -0
- package/dist/src/classes/callbacks/PostPlayerCollectibleRemoved.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerCollectibleRemoved.lua +17 -0
- package/dist/src/classes/callbacks/PostPlayerInitFirst.d.ts +8 -0
- package/dist/src/classes/callbacks/PostPlayerInitFirst.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerInitFirst.lua +39 -0
- package/dist/src/classes/callbacks/PostPlayerInitLate.d.ts +13 -0
- package/dist/src/classes/callbacks/PostPlayerInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerInitLate.lua +29 -0
- package/dist/src/classes/callbacks/PostPoopRender.d.ts +7 -0
- package/dist/src/classes/callbacks/PostPoopRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPoopRender.lua +24 -0
- package/dist/src/classes/callbacks/PostPoopUpdate.d.ts +7 -0
- package/dist/src/classes/callbacks/PostPoopUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPoopUpdate.lua +24 -0
- package/dist/src/classes/callbacks/PostPressurePlateRender.d.ts +7 -0
- package/dist/src/classes/callbacks/PostPressurePlateRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPressurePlateRender.lua +24 -0
- package/dist/src/classes/callbacks/PostPressurePlateUpdate.d.ts +7 -0
- package/dist/src/classes/callbacks/PostPressurePlateUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPressurePlateUpdate.lua +24 -0
- package/dist/src/classes/callbacks/PostProjectileInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostProjectileInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostProjectileInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostPurchase.d.ts +18 -0
- package/dist/src/classes/callbacks/PostPurchase.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPurchase.lua +56 -0
- package/dist/src/classes/callbacks/PostRockRender.d.ts +7 -0
- package/dist/src/classes/callbacks/PostRockRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostRockRender.lua +24 -0
- package/dist/src/classes/callbacks/PostRockUpdate.d.ts +7 -0
- package/dist/src/classes/callbacks/PostRockUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostRockUpdate.lua +24 -0
- package/dist/src/classes/callbacks/PostSacrifice.d.ts +15 -0
- package/dist/src/classes/callbacks/PostSacrifice.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSacrifice.lua +52 -0
- package/dist/src/classes/callbacks/PostSlotAnimationChanged.d.ts +6 -0
- package/dist/src/classes/callbacks/PostSlotAnimationChanged.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSlotAnimationChanged.lua +17 -0
- package/dist/src/classes/callbacks/PostSlotCollision.d.ts +7 -0
- package/dist/src/classes/callbacks/PostSlotCollision.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSlotCollision.lua +25 -0
- package/dist/src/classes/callbacks/PostSlotDestroyed.d.ts +14 -0
- package/dist/src/classes/callbacks/PostSlotDestroyed.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSlotDestroyed.lua +65 -0
- package/dist/src/classes/callbacks/PostSlotInit.d.ts +6 -0
- package/dist/src/classes/callbacks/PostSlotInit.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSlotInit.lua +17 -0
- package/dist/src/classes/callbacks/PostSlotRender.d.ts +6 -0
- package/dist/src/classes/callbacks/PostSlotRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSlotRender.lua +17 -0
- package/dist/src/classes/callbacks/PostSlotUpdate.d.ts +6 -0
- package/dist/src/classes/callbacks/PostSlotUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSlotUpdate.lua +17 -0
- package/dist/src/classes/callbacks/PostSpikesUpdate.d.ts +7 -0
- package/dist/src/classes/callbacks/PostSpikesUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSpikesUpdate.lua +24 -0
- package/dist/src/classes/callbacks/PostTNTRender.d.ts +7 -0
- package/dist/src/classes/callbacks/PostTNTRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostTNTRender.lua +24 -0
- package/dist/src/classes/callbacks/PostTNTUpdate.d.ts +7 -0
- package/dist/src/classes/callbacks/PostTNTUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostTNTUpdate.lua +24 -0
- package/dist/src/classes/callbacks/PostTearInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostTearInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostTearInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostTearInitVeryLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostTearInitVeryLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostTearInitVeryLate.lua +30 -0
- package/dist/src/classes/callbacks/PostTransformation.d.ts +18 -0
- package/dist/src/classes/callbacks/PostTransformation.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostTransformation.lua +53 -0
- package/dist/src/classes/callbacks/PreBerserkDeath.d.ts +1 -1
- package/dist/src/classes/callbacks/PreBerserkDeath.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PreBerserkDeath.lua +3 -4
- package/dist/src/classes/callbacks/PreItemPickup.d.ts +6 -0
- package/dist/src/classes/callbacks/PreItemPickup.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PreItemPickup.lua +17 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackCollectibleType.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackCollectibleType.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackCollectibleType.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackItemPickup.d.ts +11 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackItemPickup.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackItemPickup.lua +22 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackLaser.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackLaser.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackLaser.lua +19 -0
- package/dist/src/classes/callbacks/validation/{CustomCallbackRevive.d.ts → CustomCallbackNPC.d.ts} +4 -4
- package/dist/src/classes/callbacks/validation/CustomCallbackNPC.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackNPC.lua +22 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPickup.d.ts +12 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPickup.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPickup.lua +22 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPlayer.d.ts +5 -2
- package/dist/src/classes/callbacks/validation/CustomCallbackPlayer.d.ts.map +1 -1
- package/dist/src/classes/callbacks/validation/CustomCallbackPoop.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPoop.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPoop.lua +20 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPressurePlate.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPressurePlate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPressurePlate.lua +20 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackProjectile.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackProjectile.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackProjectile.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackRock.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackRock.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackRock.lua +20 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackSlot.d.ts +12 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackSlot.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackSlot.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackSpikes.lua +4 -4
- package/dist/src/classes/callbacks/validation/CustomCallbackTNT.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackTNT.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackTNT.lua +20 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackTear.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackTear.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackTear.lua +19 -0
- package/dist/src/classes/features/callbackLogic/CustomGridEntities.d.ts +1 -1
- package/dist/src/classes/features/callbackLogic/CustomGridEntities.d.ts.map +1 -1
- package/dist/src/classes/features/callbackLogic/CustomGridEntities.lua +27 -30
- package/dist/src/classes/features/callbackLogic/CustomRevive.d.ts +2 -2
- package/dist/src/classes/features/callbackLogic/CustomRevive.d.ts.map +1 -1
- package/dist/src/classes/features/callbackLogic/CustomRevive.lua +6 -6
- package/dist/src/classes/features/callbackLogic/EsauJrDetection.d.ts.map +1 -1
- package/dist/src/classes/features/callbackLogic/GameReorderedCallbacks.d.ts.map +1 -1
- package/dist/src/classes/features/callbackLogic/GameReorderedCallbacks.lua +3 -18
- package/dist/src/classes/features/callbackLogic/GridEntityCollisionDetection.d.ts.map +1 -1
- package/dist/src/classes/features/callbackLogic/GridEntityRenderDetection.d.ts +12 -0
- package/dist/src/classes/features/callbackLogic/GridEntityRenderDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/GridEntityRenderDetection.lua +33 -0
- package/dist/src/classes/features/callbackLogic/{GridEntityDetection.d.ts → GridEntityUpdateDetection.d.ts} +3 -3
- package/dist/src/classes/features/callbackLogic/GridEntityUpdateDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/{GridEntityDetection.lua → GridEntityUpdateDetection.lua} +11 -14
- package/dist/src/classes/features/callbackLogic/ItemPickupDetection.d.ts +20 -0
- package/dist/src/classes/features/callbackLogic/ItemPickupDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/ItemPickupDetection.lua +60 -0
- package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.d.ts +47 -0
- package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.lua +154 -0
- package/dist/src/classes/features/callbackLogic/SlotRenderDetection.d.ts +18 -0
- package/dist/src/classes/features/callbackLogic/SlotRenderDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/SlotRenderDetection.lua +51 -0
- package/dist/src/classes/features/callbackLogic/SlotUpdateDetection.d.ts +17 -0
- package/dist/src/classes/features/callbackLogic/SlotUpdateDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/SlotUpdateDetection.lua +45 -0
- package/dist/src/classes/features/other/RunInNFrames.d.ts.map +1 -1
- package/dist/src/classes/features/other/RunInNFrames.lua +9 -0
- package/dist/src/classes/features/other/SaveDataManager.d.ts +215 -0
- package/dist/src/classes/features/other/SaveDataManager.d.ts.map +1 -0
- package/dist/src/classes/features/other/SaveDataManager.lua +190 -0
- package/dist/src/classes/features/other/saveDataManager/glowingHourGlass.d.ts +6 -0
- package/dist/src/classes/features/other/saveDataManager/glowingHourGlass.d.ts.map +1 -0
- package/dist/src/classes/features/other/saveDataManager/glowingHourGlass.lua +98 -0
- package/dist/src/classes/features/other/saveDataManager/loadFromDisk.d.ts +6 -0
- package/dist/src/classes/features/other/saveDataManager/loadFromDisk.d.ts.map +1 -0
- package/dist/src/classes/features/other/saveDataManager/loadFromDisk.lua +81 -0
- package/dist/src/classes/features/other/saveDataManager/restoreDefaults.d.ts +7 -0
- package/dist/src/classes/features/other/saveDataManager/restoreDefaults.d.ts.map +1 -0
- package/dist/src/classes/features/other/saveDataManager/restoreDefaults.lua +69 -0
- package/dist/src/classes/features/other/saveDataManager/saveToDisk.d.ts +5 -0
- package/dist/src/classes/features/other/saveDataManager/saveToDisk.d.ts.map +1 -0
- package/dist/src/classes/features/other/saveDataManager/saveToDisk.lua +46 -0
- package/dist/src/classes/private/CustomCallback.d.ts +2 -3
- package/dist/src/classes/private/CustomCallback.d.ts.map +1 -1
- package/dist/src/classes/private/CustomCallback.lua +2 -5
- package/dist/src/classes/private/Feature.d.ts +1 -0
- package/dist/src/classes/private/Feature.d.ts.map +1 -1
- package/dist/src/classes/private/Feature.lua +1 -0
- package/dist/src/core/upgradeMod.d.ts.map +1 -1
- package/dist/src/decorators.d.ts +1 -1
- package/dist/src/decorators.d.ts.map +1 -1
- package/dist/src/decorators.lua +6 -8
- package/dist/src/enums/ISCFeature.d.ts +15 -9
- package/dist/src/enums/ISCFeature.d.ts.map +1 -1
- package/dist/src/enums/ISCFeature.lua +30 -9
- package/dist/src/enums/ModCallbackCustom.d.ts +34 -20
- package/dist/src/enums/ModCallbackCustom.d.ts.map +1 -1
- package/dist/src/enums/ModCallbackCustom2.d.ts +61 -20
- package/dist/src/enums/ModCallbackCustom2.d.ts.map +1 -1
- package/dist/src/enums/ModCallbackCustom2.lua +102 -20
- package/dist/src/enums/{private/SerializationBrand.d.ts → SerializationBrand.d.ts} +6 -1
- package/dist/src/enums/SerializationBrand.d.ts.map +1 -0
- package/dist/src/enums/{private/SerializationBrand.lua → SerializationBrand.lua} +1 -0
- package/dist/src/features/customItemPool.d.ts +52 -0
- package/dist/src/features/customItemPool.d.ts.map +1 -0
- package/dist/src/features/customItemPool.lua +111 -0
- package/dist/src/features/deployJSONRoom.d.ts +6 -4
- package/dist/src/features/deployJSONRoom.d.ts.map +1 -1
- package/dist/src/features/deployJSONRoom.lua +6 -4
- package/dist/src/features/fadeInRemover.d.ts.map +1 -1
- package/dist/src/features/fadeInRemover.lua +4 -16
- package/dist/src/features/saveDataManager/exports.d.ts +14 -4
- package/dist/src/features/saveDataManager/exports.d.ts.map +1 -1
- package/dist/src/features/saveDataManager/exports.lua +38 -0
- package/dist/src/features/saveDataManager/load.d.ts +2 -1
- package/dist/src/features/saveDataManager/load.d.ts.map +1 -1
- package/dist/src/features/saveDataManager/load.lua +10 -4
- package/dist/src/features/saveDataManager/main.d.ts.map +1 -1
- package/dist/src/features/saveDataManager/main.lua +12 -5
- package/dist/src/features/saveDataManager/maps.d.ts +14 -0
- package/dist/src/features/saveDataManager/maps.d.ts.map +1 -1
- package/dist/src/features/saveDataManager/maps.lua +7 -0
- package/dist/src/features.d.ts +31 -12
- package/dist/src/features.d.ts.map +1 -1
- package/dist/src/features.lua +24 -6
- package/dist/src/functions/array.d.ts.map +1 -1
- package/dist/src/functions/array.lua +4 -5
- package/dist/src/functions/bitSet128.d.ts +2 -2
- package/dist/src/functions/bitSet128.lua +3 -3
- package/dist/src/functions/color.d.ts +2 -2
- package/dist/src/functions/color.lua +3 -3
- package/dist/src/functions/decorators.d.ts +21 -0
- package/dist/src/functions/decorators.d.ts.map +1 -1
- package/dist/src/functions/deepCopy.d.ts +11 -4
- package/dist/src/functions/deepCopy.d.ts.map +1 -1
- package/dist/src/functions/deepCopy.lua +84 -32
- package/dist/src/functions/deepCopyTests.lua +1 -1
- package/dist/src/functions/initArray.d.ts +4 -4
- package/dist/src/functions/initArray.d.ts.map +1 -1
- package/dist/src/functions/initArray.lua +6 -12
- package/dist/src/functions/jsonRoom.d.ts +11 -0
- package/dist/src/functions/jsonRoom.d.ts.map +1 -1
- package/dist/src/functions/jsonRoom.lua +11 -0
- package/dist/src/functions/kColor.d.ts +2 -2
- package/dist/src/functions/kColor.lua +3 -3
- package/dist/src/functions/merge.d.ts +40 -0
- package/dist/src/functions/merge.d.ts.map +1 -0
- package/dist/src/{features/saveDataManager → functions}/merge.lua +84 -37
- package/dist/src/functions/mergeTests.d.ts +1 -2
- package/dist/src/functions/mergeTests.d.ts.map +1 -1
- package/dist/src/functions/mergeTests.lua +3 -4
- package/dist/src/functions/rng.d.ts +2 -2
- package/dist/src/functions/rng.lua +3 -3
- package/dist/src/functions/serialization.d.ts.map +1 -1
- package/dist/src/functions/serialization.lua +22 -0
- package/dist/src/functions/tstlClass.d.ts +0 -10
- package/dist/src/functions/tstlClass.d.ts.map +1 -1
- package/dist/src/functions/tstlClass.lua +2 -42
- package/dist/src/functions/vector.d.ts +2 -2
- package/dist/src/functions/vector.lua +3 -3
- package/dist/src/functions/weighted.d.ts +12 -1
- package/dist/src/functions/weighted.d.ts.map +1 -1
- package/dist/src/functions/weighted.lua +27 -10
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.lua +24 -0
- package/dist/src/interfaces/SaveData.d.ts +3 -7
- package/dist/src/interfaces/SaveData.d.ts.map +1 -1
- package/dist/src/interfaces/SaveData.lua +0 -11
- package/dist/src/interfaces/private/AddCallbackParametersCustom2.d.ts +195 -2
- package/dist/src/interfaces/private/AddCallbackParametersCustom2.d.ts.map +1 -1
- package/dist/src/objects/isaacAPIClassTypeToBrand.d.ts +1 -1
- package/dist/src/objects/isaacAPIClassTypeToBrand.d.ts.map +1 -1
- package/dist/src/objects/isaacAPIClassTypeToBrand.lua +1 -1
- package/dist/src/types/AnyClass.d.ts +2 -0
- package/dist/src/types/AnyClass.d.ts.map +1 -0
- package/dist/src/types/AnyClass.lua +2 -0
- package/dist/src/types/AnyFunction.d.ts +6 -0
- package/dist/src/types/AnyFunction.d.ts.map +1 -0
- package/dist/src/types/AnyFunction.lua +2 -0
- package/dist/src/types/FunctionTuple.d.ts +2 -4
- package/dist/src/types/FunctionTuple.d.ts.map +1 -1
- package/dist/src/types/HasFunction.d.ts +5 -0
- package/dist/src/types/HasFunction.d.ts.map +1 -0
- package/dist/src/types/HasFunction.lua +2 -0
- package/package.json +1 -1
- package/src/callbacks.ts +88 -5
- package/src/classes/ModFeature.ts +31 -1
- package/src/classes/ModUpgraded.ts +49 -21
- package/src/classes/callbacks/PostCustomRevive.ts +22 -2
- package/src/classes/callbacks/PostGridEntityBroken.ts +1 -1
- package/src/classes/callbacks/PostGridEntityCollision.ts +1 -1
- package/src/classes/callbacks/PostGridEntityCustomBroken.ts +1 -1
- package/src/classes/callbacks/PostGridEntityCustomCollision.ts +1 -1
- package/src/classes/callbacks/PostGridEntityCustomInit.ts +1 -1
- package/src/classes/callbacks/PostGridEntityCustomRemove.ts +1 -1
- package/src/classes/callbacks/PostGridEntityCustomRender.ts +11 -0
- package/src/classes/callbacks/PostGridEntityCustomStateChanged.ts +1 -1
- package/src/classes/callbacks/PostGridEntityCustomUpdate.ts +1 -1
- package/src/classes/callbacks/PostGridEntityInit.ts +1 -1
- package/src/classes/callbacks/PostGridEntityRemove.ts +1 -1
- package/src/classes/callbacks/PostGridEntityRender.ts +11 -0
- package/src/classes/callbacks/PostGridEntityStateChanged.ts +1 -1
- package/src/classes/callbacks/PostGridEntityUpdate.ts +1 -1
- package/src/classes/callbacks/PostHolyMantleRemoved.ts +5 -8
- package/src/classes/callbacks/PostItemDischarge.ts +181 -0
- package/src/classes/callbacks/PostItemPickup.ts +11 -0
- package/src/classes/callbacks/PostLaserInitLate.ts +28 -0
- package/src/classes/callbacks/PostNPCInitLate.ts +28 -0
- package/src/classes/callbacks/PostNPCStateChanged.ts +37 -0
- package/src/classes/callbacks/PostPickupCollect.ts +37 -0
- package/src/classes/callbacks/PostPickupInitFirst.ts +34 -0
- package/src/classes/callbacks/PostPickupInitLate.ts +28 -0
- package/src/classes/callbacks/PostPickupStateChanged.ts +35 -0
- package/src/classes/callbacks/PostPitUpdate.ts +21 -0
- package/src/classes/callbacks/PostPlayerChangeHealth.ts +57 -0
- package/src/classes/callbacks/PostPlayerChangeStat.ts +102 -0
- package/src/classes/callbacks/PostPlayerChangeType.ts +44 -0
- package/src/classes/callbacks/PostPlayerCollectibleAdded.ts +11 -0
- package/src/classes/callbacks/PostPlayerCollectibleRemoved.ts +11 -0
- package/src/classes/callbacks/PostPlayerInitFirst.ts +44 -0
- package/src/classes/callbacks/PostPlayerInitLate.ts +32 -0
- package/src/classes/callbacks/PostPoopRender.ts +21 -0
- package/src/classes/callbacks/PostPoopUpdate.ts +21 -0
- package/src/classes/callbacks/PostPressurePlateRender.ts +21 -0
- package/src/classes/callbacks/PostPressurePlateUpdate.ts +21 -0
- package/src/classes/callbacks/PostProjectileInitLate.ts +28 -0
- package/src/classes/callbacks/PostPurchase.ts +87 -0
- package/src/classes/callbacks/PostRockRender.ts +21 -0
- package/src/classes/callbacks/PostRockUpdate.ts +21 -0
- package/src/classes/callbacks/PostSacrifice.ts +89 -0
- package/src/classes/callbacks/PostSlotAnimationChanged.ts +11 -0
- package/src/classes/callbacks/PostSlotCollision.ts +26 -0
- package/src/classes/callbacks/PostSlotDestroyed.ts +79 -0
- package/src/classes/callbacks/PostSlotInit.ts +11 -0
- package/src/classes/callbacks/PostSlotRender.ts +11 -0
- package/src/classes/callbacks/PostSlotUpdate.ts +11 -0
- package/src/classes/callbacks/PostSpikesUpdate.ts +21 -0
- package/src/classes/callbacks/PostTNTRender.ts +21 -0
- package/src/classes/callbacks/PostTNTUpdate.ts +21 -0
- package/src/classes/callbacks/PostTearInitLate.ts +28 -0
- package/src/classes/callbacks/PostTearInitVeryLate.ts +33 -0
- package/src/classes/callbacks/PostTransformation.ts +71 -0
- package/src/classes/callbacks/PreBerserkDeath.ts +5 -8
- package/src/classes/callbacks/PreItemPickup.ts +11 -0
- package/src/classes/callbacks/validation/CustomCallbackCollectibleType.ts +32 -0
- package/src/classes/callbacks/validation/CustomCallbackItemPickup.ts +48 -0
- package/src/classes/callbacks/validation/CustomCallbackLaser.ts +27 -0
- package/src/classes/callbacks/validation/CustomCallbackNPC.ts +34 -0
- package/src/classes/callbacks/validation/CustomCallbackPickup.ts +41 -0
- package/src/classes/callbacks/validation/CustomCallbackPlayer.ts +25 -2
- package/src/classes/callbacks/validation/CustomCallbackPoop.ts +28 -0
- package/src/classes/callbacks/validation/CustomCallbackPressurePlate.ts +31 -0
- package/src/classes/callbacks/validation/CustomCallbackProjectile.ts +28 -0
- package/src/classes/callbacks/validation/CustomCallbackRock.ts +30 -0
- package/src/classes/callbacks/validation/CustomCallbackSlot.ts +37 -0
- package/src/classes/callbacks/validation/CustomCallbackSpikes.ts +4 -4
- package/src/classes/callbacks/validation/CustomCallbackTNT.ts +28 -0
- package/src/classes/callbacks/validation/CustomCallbackTear.ts +27 -0
- package/src/classes/features/callbackLogic/CustomGridEntities.ts +32 -36
- package/src/classes/features/callbackLogic/CustomRevive.ts +14 -21
- package/src/classes/features/callbackLogic/EsauJrDetection.ts +0 -4
- package/src/classes/features/callbackLogic/GameReorderedCallbacks.ts +7 -9
- package/src/classes/features/callbackLogic/GridEntityCollisionDetection.ts +0 -4
- package/src/classes/features/callbackLogic/GridEntityRenderDetection.ts +42 -0
- package/src/classes/features/callbackLogic/{GridEntityDetection.ts → GridEntityUpdateDetection.ts} +4 -20
- package/src/classes/features/callbackLogic/ItemPickupDetection.ts +91 -0
- package/src/classes/features/callbackLogic/PlayerCollectibleDetection.ts +245 -0
- package/src/classes/features/callbackLogic/SlotRenderDetection.ts +64 -0
- package/src/classes/features/callbackLogic/SlotUpdateDetection.ts +57 -0
- package/src/classes/features/other/RunInNFrames.ts +7 -0
- package/src/classes/features/other/SaveDataManager.ts +492 -0
- package/src/classes/features/other/saveDataManager/glowingHourGlass.ts +138 -0
- package/src/classes/features/other/saveDataManager/loadFromDisk.ts +99 -0
- package/src/classes/features/other/saveDataManager/restoreDefaults.ts +116 -0
- package/src/classes/features/other/saveDataManager/saveToDisk.ts +70 -0
- package/src/classes/private/CustomCallback.ts +2 -6
- package/src/classes/private/Feature.ts +1 -0
- package/src/core/upgradeMod.ts +2 -4
- package/src/decorators.ts +17 -19
- package/src/enums/ISCFeature.ts +44 -39
- package/src/enums/ModCallbackCustom.ts +34 -20
- package/src/enums/ModCallbackCustom2.ts +53 -5
- package/src/enums/{private/SerializationBrand.ts → SerializationBrand.ts} +8 -2
- package/src/features/customItemPool.ts +133 -0
- package/src/features/deployJSONRoom.ts +6 -4
- package/src/features/fadeInRemover.ts +4 -22
- package/src/features/saveDataManager/exports.ts +62 -3
- package/src/features/saveDataManager/load.ts +4 -1
- package/src/features/saveDataManager/main.ts +5 -3
- package/src/features/saveDataManager/maps.ts +16 -0
- package/src/features.ts +39 -4
- package/src/functions/array.ts +8 -9
- package/src/functions/bitSet128.ts +3 -3
- package/src/functions/color.ts +3 -3
- package/src/functions/decorators.ts +22 -0
- package/src/functions/deepCopy.ts +83 -17
- package/src/functions/deepCopyTests.ts +1 -1
- package/src/functions/initArray.ts +6 -11
- package/src/functions/jsonRoom.ts +11 -0
- package/src/functions/kColor.ts +3 -3
- package/src/{features/saveDataManager → functions}/merge.ts +79 -45
- package/src/functions/mergeTests.ts +2 -3
- package/src/functions/rng.ts +3 -3
- package/src/functions/serialization.ts +25 -1
- package/src/functions/table.ts +1 -1
- package/src/functions/tstlClass.ts +3 -57
- package/src/functions/vector.ts +3 -3
- package/src/functions/weighted.ts +28 -11
- package/src/index.ts +5 -0
- package/src/interfaces/SaveData.ts +3 -34
- package/src/interfaces/private/AddCallbackParametersCustom2.ts +298 -7
- package/src/objects/isaacAPIClassTypeToBrand.ts +1 -1
- package/src/types/AnyClass.ts +1 -0
- package/src/types/AnyFunction.ts +5 -0
- package/src/types/FunctionTuple.ts +3 -4
- package/src/types/HasFunction.ts +7 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackRevive.d.ts.map +0 -1
- package/dist/src/classes/callbacks/validation/CustomCallbackRevive.lua +0 -19
- package/dist/src/classes/features/callbackLogic/GridEntityDetection.d.ts.map +0 -1
- package/dist/src/enums/private/SerializationBrand.d.ts.map +0 -1
- package/dist/src/features/saveDataManager/merge.d.ts +0 -26
- package/dist/src/features/saveDataManager/merge.d.ts.map +0 -1
- package/dist/src/features/saveDataManager/serializationBrands.d.ts +0 -2
- package/dist/src/features/saveDataManager/serializationBrands.d.ts.map +0 -1
- package/dist/src/features/saveDataManager/serializationBrands.lua +0 -19
- package/dist/src/indexLua.d.ts +0 -199
- package/dist/src/indexLua.d.ts.map +0 -1
- package/dist/src/indexLua.lua +0 -1354
- package/src/classes/callbacks/validation/CustomCallbackRevive.ts +0 -27
- package/src/features/saveDataManager/serializationBrands.ts +0 -16
package/src/features.ts
CHANGED
|
@@ -5,9 +5,15 @@ import { EsauJrDetection } from "./classes/features/callbackLogic/EsauJrDetectio
|
|
|
5
5
|
import { FlipDetection } from "./classes/features/callbackLogic/FlipDetection";
|
|
6
6
|
import { GameReorderedCallbacks } from "./classes/features/callbackLogic/GameReorderedCallbacks";
|
|
7
7
|
import { GridEntityCollisionDetection } from "./classes/features/callbackLogic/GridEntityCollisionDetection";
|
|
8
|
-
import {
|
|
8
|
+
import { GridEntityRenderDetection } from "./classes/features/callbackLogic/GridEntityRenderDetection";
|
|
9
|
+
import { GridEntityUpdateDetection } from "./classes/features/callbackLogic/GridEntityUpdateDetection";
|
|
10
|
+
import { ItemPickupDetection } from "./classes/features/callbackLogic/ItemPickupDetection";
|
|
11
|
+
import { PlayerCollectibleDetection } from "./classes/features/callbackLogic/PlayerCollectibleDetection";
|
|
9
12
|
import { PlayerReorderedCallbacks } from "./classes/features/callbackLogic/PlayerReorderedCallbacks";
|
|
13
|
+
import { SlotRenderDetection } from "./classes/features/callbackLogic/SlotRenderDetection";
|
|
14
|
+
import { SlotUpdateDetection } from "./classes/features/callbackLogic/SlotUpdateDetection";
|
|
10
15
|
import { RunInNFrames } from "./classes/features/other/RunInNFrames";
|
|
16
|
+
import { SaveDataManager } from "./classes/features/other/SaveDataManager";
|
|
11
17
|
import { ISCFeature } from "./enums/ISCFeature";
|
|
12
18
|
import { ModCallbackCustom2 } from "./enums/ModCallbackCustom2";
|
|
13
19
|
import {
|
|
@@ -21,19 +27,25 @@ export interface ISCFeatureToClass {
|
|
|
21
27
|
[ISCFeature.ESAU_JR_DETECTION]: EsauJrDetection;
|
|
22
28
|
[ISCFeature.FLIP_DETECTION]: FlipDetection;
|
|
23
29
|
[ISCFeature.GRID_ENTITY_COLLISION_DETECTION]: GridEntityCollisionDetection;
|
|
24
|
-
[ISCFeature.
|
|
30
|
+
[ISCFeature.GRID_ENTITY_RENDER_DETECTION]: GridEntityRenderDetection;
|
|
31
|
+
[ISCFeature.GRID_ENTITY_UPDATE_DETECTION]: GridEntityUpdateDetection;
|
|
25
32
|
[ISCFeature.GAME_REORDERED_CALLBACKS]: GameReorderedCallbacks;
|
|
33
|
+
[ISCFeature.ITEM_PICKUP_DETECTION]: ItemPickupDetection;
|
|
34
|
+
[ISCFeature.PLAYER_COLLECTIBLE_DETECTION]: PlayerCollectibleDetection;
|
|
26
35
|
[ISCFeature.PLAYER_REORDERED_CALLBACKS]: PlayerReorderedCallbacks;
|
|
36
|
+
[ISCFeature.SLOT_RENDER_DETECTION]: SlotRenderDetection;
|
|
37
|
+
[ISCFeature.SLOT_UPDATE_DETECTION]: SlotUpdateDetection;
|
|
27
38
|
|
|
28
39
|
// Extra features
|
|
29
40
|
[ISCFeature.CUSTOM_GRID_ENTITIES]: CustomGridEntities;
|
|
30
41
|
[ISCFeature.RUN_IN_N_FRAMES]: RunInNFrames;
|
|
42
|
+
[ISCFeature.SAVE_DATA_MANAGER]: SaveDataManager;
|
|
31
43
|
}
|
|
32
44
|
|
|
33
45
|
validateInterfaceMatchesEnum<ISCFeatureToClass, ISCFeature>();
|
|
34
46
|
|
|
35
47
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
36
|
-
export function getFeatures(callbacks: ModCallbackCustomToClass) {
|
|
48
|
+
export function getFeatures(mod: Mod, callbacks: ModCallbackCustomToClass) {
|
|
37
49
|
// Some features rely on other features; we must initialize those first.
|
|
38
50
|
const runInNFrames = new RunInNFrames();
|
|
39
51
|
const customGridEntities = new CustomGridEntities(runInNFrames);
|
|
@@ -58,7 +70,7 @@ export function getFeatures(callbacks: ModCallbackCustomToClass) {
|
|
|
58
70
|
callbacks[ModCallbackCustom2.POST_GRID_ENTITY_CUSTOM_COLLISION],
|
|
59
71
|
customGridEntities,
|
|
60
72
|
),
|
|
61
|
-
[ISCFeature.
|
|
73
|
+
[ISCFeature.GRID_ENTITY_UPDATE_DETECTION]: new GridEntityUpdateDetection(
|
|
62
74
|
callbacks[ModCallbackCustom2.POST_GRID_ENTITY_INIT],
|
|
63
75
|
callbacks[ModCallbackCustom2.POST_GRID_ENTITY_CUSTOM_INIT],
|
|
64
76
|
callbacks[ModCallbackCustom2.POST_GRID_ENTITY_UPDATE],
|
|
@@ -71,20 +83,43 @@ export function getFeatures(callbacks: ModCallbackCustomToClass) {
|
|
|
71
83
|
callbacks[ModCallbackCustom2.POST_GRID_ENTITY_CUSTOM_BROKEN],
|
|
72
84
|
customGridEntities,
|
|
73
85
|
),
|
|
86
|
+
[ISCFeature.GRID_ENTITY_RENDER_DETECTION]: new GridEntityRenderDetection(
|
|
87
|
+
callbacks[ModCallbackCustom2.POST_GRID_ENTITY_RENDER],
|
|
88
|
+
callbacks[ModCallbackCustom2.POST_GRID_ENTITY_CUSTOM_RENDER],
|
|
89
|
+
customGridEntities,
|
|
90
|
+
),
|
|
74
91
|
[ISCFeature.GAME_REORDERED_CALLBACKS]: new GameReorderedCallbacks(
|
|
75
92
|
callbacks[ModCallbackCustom2.POST_GAME_STARTED_REORDERED],
|
|
76
93
|
callbacks[ModCallbackCustom2.POST_NEW_LEVEL_REORDERED],
|
|
77
94
|
callbacks[ModCallbackCustom2.POST_NEW_ROOM_REORDERED],
|
|
78
95
|
callbacks[ModCallbackCustom2.POST_GAME_STARTED_REORDERED_LAST],
|
|
79
96
|
),
|
|
97
|
+
[ISCFeature.ITEM_PICKUP_DETECTION]: new ItemPickupDetection(
|
|
98
|
+
callbacks[ModCallbackCustom2.POST_ITEM_PICKUP],
|
|
99
|
+
callbacks[ModCallbackCustom2.PRE_ITEM_PICKUP],
|
|
100
|
+
),
|
|
101
|
+
[ISCFeature.PLAYER_COLLECTIBLE_DETECTION]: new PlayerCollectibleDetection(
|
|
102
|
+
callbacks[ModCallbackCustom2.POST_PLAYER_COLLECTIBLE_ADDED],
|
|
103
|
+
callbacks[ModCallbackCustom2.POST_PLAYER_COLLECTIBLE_REMOVED],
|
|
104
|
+
runInNFrames,
|
|
105
|
+
),
|
|
80
106
|
[ISCFeature.PLAYER_REORDERED_CALLBACKS]: new PlayerReorderedCallbacks(
|
|
81
107
|
callbacks[ModCallbackCustom2.POST_PEFFECT_UPDATE_REORDERED],
|
|
82
108
|
callbacks[ModCallbackCustom2.POST_PLAYER_RENDER_REORDERED],
|
|
83
109
|
callbacks[ModCallbackCustom2.POST_PEFFECT_UPDATE_REORDERED],
|
|
84
110
|
),
|
|
111
|
+
[ISCFeature.SLOT_RENDER_DETECTION]: new SlotRenderDetection(
|
|
112
|
+
callbacks[ModCallbackCustom2.POST_SLOT_RENDER],
|
|
113
|
+
callbacks[ModCallbackCustom2.POST_SLOT_ANIMATION_CHANGED],
|
|
114
|
+
),
|
|
115
|
+
[ISCFeature.SLOT_UPDATE_DETECTION]: new SlotUpdateDetection(
|
|
116
|
+
callbacks[ModCallbackCustom2.POST_SLOT_INIT],
|
|
117
|
+
callbacks[ModCallbackCustom2.POST_SLOT_UPDATE],
|
|
118
|
+
),
|
|
85
119
|
|
|
86
120
|
// Extra features
|
|
87
121
|
[ISCFeature.CUSTOM_GRID_ENTITIES]: customGridEntities,
|
|
88
122
|
[ISCFeature.RUN_IN_N_FRAMES]: runInNFrames,
|
|
123
|
+
[ISCFeature.SAVE_DATA_MANAGER]: new SaveDataManager(mod),
|
|
89
124
|
} as const);
|
|
90
125
|
}
|
package/src/functions/array.ts
CHANGED
|
@@ -418,21 +418,20 @@ export function isArray(object: unknown): object is unknown[] {
|
|
|
418
418
|
return false;
|
|
419
419
|
}
|
|
420
420
|
|
|
421
|
-
// Second, handle the case of
|
|
421
|
+
// Second, handle the case of an "empty" table.
|
|
422
422
|
const keys = Object.keys(object);
|
|
423
|
+
if (keys.length === 0) {
|
|
424
|
+
return true;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
// Third, handle the case of non-numerical keys.
|
|
423
428
|
const hasAllNumberKeys = keys.every((key) => isNumber(key));
|
|
424
429
|
if (!hasAllNumberKeys) {
|
|
425
430
|
return false;
|
|
426
431
|
}
|
|
427
432
|
|
|
428
|
-
//
|
|
429
|
-
|
|
430
|
-
if (tableLength === 0) {
|
|
431
|
-
return true;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
// Third, check for non-contiguous elements. (Lua tables start at an index of 1.)
|
|
435
|
-
for (let i = 1; i <= tableLength; i++) {
|
|
433
|
+
// Fourth, check for non-contiguous elements. (Lua tables start at an index of 1.)
|
|
434
|
+
for (let i = 1; i <= keys.length; i++) {
|
|
436
435
|
const element = object.get(i);
|
|
437
436
|
if (element === undefined) {
|
|
438
437
|
return false;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CopyableIsaacAPIClassType } from "isaac-typescript-definitions";
|
|
2
|
-
import { SerializationBrand } from "../enums/
|
|
2
|
+
import { SerializationBrand } from "../enums/SerializationBrand";
|
|
3
3
|
import { isIsaacAPIClassOfType } from "./isaacAPIClass";
|
|
4
4
|
import {
|
|
5
5
|
copyUserdataValuesToTable,
|
|
@@ -65,8 +65,8 @@ export function isBitSet128(object: unknown): object is BitSet128 {
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
/**
|
|
68
|
-
* Used to determine is the given table is a serialized `BitSet128` object created by the
|
|
69
|
-
*
|
|
68
|
+
* Used to determine is the given table is a serialized `BitSet128` object created by the `deepCopy`
|
|
69
|
+
* function.
|
|
70
70
|
*/
|
|
71
71
|
export function isSerializedBitSet128(
|
|
72
72
|
object: unknown,
|
package/src/functions/color.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CopyableIsaacAPIClassType } from "isaac-typescript-definitions";
|
|
2
|
-
import { SerializationBrand } from "../enums/
|
|
2
|
+
import { SerializationBrand } from "../enums/SerializationBrand";
|
|
3
3
|
import { isaacAPIClassEquals, isIsaacAPIClassOfType } from "./isaacAPIClass";
|
|
4
4
|
import { getRandom } from "./random";
|
|
5
5
|
import { getRandomSeed, isRNG, newRNG } from "./rng";
|
|
@@ -103,8 +103,8 @@ export function isColor(object: unknown): object is Color {
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
/**
|
|
106
|
-
* Used to determine is the given table is a serialized `Color` object created by the
|
|
107
|
-
*
|
|
106
|
+
* Used to determine is the given table is a serialized `Color` object created by the `deepCopy`
|
|
107
|
+
* function.
|
|
108
108
|
*/
|
|
109
109
|
export function isSerializedColor(object: unknown): object is SerializedColor {
|
|
110
110
|
if (!isTable(object)) {
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* If you decide to structure your mod as a set of feature classes, you can use decorators to
|
|
3
|
+
* automatically register callbacks.
|
|
4
|
+
*
|
|
5
|
+
* Currently, there are two decorators:
|
|
6
|
+
* - @Callback
|
|
7
|
+
* - @CallbackCustom
|
|
8
|
+
*
|
|
9
|
+
* For example:
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* export class MyFeature extends ModFeature {
|
|
13
|
+
* @Callback(ModCallback.POST_GAME_STARTED)
|
|
14
|
+
* postGameStarted(isContinued: boolean): void {
|
|
15
|
+
* Isaac.DebugString(`Callback fired: POST_GAME_STARTED`);
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @module
|
|
21
|
+
*/
|
|
22
|
+
|
|
1
23
|
import { ModCallback } from "isaac-typescript-definitions";
|
|
2
24
|
import {
|
|
3
25
|
ADD_CALLBACK_ARGS_KEY,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { DefaultMap } from "../classes/DefaultMap";
|
|
2
|
-
import { SerializationBrand } from "../enums/
|
|
2
|
+
import { SerializationBrand } from "../enums/SerializationBrand";
|
|
3
3
|
import { SerializationType } from "../enums/SerializationType";
|
|
4
4
|
import { SAVE_DATA_MANAGER_DEBUG } from "../features/saveDataManager/constants";
|
|
5
|
-
import {
|
|
5
|
+
import { AnyClass } from "../types/AnyClass";
|
|
6
6
|
import { TSTLClass } from "../types/TSTLClass";
|
|
7
7
|
import { isArray } from "./array";
|
|
8
8
|
import { getIsaacAPIClassName } from "./isaacAPIClass";
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
copyIsaacAPIClass,
|
|
12
12
|
deserializeIsaacAPIClass,
|
|
13
13
|
isCopyableIsaacAPIClass,
|
|
14
|
+
isSerializationBrand,
|
|
14
15
|
isSerializedIsaacAPIClass,
|
|
15
16
|
serializeIsaacAPIClass,
|
|
16
17
|
} from "./serialization";
|
|
@@ -19,7 +20,6 @@ import {
|
|
|
19
20
|
isDefaultMap,
|
|
20
21
|
isTSTLMap,
|
|
21
22
|
isTSTLSet,
|
|
22
|
-
isUserDefinedTSTLClass,
|
|
23
23
|
newTSTLClass,
|
|
24
24
|
} from "./tstlClass";
|
|
25
25
|
import { asString, isNumber, isPrimitive } from "./types";
|
|
@@ -54,27 +54,37 @@ import { getTraversalDescription, twoDimensionalSort } from "./utils";
|
|
|
54
54
|
* @param serializationType Optional. Has 3 possible values. Can copy objects as-is, or can
|
|
55
55
|
* serialize objects to Lua tables, or can deserialize Lua tables to
|
|
56
56
|
* objects. Default is `SerializationType.NONE`.
|
|
57
|
-
* @param traversalDescription Optional. Used to track the current key that we are operating on
|
|
58
|
-
* Default is an empty string.
|
|
57
|
+
* @param traversalDescription Optional. Used to track the current key that we are operating on for
|
|
58
|
+
* debugging purposes. Default is an empty string.
|
|
59
|
+
* @param classConstructors Optional. A Lua table that maps the name of a user-defined TSTL class to
|
|
60
|
+
* its corresponding constructor. If the `deepCopy` function finds any
|
|
61
|
+
* user-defined TSTL classes when recursively iterating through the given
|
|
62
|
+
* object, it will use this map to instantiate a new class. Default is an
|
|
63
|
+
* empty Lua table.
|
|
59
64
|
* @param insideMap Optional. Tracks whether or not the deep copy function is in the process of
|
|
60
65
|
* recursively copying a TSTL Map. Default is false.
|
|
61
66
|
*/
|
|
62
67
|
export function deepCopy<T>(
|
|
68
|
+
// An overload describing the trivial case of a normal copy. (T --> T)
|
|
63
69
|
value: T,
|
|
64
70
|
serializationType?: SerializationType.NONE,
|
|
65
71
|
traversalDescription?: string,
|
|
72
|
+
classConstructors?: LuaMap<string, AnyClass>,
|
|
66
73
|
insideMap?: boolean,
|
|
67
74
|
): T;
|
|
68
75
|
export function deepCopy(
|
|
76
|
+
// An overload describing the serialization/deserialization case.
|
|
69
77
|
value: unknown,
|
|
70
78
|
serializationType: SerializationType,
|
|
71
79
|
traversalDescription?: string,
|
|
80
|
+
classConstructors?: LuaMap<string, AnyClass>,
|
|
72
81
|
insideMap?: boolean,
|
|
73
|
-
): unknown; // The return types for serialization/deserialization are non-trivial, so we do not
|
|
82
|
+
): unknown; // The return types for serialization/deserialization are non-trivial, so we do not annotate them.
|
|
74
83
|
export function deepCopy(
|
|
75
84
|
value: unknown,
|
|
76
85
|
serializationType = SerializationType.NONE,
|
|
77
86
|
traversalDescription = "",
|
|
87
|
+
classConstructors = new LuaMap<string, AnyClass>(),
|
|
78
88
|
insideMap = false,
|
|
79
89
|
): unknown {
|
|
80
90
|
if (SAVE_DATA_MANAGER_DEBUG) {
|
|
@@ -123,6 +133,7 @@ export function deepCopy(
|
|
|
123
133
|
luaMap,
|
|
124
134
|
serializationType,
|
|
125
135
|
traversalDescription,
|
|
136
|
+
classConstructors,
|
|
126
137
|
insideMap,
|
|
127
138
|
);
|
|
128
139
|
}
|
|
@@ -137,6 +148,7 @@ function deepCopyTable(
|
|
|
137
148
|
luaMap: LuaMap<AnyNotNil, unknown>,
|
|
138
149
|
serializationType: SerializationType,
|
|
139
150
|
traversalDescription: string,
|
|
151
|
+
classConstructors: LuaMap<string, AnyClass>,
|
|
140
152
|
insideMap: boolean,
|
|
141
153
|
): unknown {
|
|
142
154
|
// First, handle the cases of TSTL classes or serialized TSTL classes.
|
|
@@ -145,6 +157,7 @@ function deepCopyTable(
|
|
|
145
157
|
luaMap,
|
|
146
158
|
serializationType,
|
|
147
159
|
traversalDescription,
|
|
160
|
+
classConstructors,
|
|
148
161
|
insideMap,
|
|
149
162
|
);
|
|
150
163
|
}
|
|
@@ -154,6 +167,7 @@ function deepCopyTable(
|
|
|
154
167
|
luaMap,
|
|
155
168
|
serializationType,
|
|
156
169
|
traversalDescription,
|
|
170
|
+
classConstructors,
|
|
157
171
|
insideMap,
|
|
158
172
|
);
|
|
159
173
|
}
|
|
@@ -163,6 +177,7 @@ function deepCopyTable(
|
|
|
163
177
|
luaMap,
|
|
164
178
|
serializationType,
|
|
165
179
|
traversalDescription,
|
|
180
|
+
classConstructors,
|
|
166
181
|
insideMap,
|
|
167
182
|
);
|
|
168
183
|
}
|
|
@@ -181,11 +196,12 @@ function deepCopyTable(
|
|
|
181
196
|
);
|
|
182
197
|
}
|
|
183
198
|
|
|
184
|
-
if (
|
|
199
|
+
if (className !== undefined || luaMap.has(SerializationBrand.TSTL_CLASS)) {
|
|
185
200
|
return deepCopyTSTLClass(
|
|
186
|
-
luaMap,
|
|
201
|
+
luaMap as TSTLClass,
|
|
187
202
|
serializationType,
|
|
188
203
|
traversalDescription,
|
|
204
|
+
classConstructors,
|
|
189
205
|
insideMap,
|
|
190
206
|
);
|
|
191
207
|
}
|
|
@@ -207,6 +223,7 @@ function deepCopyTable(
|
|
|
207
223
|
luaMap,
|
|
208
224
|
serializationType,
|
|
209
225
|
traversalDescription,
|
|
226
|
+
classConstructors,
|
|
210
227
|
insideMap,
|
|
211
228
|
);
|
|
212
229
|
}
|
|
@@ -216,6 +233,7 @@ function deepCopyTable(
|
|
|
216
233
|
luaMap,
|
|
217
234
|
serializationType,
|
|
218
235
|
traversalDescription,
|
|
236
|
+
classConstructors,
|
|
219
237
|
insideMap,
|
|
220
238
|
);
|
|
221
239
|
}
|
|
@@ -224,6 +242,7 @@ function deepCopyDefaultMap(
|
|
|
224
242
|
defaultMap: DefaultMap<AnyNotNil, unknown> | LuaMap<AnyNotNil, unknown>,
|
|
225
243
|
serializationType: SerializationType,
|
|
226
244
|
traversalDescription: string,
|
|
245
|
+
classConstructors: LuaMap<string, AnyClass>,
|
|
227
246
|
insideMap: boolean,
|
|
228
247
|
) {
|
|
229
248
|
if (SAVE_DATA_MANAGER_DEBUG) {
|
|
@@ -258,6 +277,7 @@ function deepCopyDefaultMap(
|
|
|
258
277
|
defaultMap,
|
|
259
278
|
serializationType,
|
|
260
279
|
traversalDescription,
|
|
280
|
+
classConstructors,
|
|
261
281
|
insideMap,
|
|
262
282
|
);
|
|
263
283
|
}
|
|
@@ -275,6 +295,7 @@ function deepCopyDefaultMap(
|
|
|
275
295
|
defaultMap,
|
|
276
296
|
serializationType,
|
|
277
297
|
traversalDescription,
|
|
298
|
+
classConstructors,
|
|
278
299
|
insideMap,
|
|
279
300
|
);
|
|
280
301
|
|
|
@@ -332,7 +353,7 @@ function getNewDefaultMap(
|
|
|
332
353
|
case SerializationType.DESERIALIZE: {
|
|
333
354
|
if (isDefaultMap(defaultMap)) {
|
|
334
355
|
error(
|
|
335
|
-
`
|
|
356
|
+
`Failed to deserialize a default map of "${traversalDescription}", since it was not a Lua table.`,
|
|
336
357
|
);
|
|
337
358
|
}
|
|
338
359
|
|
|
@@ -341,7 +362,7 @@ function getNewDefaultMap(
|
|
|
341
362
|
);
|
|
342
363
|
if (defaultMapValue === undefined) {
|
|
343
364
|
error(
|
|
344
|
-
`
|
|
365
|
+
`Failed to deserialize a default map of "${traversalDescription}", since there was no serialization brand of: ${SerializationBrand.DEFAULT_MAP_VALUE}`,
|
|
345
366
|
);
|
|
346
367
|
}
|
|
347
368
|
|
|
@@ -355,6 +376,7 @@ function deepCopyMap(
|
|
|
355
376
|
map: Map<AnyNotNil, unknown> | LuaMap<AnyNotNil, unknown>,
|
|
356
377
|
serializationType: SerializationType,
|
|
357
378
|
traversalDescription: string,
|
|
379
|
+
classConstructors: LuaMap<string, AnyClass>,
|
|
358
380
|
insideMap: boolean,
|
|
359
381
|
) {
|
|
360
382
|
if (SAVE_DATA_MANAGER_DEBUG) {
|
|
@@ -375,6 +397,7 @@ function deepCopyMap(
|
|
|
375
397
|
map,
|
|
376
398
|
serializationType,
|
|
377
399
|
traversalDescription,
|
|
400
|
+
classConstructors,
|
|
378
401
|
insideMap,
|
|
379
402
|
);
|
|
380
403
|
|
|
@@ -407,6 +430,7 @@ function deepCopySet(
|
|
|
407
430
|
set: Set<AnyNotNil> | LuaMap<AnyNotNil, unknown>,
|
|
408
431
|
serializationType: SerializationType,
|
|
409
432
|
traversalDescription: string,
|
|
433
|
+
classConstructors: LuaMap<string, AnyClass>,
|
|
410
434
|
insideMap: boolean,
|
|
411
435
|
) {
|
|
412
436
|
if (SAVE_DATA_MANAGER_DEBUG) {
|
|
@@ -427,6 +451,7 @@ function deepCopySet(
|
|
|
427
451
|
set,
|
|
428
452
|
serializationType,
|
|
429
453
|
traversalDescription,
|
|
454
|
+
classConstructors,
|
|
430
455
|
insideMap,
|
|
431
456
|
);
|
|
432
457
|
|
|
@@ -460,6 +485,7 @@ function deepCopyTSTLClass(
|
|
|
460
485
|
tstlClass: TSTLClass,
|
|
461
486
|
serializationType: SerializationType,
|
|
462
487
|
traversalDescription: string,
|
|
488
|
+
classConstructors: LuaMap<string, AnyClass>,
|
|
463
489
|
insideMap: boolean,
|
|
464
490
|
) {
|
|
465
491
|
if (SAVE_DATA_MANAGER_DEBUG) {
|
|
@@ -467,19 +493,53 @@ function deepCopyTSTLClass(
|
|
|
467
493
|
}
|
|
468
494
|
|
|
469
495
|
let newClass: TSTLClass | LuaMap<AnyNotNil, unknown>;
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
496
|
+
switch (serializationType) {
|
|
497
|
+
case SerializationType.NONE: {
|
|
498
|
+
// We can use the class constructor from the old class.
|
|
499
|
+
newClass = newTSTLClass(tstlClass);
|
|
500
|
+
break;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
case SerializationType.SERIALIZE: {
|
|
504
|
+
newClass = new LuaMap<AnyNotNil, unknown>();
|
|
505
|
+
|
|
506
|
+
// We brand it with the name of the class so that we can run the corresponding constructor
|
|
507
|
+
// during deserialization.
|
|
508
|
+
const tstlClassName = getTSTLClassName(tstlClass);
|
|
509
|
+
if (tstlClassName !== undefined) {
|
|
510
|
+
newClass.set(SerializationBrand.TSTL_CLASS, tstlClassName);
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
break;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
case SerializationType.DESERIALIZE: {
|
|
517
|
+
const tstlClassName = tstlClass.get(SerializationBrand.TSTL_CLASS) as
|
|
518
|
+
| string
|
|
519
|
+
| undefined;
|
|
520
|
+
if (tstlClassName === undefined) {
|
|
521
|
+
error(
|
|
522
|
+
"Failed to deserialize a TSTL class since the brand did not contain the class name.",
|
|
523
|
+
);
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
const classConstructor = classConstructors.get(tstlClassName);
|
|
527
|
+
if (classConstructor === undefined) {
|
|
528
|
+
error(
|
|
529
|
+
`Failed to deserialize a TSTL class since there was no constructor registered for a class name of "${tstlClassName}". If this mod is using the save data manager, it must register the class constructor with the "saveDataManagerRegisterClass" method.`,
|
|
530
|
+
);
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
// eslint-disable-next-line new-cap
|
|
534
|
+
newClass = new classConstructor() as TSTLClass;
|
|
535
|
+
}
|
|
477
536
|
}
|
|
478
537
|
|
|
479
538
|
const { entries, convertedNumberKeysToStrings } = getCopiedEntries(
|
|
480
539
|
tstlClass,
|
|
481
540
|
serializationType,
|
|
482
541
|
traversalDescription,
|
|
542
|
+
classConstructors,
|
|
483
543
|
insideMap,
|
|
484
544
|
);
|
|
485
545
|
|
|
@@ -498,6 +558,7 @@ function deepCopyArray(
|
|
|
498
558
|
array: unknown[],
|
|
499
559
|
serializationType: SerializationType,
|
|
500
560
|
traversalDescription: string,
|
|
561
|
+
classConstructors: LuaMap<string, AnyClass>,
|
|
501
562
|
insideMap: boolean,
|
|
502
563
|
) {
|
|
503
564
|
if (SAVE_DATA_MANAGER_DEBUG) {
|
|
@@ -511,6 +572,7 @@ function deepCopyArray(
|
|
|
511
572
|
value,
|
|
512
573
|
serializationType,
|
|
513
574
|
traversalDescription,
|
|
575
|
+
classConstructors,
|
|
514
576
|
insideMap,
|
|
515
577
|
);
|
|
516
578
|
newArray.push(newValue);
|
|
@@ -523,6 +585,7 @@ function deepCopyNormalLuaTable(
|
|
|
523
585
|
luaMap: LuaMap<AnyNotNil, unknown>,
|
|
524
586
|
serializationType: SerializationType,
|
|
525
587
|
traversalDescription: string,
|
|
588
|
+
classConstructors: LuaMap<string, AnyClass>,
|
|
526
589
|
insideMap: boolean,
|
|
527
590
|
) {
|
|
528
591
|
if (SAVE_DATA_MANAGER_DEBUG) {
|
|
@@ -534,6 +597,7 @@ function deepCopyNormalLuaTable(
|
|
|
534
597
|
luaMap,
|
|
535
598
|
serializationType,
|
|
536
599
|
traversalDescription,
|
|
600
|
+
classConstructors,
|
|
537
601
|
insideMap,
|
|
538
602
|
);
|
|
539
603
|
|
|
@@ -556,6 +620,7 @@ function getCopiedEntries(
|
|
|
556
620
|
object: unknown,
|
|
557
621
|
serializationType: SerializationType,
|
|
558
622
|
traversalDescription: string,
|
|
623
|
+
classConstructors: LuaMap<string, AnyClass>,
|
|
559
624
|
insideMap: boolean,
|
|
560
625
|
): {
|
|
561
626
|
entries: Array<[key: AnyNotNil, value: unknown]>;
|
|
@@ -604,6 +669,7 @@ function getCopiedEntries(
|
|
|
604
669
|
value,
|
|
605
670
|
serializationType,
|
|
606
671
|
traversalDescription,
|
|
672
|
+
classConstructors,
|
|
607
673
|
insideMap,
|
|
608
674
|
);
|
|
609
675
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DefaultMap } from "../classes/DefaultMap";
|
|
2
|
-
import { SerializationBrand } from "../enums/
|
|
2
|
+
import { SerializationBrand } from "../enums/SerializationBrand";
|
|
3
3
|
import { SerializationType } from "../enums/SerializationType";
|
|
4
4
|
import { arrayEquals } from "./array";
|
|
5
5
|
import { deepCopy } from "./deepCopy";
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { deepCopy } from "./deepCopy";
|
|
2
|
-
import { isPrimitive } from "./types";
|
|
3
2
|
import { repeat } from "./utils";
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* Initializes an array with all of the elements containing the specified default value.
|
|
7
6
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
7
|
+
* The provided default value will be copied with the `deepCopy` function before adding it to the
|
|
8
|
+
* new array. Thus, you can initialize an array of arrays, or an array of maps, and so on. (If the
|
|
9
|
+
* `deepCopy` function was not used, then all of the array elements would just be references to the
|
|
10
|
+
* same underlying data structure.)
|
|
12
11
|
*
|
|
13
12
|
* For example:
|
|
14
13
|
*
|
|
@@ -20,12 +19,8 @@ import { repeat } from "./utils";
|
|
|
20
19
|
export function initArray<T>(defaultValue: T, size: int): T[] {
|
|
21
20
|
const array: T[] = [];
|
|
22
21
|
repeat(size, () => {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
} else {
|
|
26
|
-
const copy = deepCopy(defaultValue);
|
|
27
|
-
array.push(copy);
|
|
28
|
-
}
|
|
22
|
+
const copy = deepCopy(defaultValue);
|
|
23
|
+
array.push(copy);
|
|
29
24
|
});
|
|
30
25
|
|
|
31
26
|
return array;
|
|
@@ -19,6 +19,8 @@ interface JSONObject {
|
|
|
19
19
|
/**
|
|
20
20
|
* Helper function to calculate what the resulting `BitFlags<DoorSlotFlag>` value would be for a
|
|
21
21
|
* given JSON room.
|
|
22
|
+
*
|
|
23
|
+
* (A JSON room is an XML file converted to JSON so that it can be directly imported into your mod.)
|
|
22
24
|
*/
|
|
23
25
|
export function getJSONRoomDoorSlotFlags(
|
|
24
26
|
jsonRoom: JSONRoom,
|
|
@@ -75,6 +77,8 @@ export function getJSONRoomDoorSlotFlags(
|
|
|
75
77
|
/**
|
|
76
78
|
* Helper function to find a specific room from an array of JSON rooms.
|
|
77
79
|
*
|
|
80
|
+
* (A JSON room is an XML file converted to JSON so that it can be directly imported into your mod.)
|
|
81
|
+
*
|
|
78
82
|
* @param jsonRooms The array of rooms to search through.
|
|
79
83
|
* @param variant The room variant to select. (The room variant can be thought of as the ID of the
|
|
80
84
|
* room.)
|
|
@@ -107,6 +111,8 @@ export function getJSONRoomOfVariant(
|
|
|
107
111
|
/**
|
|
108
112
|
* Helper function to find all of the JSON rooms that match the sub-type provided.
|
|
109
113
|
*
|
|
114
|
+
* (A JSON room is an XML file converted to JSON so that it can be directly imported into your mod.)
|
|
115
|
+
*
|
|
110
116
|
* @param jsonRooms The array of rooms to search through.
|
|
111
117
|
* @param subType The sub-type to match.
|
|
112
118
|
*/
|
|
@@ -124,6 +130,9 @@ export function getJSONRoomsOfSubType(
|
|
|
124
130
|
/**
|
|
125
131
|
* Helper function to get a random JSON entity from an array of JSON entities.
|
|
126
132
|
*
|
|
133
|
+
* (A JSON entity is an entity inside of a JSON room. A JSON room is an XML file converted to JSON
|
|
134
|
+
* so that it can be directly imported into your mod.)
|
|
135
|
+
*
|
|
127
136
|
* Note that this function does not simply choose a random element in the provided array; it will
|
|
128
137
|
* properly account for each room weight using the algorithm from:
|
|
129
138
|
* https://stackoverflow.com/questions/1761626/weighted-random-numbers
|
|
@@ -163,6 +172,8 @@ export function getRandomJSONEntity(
|
|
|
163
172
|
/**
|
|
164
173
|
* Helper function to get a random JSON room from an array of JSON rooms.
|
|
165
174
|
*
|
|
175
|
+
* (A JSON room is an XML file converted to JSON so that it can be directly imported into your mod.)
|
|
176
|
+
*
|
|
166
177
|
* Note that this function does not simply choose a random element in the provided array; it will
|
|
167
178
|
* properly account for each room weight using the algorithm from:
|
|
168
179
|
* https://stackoverflow.com/questions/1761626/weighted-random-numbers
|
package/src/functions/kColor.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CopyableIsaacAPIClassType } from "isaac-typescript-definitions";
|
|
2
|
-
import { SerializationBrand } from "../enums/
|
|
2
|
+
import { SerializationBrand } from "../enums/SerializationBrand";
|
|
3
3
|
import { isaacAPIClassEquals, isIsaacAPIClassOfType } from "./isaacAPIClass";
|
|
4
4
|
import { getRandom } from "./random";
|
|
5
5
|
import { getRandomSeed, isRNG, newRNG } from "./rng";
|
|
@@ -92,8 +92,8 @@ export function isKColor(object: unknown): object is KColor {
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
/**
|
|
95
|
-
* Used to determine is the given table is a serialized `KColor` object created by the
|
|
96
|
-
*
|
|
95
|
+
* Used to determine is the given table is a serialized `KColor` object created by the `deepCopy`
|
|
96
|
+
* function.
|
|
97
97
|
*/
|
|
98
98
|
export function isSerializedKColor(
|
|
99
99
|
object: unknown,
|