isaacscript-common 14.1.2 → 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 +954 -158
- package/dist/isaacscript-common.lua +4099 -1066
- 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 +16 -4
- package/dist/src/classes/ModFeature.d.ts.map +1 -1
- package/dist/src/classes/ModFeature.lua +67 -4
- package/dist/src/classes/ModUpgraded.d.ts +10 -10
- package/dist/src/classes/ModUpgraded.d.ts.map +1 -1
- package/dist/src/classes/ModUpgraded.lua +35 -16
- 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 +2 -5
- 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 +28 -6
- package/dist/src/functions/decorators.d.ts.map +1 -1
- package/dist/src/functions/decorators.lua +24 -5
- 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/logMisc.d.ts +9 -2
- package/dist/src/functions/logMisc.d.ts.map +1 -1
- package/dist/src/functions/logMisc.lua +32 -2
- 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 +96 -6
- package/src/classes/ModUpgraded.ts +57 -32
- 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 +6 -13
- package/src/decorators.ts +17 -16
- 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 +83 -12
- 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/functions/logMisc.ts +28 -2
- 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,13 +1,40 @@
|
|
|
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
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
24
|
+
import {
|
|
25
|
+
ADD_CALLBACK_ARGS_KEY,
|
|
26
|
+
ADD_CALLBACK_CUSTOM_ARGS_KEY,
|
|
27
|
+
ModFeature,
|
|
28
|
+
} from "../classes/ModFeature";
|
|
29
|
+
import { ModCallbackCustom } from "../enums/ModCallbackCustom";
|
|
30
|
+
import { AddCallbackParametersCustom } from "../interfaces/private/AddCallbackParametersCustom";
|
|
6
31
|
import { AllButFirst } from "../types/AllButFirst";
|
|
7
32
|
|
|
8
33
|
/**
|
|
9
34
|
* A decorator function that signifies that the decorated class method should be automatically
|
|
10
35
|
* registered with `Mod.AddCallback`.
|
|
36
|
+
*
|
|
37
|
+
* @ignore
|
|
11
38
|
*/
|
|
12
39
|
export function Callback<T extends ModCallback>(
|
|
13
40
|
modCallback: T,
|
|
@@ -18,28 +45,72 @@ export function Callback<T extends ModCallback>(
|
|
|
18
45
|
propertyKey: string,
|
|
19
46
|
_descriptor: TypedPropertyDescriptor<Fn>,
|
|
20
47
|
): void => {
|
|
48
|
+
// First, prepare the arguments for the `Mod.AddCallback` method.
|
|
21
49
|
const methodName = propertyKey as keyof Class;
|
|
22
50
|
const method = target[methodName] as AddCallbackParameters[T][0];
|
|
23
|
-
|
|
24
|
-
|
|
51
|
+
const addCallbackArgs = [
|
|
52
|
+
modCallback,
|
|
53
|
+
method,
|
|
54
|
+
...optionalArgs,
|
|
55
|
+
] as unknown as AddCallbackParameters[T];
|
|
56
|
+
|
|
57
|
+
// Since the decorator runs prior to instantiation, we only have access to get and set static
|
|
58
|
+
// properties, which are located on the "constructor" table. Thus, we store the callback
|
|
59
|
+
// arguments for later.
|
|
60
|
+
const constructor = target.constructor as unknown as LuaTable<
|
|
61
|
+
AnyNotNil,
|
|
62
|
+
unknown
|
|
63
|
+
>;
|
|
64
|
+
if (!constructor.has(ADD_CALLBACK_ARGS_KEY)) {
|
|
65
|
+
constructor.set(ADD_CALLBACK_ARGS_KEY, []);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const callbackTuples = constructor.get(ADD_CALLBACK_ARGS_KEY) as unknown[];
|
|
69
|
+
callbackTuples.push(addCallbackArgs);
|
|
25
70
|
};
|
|
26
71
|
}
|
|
27
72
|
|
|
28
73
|
/**
|
|
29
74
|
* A decorator function that signifies that the decorated class method should be automatically
|
|
30
75
|
* registered with `ModUpgraded.AddCallbackCustom`.
|
|
76
|
+
*
|
|
77
|
+
* @ignore
|
|
31
78
|
*/
|
|
32
|
-
export function CallbackCustom<T extends
|
|
79
|
+
export function CallbackCustom<T extends ModCallbackCustom>(
|
|
33
80
|
modCallbackCustom: T,
|
|
34
|
-
...optionalArgs: AllButFirst<
|
|
81
|
+
...optionalArgs: AllButFirst<AddCallbackParametersCustom[T]>
|
|
35
82
|
) {
|
|
36
|
-
return <
|
|
83
|
+
return <
|
|
84
|
+
Class extends ModFeature,
|
|
85
|
+
Fn extends AddCallbackParametersCustom[T][0],
|
|
86
|
+
>(
|
|
37
87
|
target: Class,
|
|
38
88
|
propertyKey: string,
|
|
89
|
+
_descriptor: TypedPropertyDescriptor<Fn>,
|
|
39
90
|
): void => {
|
|
91
|
+
// First, prepare the arguments for the `Mod.AddCallbackCustom` method.
|
|
40
92
|
const methodName = propertyKey as keyof Class;
|
|
41
|
-
const method = target[methodName] as
|
|
42
|
-
|
|
43
|
-
|
|
93
|
+
const method = target[methodName] as AddCallbackParametersCustom[T][0];
|
|
94
|
+
const addCallbackArgs = [
|
|
95
|
+
modCallbackCustom,
|
|
96
|
+
method,
|
|
97
|
+
...optionalArgs,
|
|
98
|
+
] as unknown as AddCallbackParametersCustom[T];
|
|
99
|
+
|
|
100
|
+
// Since the decorator runs prior to instantiation, we only have access to get and set static
|
|
101
|
+
// properties, which are located on the "constructor" table. Thus, we store the callback
|
|
102
|
+
// arguments for later.
|
|
103
|
+
const constructor = target.constructor as unknown as LuaTable<
|
|
104
|
+
AnyNotNil,
|
|
105
|
+
unknown
|
|
106
|
+
>;
|
|
107
|
+
if (!constructor.has(ADD_CALLBACK_CUSTOM_ARGS_KEY)) {
|
|
108
|
+
constructor.set(ADD_CALLBACK_CUSTOM_ARGS_KEY, []);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const callbackTuples = constructor.get(
|
|
112
|
+
ADD_CALLBACK_CUSTOM_ARGS_KEY,
|
|
113
|
+
) as unknown[];
|
|
114
|
+
callbackTuples.push(addCallbackArgs);
|
|
44
115
|
};
|
|
45
116
|
}
|
|
@@ -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;
|