isaacscript-common 2.3.0 → 3.0.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/cachedClasses.d.ts +37 -0
- package/cachedClasses.lua +30 -0
- package/callbacks/customRevive.d.ts +1 -0
- package/callbacks/customRevive.lua +147 -0
- package/callbacks/itemPickup.d.ts +1 -0
- package/callbacks/itemPickup.lua +66 -0
- package/callbacks/postBombInitLate.d.ts +1 -0
- package/callbacks/postBombInitLate.lua +33 -0
- package/callbacks/postBoneSwing.d.ts +1 -0
- package/callbacks/postBoneSwing.lua +50 -0
- package/callbacks/postCollectibleInitFirst.d.ts +1 -0
- package/callbacks/postCollectibleInitFirst.lua +34 -0
- package/callbacks/postCursedTeleport.d.ts +1 -0
- package/callbacks/postCursedTeleport.lua +121 -0
- package/callbacks/postCustomDoorEnter.d.ts +50 -0
- package/callbacks/postCustomDoorEnter.lua +247 -0
- package/callbacks/postDoorRender.d.ts +1 -0
- package/callbacks/postDoorRender.lua +26 -0
- package/callbacks/postDoorUpdate.d.ts +1 -0
- package/callbacks/postDoorUpdate.lua +26 -0
- package/callbacks/postEffectInitLate.d.ts +1 -0
- package/callbacks/postEffectInitLate.lua +33 -0
- package/callbacks/postEffectStateChanged.d.ts +1 -0
- package/callbacks/postEffectStateChanged.lua +39 -0
- package/callbacks/postEsauJr.d.ts +1 -0
- package/callbacks/postEsauJr.lua +69 -0
- package/callbacks/postFamiliarInitLate.d.ts +1 -0
- package/callbacks/postFamiliarInitLate.lua +33 -0
- package/callbacks/postFamiliarStateChanged.d.ts +1 -0
- package/callbacks/postFamiliarStateChanged.lua +39 -0
- package/callbacks/postFlip.d.ts +1 -0
- package/callbacks/postFlip.lua +63 -0
- package/callbacks/postGreedModeWave.d.ts +1 -0
- package/callbacks/postGreedModeWave.lua +34 -0
- package/callbacks/postGridEntity.d.ts +1 -0
- package/callbacks/postGridEntity.lua +107 -0
- package/callbacks/postGridEntityCollision.d.ts +1 -0
- package/callbacks/postGridEntityCollision.lua +67 -0
- package/callbacks/postGridEntityRender.d.ts +1 -0
- package/callbacks/postGridEntityRender.lua +26 -0
- package/callbacks/postHolyMantleRemoved.d.ts +1 -0
- package/callbacks/postHolyMantleRemoved.lua +41 -0
- package/callbacks/postItemDischarged.d.ts +2 -0
- package/callbacks/postItemDischarged.lua +104 -0
- package/callbacks/postKnifeInitLate.d.ts +1 -0
- package/callbacks/postKnifeInitLate.lua +33 -0
- package/callbacks/postLaserInitLate.d.ts +1 -0
- package/callbacks/postLaserInitLate.lua +33 -0
- package/callbacks/postNPCInitLate.d.ts +1 -0
- package/callbacks/postNPCInitLate.lua +33 -0
- package/callbacks/postNPCStateChanged.d.ts +1 -0
- package/callbacks/postNPCStateChanged.lua +39 -0
- package/callbacks/postNewRoomEarly.d.ts +1 -0
- package/callbacks/postNewRoomEarly.lua +67 -0
- package/callbacks/postPickupCollect.d.ts +1 -0
- package/callbacks/postPickupCollect.lua +41 -0
- package/callbacks/postPickupInitLate.d.ts +1 -0
- package/callbacks/postPickupInitLate.lua +33 -0
- package/callbacks/postPickupStateChanged.d.ts +1 -0
- package/callbacks/postPickupStateChanged.lua +39 -0
- package/callbacks/postPitRender.d.ts +1 -0
- package/callbacks/postPitRender.lua +26 -0
- package/callbacks/postPitUpdate.d.ts +1 -0
- package/callbacks/postPitUpdate.lua +26 -0
- package/callbacks/postPlayerChangeHealth.d.ts +1 -0
- package/callbacks/postPlayerChangeHealth.lua +52 -0
- package/callbacks/postPlayerChangeType.d.ts +1 -0
- package/callbacks/postPlayerChangeType.lua +41 -0
- package/callbacks/postPlayerFatalDamage.d.ts +1 -0
- package/callbacks/postPlayerFatalDamage.lua +73 -0
- package/callbacks/postPlayerInitLate.d.ts +1 -0
- package/callbacks/postPlayerInitLate.lua +35 -0
- package/callbacks/postPlayerReordered.d.ts +1 -0
- package/callbacks/postPlayerReordered.lua +114 -0
- package/callbacks/postPoopRender.d.ts +1 -0
- package/callbacks/postPoopRender.lua +26 -0
- package/callbacks/postPoopUpdate.d.ts +1 -0
- package/callbacks/postPoopUpdate.lua +26 -0
- package/callbacks/postPressurePlateRender.d.ts +1 -0
- package/callbacks/postPressurePlateRender.lua +26 -0
- package/callbacks/postPressurePlateUpdate.d.ts +1 -0
- package/callbacks/postPressurePlateUpdate.lua +26 -0
- package/callbacks/postProjectileInitLate.d.ts +1 -0
- package/callbacks/postProjectileInitLate.lua +33 -0
- package/callbacks/postPurchase.d.ts +1 -0
- package/callbacks/postPurchase.lua +51 -0
- package/callbacks/postRockRender.d.ts +1 -0
- package/callbacks/postRockRender.lua +26 -0
- package/callbacks/postRockUpdate.d.ts +1 -0
- package/callbacks/postRockUpdate.lua +26 -0
- package/callbacks/postRoomClearChanged.d.ts +1 -0
- package/callbacks/postRoomClearChanged.lua +42 -0
- package/callbacks/postSacrifice.d.ts +1 -0
- package/callbacks/postSacrifice.lua +44 -0
- package/callbacks/postSlotInitUpdate.d.ts +1 -0
- package/callbacks/postSlotInitUpdate.lua +53 -0
- package/callbacks/postSlotRender.d.ts +1 -0
- package/callbacks/postSlotRender.lua +76 -0
- package/callbacks/postSpikesRender.d.ts +1 -0
- package/callbacks/postSpikesRender.lua +26 -0
- package/callbacks/postSpikesUpdate.d.ts +1 -0
- package/callbacks/postSpikesUpdate.lua +26 -0
- package/callbacks/postTNTRender.d.ts +1 -0
- package/callbacks/postTNTRender.lua +26 -0
- package/callbacks/postTNTUpdate.d.ts +1 -0
- package/callbacks/postTNTUpdate.lua +26 -0
- package/callbacks/postTearInitLate.d.ts +1 -0
- package/callbacks/postTearInitLate.lua +33 -0
- package/callbacks/postTearInitVeryLate.d.ts +1 -0
- package/callbacks/postTearInitVeryLate.lua +36 -0
- package/callbacks/postTransformation.d.ts +1 -0
- package/callbacks/postTransformation.lua +48 -0
- package/callbacks/postTrinketBreak.d.ts +1 -0
- package/callbacks/postTrinketBreak.lua +72 -0
- package/callbacks/preBerserkDeath.d.ts +1 -0
- package/callbacks/preBerserkDeath.lua +38 -0
- package/callbacks/preNewLevel.d.ts +1 -0
- package/callbacks/preNewLevel.lua +45 -0
- package/callbacks/reorderedCallbacks.d.ts +20 -0
- package/callbacks/reorderedCallbacks.lua +108 -0
- package/callbacks/subscriptions/postBombInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postBombInitLate.lua +29 -0
- package/callbacks/subscriptions/postBoneSwing.d.ts +4 -0
- package/callbacks/subscriptions/postBoneSwing.lua +22 -0
- package/callbacks/subscriptions/postCollectibleInitFirst.d.ts +5 -0
- package/callbacks/subscriptions/postCollectibleInitFirst.lua +29 -0
- package/callbacks/subscriptions/postCursedTeleport.d.ts +4 -0
- package/callbacks/subscriptions/postCursedTeleport.lua +22 -0
- package/callbacks/subscriptions/postCustomDoorEnter.d.ts +5 -0
- package/callbacks/subscriptions/postCustomDoorEnter.lua +35 -0
- package/callbacks/subscriptions/postCustomRevive.d.ts +5 -0
- package/callbacks/subscriptions/postCustomRevive.lua +29 -0
- package/callbacks/subscriptions/postDoorRender.d.ts +5 -0
- package/callbacks/subscriptions/postDoorRender.lua +30 -0
- package/callbacks/subscriptions/postDoorUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postDoorUpdate.lua +30 -0
- package/callbacks/subscriptions/postEffectInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postEffectInitLate.lua +29 -0
- package/callbacks/subscriptions/postEffectStateChanged.d.ts +5 -0
- package/callbacks/subscriptions/postEffectStateChanged.lua +29 -0
- package/callbacks/subscriptions/postEsauJr.d.ts +4 -0
- package/callbacks/subscriptions/postEsauJr.lua +22 -0
- package/callbacks/subscriptions/postFamiliarInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postFamiliarInitLate.lua +29 -0
- package/callbacks/subscriptions/postFamiliarStateChanged.d.ts +5 -0
- package/callbacks/subscriptions/postFamiliarStateChanged.lua +29 -0
- package/callbacks/subscriptions/postFirstEsauJr.d.ts +4 -0
- package/callbacks/subscriptions/postFirstEsauJr.lua +22 -0
- package/callbacks/subscriptions/postFirstFlip.d.ts +4 -0
- package/callbacks/subscriptions/postFirstFlip.lua +22 -0
- package/callbacks/subscriptions/postFlip.d.ts +4 -0
- package/callbacks/subscriptions/postFlip.lua +22 -0
- package/callbacks/subscriptions/postGameStartedReordered.d.ts +3 -0
- package/callbacks/subscriptions/postGameStartedReordered.lua +22 -0
- package/callbacks/subscriptions/postGreedModeWave.d.ts +4 -0
- package/callbacks/subscriptions/postGreedModeWave.lua +22 -0
- package/callbacks/subscriptions/postGridEntityBroken.d.ts +6 -0
- package/callbacks/subscriptions/postGridEntityBroken.lua +35 -0
- package/callbacks/subscriptions/postGridEntityCollision.d.ts +6 -0
- package/callbacks/subscriptions/postGridEntityCollision.lua +35 -0
- package/callbacks/subscriptions/postGridEntityInit.d.ts +6 -0
- package/callbacks/subscriptions/postGridEntityInit.lua +35 -0
- package/callbacks/subscriptions/postGridEntityRemove.d.ts +6 -0
- package/callbacks/subscriptions/postGridEntityRemove.lua +33 -0
- package/callbacks/subscriptions/postGridEntityRender.d.ts +6 -0
- package/callbacks/subscriptions/postGridEntityRender.lua +35 -0
- package/callbacks/subscriptions/postGridEntityStateChanged.d.ts +6 -0
- package/callbacks/subscriptions/postGridEntityStateChanged.lua +35 -0
- package/callbacks/subscriptions/postGridEntityUpdate.d.ts +6 -0
- package/callbacks/subscriptions/postGridEntityUpdate.lua +35 -0
- package/callbacks/subscriptions/postHolyMantleRemoved.d.ts +6 -0
- package/callbacks/subscriptions/postHolyMantleRemoved.lua +34 -0
- package/callbacks/subscriptions/postItemDischarged.d.ts +5 -0
- package/callbacks/subscriptions/postItemDischarged.lua +29 -0
- package/callbacks/subscriptions/postItemPickup.d.ts +11 -0
- package/callbacks/subscriptions/postItemPickup.lua +33 -0
- package/callbacks/subscriptions/postKnifeInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postKnifeInitLate.lua +29 -0
- package/callbacks/subscriptions/postLaserInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postLaserInitLate.lua +29 -0
- package/callbacks/subscriptions/postNPCInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postNPCInitLate.lua +29 -0
- package/callbacks/subscriptions/postNPCStateChanged.d.ts +6 -0
- package/callbacks/subscriptions/postNPCStateChanged.lua +33 -0
- package/callbacks/subscriptions/postNewLevelReordered.d.ts +1 -0
- package/callbacks/subscriptions/postNewLevelReordered.lua +22 -0
- package/callbacks/subscriptions/postNewRoomEarly.d.ts +1 -0
- package/callbacks/subscriptions/postNewRoomEarly.lua +22 -0
- package/callbacks/subscriptions/postNewRoomReordered.d.ts +1 -0
- package/callbacks/subscriptions/postNewRoomReordered.lua +22 -0
- package/callbacks/subscriptions/postPEffectUpdateReordered.d.ts +6 -0
- package/callbacks/subscriptions/postPEffectUpdateReordered.lua +34 -0
- package/callbacks/subscriptions/postPickupCollect.d.ts +4 -0
- package/callbacks/subscriptions/postPickupCollect.lua +29 -0
- package/callbacks/subscriptions/postPickupInitLate.d.ts +3 -0
- package/callbacks/subscriptions/postPickupInitLate.lua +29 -0
- package/callbacks/subscriptions/postPickupStateChanged.d.ts +5 -0
- package/callbacks/subscriptions/postPickupStateChanged.lua +29 -0
- package/callbacks/subscriptions/postPitRender.d.ts +5 -0
- package/callbacks/subscriptions/postPitRender.lua +30 -0
- package/callbacks/subscriptions/postPitUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postPitUpdate.lua +30 -0
- package/callbacks/subscriptions/postPlayerChangeHealth.d.ts +7 -0
- package/callbacks/subscriptions/postPlayerChangeHealth.lua +34 -0
- package/callbacks/subscriptions/postPlayerChangeType.d.ts +5 -0
- package/callbacks/subscriptions/postPlayerChangeType.lua +29 -0
- package/callbacks/subscriptions/postPlayerFatalDamage.d.ts +6 -0
- package/callbacks/subscriptions/postPlayerFatalDamage.lua +45 -0
- package/callbacks/subscriptions/postPlayerInitLate.d.ts +6 -0
- package/callbacks/subscriptions/postPlayerInitLate.lua +34 -0
- package/callbacks/subscriptions/postPlayerInitReordered.d.ts +6 -0
- package/callbacks/subscriptions/postPlayerInitReordered.lua +34 -0
- package/callbacks/subscriptions/postPlayerRenderReordered.d.ts +6 -0
- package/callbacks/subscriptions/postPlayerRenderReordered.lua +34 -0
- package/callbacks/subscriptions/postPlayerUpdateReordered.d.ts +6 -0
- package/callbacks/subscriptions/postPlayerUpdateReordered.lua +34 -0
- package/callbacks/subscriptions/postPoopRender.d.ts +5 -0
- package/callbacks/subscriptions/postPoopRender.lua +30 -0
- package/callbacks/subscriptions/postPoopUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postPoopUpdate.lua +30 -0
- package/callbacks/subscriptions/postPressurePlateRender.d.ts +5 -0
- package/callbacks/subscriptions/postPressurePlateRender.lua +30 -0
- package/callbacks/subscriptions/postPressurePlateUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postPressurePlateUpdate.lua +30 -0
- package/callbacks/subscriptions/postProjectileInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postProjectileInitLate.lua +29 -0
- package/callbacks/subscriptions/postPurchase.d.ts +6 -0
- package/callbacks/subscriptions/postPurchase.lua +22 -0
- package/callbacks/subscriptions/postRockRender.d.ts +5 -0
- package/callbacks/subscriptions/postRockRender.lua +30 -0
- package/callbacks/subscriptions/postRockUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postRockUpdate.lua +30 -0
- package/callbacks/subscriptions/postRoomClearChanged.d.ts +3 -0
- package/callbacks/subscriptions/postRoomClearChanged.lua +22 -0
- package/callbacks/subscriptions/postSacrifice.d.ts +6 -0
- package/callbacks/subscriptions/postSacrifice.lua +34 -0
- package/callbacks/subscriptions/postSlotAnimationChanged.d.ts +5 -0
- package/callbacks/subscriptions/postSlotAnimationChanged.lua +29 -0
- package/callbacks/subscriptions/postSlotDestroyed.d.ts +5 -0
- package/callbacks/subscriptions/postSlotDestroyed.lua +29 -0
- package/callbacks/subscriptions/postSlotInit.d.ts +5 -0
- package/callbacks/subscriptions/postSlotInit.lua +29 -0
- package/callbacks/subscriptions/postSlotRender.d.ts +5 -0
- package/callbacks/subscriptions/postSlotRender.lua +29 -0
- package/callbacks/subscriptions/postSlotUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postSlotUpdate.lua +29 -0
- package/callbacks/subscriptions/postSpikesRender.d.ts +5 -0
- package/callbacks/subscriptions/postSpikesRender.lua +30 -0
- package/callbacks/subscriptions/postSpikesUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postSpikesUpdate.lua +30 -0
- package/callbacks/subscriptions/postTNTRender.d.ts +5 -0
- package/callbacks/subscriptions/postTNTRender.lua +30 -0
- package/callbacks/subscriptions/postTNTUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postTNTUpdate.lua +30 -0
- package/callbacks/subscriptions/postTearInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postTearInitLate.lua +29 -0
- package/callbacks/subscriptions/postTearInitVeryLate.d.ts +5 -0
- package/callbacks/subscriptions/postTearInitVeryLate.lua +29 -0
- package/callbacks/subscriptions/postTransformation.d.ts +5 -0
- package/callbacks/subscriptions/postTransformation.lua +29 -0
- package/callbacks/subscriptions/postTrinketBreak.d.ts +5 -0
- package/callbacks/subscriptions/postTrinketBreak.lua +29 -0
- package/callbacks/subscriptions/preBerserkDeath.d.ts +6 -0
- package/callbacks/subscriptions/preBerserkDeath.lua +35 -0
- package/callbacks/subscriptions/preCustomRevive.d.ts +6 -0
- package/callbacks/subscriptions/preCustomRevive.lua +38 -0
- package/callbacks/subscriptions/preItemPickup.d.ts +11 -0
- package/callbacks/subscriptions/preItemPickup.lua +33 -0
- package/callbacks/subscriptions/preNewLevel.d.ts +4 -0
- package/callbacks/subscriptions/preNewLevel.lua +22 -0
- package/classes/DefaultMap.d.ts +110 -0
- package/classes/DefaultMap.lua +135 -0
- package/classes/ModUpgraded.d.ts +23 -0
- package/classes/ModUpgraded.lua +43 -0
- package/constants.d.ts +104 -0
- package/constants.lua +86 -0
- package/constantsFirstLast.d.ts +130 -0
- package/constantsFirstLast.lua +113 -0
- package/enums/HealthType.d.ts +16 -0
- package/enums/HealthType.lua +24 -0
- package/enums/ModCallbackCustom.d.ts +860 -0
- package/enums/ModCallbackCustom.lua +159 -0
- package/enums/PocketItemType.d.ts +8 -0
- package/enums/PocketItemType.lua +15 -0
- package/enums/SerializationType.d.ts +5 -0
- package/enums/SerializationType.lua +9 -0
- package/enums/private/CopyableIsaacAPIClassType.d.ts +7 -0
- package/enums/private/CopyableIsaacAPIClassType.lua +8 -0
- package/enums/private/SaveDataKey.d.ts +7 -0
- package/enums/private/SaveDataKey.lua +11 -0
- package/enums/private/SerializationBrand.d.ts +37 -0
- package/enums/private/SerializationBrand.lua +17 -0
- package/features/characterHealthConversion.d.ts +9 -0
- package/features/characterHealthConversion.lua +91 -0
- package/features/characterStats.d.ts +19 -0
- package/features/characterStats.lua +54 -0
- package/features/debugDisplay/debugDisplay.d.ts +2 -0
- package/features/debugDisplay/debugDisplay.lua +181 -0
- package/features/debugDisplay/exports.d.ts +199 -0
- package/features/debugDisplay/exports.lua +223 -0
- package/features/debugDisplay/v.d.ts +44 -0
- package/features/debugDisplay/v.lua +54 -0
- package/features/deployJSONRoom.d.ts +65 -0
- package/features/deployJSONRoom.lua +519 -0
- package/features/disableInputs.d.ts +62 -0
- package/features/disableInputs.lua +134 -0
- package/features/disableSound.d.ts +18 -0
- package/features/disableSound.lua +62 -0
- package/features/extraConsoleCommands/commandsDisplay.d.ts +162 -0
- package/features/extraConsoleCommands/commandsDisplay.lua +219 -0
- package/features/extraConsoleCommands/commandsSubroutines.d.ts +9 -0
- package/features/extraConsoleCommands/commandsSubroutines.lua +129 -0
- package/features/extraConsoleCommands/init.d.ts +26 -0
- package/features/extraConsoleCommands/init.lua +265 -0
- package/features/extraConsoleCommands/listCommands.d.ts +349 -0
- package/features/extraConsoleCommands/listCommands.lua +1094 -0
- package/features/extraConsoleCommands/v.d.ts +13 -0
- package/features/extraConsoleCommands/v.lua +10 -0
- package/features/fadeInRemover.d.ts +14 -0
- package/features/fadeInRemover.lua +55 -0
- package/features/fastReset.d.ts +14 -0
- package/features/fastReset.lua +59 -0
- package/features/forgottenSwitch.d.ts +5 -0
- package/features/forgottenSwitch.lua +32 -0
- package/features/getCollectibleItemPoolType.d.ts +7 -0
- package/features/getCollectibleItemPoolType.lua +48 -0
- package/features/playerInventory.d.ts +23 -0
- package/features/playerInventory.lua +147 -0
- package/features/ponyDetection.d.ts +6 -0
- package/features/ponyDetection.lua +53 -0
- package/features/preventCollectibleRotation.d.ts +11 -0
- package/features/preventCollectibleRotation.lua +67 -0
- package/features/runInNFrames.d.ts +61 -0
- package/features/runInNFrames.lua +128 -0
- package/features/saveDataManager/constants.d.ts +3 -0
- package/features/saveDataManager/constants.lua +5 -0
- package/features/saveDataManager/exports.d.ts +131 -0
- package/features/saveDataManager/exports.lua +181 -0
- package/features/saveDataManager/load.d.ts +4 -0
- package/features/saveDataManager/load.lua +66 -0
- package/features/saveDataManager/main.d.ts +3 -0
- package/features/saveDataManager/main.lua +125 -0
- package/features/saveDataManager/maps.d.ts +10 -0
- package/features/saveDataManager/maps.lua +11 -0
- package/features/saveDataManager/merge.d.ts +24 -0
- package/features/saveDataManager/merge.lua +144 -0
- package/features/saveDataManager/save.d.ts +4 -0
- package/features/saveDataManager/save.lua +44 -0
- package/features/saveDataManager/serializationBrand.d.ts +1 -0
- package/features/saveDataManager/serializationBrand.lua +17 -0
- package/features/sirenHelpers.d.ts +18 -0
- package/features/sirenHelpers.lua +82 -0
- package/features/taintedLazarusPlayers.d.ts +13 -0
- package/features/taintedLazarusPlayers.lua +85 -0
- package/featuresInitialized.d.ts +1 -0
- package/featuresInitialized.lua +20 -0
- package/functions/array.d.ts +141 -0
- package/functions/array.lua +354 -0
- package/functions/benchmark.d.ts +10 -0
- package/functions/benchmark.lua +38 -0
- package/functions/bitwise.d.ts +4 -0
- package/functions/bitwise.lua +21 -0
- package/functions/boss.d.ts +56 -0
- package/functions/boss.lua +218 -0
- package/functions/cacheFlag.d.ts +8 -0
- package/functions/cacheFlag.lua +11 -0
- package/functions/cards.d.ts +95 -0
- package/functions/cards.lua +234 -0
- package/functions/challenges.d.ts +3 -0
- package/functions/challenges.lua +10 -0
- package/functions/character.d.ts +48 -0
- package/functions/character.lua +96 -0
- package/functions/charge.d.ts +54 -0
- package/functions/charge.lua +162 -0
- package/functions/chargeBar.d.ts +12 -0
- package/functions/chargeBar.lua +47 -0
- package/functions/collectibleCacheFlag.d.ts +23 -0
- package/functions/collectibleCacheFlag.lua +80 -0
- package/functions/collectibleSet.d.ts +9 -0
- package/functions/collectibleSet.lua +54 -0
- package/functions/collectibleTag.d.ts +16 -0
- package/functions/collectibleTag.lua +83 -0
- package/functions/collectibles.d.ts +211 -0
- package/functions/collectibles.lua +412 -0
- package/functions/color.d.ts +45 -0
- package/functions/color.lua +140 -0
- package/functions/debug.d.ts +27 -0
- package/functions/debug.lua +49 -0
- package/functions/deepCopy.d.ts +29 -0
- package/functions/deepCopy.lua +382 -0
- package/functions/deepCopyTests.d.ts +1 -0
- package/functions/deepCopyTests.lua +316 -0
- package/functions/direction.d.ts +4 -0
- package/functions/direction.lua +17 -0
- package/functions/doors.d.ts +117 -0
- package/functions/doors.lua +284 -0
- package/functions/easing.d.ts +30 -0
- package/functions/easing.lua +115 -0
- package/functions/eden.d.ts +3 -0
- package/functions/eden.lua +47 -0
- package/functions/entity.d.ts +131 -0
- package/functions/entity.lua +321 -0
- package/functions/entitySpecific.d.ts +264 -0
- package/functions/entitySpecific.lua +832 -0
- package/functions/entityTypes.d.ts +3 -0
- package/functions/entityTypes.lua +8 -0
- package/functions/enums.d.ts +80 -0
- package/functions/enums.lua +147 -0
- package/functions/familiars.d.ts +60 -0
- package/functions/familiars.lua +85 -0
- package/functions/flag.d.ts +99 -0
- package/functions/flag.lua +124 -0
- package/functions/flying.d.ts +19 -0
- package/functions/flying.lua +77 -0
- package/functions/globals.d.ts +14 -0
- package/functions/globals.lua +236 -0
- package/functions/gridEntity.d.ts +155 -0
- package/functions/gridEntity.lua +368 -0
- package/functions/gridEntitySpecific.d.ts +18 -0
- package/functions/gridEntitySpecific.lua +96 -0
- package/functions/input.d.ts +32 -0
- package/functions/input.lua +117 -0
- package/functions/isaacAPIClass.d.ts +23 -0
- package/functions/isaacAPIClass.lua +47 -0
- package/functions/jsonHelpers.d.ts +18 -0
- package/functions/jsonHelpers.lua +37 -0
- package/functions/jsonRoom.d.ts +12 -0
- package/functions/jsonRoom.lua +91 -0
- package/functions/kColor.d.ts +31 -0
- package/functions/kColor.lua +110 -0
- package/functions/language.d.ts +8 -0
- package/functions/language.lua +13 -0
- package/functions/level.d.ts +1 -0
- package/functions/level.lua +29 -0
- package/functions/log.d.ts +78 -0
- package/functions/log.lua +547 -0
- package/functions/map.d.ts +22 -0
- package/functions/map.lua +61 -0
- package/functions/math.d.ts +50 -0
- package/functions/math.lua +118 -0
- package/functions/mergeTests.d.ts +1 -0
- package/functions/mergeTests.lua +182 -0
- package/functions/npc.d.ts +40 -0
- package/functions/npc.lua +128 -0
- package/functions/pickupVariants.d.ts +23 -0
- package/functions/pickupVariants.lua +48 -0
- package/functions/pickups.d.ts +132 -0
- package/functions/pickups.lua +474 -0
- package/functions/pills.d.ts +69 -0
- package/functions/pills.lua +128 -0
- package/functions/player.d.ts +296 -0
- package/functions/player.lua +777 -0
- package/functions/playerDataStructures.d.ts +92 -0
- package/functions/playerDataStructures.lua +103 -0
- package/functions/playerHealth.d.ts +22 -0
- package/functions/playerHealth.lua +296 -0
- package/functions/playerIndex.d.ts +68 -0
- package/functions/playerIndex.lua +174 -0
- package/functions/pocketItems.d.ts +33 -0
- package/functions/pocketItems.lua +104 -0
- package/functions/positionVelocity.d.ts +64 -0
- package/functions/positionVelocity.lua +154 -0
- package/functions/random.d.ts +42 -0
- package/functions/random.lua +70 -0
- package/functions/revive.d.ts +31 -0
- package/functions/revive.lua +117 -0
- package/functions/rng.d.ts +53 -0
- package/functions/rng.lua +148 -0
- package/functions/roomData.d.ts +108 -0
- package/functions/roomData.lua +160 -0
- package/functions/roomGrid.d.ts +40 -0
- package/functions/roomGrid.lua +80 -0
- package/functions/roomShape.d.ts +43 -0
- package/functions/roomShape.lua +67 -0
- package/functions/rooms.d.ts +194 -0
- package/functions/rooms.lua +482 -0
- package/functions/run.d.ts +12 -0
- package/functions/run.lua +33 -0
- package/functions/seeds.d.ts +9 -0
- package/functions/seeds.lua +19 -0
- package/functions/serialization.d.ts +11 -0
- package/functions/serialization.lua +69 -0
- package/functions/set.d.ts +39 -0
- package/functions/set.lua +83 -0
- package/functions/sound.d.ts +1 -0
- package/functions/sound.lua +13 -0
- package/functions/spawnCollectible.d.ts +31 -0
- package/functions/spawnCollectible.lua +94 -0
- package/functions/sprite.d.ts +36 -0
- package/functions/sprite.lua +89 -0
- package/functions/stage.d.ts +35 -0
- package/functions/stage.lua +86 -0
- package/functions/string.d.ts +13 -0
- package/functions/string.lua +42 -0
- package/functions/table.d.ts +36 -0
- package/functions/table.lua +98 -0
- package/functions/tears.d.ts +22 -0
- package/functions/tears.lua +26 -0
- package/functions/transformations.d.ts +30 -0
- package/functions/transformations.lua +114 -0
- package/functions/trinketCacheFlag.d.ts +10 -0
- package/functions/trinketCacheFlag.lua +53 -0
- package/functions/trinketGive.d.ts +38 -0
- package/functions/trinketGive.lua +114 -0
- package/functions/trinkets.d.ts +73 -0
- package/functions/trinkets.lua +167 -0
- package/functions/tstlClass.d.ts +20 -0
- package/functions/tstlClass.lua +65 -0
- package/functions/ui.d.ts +34 -0
- package/functions/ui.lua +111 -0
- package/functions/utils.d.ts +113 -0
- package/functions/utils.lua +182 -0
- package/functions/vector.d.ts +32 -0
- package/functions/vector.lua +127 -0
- package/index.d.ts +129 -0
- package/index.lua +900 -0
- package/initCustomCallbacks.d.ts +2 -0
- package/initCustomCallbacks.lua +178 -0
- package/initFeatures.d.ts +3 -0
- package/initFeatures.lua +51 -0
- package/interfaces/AddCallbackParameterCustom.d.ts +153 -0
- package/interfaces/AddCallbackParameterCustom.lua +4 -0
- package/interfaces/ChargeBarSprites.d.ts +13 -0
- package/interfaces/ChargeBarSprites.lua +2 -0
- package/interfaces/JSONDoor.d.ts +11 -0
- package/interfaces/JSONDoor.lua +2 -0
- package/interfaces/JSONEntity.d.ts +13 -0
- package/interfaces/JSONEntity.lua +2 -0
- package/interfaces/JSONRoom.d.ts +26 -0
- package/interfaces/JSONRoom.lua +2 -0
- package/interfaces/JSONRooms.d.ts +11 -0
- package/interfaces/JSONRooms.lua +2 -0
- package/interfaces/JSONSpawn.d.ts +11 -0
- package/interfaces/JSONSpawn.lua +2 -0
- package/interfaces/PlayerHealth.d.ts +15 -0
- package/interfaces/PlayerHealth.lua +2 -0
- package/interfaces/PocketItemDescription.d.ts +8 -0
- package/interfaces/PocketItemDescription.lua +2 -0
- package/interfaces/SaveData.d.ts +29 -0
- package/interfaces/SaveData.lua +2 -0
- package/interfaces/TrinketSituation.d.ts +8 -0
- package/interfaces/TrinketSituation.lua +2 -0
- package/interfaces/private/TSTLClassMetatable.d.ts +10 -0
- package/interfaces/private/TSTLClassMetatable.lua +2 -0
- package/lualib_bundle.lua +2475 -0
- package/maps/cardMap.d.ts +3 -0
- package/maps/cardMap.lua +212 -0
- package/maps/characterMap.d.ts +3 -0
- package/maps/characterMap.lua +90 -0
- package/maps/collectibleDescriptionMap.d.ts +3 -0
- package/maps/collectibleDescriptionMap.lua +728 -0
- package/maps/collectibleNameMap.d.ts +3 -0
- package/maps/collectibleNameMap.lua +728 -0
- package/maps/defaultPlayerStatMap.d.ts +3 -0
- package/maps/defaultPlayerStatMap.lua +25 -0
- package/maps/gridEntityTypeToBrokenStateMap.d.ts +2 -0
- package/maps/gridEntityTypeToBrokenStateMap.lua +26 -0
- package/maps/gridEntityXMLMap.d.ts +9 -0
- package/maps/gridEntityXMLMap.lua +53 -0
- package/maps/pillEffectMap.d.ts +3 -0
- package/maps/pillEffectMap.lua +90 -0
- package/maps/roomShapeToTopLeftWallGridIndexMap.d.ts +7 -0
- package/maps/roomShapeToTopLeftWallGridIndexMap.lua +17 -0
- package/maps/roomTypeMap.d.ts +3 -0
- package/maps/roomTypeMap.lua +45 -0
- package/maps/trinketDescriptionMap.d.ts +3 -0
- package/maps/trinketDescriptionMap.lua +196 -0
- package/maps/trinketNameMap.d.ts +3 -0
- package/maps/trinketNameMap.lua +196 -0
- package/objects/LRoomShapeToRectangles.d.ts +13 -0
- package/objects/LRoomShapeToRectangles.lua +35 -0
- package/objects/callbackRegisterFunctions.d.ts +5 -0
- package/objects/callbackRegisterFunctions.lua +231 -0
- package/objects/cardDescriptions.d.ts +5 -0
- package/objects/cardDescriptions.lua +105 -0
- package/objects/cardNames.d.ts +5 -0
- package/objects/cardNames.lua +105 -0
- package/objects/cardTypes.d.ts +5 -0
- package/objects/cardTypes.lua +106 -0
- package/objects/challengeNames.d.ts +5 -0
- package/objects/challengeNames.lua +53 -0
- package/objects/characterNames.d.ts +5 -0
- package/objects/characterNames.lua +49 -0
- package/objects/coinSubTypeToValue.d.ts +5 -0
- package/objects/coinSubTypeToValue.lua +15 -0
- package/objects/colors.d.ts +17 -0
- package/objects/colors.lua +16 -0
- package/objects/directionNames.d.ts +4 -0
- package/objects/directionNames.lua +11 -0
- package/objects/directionToDegrees.d.ts +4 -0
- package/objects/directionToDegrees.lua +11 -0
- package/objects/directionToVector.d.ts +4 -0
- package/objects/directionToVector.lua +13 -0
- package/objects/doorSlotFlagToDoorSlot.d.ts +5 -0
- package/objects/doorSlotFlagToDoorSlot.lua +16 -0
- package/objects/doorSlotToDirection.d.ts +4 -0
- package/objects/doorSlotToDirection.lua +16 -0
- package/objects/isaacAPIClassTypeToBrand.d.ts +5 -0
- package/objects/isaacAPIClassTypeToBrand.lua +7 -0
- package/objects/isaacAPIClassTypeToCopyFunction.d.ts +5 -0
- package/objects/isaacAPIClassTypeToCopyFunction.lua +13 -0
- package/objects/languageNames.d.ts +4 -0
- package/objects/languageNames.lua +13 -0
- package/objects/pillEffectClasses.d.ts +5 -0
- package/objects/pillEffectClasses.lua +59 -0
- package/objects/pillEffectNames.d.ts +5 -0
- package/objects/pillEffectNames.lua +57 -0
- package/objects/pillEffectTypes.d.ts +5 -0
- package/objects/pillEffectTypes.lua +58 -0
- package/objects/roomShapeBounds.d.ts +8 -0
- package/objects/roomShapeBounds.lua +26 -0
- package/objects/roomShapeLayoutSizes.d.ts +10 -0
- package/objects/roomShapeLayoutSizes.lua +29 -0
- package/objects/roomShapeToBottomRightPosition.d.ts +8 -0
- package/objects/roomShapeToBottomRightPosition.lua +22 -0
- package/objects/roomShapeToDoorSlots.d.ts +4 -0
- package/objects/roomShapeToDoorSlots.lua +46 -0
- package/objects/roomShapeToDoorSlotsToGridIndexDelta.d.ts +8 -0
- package/objects/roomShapeToDoorSlotsToGridIndexDelta.lua +89 -0
- package/objects/roomShapeToGridWidth.d.ts +4 -0
- package/objects/roomShapeToGridWidth.lua +20 -0
- package/objects/roomShapeToTopLeftPosition.d.ts +8 -0
- package/objects/roomShapeToTopLeftPosition.lua +24 -0
- package/objects/roomShapeVolumes.d.ts +13 -0
- package/objects/roomShapeVolumes.lua +30 -0
- package/objects/roomTypeNames.d.ts +5 -0
- package/objects/roomTypeNames.lua +37 -0
- package/objects/serializedIsaacAPIClassTypeToIdentityFunction.d.ts +4 -0
- package/objects/serializedIsaacAPIClassTypeToIdentityFunction.lua +13 -0
- package/objects/stageTypeToLetter.d.ts +4 -0
- package/objects/stageTypeToLetter.lua +12 -0
- package/objects/transformationNames.d.ts +5 -0
- package/objects/transformationNames.lua +21 -0
- package/package.json +3 -4
- package/patchErrorFunctions.d.ts +1 -0
- package/patchErrorFunctions.lua +58 -0
- package/sets/LRoomShapesSet.d.ts +2 -0
- package/sets/LRoomShapesSet.lua +8 -0
- package/sets/bossSets.d.ts +4 -0
- package/sets/bossSets.lua +554 -0
- package/sets/charactersThatStartWithAnActiveItemSet.d.ts +2 -0
- package/sets/charactersThatStartWithAnActiveItemSet.lua +20 -0
- package/sets/charactersWithBlackHeartFromEternalHeartSet.d.ts +2 -0
- package/sets/charactersWithBlackHeartFromEternalHeartSet.lua +8 -0
- package/sets/charactersWithFreeDevilDealsSet.d.ts +2 -0
- package/sets/charactersWithFreeDevilDealsSet.lua +8 -0
- package/sets/charactersWithNoRedHeartsSet.d.ts +6 -0
- package/sets/charactersWithNoRedHeartsSet.lua +19 -0
- package/sets/charactersWithNoSoulHeartsSet.d.ts +6 -0
- package/sets/charactersWithNoSoulHeartsSet.lua +16 -0
- package/sets/chestPickupVariantsSet.d.ts +2 -0
- package/sets/chestPickupVariantsSet.lua +21 -0
- package/sets/familiarsThatShootPlayerTearsSet.d.ts +2 -0
- package/sets/familiarsThatShootPlayerTearsSet.lua +17 -0
- package/sets/lostStyleCharactersSet.d.ts +6 -0
- package/sets/lostStyleCharactersSet.lua +16 -0
- package/sets/mineShaftRoomSubTypesSet.d.ts +2 -0
- package/sets/mineShaftRoomSubTypesSet.lua +14 -0
- package/sets/redHeartSubTypesSet.d.ts +2 -0
- package/sets/redHeartSubTypesSet.lua +8 -0
- package/sets/sinEntityTypesSet.d.ts +2 -0
- package/sets/sinEntityTypesSet.lua +16 -0
- package/sets/singleUseActiveCollectibleTypesSet.d.ts +2 -0
- package/sets/singleUseActiveCollectibleTypesSet.lua +17 -0
- package/sets/storyBossesSet.d.ts +2 -0
- package/sets/storyBossesSet.lua +22 -0
- package/types/AnyEntity.d.ts +2 -0
- package/types/AnyEntity.lua +2 -0
- package/types/CollectibleIndex.d.ts +16 -0
- package/types/CollectibleIndex.lua +2 -0
- package/types/PickingUpItem.d.ts +34 -0
- package/types/PickingUpItem.lua +34 -0
- package/types/PlayerIndex.d.ts +16 -0
- package/types/PlayerIndex.lua +2 -0
- package/types/private/IsaacAPIClass.d.ts +4 -0
- package/types/private/IsaacAPIClass.lua +2 -0
- package/types/private/SerializedIsaacAPIClass.d.ts +4 -0
- package/types/private/SerializedIsaacAPIClass.lua +2 -0
- package/types/private/TSTLClass.d.ts +4 -0
- package/types/private/TSTLClass.lua +2 -0
- package/upgradeMod.d.ts +23 -0
- package/upgradeMod.lua +51 -0
- package/.eslintrc.js +0 -70
- package/build.sh +0 -27
- package/docs.sh +0 -21
- package/lint.sh +0 -34
- package/project.json +0 -37
- package/release.sh +0 -16
- package/scripts/.eslintrc.js +0 -21
- package/scripts/docsEntryPointLint.ts +0 -135
- package/scripts/tsconfig.json +0 -5
- package/src/cachedClasses.ts +0 -39
- package/src/callbacks/customRevive.ts +0 -206
- package/src/callbacks/itemPickup.ts +0 -101
- package/src/callbacks/postBombInitLate.ts +0 -36
- package/src/callbacks/postBoneSwing.ts +0 -64
- package/src/callbacks/postCollectibleInitFirst.ts +0 -39
- package/src/callbacks/postCursedTeleport.ts +0 -183
- package/src/callbacks/postCustomDoorEnter.ts +0 -297
- package/src/callbacks/postDoorRender.ts +0 -26
- package/src/callbacks/postDoorUpdate.ts +0 -26
- package/src/callbacks/postEffectInitLate.ts +0 -36
- package/src/callbacks/postEffectStateChanged.ts +0 -43
- package/src/callbacks/postEsauJr.ts +0 -107
- package/src/callbacks/postFamiliarInitLate.ts +0 -36
- package/src/callbacks/postFamiliarStateChanged.ts +0 -43
- package/src/callbacks/postFlip.ts +0 -88
- package/src/callbacks/postGreedModeWave.ts +0 -41
- package/src/callbacks/postGridEntity.ts +0 -159
- package/src/callbacks/postGridEntityCollision.ts +0 -69
- package/src/callbacks/postGridEntityRender.ts +0 -26
- package/src/callbacks/postHolyMantleRemoved.ts +0 -55
- package/src/callbacks/postItemDischarged.ts +0 -149
- package/src/callbacks/postKnifeInitLate.ts +0 -36
- package/src/callbacks/postLaserInitLate.ts +0 -36
- package/src/callbacks/postNPCInitLate.ts +0 -36
- package/src/callbacks/postNPCStateChanged.ts +0 -42
- package/src/callbacks/postNewRoomEarly.ts +0 -90
- package/src/callbacks/postPickupCollect.ts +0 -48
- package/src/callbacks/postPickupInitLate.ts +0 -36
- package/src/callbacks/postPickupStateChanged.ts +0 -43
- package/src/callbacks/postPitRender.ts +0 -26
- package/src/callbacks/postPitUpdate.ts +0 -26
- package/src/callbacks/postPlayerChangeHealth.ts +0 -62
- package/src/callbacks/postPlayerChangeType.ts +0 -56
- package/src/callbacks/postPlayerFatalDamage.ts +0 -98
- package/src/callbacks/postPlayerInitLate.ts +0 -37
- package/src/callbacks/postPlayerReordered.ts +0 -142
- package/src/callbacks/postPoopRender.ts +0 -26
- package/src/callbacks/postPoopUpdate.ts +0 -26
- package/src/callbacks/postPressurePlateRender.ts +0 -26
- package/src/callbacks/postPressurePlateUpdate.ts +0 -26
- package/src/callbacks/postProjectileInitLate.ts +0 -36
- package/src/callbacks/postPurchase.ts +0 -64
- package/src/callbacks/postRockRender.ts +0 -26
- package/src/callbacks/postRockUpdate.ts +0 -26
- package/src/callbacks/postRoomClearChanged.ts +0 -52
- package/src/callbacks/postSacrifice.ts +0 -62
- package/src/callbacks/postSlotInitUpdate.ts +0 -63
- package/src/callbacks/postSlotRender.ts +0 -96
- package/src/callbacks/postSpikesRender.ts +0 -26
- package/src/callbacks/postSpikesUpdate.ts +0 -26
- package/src/callbacks/postTNTRender.ts +0 -26
- package/src/callbacks/postTNTUpdate.ts +0 -26
- package/src/callbacks/postTearInitLate.ts +0 -36
- package/src/callbacks/postTearInitVeryLate.ts +0 -41
- package/src/callbacks/postTransformation.ts +0 -59
- package/src/callbacks/postTrinketBreak.ts +0 -110
- package/src/callbacks/preBerserkDeath.ts +0 -49
- package/src/callbacks/preNewLevel.ts +0 -55
- package/src/callbacks/reorderedCallbacks.ts +0 -166
- package/src/callbacks/subscriptions/postBombInitLate.ts +0 -32
- package/src/callbacks/subscriptions/postBoneSwing.ts +0 -24
- package/src/callbacks/subscriptions/postCollectibleInitFirst.ts +0 -37
- package/src/callbacks/subscriptions/postCursedTeleport.ts +0 -24
- package/src/callbacks/subscriptions/postCustomDoorEnter.ts +0 -45
- package/src/callbacks/subscriptions/postCustomRevive.ts +0 -36
- package/src/callbacks/subscriptions/postDoorRender.ts +0 -35
- package/src/callbacks/subscriptions/postDoorUpdate.ts +0 -35
- package/src/callbacks/subscriptions/postEffectInitLate.ts +0 -32
- package/src/callbacks/subscriptions/postEffectStateChanged.ts +0 -40
- package/src/callbacks/subscriptions/postEsauJr.ts +0 -24
- package/src/callbacks/subscriptions/postFamiliarInitLate.ts +0 -32
- package/src/callbacks/subscriptions/postFamiliarStateChanged.ts +0 -40
- package/src/callbacks/subscriptions/postFirstEsauJr.ts +0 -24
- package/src/callbacks/subscriptions/postFirstFlip.ts +0 -24
- package/src/callbacks/subscriptions/postFlip.ts +0 -22
- package/src/callbacks/subscriptions/postGameStartedReordered.ts +0 -24
- package/src/callbacks/subscriptions/postGreedModeWave.ts +0 -24
- package/src/callbacks/subscriptions/postGridEntityBroken.ts +0 -51
- package/src/callbacks/subscriptions/postGridEntityCollision.ts +0 -54
- package/src/callbacks/subscriptions/postGridEntityInit.ts +0 -51
- package/src/callbacks/subscriptions/postGridEntityRemove.ts +0 -52
- package/src/callbacks/subscriptions/postGridEntityRender.ts +0 -51
- package/src/callbacks/subscriptions/postGridEntityStateChanged.ts +0 -55
- package/src/callbacks/subscriptions/postGridEntityUpdate.ts +0 -51
- package/src/callbacks/subscriptions/postHolyMantleRemoved.ts +0 -48
- package/src/callbacks/subscriptions/postItemDischarged.ts +0 -43
- package/src/callbacks/subscriptions/postItemPickup.ts +0 -64
- package/src/callbacks/subscriptions/postKnifeInitLate.ts +0 -32
- package/src/callbacks/subscriptions/postLaserInitLate.ts +0 -32
- package/src/callbacks/subscriptions/postNPCInitLate.ts +0 -32
- package/src/callbacks/subscriptions/postNPCStateChanged.ts +0 -42
- package/src/callbacks/subscriptions/postNewLevelReordered.ts +0 -22
- package/src/callbacks/subscriptions/postNewRoomEarly.ts +0 -22
- package/src/callbacks/subscriptions/postNewRoomReordered.ts +0 -22
- package/src/callbacks/subscriptions/postPEffectUpdateReordered.ts +0 -40
- package/src/callbacks/subscriptions/postPickupCollect.ts +0 -34
- package/src/callbacks/subscriptions/postPickupInitLate.ts +0 -31
- package/src/callbacks/subscriptions/postPickupStateChanged.ts +0 -35
- package/src/callbacks/subscriptions/postPitRender.ts +0 -35
- package/src/callbacks/subscriptions/postPitUpdate.ts +0 -35
- package/src/callbacks/subscriptions/postPlayerChangeHealth.ts +0 -45
- package/src/callbacks/subscriptions/postPlayerChangeType.ts +0 -40
- package/src/callbacks/subscriptions/postPlayerFatalDamage.ts +0 -67
- package/src/callbacks/subscriptions/postPlayerInitLate.ts +0 -40
- package/src/callbacks/subscriptions/postPlayerInitReordered.ts +0 -40
- package/src/callbacks/subscriptions/postPlayerRenderReordered.ts +0 -40
- package/src/callbacks/subscriptions/postPlayerUpdateReordered.ts +0 -40
- package/src/callbacks/subscriptions/postPoopRender.ts +0 -35
- package/src/callbacks/subscriptions/postPoopUpdate.ts +0 -35
- package/src/callbacks/subscriptions/postPressurePlateRender.ts +0 -37
- package/src/callbacks/subscriptions/postPressurePlateUpdate.ts +0 -37
- package/src/callbacks/subscriptions/postProjectileInitLate.ts +0 -35
- package/src/callbacks/subscriptions/postPurchase.ts +0 -31
- package/src/callbacks/subscriptions/postRockRender.ts +0 -35
- package/src/callbacks/subscriptions/postRockUpdate.ts +0 -35
- package/src/callbacks/subscriptions/postRoomClearChanged.ts +0 -24
- package/src/callbacks/subscriptions/postSacrifice.ts +0 -43
- package/src/callbacks/subscriptions/postSlotAnimationChanged.ts +0 -40
- package/src/callbacks/subscriptions/postSlotDestroyed.ts +0 -32
- package/src/callbacks/subscriptions/postSlotInit.ts +0 -32
- package/src/callbacks/subscriptions/postSlotRender.ts +0 -32
- package/src/callbacks/subscriptions/postSlotUpdate.ts +0 -32
- package/src/callbacks/subscriptions/postSpikesRender.ts +0 -35
- package/src/callbacks/subscriptions/postSpikesUpdate.ts +0 -35
- package/src/callbacks/subscriptions/postTNTRender.ts +0 -35
- package/src/callbacks/subscriptions/postTNTUpdate.ts +0 -35
- package/src/callbacks/subscriptions/postTearInitLate.ts +0 -32
- package/src/callbacks/subscriptions/postTearInitVeryLate.ts +0 -32
- package/src/callbacks/subscriptions/postTransformation.ts +0 -40
- package/src/callbacks/subscriptions/postTrinketBreak.ts +0 -38
- package/src/callbacks/subscriptions/preBerserkDeath.ts +0 -42
- package/src/callbacks/subscriptions/preCustomRevive.ts +0 -45
- package/src/callbacks/subscriptions/preItemPickup.ts +0 -64
- package/src/callbacks/subscriptions/preNewLevel.ts +0 -24
- package/src/classes/DefaultMap.ts +0 -220
- package/src/classes/ModUpgraded.ts +0 -83
- package/src/constants.ts +0 -140
- package/src/constantsFirstLast.ts +0 -212
- package/src/enums/HealthType.ts +0 -16
- package/src/enums/ModCallbackCustom.ts +0 -943
- package/src/enums/PocketItemType.ts +0 -8
- package/src/enums/SerializationType.ts +0 -5
- package/src/enums/private/CopyableIsaacAPIClassType.ts +0 -7
- package/src/enums/private/SaveDataKey.ts +0 -14
- package/src/enums/private/SerializationBrand.ts +0 -42
- package/src/features/characterHealthConversion.ts +0 -116
- package/src/features/characterStats.ts +0 -61
- package/src/features/debugDisplay/debugDisplay.ts +0 -221
- package/src/features/debugDisplay/exports.ts +0 -368
- package/src/features/debugDisplay/v.ts +0 -65
- package/src/features/deployJSONRoom.ts +0 -672
- package/src/features/disableInputs.ts +0 -193
- package/src/features/disableSound.ts +0 -77
- package/src/features/extraConsoleCommands/commandsDisplay.ts +0 -290
- package/src/features/extraConsoleCommands/commandsSubroutines.ts +0 -139
- package/src/features/extraConsoleCommands/init.ts +0 -334
- package/src/features/extraConsoleCommands/listCommands.ts +0 -1298
- package/src/features/extraConsoleCommands/v.ts +0 -14
- package/src/features/fadeInRemover.ts +0 -60
- package/src/features/fastReset.ts +0 -75
- package/src/features/forgottenSwitch.ts +0 -50
- package/src/features/getCollectibleItemPoolType.ts +0 -66
- package/src/features/playerInventory.ts +0 -187
- package/src/features/ponyDetection.ts +0 -74
- package/src/features/preventCollectibleRotation.ts +0 -113
- package/src/features/runInNFrames.ts +0 -148
- package/src/features/saveDataManager/constants.ts +0 -4
- package/src/features/saveDataManager/exports.ts +0 -230
- package/src/features/saveDataManager/load.ts +0 -90
- package/src/features/saveDataManager/main.ts +0 -187
- package/src/features/saveDataManager/maps.ts +0 -13
- package/src/features/saveDataManager/merge.ts +0 -182
- package/src/features/saveDataManager/save.ts +0 -66
- package/src/features/saveDataManager/serializationBrand.ts +0 -15
- package/src/features/sirenHelpers.ts +0 -129
- package/src/features/taintedLazarusPlayers.ts +0 -113
- package/src/featuresInitialized.ts +0 -20
- package/src/functions/array.ts +0 -412
- package/src/functions/benchmark.ts +0 -36
- package/src/functions/bitwise.ts +0 -24
- package/src/functions/boss.ts +0 -227
- package/src/functions/cacheFlag.ts +0 -12
- package/src/functions/cards.ts +0 -267
- package/src/functions/challenges.ts +0 -11
- package/src/functions/character.ts +0 -124
- package/src/functions/charge.ts +0 -237
- package/src/functions/chargeBar.ts +0 -67
- package/src/functions/collectibleCacheFlag.ts +0 -90
- package/src/functions/collectibleSet.ts +0 -57
- package/src/functions/collectibleTag.ts +0 -89
- package/src/functions/collectibles.ts +0 -610
- package/src/functions/color.ts +0 -149
- package/src/functions/debug.ts +0 -65
- package/src/functions/deepCopy.ts +0 -508
- package/src/functions/deepCopyTests.ts +0 -390
- package/src/functions/direction.ts +0 -16
- package/src/functions/doors.ts +0 -343
- package/src/functions/easing.ts +0 -182
- package/src/functions/eden.ts +0 -47
- package/src/functions/entity.ts +0 -352
- package/src/functions/entitySpecific.ts +0 -889
- package/src/functions/entityTypes.ts +0 -6
- package/src/functions/enums.ts +0 -145
- package/src/functions/familiars.ts +0 -106
- package/src/functions/flag.ts +0 -165
- package/src/functions/flying.ts +0 -117
- package/src/functions/globals.ts +0 -249
- package/src/functions/gridEntity.ts +0 -511
- package/src/functions/gridEntitySpecific.ts +0 -112
- package/src/functions/input.ts +0 -139
- package/src/functions/isaacAPIClass.ts +0 -65
- package/src/functions/jsonHelpers.ts +0 -45
- package/src/functions/jsonRoom.ts +0 -100
- package/src/functions/kColor.ts +0 -130
- package/src/functions/language.ts +0 -13
- package/src/functions/level.ts +0 -31
- package/src/functions/log.ts +0 -660
- package/src/functions/map.ts +0 -56
- package/src/functions/math.ts +0 -149
- package/src/functions/mergeTests.ts +0 -288
- package/src/functions/npc.ts +0 -148
- package/src/functions/pickupVariants.ts +0 -60
- package/src/functions/pickups.ts +0 -449
- package/src/functions/pills.ts +0 -182
- package/src/functions/player.ts +0 -975
- package/src/functions/playerDataStructures.ts +0 -150
- package/src/functions/playerHealth.ts +0 -318
- package/src/functions/playerIndex.ts +0 -195
- package/src/functions/pocketItems.ts +0 -149
- package/src/functions/positionVelocity.ts +0 -188
- package/src/functions/random.ts +0 -77
- package/src/functions/revive.ts +0 -201
- package/src/functions/rng.ts +0 -177
- package/src/functions/roomData.ts +0 -199
- package/src/functions/roomGrid.ts +0 -109
- package/src/functions/roomShape.ts +0 -80
- package/src/functions/rooms.ts +0 -667
- package/src/functions/run.ts +0 -36
- package/src/functions/seeds.ts +0 -19
- package/src/functions/serialization.ts +0 -97
- package/src/functions/set.ts +0 -95
- package/src/functions/sound.ts +0 -9
- package/src/functions/spawnCollectible.ts +0 -104
- package/src/functions/sprite.ts +0 -107
- package/src/functions/stage.ts +0 -125
- package/src/functions/string.ts +0 -47
- package/src/functions/table.ts +0 -139
- package/src/functions/tears.ts +0 -32
- package/src/functions/transformations.ts +0 -137
- package/src/functions/trinketCacheFlag.ts +0 -60
- package/src/functions/trinketGive.ts +0 -157
- package/src/functions/trinkets.ts +0 -215
- package/src/functions/tstlClass.ts +0 -91
- package/src/functions/ui.ts +0 -138
- package/src/functions/utils.ts +0 -200
- package/src/functions/vector.ts +0 -145
- package/src/index.ts +0 -162
- package/src/initCustomCallbacks.ts +0 -120
- package/src/initFeatures.ts +0 -37
- package/src/interfaces/AddCallbackParameterCustom.ts +0 -174
- package/src/interfaces/ChargeBarSprites.ts +0 -12
- package/src/interfaces/JSONDoor.ts +0 -13
- package/src/interfaces/JSONEntity.ts +0 -16
- package/src/interfaces/JSONRoom.ts +0 -36
- package/src/interfaces/JSONRooms.ts +0 -12
- package/src/interfaces/JSONSpawn.ts +0 -14
- package/src/interfaces/PlayerHealth.ts +0 -16
- package/src/interfaces/PocketItemDescription.ts +0 -9
- package/src/interfaces/SaveData.ts +0 -29
- package/src/interfaces/TrinketSituation.ts +0 -9
- package/src/interfaces/private/TSTLClassMetatable.ts +0 -8
- package/src/maps/cardMap.ts +0 -209
- package/src/maps/characterMap.ts +0 -87
- package/src/maps/collectibleDescriptionMap.ts +0 -732
- package/src/maps/collectibleNameMap.ts +0 -731
- package/src/maps/defaultPlayerStatMap.ts +0 -17
- package/src/maps/gridEntityTypeToBrokenStateMap.ts +0 -50
- package/src/maps/gridEntityXMLMap.ts +0 -176
- package/src/maps/pillEffectMap.ts +0 -88
- package/src/maps/roomShapeToTopLeftWallGridIndexMap.ts +0 -18
- package/src/maps/roomTypeMap.ts +0 -40
- package/src/maps/trinketDescriptionMap.ts +0 -200
- package/src/maps/trinketNameMap.ts +0 -198
- package/src/objects/LRoomShapeToRectangles.ts +0 -44
- package/src/objects/callbackRegisterFunctions.ts +0 -171
- package/src/objects/cardDescriptions.ts +0 -105
- package/src/objects/cardNames.ts +0 -105
- package/src/objects/cardTypes.ts +0 -104
- package/src/objects/challengeNames.ts +0 -52
- package/src/objects/characterNames.ts +0 -48
- package/src/objects/coinSubTypeToValue.ts +0 -14
- package/src/objects/colors.ts +0 -16
- package/src/objects/directionNames.ts +0 -11
- package/src/objects/directionToDegrees.ts +0 -11
- package/src/objects/directionToVector.ts +0 -12
- package/src/objects/doorSlotFlagToDoorSlot.ts +0 -16
- package/src/objects/doorSlotToDirection.ts +0 -14
- package/src/objects/isaacAPIClassTypeToBrand.ts +0 -11
- package/src/objects/isaacAPIClassTypeToCopyFunction.ts +0 -18
- package/src/objects/languageNames.ts +0 -13
- package/src/objects/pillEffectClasses.ts +0 -63
- package/src/objects/pillEffectNames.ts +0 -57
- package/src/objects/pillEffectTypes.ts +0 -62
- package/src/objects/roomShapeBounds.ts +0 -71
- package/src/objects/roomShapeLayoutSizes.ts +0 -45
- package/src/objects/roomShapeToBottomRightPosition.ts +0 -25
- package/src/objects/roomShapeToDoorSlots.ts +0 -83
- package/src/objects/roomShapeToDoorSlotsToGridIndexDelta.ts +0 -127
- package/src/objects/roomShapeToGridWidth.ts +0 -21
- package/src/objects/roomShapeToTopLeftPosition.ts +0 -26
- package/src/objects/roomShapeVolumes.ts +0 -38
- package/src/objects/roomTypeNames.ts +0 -36
- package/src/objects/serializedIsaacAPIClassTypeToIdentityFunction.ts +0 -14
- package/src/objects/stageTypeToLetter.ts +0 -15
- package/src/objects/transformationNames.ts +0 -20
- package/src/patchErrorFunctions.ts +0 -92
- package/src/sets/LRoomShapesSet.ts +0 -8
- package/src/sets/bossSets.ts +0 -470
- package/src/sets/charactersThatStartWithAnActiveItemSet.ts +0 -16
- package/src/sets/charactersWithBlackHeartFromEternalHeartSet.ts +0 -7
- package/src/sets/charactersWithFreeDevilDealsSet.ts +0 -4
- package/src/sets/charactersWithNoRedHeartsSet.ts +0 -17
- package/src/sets/charactersWithNoSoulHeartsSet.ts +0 -14
- package/src/sets/chestPickupVariantsSet.ts +0 -16
- package/src/sets/familiarsThatShootPlayerTearsSet.ts +0 -13
- package/src/sets/lostStyleCharactersSet.ts +0 -13
- package/src/sets/mineShaftRoomSubTypesSet.ts +0 -10
- package/src/sets/redHeartSubTypesSet.ts +0 -7
- package/src/sets/sinEntityTypesSet.ts +0 -11
- package/src/sets/singleUseActiveCollectibleTypesSet.ts +0 -13
- package/src/sets/storyBossesSet.ts +0 -17
- package/src/types/AnyEntity.ts +0 -12
- package/src/types/AwaitingTextInput.d.ts +0 -2
- package/src/types/CollectibleIndex.ts +0 -14
- package/src/types/PickingUpItem.ts +0 -89
- package/src/types/PlayerIndex.ts +0 -13
- package/src/types/private/IsaacAPIClass.ts +0 -3
- package/src/types/private/SerializedIsaacAPIClass.ts +0 -3
- package/src/types/private/TSTLClass.ts +0 -3
- package/src/upgradeMod.ts +0 -55
- package/tsconfig.json +0 -42
- package/typedoc.json +0 -158
- package/website-root.md +0 -11
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__ArrayForEach = ____lualib.__TS__ArrayForEach
|
|
3
|
+
local __TS__ArraySplice = ____lualib.__TS__ArraySplice
|
|
4
|
+
local ____exports = {}
|
|
5
|
+
local postUpdate, postRender, checkExecuteQueuedFunctions, v
|
|
6
|
+
local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
|
|
7
|
+
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
|
|
8
|
+
local ____cachedClasses = require("cachedClasses")
|
|
9
|
+
local game = ____cachedClasses.game
|
|
10
|
+
local ____featuresInitialized = require("featuresInitialized")
|
|
11
|
+
local errorIfFeaturesNotInitialized = ____featuresInitialized.errorIfFeaturesNotInitialized
|
|
12
|
+
local ____exports = require("features.saveDataManager.exports")
|
|
13
|
+
local saveDataManager = ____exports.saveDataManager
|
|
14
|
+
function postUpdate(self)
|
|
15
|
+
local gameFrameCount = game:GetFrameCount()
|
|
16
|
+
checkExecuteQueuedFunctions(nil, gameFrameCount, v.run.queuedGameFunctionTuples)
|
|
17
|
+
end
|
|
18
|
+
function postRender(self)
|
|
19
|
+
local renderFrameCount = Isaac.GetFrameCount()
|
|
20
|
+
checkExecuteQueuedFunctions(nil, renderFrameCount, v.run.queuedRenderFunctionTuples)
|
|
21
|
+
end
|
|
22
|
+
function checkExecuteQueuedFunctions(self, frameCount, functionTuples)
|
|
23
|
+
local functionsToFire = {}
|
|
24
|
+
local indexesToRemove = {}
|
|
25
|
+
__TS__ArrayForEach(
|
|
26
|
+
functionTuples,
|
|
27
|
+
function(____, functionTuple, i)
|
|
28
|
+
local frame, func = table.unpack(functionTuple)
|
|
29
|
+
if frameCount >= frame then
|
|
30
|
+
functionsToFire[#functionsToFire + 1] = func
|
|
31
|
+
indexesToRemove[#indexesToRemove + 1] = i
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
)
|
|
35
|
+
for ____, indexToRemove in ipairs(indexesToRemove) do
|
|
36
|
+
__TS__ArraySplice(functionTuples, indexToRemove, 1)
|
|
37
|
+
end
|
|
38
|
+
for ____, func in ipairs(functionsToFire) do
|
|
39
|
+
func(nil)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
local FEATURE_NAME = "run in N frames"
|
|
43
|
+
v = {run = {queuedGameFunctionTuples = {}, queuedRenderFunctionTuples = {}}}
|
|
44
|
+
---
|
|
45
|
+
-- @internal
|
|
46
|
+
function ____exports.runInNFramesInit(self, mod)
|
|
47
|
+
saveDataManager(
|
|
48
|
+
nil,
|
|
49
|
+
"runInNFrames",
|
|
50
|
+
v,
|
|
51
|
+
function() return false end
|
|
52
|
+
)
|
|
53
|
+
mod:AddCallback(ModCallback.POST_UPDATE, postUpdate)
|
|
54
|
+
mod:AddCallback(ModCallback.POST_RENDER, postRender)
|
|
55
|
+
end
|
|
56
|
+
--- Supply a function to run N game frames from now in the PostUpdate callback.
|
|
57
|
+
--
|
|
58
|
+
-- For a usage example, see the documentation for the `runNextGameFrame`, which is used in a similar
|
|
59
|
+
-- way.
|
|
60
|
+
--
|
|
61
|
+
-- Note that this function will not handle saving and quitting. If a player saving and quitting
|
|
62
|
+
-- before the deferred function fires would cause a bug in your mod, then you should handle deferred
|
|
63
|
+
-- functions manually using serializable data.
|
|
64
|
+
function ____exports.runInNGameFrames(self, func, gameFrames)
|
|
65
|
+
errorIfFeaturesNotInitialized(nil, FEATURE_NAME)
|
|
66
|
+
local gameFrameCount = game:GetFrameCount()
|
|
67
|
+
local functionFireFrame = gameFrameCount + gameFrames
|
|
68
|
+
local tuple = {functionFireFrame, func}
|
|
69
|
+
local ____v_run_queuedGameFunctionTuples_0 = v.run.queuedGameFunctionTuples
|
|
70
|
+
____v_run_queuedGameFunctionTuples_0[#____v_run_queuedGameFunctionTuples_0 + 1] = tuple
|
|
71
|
+
end
|
|
72
|
+
--- Supply a function to run N render frames from now in the PostRender callback.
|
|
73
|
+
--
|
|
74
|
+
-- For a usage example, see the documentation for the `runNextGameFrame`, which is used in a similar
|
|
75
|
+
-- way.
|
|
76
|
+
--
|
|
77
|
+
-- Note that this function will not handle saving and quitting. If a player saving and quitting
|
|
78
|
+
-- before the deferred function fires would cause a bug in your mod, then you should handle deferred
|
|
79
|
+
-- functions manually using serializable data.
|
|
80
|
+
function ____exports.runInNRenderFrames(self, func, renderFrames)
|
|
81
|
+
errorIfFeaturesNotInitialized(nil, FEATURE_NAME)
|
|
82
|
+
local renderFrameCount = Isaac.GetFrameCount()
|
|
83
|
+
local functionFireFrame = renderFrameCount + renderFrames
|
|
84
|
+
local tuple = {functionFireFrame, func}
|
|
85
|
+
local ____v_run_queuedRenderFunctionTuples_1 = v.run.queuedRenderFunctionTuples
|
|
86
|
+
____v_run_queuedRenderFunctionTuples_1[#____v_run_queuedRenderFunctionTuples_1 + 1] = tuple
|
|
87
|
+
end
|
|
88
|
+
--- Supply a function to run on the next PostUpdate callback.
|
|
89
|
+
--
|
|
90
|
+
-- For example:
|
|
91
|
+
--
|
|
92
|
+
-- ```ts
|
|
93
|
+
-- const NUM_EXPLODER_EXPLOSIONS = 5;
|
|
94
|
+
--
|
|
95
|
+
-- function useItemExploder(player: EntityPlayer) {
|
|
96
|
+
-- playSound("exploderBegin");
|
|
97
|
+
-- explode(player, NUM_EXPLODER_EXPLOSIONS);
|
|
98
|
+
-- }
|
|
99
|
+
--
|
|
100
|
+
-- function explode(player: EntityPlayer, numFramesLeft: int) {
|
|
101
|
+
-- Isaac.Explode(player, undefined, 1);
|
|
102
|
+
-- numFramesLeft -= 1;
|
|
103
|
+
-- if (numFramesLeft === 0) {
|
|
104
|
+
-- runNextFrame(() => {
|
|
105
|
+
-- explode(player, numFramesLeft);
|
|
106
|
+
-- });
|
|
107
|
+
-- }
|
|
108
|
+
-- }
|
|
109
|
+
-- ```
|
|
110
|
+
--
|
|
111
|
+
-- Note that this function will not handle saving and quitting. If a player saving and quitting
|
|
112
|
+
-- before the deferred function fires would cause a bug in your mod, then you should handle deferred
|
|
113
|
+
-- functions manually using serializable data.
|
|
114
|
+
function ____exports.runNextGameFrame(self, func)
|
|
115
|
+
errorIfFeaturesNotInitialized(nil, FEATURE_NAME)
|
|
116
|
+
____exports.runInNGameFrames(nil, func, 1)
|
|
117
|
+
end
|
|
118
|
+
--- Supply a function to run on the next PostRender callback.
|
|
119
|
+
--
|
|
120
|
+
-- For a usage example, see the documentation for the `runNextGameFrame`, which is used in a similar
|
|
121
|
+
-- way.
|
|
122
|
+
--
|
|
123
|
+
-- Note that this function will not handle saving and quitting.
|
|
124
|
+
function ____exports.runNextRenderFrame(self, func)
|
|
125
|
+
errorIfFeaturesNotInitialized(nil, FEATURE_NAME)
|
|
126
|
+
____exports.runInNRenderFrames(nil, func, 1)
|
|
127
|
+
end
|
|
128
|
+
return ____exports
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { SaveData } from "../../interfaces/SaveData";
|
|
2
|
+
/**
|
|
3
|
+
* This is the entry point to the save data manager, a system which provides two major features:
|
|
4
|
+
*
|
|
5
|
+
* 1. automatic resetting of variables on a new run, on a new level, or on a new room (as desired)
|
|
6
|
+
* 2. automatic saving and loading of all tracked data to the "save#.dat" file
|
|
7
|
+
*
|
|
8
|
+
* You feed this function with an anonymous object containing your variables, and then it will
|
|
9
|
+
* automatically manage them for you. (See below for an example.)
|
|
10
|
+
*
|
|
11
|
+
* The save data manager is meant to be called once for each feature of your mod. In other words,
|
|
12
|
+
* you should not put all of the data for your mod on the same object. Instead, scope your variables
|
|
13
|
+
* locally to a single file that contains a mod feature, and then call this function to register
|
|
14
|
+
* them. For example:
|
|
15
|
+
*
|
|
16
|
+
* ```ts
|
|
17
|
+
* // in file: feature1.ts
|
|
18
|
+
* import { saveDataManager } from "isaacscript-common";
|
|
19
|
+
*
|
|
20
|
+
* // Declare local variables for this file or feature.
|
|
21
|
+
* const v = {
|
|
22
|
+
* // These variables are never reset; manage them yourself at will.
|
|
23
|
+
* persistent: {
|
|
24
|
+
* foo1: 0,
|
|
25
|
+
* },
|
|
26
|
+
*
|
|
27
|
+
* // These variables are reset at the beginning of every run.
|
|
28
|
+
* run: {
|
|
29
|
+
* foo2: 0,
|
|
30
|
+
* },
|
|
31
|
+
*
|
|
32
|
+
* // These variables are reset at the beginning of every level.
|
|
33
|
+
* level: {
|
|
34
|
+
* foo3: 0,
|
|
35
|
+
* },
|
|
36
|
+
*
|
|
37
|
+
* // These variables are reset at the beginning of every room.
|
|
38
|
+
* room: {
|
|
39
|
+
* foo4: 0,
|
|
40
|
+
* },
|
|
41
|
+
* };
|
|
42
|
+
* // Every child object is optional; only create the ones that you need.
|
|
43
|
+
*
|
|
44
|
+
* // Register the variables with the save data manager. (We need to provide a string key that
|
|
45
|
+
* // matches the name of this file.)
|
|
46
|
+
* function feature1Init() {
|
|
47
|
+
* saveDataManager("feature1", v);
|
|
48
|
+
* }
|
|
49
|
+
*
|
|
50
|
+
* // Elsewhere in the file, use your variables.
|
|
51
|
+
* function feature1Function() {
|
|
52
|
+
* if (v.run.foo1 > 0) {
|
|
53
|
+
* // Insert code here.
|
|
54
|
+
* }
|
|
55
|
+
* }
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* - Save data is loaded from disk in the `POST_PLAYER_INIT` callback (i.e. the first callback that
|
|
59
|
+
* can possibly run).
|
|
60
|
+
* - Save data is recorded to disk in the `PRE_GAME_EXIT` callback.
|
|
61
|
+
*
|
|
62
|
+
* Note that before using the save data manager, you must call the `upgradeMod` function. (Upgrade
|
|
63
|
+
* your mod before registering any of your own callbacks so that the save data manager will run
|
|
64
|
+
* before any of your code does.)
|
|
65
|
+
*
|
|
66
|
+
* If you want the save data manager to load data before the `POST_PLAYER_INIT` callback (i.e. in
|
|
67
|
+
* the main menu), then you should explicitly call the `saveDataManagerLoad` function. (The save
|
|
68
|
+
* data manager cannot do this on its own because it cannot know when your mod features are finished
|
|
69
|
+
* initializing.)
|
|
70
|
+
*
|
|
71
|
+
* Finally, some features may have variables that need to be automatically reset per run/level, but
|
|
72
|
+
* not saved to disk on game exit. (For example, if they contain functions or other non-serializable
|
|
73
|
+
* data.) For these cases, set the second argument to `() => false`.
|
|
74
|
+
*
|
|
75
|
+
* @param key The name of the file or feature that is submitting data to be managed by the save data
|
|
76
|
+
* manager. The save data manager will throw an error if the key is already registered.
|
|
77
|
+
* @param v An object that corresponds to the `SaveData` interface. The object is conventionally
|
|
78
|
+
* called "v" for brevity. ("v" is short for "local variables").
|
|
79
|
+
* @param conditionalFunc An optional function to run upon saving this key to disk. For example,
|
|
80
|
+
* this allows features to only save data to disk if the feature is enabled.
|
|
81
|
+
* Specify a value of `() => false` to completely disable saving this feature
|
|
82
|
+
* to disk. Disabling saving to disk is useful if you are using data that is
|
|
83
|
+
* not serializable. Alternatively, it could be useful if you want to use the
|
|
84
|
+
* save data manager to automatically reset variables on run/level/room, but
|
|
85
|
+
* not clutter the the "save#.dat" file with unnecessary keys.
|
|
86
|
+
*/
|
|
87
|
+
export declare function saveDataManager(key: string, v: SaveData, conditionalFunc?: () => boolean): void;
|
|
88
|
+
/**
|
|
89
|
+
* The save data manager will automatically load variables from disk at the appropriate times (i.e.
|
|
90
|
+
* when a new run is started). Use this function to explicitly force the save data manager to load
|
|
91
|
+
* all of its variables from disk immediately.
|
|
92
|
+
*
|
|
93
|
+
* Obviously, doing this will overwrite the current data, so using this function can potentially
|
|
94
|
+
* result in lost state.
|
|
95
|
+
*/
|
|
96
|
+
export declare function saveDataManagerLoad(): void;
|
|
97
|
+
/**
|
|
98
|
+
* The save data manager will automatically save variables to disk at the appropriate times (i.e.
|
|
99
|
+
* when the run is exited). Use this function to explicitly force the save data manager to write all
|
|
100
|
+
* of its variables to disk immediately.
|
|
101
|
+
*/
|
|
102
|
+
export declare function saveDataManagerSave(): void;
|
|
103
|
+
/**
|
|
104
|
+
* - Sets the global variable of "g" equal to all of the save data variables for this mod.
|
|
105
|
+
* - Sets the global variable of "gd" equal to all of the save data default variables for this mod.
|
|
106
|
+
*
|
|
107
|
+
* This can make debugging easier, as you can access the variables from the game's debug console.
|
|
108
|
+
* e.g. `l print(g.feature1.foo)`
|
|
109
|
+
*/
|
|
110
|
+
export declare function saveDataManagerSetGlobal(): void;
|
|
111
|
+
/**
|
|
112
|
+
* The save data manager will automatically reset variables at the appropriate times (i.e. when a
|
|
113
|
+
* player enters a new room). Use this function to explicitly force the save data manager to reset a
|
|
114
|
+
* specific variable group.
|
|
115
|
+
*
|
|
116
|
+
* For example:
|
|
117
|
+
*
|
|
118
|
+
* ```ts
|
|
119
|
+
* const v = {
|
|
120
|
+
* room: {
|
|
121
|
+
* foo: 123,
|
|
122
|
+
* },
|
|
123
|
+
* };
|
|
124
|
+
*
|
|
125
|
+
* saveDataManager("file1", v);
|
|
126
|
+
*
|
|
127
|
+
* // Then, later on, to explicit reset all of the "room" variables:
|
|
128
|
+
* saveDataManagerReset("file1", "room");
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
export declare function saveDataManagerReset(key: string, childObjectKey: string): void;
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local Map = ____lualib.Map
|
|
3
|
+
local __TS__ObjectKeys = ____lualib.__TS__ObjectKeys
|
|
4
|
+
local ____exports = {}
|
|
5
|
+
local ____SerializationType = require("enums.SerializationType")
|
|
6
|
+
local SerializationType = ____SerializationType.SerializationType
|
|
7
|
+
local ____featuresInitialized = require("featuresInitialized")
|
|
8
|
+
local errorIfFeaturesNotInitialized = ____featuresInitialized.errorIfFeaturesNotInitialized
|
|
9
|
+
local ____deepCopy = require("functions.deepCopy")
|
|
10
|
+
local deepCopy = ____deepCopy.deepCopy
|
|
11
|
+
local ____constants = require("features.saveDataManager.constants")
|
|
12
|
+
local SAVE_DATA_MANAGER_FEATURE_NAME = ____constants.SAVE_DATA_MANAGER_FEATURE_NAME
|
|
13
|
+
local ____main = require("features.saveDataManager.main")
|
|
14
|
+
local forceSaveDataManagerLoad = ____main.forceSaveDataManagerLoad
|
|
15
|
+
local forceSaveDataManagerSave = ____main.forceSaveDataManagerSave
|
|
16
|
+
local restoreDefaultSaveData = ____main.restoreDefaultSaveData
|
|
17
|
+
local ____maps = require("features.saveDataManager.maps")
|
|
18
|
+
local saveDataConditionalFuncMap = ____maps.saveDataConditionalFuncMap
|
|
19
|
+
local saveDataDefaultsMap = ____maps.saveDataDefaultsMap
|
|
20
|
+
local saveDataMap = ____maps.saveDataMap
|
|
21
|
+
--- This is the entry point to the save data manager, a system which provides two major features:
|
|
22
|
+
--
|
|
23
|
+
-- 1. automatic resetting of variables on a new run, on a new level, or on a new room (as desired)
|
|
24
|
+
-- 2. automatic saving and loading of all tracked data to the "save#.dat" file
|
|
25
|
+
--
|
|
26
|
+
-- You feed this function with an anonymous object containing your variables, and then it will
|
|
27
|
+
-- automatically manage them for you. (See below for an example.)
|
|
28
|
+
--
|
|
29
|
+
-- The save data manager is meant to be called once for each feature of your mod. In other words,
|
|
30
|
+
-- you should not put all of the data for your mod on the same object. Instead, scope your variables
|
|
31
|
+
-- locally to a single file that contains a mod feature, and then call this function to register
|
|
32
|
+
-- them. For example:
|
|
33
|
+
--
|
|
34
|
+
-- ```ts
|
|
35
|
+
-- // in file: feature1.ts
|
|
36
|
+
-- import { saveDataManager } from "isaacscript-common";
|
|
37
|
+
--
|
|
38
|
+
-- // Declare local variables for this file or feature.
|
|
39
|
+
-- const v = {
|
|
40
|
+
-- // These variables are never reset; manage them yourself at will.
|
|
41
|
+
-- persistent: {
|
|
42
|
+
-- foo1: 0,
|
|
43
|
+
-- },
|
|
44
|
+
--
|
|
45
|
+
-- // These variables are reset at the beginning of every run.
|
|
46
|
+
-- run: {
|
|
47
|
+
-- foo2: 0,
|
|
48
|
+
-- },
|
|
49
|
+
--
|
|
50
|
+
-- // These variables are reset at the beginning of every level.
|
|
51
|
+
-- level: {
|
|
52
|
+
-- foo3: 0,
|
|
53
|
+
-- },
|
|
54
|
+
--
|
|
55
|
+
-- // These variables are reset at the beginning of every room.
|
|
56
|
+
-- room: {
|
|
57
|
+
-- foo4: 0,
|
|
58
|
+
-- },
|
|
59
|
+
-- };
|
|
60
|
+
-- // Every child object is optional; only create the ones that you need.
|
|
61
|
+
--
|
|
62
|
+
-- // Register the variables with the save data manager. (We need to provide a string key that
|
|
63
|
+
-- // matches the name of this file.)
|
|
64
|
+
-- function feature1Init() {
|
|
65
|
+
-- saveDataManager("feature1", v);
|
|
66
|
+
-- }
|
|
67
|
+
--
|
|
68
|
+
-- // Elsewhere in the file, use your variables.
|
|
69
|
+
-- function feature1Function() {
|
|
70
|
+
-- if (v.run.foo1 > 0) {
|
|
71
|
+
-- // Insert code here.
|
|
72
|
+
-- }
|
|
73
|
+
-- }
|
|
74
|
+
-- ```
|
|
75
|
+
--
|
|
76
|
+
-- - Save data is loaded from disk in the `POST_PLAYER_INIT` callback (i.e. the first callback that
|
|
77
|
+
-- can possibly run).
|
|
78
|
+
-- - Save data is recorded to disk in the `PRE_GAME_EXIT` callback.
|
|
79
|
+
--
|
|
80
|
+
-- Note that before using the save data manager, you must call the `upgradeMod` function. (Upgrade
|
|
81
|
+
-- your mod before registering any of your own callbacks so that the save data manager will run
|
|
82
|
+
-- before any of your code does.)
|
|
83
|
+
--
|
|
84
|
+
-- If you want the save data manager to load data before the `POST_PLAYER_INIT` callback (i.e. in
|
|
85
|
+
-- the main menu), then you should explicitly call the `saveDataManagerLoad` function. (The save
|
|
86
|
+
-- data manager cannot do this on its own because it cannot know when your mod features are finished
|
|
87
|
+
-- initializing.)
|
|
88
|
+
--
|
|
89
|
+
-- Finally, some features may have variables that need to be automatically reset per run/level, but
|
|
90
|
+
-- not saved to disk on game exit. (For example, if they contain functions or other non-serializable
|
|
91
|
+
-- data.) For these cases, set the second argument to `() => false`.
|
|
92
|
+
--
|
|
93
|
+
-- @param key The name of the file or feature that is submitting data to be managed by the save data
|
|
94
|
+
-- manager. The save data manager will throw an error if the key is already registered.
|
|
95
|
+
-- @param v An object that corresponds to the `SaveData` interface. The object is conventionally
|
|
96
|
+
-- called "v" for brevity. ("v" is short for "local variables").
|
|
97
|
+
-- @param conditionalFunc An optional function to run upon saving this key to disk. For example,
|
|
98
|
+
-- this allows features to only save data to disk if the feature is enabled.
|
|
99
|
+
-- Specify a value of `() => false` to completely disable saving this feature
|
|
100
|
+
-- to disk. Disabling saving to disk is useful if you are using data that is
|
|
101
|
+
-- not serializable. Alternatively, it could be useful if you want to use the
|
|
102
|
+
-- save data manager to automatically reset variables on run/level/room, but
|
|
103
|
+
-- not clutter the the "save#.dat" file with unnecessary keys.
|
|
104
|
+
function ____exports.saveDataManager(self, key, v, conditionalFunc)
|
|
105
|
+
errorIfFeaturesNotInitialized(nil, SAVE_DATA_MANAGER_FEATURE_NAME)
|
|
106
|
+
local keyType = type(key)
|
|
107
|
+
if keyType ~= "string" then
|
|
108
|
+
error((("The " .. SAVE_DATA_MANAGER_FEATURE_NAME) .. " requires that keys are strings. You tried to use a key of type: ") .. keyType)
|
|
109
|
+
end
|
|
110
|
+
if saveDataMap[key] ~= nil then
|
|
111
|
+
error((("The " .. SAVE_DATA_MANAGER_FEATURE_NAME) .. " is already managing save data for a key of: ") .. key)
|
|
112
|
+
end
|
|
113
|
+
saveDataMap[key] = v
|
|
114
|
+
local saveDataKeys = __TS__ObjectKeys(v)
|
|
115
|
+
if #saveDataKeys == 1 and saveDataKeys[1] == "room" then
|
|
116
|
+
conditionalFunc = function() return false end
|
|
117
|
+
end
|
|
118
|
+
local saveDataTable = v
|
|
119
|
+
local saveDataCopy = deepCopy(nil, saveDataTable, SerializationType.NONE, key)
|
|
120
|
+
saveDataDefaultsMap[key] = saveDataCopy
|
|
121
|
+
if conditionalFunc ~= nil then
|
|
122
|
+
saveDataConditionalFuncMap:set(key, conditionalFunc)
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
--- The save data manager will automatically load variables from disk at the appropriate times (i.e.
|
|
126
|
+
-- when a new run is started). Use this function to explicitly force the save data manager to load
|
|
127
|
+
-- all of its variables from disk immediately.
|
|
128
|
+
--
|
|
129
|
+
-- Obviously, doing this will overwrite the current data, so using this function can potentially
|
|
130
|
+
-- result in lost state.
|
|
131
|
+
function ____exports.saveDataManagerLoad(self)
|
|
132
|
+
errorIfFeaturesNotInitialized(nil, SAVE_DATA_MANAGER_FEATURE_NAME)
|
|
133
|
+
forceSaveDataManagerLoad(nil)
|
|
134
|
+
end
|
|
135
|
+
--- The save data manager will automatically save variables to disk at the appropriate times (i.e.
|
|
136
|
+
-- when the run is exited). Use this function to explicitly force the save data manager to write all
|
|
137
|
+
-- of its variables to disk immediately.
|
|
138
|
+
function ____exports.saveDataManagerSave(self)
|
|
139
|
+
errorIfFeaturesNotInitialized(nil, SAVE_DATA_MANAGER_FEATURE_NAME)
|
|
140
|
+
forceSaveDataManagerSave(nil)
|
|
141
|
+
end
|
|
142
|
+
--- - Sets the global variable of "g" equal to all of the save data variables for this mod.
|
|
143
|
+
-- - Sets the global variable of "gd" equal to all of the save data default variables for this mod.
|
|
144
|
+
--
|
|
145
|
+
-- This can make debugging easier, as you can access the variables from the game's debug console.
|
|
146
|
+
-- e.g. `l print(g.feature1.foo)`
|
|
147
|
+
function ____exports.saveDataManagerSetGlobal(self)
|
|
148
|
+
g = saveDataMap
|
|
149
|
+
gd = saveDataDefaultsMap
|
|
150
|
+
end
|
|
151
|
+
--- The save data manager will automatically reset variables at the appropriate times (i.e. when a
|
|
152
|
+
-- player enters a new room). Use this function to explicitly force the save data manager to reset a
|
|
153
|
+
-- specific variable group.
|
|
154
|
+
--
|
|
155
|
+
-- For example:
|
|
156
|
+
--
|
|
157
|
+
-- ```ts
|
|
158
|
+
-- const v = {
|
|
159
|
+
-- room: {
|
|
160
|
+
-- foo: 123,
|
|
161
|
+
-- },
|
|
162
|
+
-- };
|
|
163
|
+
--
|
|
164
|
+
-- saveDataManager("file1", v);
|
|
165
|
+
--
|
|
166
|
+
-- // Then, later on, to explicit reset all of the "room" variables:
|
|
167
|
+
-- saveDataManagerReset("file1", "room");
|
|
168
|
+
-- ```
|
|
169
|
+
function ____exports.saveDataManagerReset(self, key, childObjectKey)
|
|
170
|
+
errorIfFeaturesNotInitialized(nil, SAVE_DATA_MANAGER_FEATURE_NAME)
|
|
171
|
+
local keyType = type(key)
|
|
172
|
+
if keyType ~= "string" then
|
|
173
|
+
error((("The " .. SAVE_DATA_MANAGER_FEATURE_NAME) .. " requires that keys are strings. You tried to use a key of type: ") .. keyType)
|
|
174
|
+
end
|
|
175
|
+
local saveData = saveDataMap[key]
|
|
176
|
+
if saveData == nil then
|
|
177
|
+
error((("The " .. SAVE_DATA_MANAGER_FEATURE_NAME) .. " is not managing save data for a key of: ") .. key)
|
|
178
|
+
end
|
|
179
|
+
restoreDefaultSaveData(nil, key, saveData, childObjectKey)
|
|
180
|
+
end
|
|
181
|
+
return ____exports
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__StringTrim = ____lualib.__TS__StringTrim
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
local readSaveDatFile, tryLoadModData, DEFAULT_MOD_DATA
|
|
5
|
+
local ____jsonHelpers = require("functions.jsonHelpers")
|
|
6
|
+
local jsonDecode = ____jsonHelpers.jsonDecode
|
|
7
|
+
local ____log = require("functions.log")
|
|
8
|
+
local log = ____log.log
|
|
9
|
+
local logError = ____log.logError
|
|
10
|
+
local ____constants = require("features.saveDataManager.constants")
|
|
11
|
+
local SAVE_DATA_MANAGER_DEBUG = ____constants.SAVE_DATA_MANAGER_DEBUG
|
|
12
|
+
local SAVE_DATA_MANAGER_FEATURE_NAME = ____constants.SAVE_DATA_MANAGER_FEATURE_NAME
|
|
13
|
+
local ____merge = require("features.saveDataManager.merge")
|
|
14
|
+
local merge = ____merge.merge
|
|
15
|
+
function readSaveDatFile(self, mod)
|
|
16
|
+
local renderFrameCount = Isaac.GetFrameCount()
|
|
17
|
+
local ok, jsonStringOrErrMsg = pcall(tryLoadModData, mod)
|
|
18
|
+
if not ok then
|
|
19
|
+
logError((("Failed to read from the \"save#.dat\" file on render frame " .. tostring(renderFrameCount)) .. ": ") .. jsonStringOrErrMsg)
|
|
20
|
+
return DEFAULT_MOD_DATA
|
|
21
|
+
end
|
|
22
|
+
if jsonStringOrErrMsg == nil then
|
|
23
|
+
return DEFAULT_MOD_DATA
|
|
24
|
+
end
|
|
25
|
+
local jsonStringTrimmed = __TS__StringTrim(jsonStringOrErrMsg)
|
|
26
|
+
if jsonStringTrimmed == "" then
|
|
27
|
+
return DEFAULT_MOD_DATA
|
|
28
|
+
end
|
|
29
|
+
return jsonStringTrimmed
|
|
30
|
+
end
|
|
31
|
+
function tryLoadModData(mod)
|
|
32
|
+
return mod:LoadData()
|
|
33
|
+
end
|
|
34
|
+
DEFAULT_MOD_DATA = "{}"
|
|
35
|
+
function ____exports.loadFromDisk(self, mod, oldSaveData)
|
|
36
|
+
if not mod:HasData() then
|
|
37
|
+
return
|
|
38
|
+
end
|
|
39
|
+
local jsonString = readSaveDatFile(nil, mod)
|
|
40
|
+
local newSaveData = jsonDecode(nil, jsonString)
|
|
41
|
+
if SAVE_DATA_MANAGER_DEBUG then
|
|
42
|
+
log("Converted data from the \"save#.dat\" to a Lua table.")
|
|
43
|
+
end
|
|
44
|
+
for key, value in pairs(newSaveData) do
|
|
45
|
+
do
|
|
46
|
+
if type(key) ~= "string" then
|
|
47
|
+
goto __continue5
|
|
48
|
+
end
|
|
49
|
+
local valueType = type(value)
|
|
50
|
+
if valueType ~= "table" then
|
|
51
|
+
goto __continue5
|
|
52
|
+
end
|
|
53
|
+
local oldSaveDataForSubscriber = oldSaveData[key]
|
|
54
|
+
if oldSaveDataForSubscriber == nil then
|
|
55
|
+
goto __continue5
|
|
56
|
+
end
|
|
57
|
+
if SAVE_DATA_MANAGER_DEBUG then
|
|
58
|
+
log("Merging in stored data for feature: " .. key)
|
|
59
|
+
end
|
|
60
|
+
merge(nil, oldSaveDataForSubscriber, value, key)
|
|
61
|
+
end
|
|
62
|
+
::__continue5::
|
|
63
|
+
end
|
|
64
|
+
log(("The " .. SAVE_DATA_MANAGER_FEATURE_NAME) .. " loaded data from the \"save#.dat\" file.")
|
|
65
|
+
end
|
|
66
|
+
return ____exports
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local Map = ____lualib.Map
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
local postPlayerInit, preGameExit, postNewLevel, postNewRoomEarly, restoreDefaultsAll, restoreDefaults, clearAndCopyAllElements, mod, loadedDataOnThisRun
|
|
5
|
+
local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
|
|
6
|
+
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
|
|
7
|
+
local ____cachedClasses = require("cachedClasses")
|
|
8
|
+
local game = ____cachedClasses.game
|
|
9
|
+
local ____ModCallbackCustom = require("enums.ModCallbackCustom")
|
|
10
|
+
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
|
|
11
|
+
local ____SaveDataKey = require("enums.private.SaveDataKey")
|
|
12
|
+
local RESETTABLE_SAVE_DATA_KEYS = ____SaveDataKey.RESETTABLE_SAVE_DATA_KEYS
|
|
13
|
+
local SaveDataKey = ____SaveDataKey.SaveDataKey
|
|
14
|
+
local ____SerializationType = require("enums.SerializationType")
|
|
15
|
+
local SerializationType = ____SerializationType.SerializationType
|
|
16
|
+
local ____deepCopy = require("functions.deepCopy")
|
|
17
|
+
local deepCopy = ____deepCopy.deepCopy
|
|
18
|
+
local ____log = require("functions.log")
|
|
19
|
+
local logError = ____log.logError
|
|
20
|
+
local ____table = require("functions.table")
|
|
21
|
+
local clearTable = ____table.clearTable
|
|
22
|
+
local ____constants = require("features.saveDataManager.constants")
|
|
23
|
+
local SAVE_DATA_MANAGER_FEATURE_NAME = ____constants.SAVE_DATA_MANAGER_FEATURE_NAME
|
|
24
|
+
local ____load = require("features.saveDataManager.load")
|
|
25
|
+
local loadFromDisk = ____load.loadFromDisk
|
|
26
|
+
local ____maps = require("features.saveDataManager.maps")
|
|
27
|
+
local saveDataConditionalFuncMap = ____maps.saveDataConditionalFuncMap
|
|
28
|
+
local saveDataDefaultsMap = ____maps.saveDataDefaultsMap
|
|
29
|
+
local saveDataMap = ____maps.saveDataMap
|
|
30
|
+
local ____save = require("features.saveDataManager.save")
|
|
31
|
+
local saveToDisk = ____save.saveToDisk
|
|
32
|
+
function postPlayerInit(self)
|
|
33
|
+
if mod == nil then
|
|
34
|
+
error(("The mod for the " .. SAVE_DATA_MANAGER_FEATURE_NAME) .. " was not initialized.")
|
|
35
|
+
end
|
|
36
|
+
if loadedDataOnThisRun then
|
|
37
|
+
return
|
|
38
|
+
end
|
|
39
|
+
loadedDataOnThisRun = true
|
|
40
|
+
loadFromDisk(nil, mod, saveDataMap)
|
|
41
|
+
local gameFrameCount = game:GetFrameCount()
|
|
42
|
+
local isContinued = gameFrameCount ~= 0
|
|
43
|
+
if not isContinued then
|
|
44
|
+
restoreDefaultsAll(nil)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
function preGameExit(self)
|
|
48
|
+
if mod == nil then
|
|
49
|
+
error(("The mod for the " .. SAVE_DATA_MANAGER_FEATURE_NAME) .. " was not initialized.")
|
|
50
|
+
end
|
|
51
|
+
saveToDisk(nil, mod, saveDataMap, saveDataConditionalFuncMap)
|
|
52
|
+
restoreDefaultsAll(nil)
|
|
53
|
+
loadedDataOnThisRun = false
|
|
54
|
+
end
|
|
55
|
+
function postNewLevel(self)
|
|
56
|
+
restoreDefaults(nil, SaveDataKey.LEVEL)
|
|
57
|
+
end
|
|
58
|
+
function postNewRoomEarly(self)
|
|
59
|
+
restoreDefaults(nil, SaveDataKey.ROOM)
|
|
60
|
+
end
|
|
61
|
+
function restoreDefaultsAll(self)
|
|
62
|
+
restoreDefaults(nil, SaveDataKey.RUN)
|
|
63
|
+
restoreDefaults(nil, SaveDataKey.LEVEL)
|
|
64
|
+
restoreDefaults(nil, SaveDataKey.ROOM)
|
|
65
|
+
end
|
|
66
|
+
function restoreDefaults(self, saveDataKey)
|
|
67
|
+
for subscriberName, saveData in pairs(saveDataMap) do
|
|
68
|
+
____exports.restoreDefaultSaveData(nil, subscriberName, saveData, saveDataKey)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
function ____exports.restoreDefaultSaveData(self, subscriberName, saveData, saveDataKey)
|
|
72
|
+
if not RESETTABLE_SAVE_DATA_KEYS:has(saveDataKey) then
|
|
73
|
+
error("Unknown save data key name of: " .. saveDataKey)
|
|
74
|
+
end
|
|
75
|
+
local childTable = saveData[saveDataKey]
|
|
76
|
+
if childTable == nil then
|
|
77
|
+
return
|
|
78
|
+
end
|
|
79
|
+
local saveDataDefaults = saveDataDefaultsMap[subscriberName]
|
|
80
|
+
if saveDataDefaults == nil then
|
|
81
|
+
logError("Failed to find the default copy of the save data for subscriber: " .. subscriberName)
|
|
82
|
+
return
|
|
83
|
+
end
|
|
84
|
+
local childTableDefaults = saveDataDefaults[saveDataKey]
|
|
85
|
+
if childTableDefaults == nil then
|
|
86
|
+
logError(((("Failed to find the default copy of the child table \"" .. saveDataKey) .. "\" for subscriber \"") .. subscriberName) .. "\". This error usually means that your save data is out of date. You can try purging all of your save data by deleting the following directory: C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Binding of Isaac Rebirth\\data")
|
|
87
|
+
return
|
|
88
|
+
end
|
|
89
|
+
local childTableDefaultsCopy = deepCopy(nil, childTableDefaults, SerializationType.NONE, (subscriberName .. " --> ") .. saveDataKey)
|
|
90
|
+
clearAndCopyAllElements(nil, childTable, childTableDefaultsCopy)
|
|
91
|
+
end
|
|
92
|
+
function clearAndCopyAllElements(self, oldTable, newTable)
|
|
93
|
+
clearTable(nil, oldTable)
|
|
94
|
+
for key, value in pairs(newTable) do
|
|
95
|
+
oldTable[key] = value
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
mod = nil
|
|
99
|
+
loadedDataOnThisRun = false
|
|
100
|
+
---
|
|
101
|
+
-- @internal
|
|
102
|
+
function ____exports.saveDataManagerInit(self, incomingMod)
|
|
103
|
+
mod = incomingMod
|
|
104
|
+
mod:AddCallback(ModCallback.POST_PLAYER_INIT, postPlayerInit)
|
|
105
|
+
mod:AddCallback(ModCallback.PRE_GAME_EXIT, preGameExit)
|
|
106
|
+
mod:AddCallback(ModCallback.POST_NEW_LEVEL, postNewLevel)
|
|
107
|
+
mod:AddCallbackCustom(ModCallbackCustom.POST_NEW_ROOM_EARLY, postNewRoomEarly)
|
|
108
|
+
end
|
|
109
|
+
---
|
|
110
|
+
-- @internal
|
|
111
|
+
function ____exports.forceSaveDataManagerSave(self)
|
|
112
|
+
if mod == nil then
|
|
113
|
+
return
|
|
114
|
+
end
|
|
115
|
+
saveToDisk(nil, mod, saveDataMap, saveDataConditionalFuncMap)
|
|
116
|
+
end
|
|
117
|
+
---
|
|
118
|
+
-- @internal
|
|
119
|
+
function ____exports.forceSaveDataManagerLoad(self)
|
|
120
|
+
if mod == nil then
|
|
121
|
+
return
|
|
122
|
+
end
|
|
123
|
+
loadFromDisk(nil, mod, saveDataMap)
|
|
124
|
+
end
|
|
125
|
+
return ____exports
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="typescript-to-lua/language-extensions" />
|
|
2
|
+
import { SaveData } from "../../interfaces/SaveData";
|
|
3
|
+
/**
|
|
4
|
+
* The save data map is indexed by subscriber name. We use Lua tables instead of TypeScriptToLua
|
|
5
|
+
* Maps for the master map so that we can access the variables via the in-game console when
|
|
6
|
+
* debugging. (TSTL Maps don't expose the map keys as normal keys.)
|
|
7
|
+
*/
|
|
8
|
+
export declare const saveDataMap: LuaTable<string, SaveData>;
|
|
9
|
+
export declare const saveDataDefaultsMap: LuaTable<string, SaveData>;
|
|
10
|
+
export declare const saveDataConditionalFuncMap: Map<string, () => boolean>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local Map = ____lualib.Map
|
|
3
|
+
local __TS__New = ____lualib.__TS__New
|
|
4
|
+
local ____exports = {}
|
|
5
|
+
--- The save data map is indexed by subscriber name. We use Lua tables instead of TypeScriptToLua
|
|
6
|
+
-- Maps for the master map so that we can access the variables via the in-game console when
|
|
7
|
+
-- debugging. (TSTL Maps don't expose the map keys as normal keys.)
|
|
8
|
+
____exports.saveDataMap = {}
|
|
9
|
+
____exports.saveDataDefaultsMap = {}
|
|
10
|
+
____exports.saveDataConditionalFuncMap = __TS__New(Map)
|
|
11
|
+
return ____exports
|