isaacscript-common 3.0.0 → 3.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/cachedClasses.d.ts +6 -4
- package/cachedClasses.lua +4 -4
- package/callbacks/postPickupInitFirst.d.ts +1 -0
- package/callbacks/postPickupInitFirst.lua +55 -0
- package/callbacks/postSlotDestroyed.d.ts +1 -0
- package/callbacks/postSlotDestroyed.lua +66 -0
- package/callbacks/postSlotRender.lua +3 -21
- package/callbacks/subscriptions/postCustomRevive.d.ts +1 -0
- package/callbacks/subscriptions/postDoorRender.d.ts +1 -0
- package/callbacks/subscriptions/postDoorUpdate.d.ts +1 -0
- package/callbacks/subscriptions/postPickupCollect.d.ts +1 -0
- package/callbacks/subscriptions/postPickupInitFirst.d.ts +3 -0
- package/callbacks/subscriptions/postPickupInitFirst.lua +29 -0
- package/callbacks/subscriptions/postPickupStateChanged.d.ts +1 -0
- package/callbacks/subscriptions/postPitRender.d.ts +1 -0
- package/callbacks/subscriptions/postPitUpdate.d.ts +1 -0
- package/callbacks/subscriptions/postPoopRender.d.ts +1 -0
- package/callbacks/subscriptions/postPoopUpdate.d.ts +1 -0
- package/callbacks/subscriptions/postPressurePlateRender.d.ts +1 -0
- package/callbacks/subscriptions/postPressurePlateUpdate.d.ts +1 -0
- package/callbacks/subscriptions/postRockRender.d.ts +1 -0
- package/callbacks/subscriptions/postRockUpdate.d.ts +1 -0
- package/callbacks/subscriptions/postSpikesRender.d.ts +1 -0
- package/callbacks/subscriptions/postSpikesUpdate.d.ts +1 -0
- package/callbacks/subscriptions/postTNTRender.d.ts +1 -0
- package/callbacks/subscriptions/postTNTUpdate.d.ts +1 -0
- package/classes/DefaultMap.d.ts +1 -2
- package/classes/DefaultMap.lua +1 -4
- package/enums/ModCallbackCustom.d.ts +61 -39
- package/enums/ModCallbackCustom.lua +40 -38
- package/features/debugDisplay/exports.d.ts +17 -0
- package/features/debugDisplay/v.d.ts +17 -0
- package/features/deployJSONRoom.d.ts +1 -0
- package/features/saveDataManager/load.lua +12 -8
- package/features/saveDataManager/main.lua +10 -3
- package/features/saveDataManager/merge.lua +33 -21
- package/features/saveDataManager/save.lua +12 -7
- package/functions/array.d.ts +2 -0
- package/functions/bombs.d.ts +3 -0
- package/functions/bombs.lua +12 -0
- package/functions/chargeBar.d.ts +1 -0
- package/functions/collectibles.d.ts +13 -8
- package/functions/collectibles.lua +24 -11
- package/functions/deepCopy.lua +35 -26
- package/functions/deepCopyTests.lua +8 -5
- package/functions/direction.d.ts +8 -0
- package/functions/direction.lua +27 -0
- package/functions/doors.d.ts +1 -0
- package/functions/doors.lua +5 -0
- package/functions/entity.d.ts +4 -4
- package/functions/entity.lua +8 -8
- package/functions/entitySpecific.d.ts +20 -20
- package/functions/entitySpecific.lua +10 -10
- package/functions/enums.d.ts +2 -0
- package/functions/globals.lua +2 -10
- package/functions/gridEntitySpecific.d.ts +5 -0
- package/functions/isaacAPIClass.d.ts +4 -4
- package/functions/isaacAPIClass.lua +6 -6
- package/functions/jsonRoom.d.ts +2 -0
- package/functions/log.lua +3 -3
- package/functions/pickups.d.ts +9 -9
- package/functions/player.d.ts +7 -0
- package/functions/player.lua +44 -9
- package/functions/playerHealth.d.ts +3 -0
- package/functions/playerHealth.lua +87 -68
- package/functions/playerIndex.d.ts +2 -0
- package/functions/positionVelocity.d.ts +3 -0
- package/functions/random.d.ts +2 -0
- package/functions/revive.d.ts +2 -0
- package/functions/rng.d.ts +1 -0
- package/functions/saveFile.d.ts +15 -0
- package/functions/saveFile.lua +106 -0
- package/functions/serialization.lua +2 -2
- package/functions/set.d.ts +1 -0
- package/functions/sprite.d.ts +2 -0
- package/functions/table.d.ts +12 -0
- package/functions/table.lua +34 -0
- package/functions/tears.d.ts +1 -0
- package/functions/tstlClass.d.ts +34 -0
- package/functions/tstlClass.lua +54 -9
- package/functions/ui.d.ts +2 -0
- package/functions/utils.d.ts +15 -0
- package/functions/utils.lua +20 -0
- package/functions/vector.lua +4 -16
- package/index.d.ts +2 -0
- package/index.lua +16 -0
- package/initCustomCallbacks.lua +6 -0
- package/interfaces/AddCallbackParameterCustom.d.ts +2 -0
- package/interfaces/ChargeBarSprites.d.ts +1 -0
- package/interfaces/private/TSTLClassMetatable.d.ts +2 -0
- package/objects/callbackRegisterFunctions.lua +3 -0
- package/objects/oppositeDoorSlots.d.ts +4 -0
- package/objects/oppositeDoorSlots.lua +15 -0
- package/package.json +1 -1
- package/types/AnyEntity.d.ts +10 -0
|
@@ -143,7 +143,7 @@ export declare enum ModCallbackCustom {
|
|
|
143
143
|
* only fire if the familiar variant matches the `FamiliarVariant` provided.
|
|
144
144
|
*
|
|
145
145
|
* ```ts
|
|
146
|
-
* function
|
|
146
|
+
* function postFamiliarInitLate(familiar: EntityFamiliar): void {}
|
|
147
147
|
* ```
|
|
148
148
|
*/
|
|
149
149
|
POST_FAMILIAR_INIT_LATE = 11,
|
|
@@ -490,6 +490,28 @@ export declare enum ModCallbackCustom {
|
|
|
490
490
|
* ```
|
|
491
491
|
*/
|
|
492
492
|
POST_PICKUP_COLLECT = 36,
|
|
493
|
+
/**
|
|
494
|
+
* Fires from the `MC_POST_PICKUP_INIT` callback on the first time that a player has seen the
|
|
495
|
+
* respective pickup on the run.
|
|
496
|
+
*
|
|
497
|
+
* This callback is useful because pickups will despawn upon leaving the room and respawn upon
|
|
498
|
+
* re-entering the room.
|
|
499
|
+
*
|
|
500
|
+
* For most cases, this callback will simply fire when `MC_POST_PICKUP_INIT` fires and the player
|
|
501
|
+
* is not re-entering a previously visited room.
|
|
502
|
+
*
|
|
503
|
+
* The special case is when a player enters a post-Ascent Treasure Room or Boss Room. For these
|
|
504
|
+
* cases, the `InitSeed` of any pickups seen from previous floors is kept track of to prevent the
|
|
505
|
+
* callback from firing when re-entering the room.
|
|
506
|
+
*
|
|
507
|
+
* When registering the callback, takes an optional second argument that will make the callback
|
|
508
|
+
* only fire if the collectible type matches the `PickupVariant` provided.
|
|
509
|
+
*
|
|
510
|
+
* ```ts
|
|
511
|
+
* function postPickupInitFirst(pickup: EntityPickup): void {}
|
|
512
|
+
* ```
|
|
513
|
+
*/
|
|
514
|
+
POST_PICKUP_INIT_FIRST = 37,
|
|
493
515
|
/**
|
|
494
516
|
* Fires on the first `MC_POST_PICKUP_UPDATE` frame for each pickup.
|
|
495
517
|
*
|
|
@@ -503,7 +525,7 @@ export declare enum ModCallbackCustom {
|
|
|
503
525
|
* function postPickupInitLate(pickup: EntityPickup): void {}
|
|
504
526
|
* ```
|
|
505
527
|
*/
|
|
506
|
-
POST_PICKUP_INIT_LATE =
|
|
528
|
+
POST_PICKUP_INIT_LATE = 38,
|
|
507
529
|
/**
|
|
508
530
|
* Fires from the `MC_POST_PICKUP_UPDATE` callback when a pickup's state has changed from what it
|
|
509
531
|
* was on the previous frame.
|
|
@@ -519,9 +541,9 @@ export declare enum ModCallbackCustom {
|
|
|
519
541
|
* ): void {}
|
|
520
542
|
* ```
|
|
521
543
|
*/
|
|
522
|
-
POST_PICKUP_STATE_CHANGED =
|
|
523
|
-
POST_PIT_RENDER =
|
|
524
|
-
POST_PIT_UPDATE =
|
|
544
|
+
POST_PICKUP_STATE_CHANGED = 39,
|
|
545
|
+
POST_PIT_RENDER = 40,
|
|
546
|
+
POST_PIT_UPDATE = 41,
|
|
525
547
|
/**
|
|
526
548
|
* Fires from the `MC_POST_PEFFECT_UPDATE` callback when a player entity gains or loses any health
|
|
527
549
|
* (i.e. hearts). For more information, see the `PlayerHealth` enum.
|
|
@@ -537,7 +559,7 @@ export declare enum ModCallbackCustom {
|
|
|
537
559
|
* ) {}
|
|
538
560
|
* ```
|
|
539
561
|
*/
|
|
540
|
-
POST_PLAYER_CHANGE_HEALTH =
|
|
562
|
+
POST_PLAYER_CHANGE_HEALTH = 42,
|
|
541
563
|
/**
|
|
542
564
|
* Fires from the `MC_POST_PEFFECT_UPDATE` callback when a player entity changes its player type
|
|
543
565
|
* (i.e. character). For example, it will fire after using Clicker, after dying with the Judas'
|
|
@@ -555,7 +577,7 @@ export declare enum ModCallbackCustom {
|
|
|
555
577
|
* ) {}
|
|
556
578
|
* ```
|
|
557
579
|
*/
|
|
558
|
-
POST_PLAYER_CHANGE_TYPE =
|
|
580
|
+
POST_PLAYER_CHANGE_TYPE = 43,
|
|
559
581
|
/**
|
|
560
582
|
* Fires from the `MC_ENTITY_TAKE_DMG` callback when a player takes fatal damage. Return false to
|
|
561
583
|
* prevent the fatal damage.
|
|
@@ -572,7 +594,7 @@ export declare enum ModCallbackCustom {
|
|
|
572
594
|
* function postPlayerFatalDamage(player: EntityPlayer) {}
|
|
573
595
|
* ```
|
|
574
596
|
*/
|
|
575
|
-
POST_PLAYER_FATAL_DAMAGE =
|
|
597
|
+
POST_PLAYER_FATAL_DAMAGE = 44,
|
|
576
598
|
/**
|
|
577
599
|
* Fires on the first `MC_POST_PLAYER_UPDATE` frame for each player.
|
|
578
600
|
*
|
|
@@ -586,7 +608,7 @@ export declare enum ModCallbackCustom {
|
|
|
586
608
|
* function postPlayerInitLate(pickup: EntityPickup): void {}
|
|
587
609
|
* ```
|
|
588
610
|
*/
|
|
589
|
-
POST_PLAYER_INIT_LATE =
|
|
611
|
+
POST_PLAYER_INIT_LATE = 45,
|
|
590
612
|
/**
|
|
591
613
|
* Similar to the vanilla callback of the same name, but fires after the `MC_POST_GAME_STARTED`
|
|
592
614
|
* callback fires (if the player is spawning on the 0th game frame of the run).
|
|
@@ -607,8 +629,8 @@ export declare enum ModCallbackCustom {
|
|
|
607
629
|
* function postPlayerInitReordered(player: EntityPlayer): void {}
|
|
608
630
|
* ```
|
|
609
631
|
*/
|
|
610
|
-
POST_PLAYER_INIT_REORDERED =
|
|
611
|
-
POST_PLAYER_RENDER_REORDERED =
|
|
632
|
+
POST_PLAYER_INIT_REORDERED = 46,
|
|
633
|
+
POST_PLAYER_RENDER_REORDERED = 47,
|
|
612
634
|
/**
|
|
613
635
|
* Similar to the vanilla callback of the same name, but fires after the `MC_POST_GAME_STARTED`
|
|
614
636
|
* callback fires (if the player is being updated on the 0th game frame of the run).
|
|
@@ -629,11 +651,11 @@ export declare enum ModCallbackCustom {
|
|
|
629
651
|
* function postPlayerUpdateReordered(player: EntityPlayer): void {}
|
|
630
652
|
* ```
|
|
631
653
|
*/
|
|
632
|
-
POST_PLAYER_UPDATE_REORDERED =
|
|
633
|
-
POST_POOP_RENDER =
|
|
634
|
-
POST_POOP_UPDATE =
|
|
635
|
-
POST_PRESSURE_PLATE_RENDER =
|
|
636
|
-
POST_PRESSURE_PLATE_UPDATE =
|
|
654
|
+
POST_PLAYER_UPDATE_REORDERED = 48,
|
|
655
|
+
POST_POOP_RENDER = 49,
|
|
656
|
+
POST_POOP_UPDATE = 50,
|
|
657
|
+
POST_PRESSURE_PLATE_RENDER = 51,
|
|
658
|
+
POST_PRESSURE_PLATE_UPDATE = 52,
|
|
637
659
|
/**
|
|
638
660
|
* Fires on the first `MC_POST_PROJECTILE_UPDATE` frame for each projectile.
|
|
639
661
|
*
|
|
@@ -647,7 +669,7 @@ export declare enum ModCallbackCustom {
|
|
|
647
669
|
* function postProjectileInitLate(projectile: EntityProjectile): void {}
|
|
648
670
|
* ```
|
|
649
671
|
*/
|
|
650
|
-
POST_PROJECTILE_INIT_LATE =
|
|
672
|
+
POST_PROJECTILE_INIT_LATE = 53,
|
|
651
673
|
/**
|
|
652
674
|
* Fires from the `MC_POST_PEFFECT_UPDATE` callback when a player first picks up a new item. The
|
|
653
675
|
* pickup returned in the callback is assumed to be the first pickup that no longer exists.
|
|
@@ -661,10 +683,10 @@ export declare enum ModCallbackCustom {
|
|
|
661
683
|
* function postPurchase(player: EntityPlayer, pickup: EntityPickup): void {}
|
|
662
684
|
* ```
|
|
663
685
|
*/
|
|
664
|
-
POST_PURCHASE =
|
|
665
|
-
POST_ROCK_RENDER =
|
|
666
|
-
POST_ROCK_UPDATE =
|
|
667
|
-
POST_ROOM_CLEAR_CHANGED =
|
|
686
|
+
POST_PURCHASE = 54,
|
|
687
|
+
POST_ROCK_RENDER = 55,
|
|
688
|
+
POST_ROCK_UPDATE = 56,
|
|
689
|
+
POST_ROOM_CLEAR_CHANGED = 57,
|
|
668
690
|
/**
|
|
669
691
|
* Fires from the `MC_ENTITY_TAKE_DMG` callback when a player takes damage from spikes in a
|
|
670
692
|
* Sacrifice Room.
|
|
@@ -673,7 +695,7 @@ export declare enum ModCallbackCustom {
|
|
|
673
695
|
* function postSacrifice(player: EntityPlayer, numSacrifices: int): void {}
|
|
674
696
|
* ```
|
|
675
697
|
*/
|
|
676
|
-
POST_SACRIFICE =
|
|
698
|
+
POST_SACRIFICE = 58,
|
|
677
699
|
/**
|
|
678
700
|
* Fires from the `MC_POST_RENDER` callback when a slot entity's animation changes.
|
|
679
701
|
*
|
|
@@ -684,7 +706,7 @@ export declare enum ModCallbackCustom {
|
|
|
684
706
|
* function postSlotAnimationChanged(slot: Entity): void {}
|
|
685
707
|
* ```
|
|
686
708
|
*/
|
|
687
|
-
POST_SLOT_ANIMATION_CHANGED =
|
|
709
|
+
POST_SLOT_ANIMATION_CHANGED = 59,
|
|
688
710
|
/**
|
|
689
711
|
* Fires from the `MC_POST_RENDER` callback when a slot plays the animation that indicates that it
|
|
690
712
|
* has broken.
|
|
@@ -696,7 +718,7 @@ export declare enum ModCallbackCustom {
|
|
|
696
718
|
* function postSlotDestroyed(slot: Entity): void {}
|
|
697
719
|
* ```
|
|
698
720
|
*/
|
|
699
|
-
POST_SLOT_DESTROYED =
|
|
721
|
+
POST_SLOT_DESTROYED = 60,
|
|
700
722
|
/**
|
|
701
723
|
* Fires when a new slot entity is initialized. Specifically, this is either:
|
|
702
724
|
*
|
|
@@ -712,7 +734,7 @@ export declare enum ModCallbackCustom {
|
|
|
712
734
|
* function postSlotInit(slot: Entity): void {}
|
|
713
735
|
* ```
|
|
714
736
|
*/
|
|
715
|
-
POST_SLOT_INIT =
|
|
737
|
+
POST_SLOT_INIT = 61,
|
|
716
738
|
/**
|
|
717
739
|
* Fires from the `MC_POST_RENDER` callback on every frame that a slot entity exists.
|
|
718
740
|
*
|
|
@@ -723,7 +745,7 @@ export declare enum ModCallbackCustom {
|
|
|
723
745
|
* function postSlotRender(slot: Entity): void {}
|
|
724
746
|
* ```
|
|
725
747
|
*/
|
|
726
|
-
POST_SLOT_RENDER =
|
|
748
|
+
POST_SLOT_RENDER = 62,
|
|
727
749
|
/**
|
|
728
750
|
* Fires from the `MC_POST_UPDATE` callback on every frame that a slot entity exists.
|
|
729
751
|
*
|
|
@@ -734,9 +756,9 @@ export declare enum ModCallbackCustom {
|
|
|
734
756
|
* function postSlotUpdate(slot: Entity): void {}
|
|
735
757
|
* ```
|
|
736
758
|
*/
|
|
737
|
-
POST_SLOT_UPDATE =
|
|
738
|
-
POST_SPIKES_RENDER =
|
|
739
|
-
POST_SPIKES_UPDATE =
|
|
759
|
+
POST_SLOT_UPDATE = 63,
|
|
760
|
+
POST_SPIKES_RENDER = 64,
|
|
761
|
+
POST_SPIKES_UPDATE = 65,
|
|
740
762
|
/**
|
|
741
763
|
* Fires on the first `MC_POST_TEAR_UPDATE` frame for each tear.
|
|
742
764
|
*
|
|
@@ -750,7 +772,7 @@ export declare enum ModCallbackCustom {
|
|
|
750
772
|
* function postTearInitLate(tear: EntityTear): void {}
|
|
751
773
|
* ```
|
|
752
774
|
*/
|
|
753
|
-
POST_TEAR_INIT_LATE =
|
|
775
|
+
POST_TEAR_INIT_LATE = 66,
|
|
754
776
|
/**
|
|
755
777
|
* Fires on the second `MC_POST_TEAR_UPDATE` frame for each tear (i.e. frame 1).
|
|
756
778
|
*
|
|
@@ -763,9 +785,9 @@ export declare enum ModCallbackCustom {
|
|
|
763
785
|
* function postTearInitVeryLate(tear: EntityTear): void {}
|
|
764
786
|
* ```
|
|
765
787
|
*/
|
|
766
|
-
POST_TEAR_INIT_VERY_LATE =
|
|
767
|
-
POST_TNT_RENDER =
|
|
768
|
-
POST_TNT_UPDATE =
|
|
788
|
+
POST_TEAR_INIT_VERY_LATE = 67,
|
|
789
|
+
POST_TNT_RENDER = 68,
|
|
790
|
+
POST_TNT_UPDATE = 69,
|
|
769
791
|
/**
|
|
770
792
|
* Fires from the `MC_POST_PEFFECT_UPDATE` callback when a player gains or loses a new
|
|
771
793
|
* transformation.
|
|
@@ -783,7 +805,7 @@ export declare enum ModCallbackCustom {
|
|
|
783
805
|
* ): void {}
|
|
784
806
|
* ```
|
|
785
807
|
*/
|
|
786
|
-
POST_TRANSFORMATION =
|
|
808
|
+
POST_TRANSFORMATION = 70,
|
|
787
809
|
/**
|
|
788
810
|
* Fires from `MC_ENTITY_TAKE_DMG` callback when a Wishbone or a Walnut breaks.
|
|
789
811
|
*
|
|
@@ -797,7 +819,7 @@ export declare enum ModCallbackCustom {
|
|
|
797
819
|
* ): void {}
|
|
798
820
|
* ```
|
|
799
821
|
*/
|
|
800
|
-
POST_TRINKET_BREAK =
|
|
822
|
+
POST_TRINKET_BREAK = 71,
|
|
801
823
|
/**
|
|
802
824
|
* Fires from the `MC_POST_PEFFECT_UPDATE` callback on the frame before a Berserk! effect ends
|
|
803
825
|
* when the player is predicted to die (e.g. they currently have no health left or they took
|
|
@@ -810,7 +832,7 @@ export declare enum ModCallbackCustom {
|
|
|
810
832
|
* function preBerserkDeath(player: EntityPlayer) {}
|
|
811
833
|
* ```
|
|
812
834
|
*/
|
|
813
|
-
PRE_BERSERK_DEATH =
|
|
835
|
+
PRE_BERSERK_DEATH = 72,
|
|
814
836
|
/**
|
|
815
837
|
* Fires from the `MC_POST_PLAYER_FATAL_DAMAGE` callback when a player is about to die. If you
|
|
816
838
|
* want to initiate a custom revival, return an integer that corresponds to the item or type of
|
|
@@ -823,7 +845,7 @@ export declare enum ModCallbackCustom {
|
|
|
823
845
|
* function preCustomRevive(player: EntityPlayer) {}
|
|
824
846
|
* ```
|
|
825
847
|
*/
|
|
826
|
-
PRE_CUSTOM_REVIVE =
|
|
848
|
+
PRE_CUSTOM_REVIVE = 73,
|
|
827
849
|
/**
|
|
828
850
|
* Fires from the `MC_POST_PEFFECT_UPDATE` callback when an item becomes queued (i.e. when the
|
|
829
851
|
* player begins to hold the item above their head).
|
|
@@ -842,7 +864,7 @@ export declare enum ModCallbackCustom {
|
|
|
842
864
|
* ): void {}
|
|
843
865
|
* ```
|
|
844
866
|
*/
|
|
845
|
-
PRE_ITEM_PICKUP =
|
|
867
|
+
PRE_ITEM_PICKUP = 74,
|
|
846
868
|
/**
|
|
847
869
|
* Fires on the `MC_POST_RENDER` frame before the player is taken to a new floor. Only fires when
|
|
848
870
|
* a player jumps into a trapdoor or enters a heaven door (beam of light). Does not fire on the
|
|
@@ -856,5 +878,5 @@ export declare enum ModCallbackCustom {
|
|
|
856
878
|
* function preNewLevel(player: EntityPlayer): void {}
|
|
857
879
|
* ```
|
|
858
880
|
*/
|
|
859
|
-
PRE_NEW_LEVEL =
|
|
881
|
+
PRE_NEW_LEVEL = 75
|
|
860
882
|
}
|
|
@@ -80,80 +80,82 @@ ____exports.ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED = 35
|
|
|
80
80
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED] = "POST_PEFFECT_UPDATE_REORDERED"
|
|
81
81
|
____exports.ModCallbackCustom.POST_PICKUP_COLLECT = 36
|
|
82
82
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_COLLECT] = "POST_PICKUP_COLLECT"
|
|
83
|
-
____exports.ModCallbackCustom.
|
|
83
|
+
____exports.ModCallbackCustom.POST_PICKUP_INIT_FIRST = 37
|
|
84
|
+
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_INIT_FIRST] = "POST_PICKUP_INIT_FIRST"
|
|
85
|
+
____exports.ModCallbackCustom.POST_PICKUP_INIT_LATE = 38
|
|
84
86
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_INIT_LATE] = "POST_PICKUP_INIT_LATE"
|
|
85
|
-
____exports.ModCallbackCustom.POST_PICKUP_STATE_CHANGED =
|
|
87
|
+
____exports.ModCallbackCustom.POST_PICKUP_STATE_CHANGED = 39
|
|
86
88
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_STATE_CHANGED] = "POST_PICKUP_STATE_CHANGED"
|
|
87
|
-
____exports.ModCallbackCustom.POST_PIT_RENDER =
|
|
89
|
+
____exports.ModCallbackCustom.POST_PIT_RENDER = 40
|
|
88
90
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PIT_RENDER] = "POST_PIT_RENDER"
|
|
89
|
-
____exports.ModCallbackCustom.POST_PIT_UPDATE =
|
|
91
|
+
____exports.ModCallbackCustom.POST_PIT_UPDATE = 41
|
|
90
92
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PIT_UPDATE] = "POST_PIT_UPDATE"
|
|
91
|
-
____exports.ModCallbackCustom.POST_PLAYER_CHANGE_HEALTH =
|
|
93
|
+
____exports.ModCallbackCustom.POST_PLAYER_CHANGE_HEALTH = 42
|
|
92
94
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_CHANGE_HEALTH] = "POST_PLAYER_CHANGE_HEALTH"
|
|
93
|
-
____exports.ModCallbackCustom.POST_PLAYER_CHANGE_TYPE =
|
|
95
|
+
____exports.ModCallbackCustom.POST_PLAYER_CHANGE_TYPE = 43
|
|
94
96
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_CHANGE_TYPE] = "POST_PLAYER_CHANGE_TYPE"
|
|
95
|
-
____exports.ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE =
|
|
97
|
+
____exports.ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE = 44
|
|
96
98
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE] = "POST_PLAYER_FATAL_DAMAGE"
|
|
97
|
-
____exports.ModCallbackCustom.POST_PLAYER_INIT_LATE =
|
|
99
|
+
____exports.ModCallbackCustom.POST_PLAYER_INIT_LATE = 45
|
|
98
100
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_INIT_LATE] = "POST_PLAYER_INIT_LATE"
|
|
99
|
-
____exports.ModCallbackCustom.POST_PLAYER_INIT_REORDERED =
|
|
101
|
+
____exports.ModCallbackCustom.POST_PLAYER_INIT_REORDERED = 46
|
|
100
102
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_INIT_REORDERED] = "POST_PLAYER_INIT_REORDERED"
|
|
101
|
-
____exports.ModCallbackCustom.POST_PLAYER_RENDER_REORDERED =
|
|
103
|
+
____exports.ModCallbackCustom.POST_PLAYER_RENDER_REORDERED = 47
|
|
102
104
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_RENDER_REORDERED] = "POST_PLAYER_RENDER_REORDERED"
|
|
103
|
-
____exports.ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED =
|
|
105
|
+
____exports.ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED = 48
|
|
104
106
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED] = "POST_PLAYER_UPDATE_REORDERED"
|
|
105
|
-
____exports.ModCallbackCustom.POST_POOP_RENDER =
|
|
107
|
+
____exports.ModCallbackCustom.POST_POOP_RENDER = 49
|
|
106
108
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_POOP_RENDER] = "POST_POOP_RENDER"
|
|
107
|
-
____exports.ModCallbackCustom.POST_POOP_UPDATE =
|
|
109
|
+
____exports.ModCallbackCustom.POST_POOP_UPDATE = 50
|
|
108
110
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_POOP_UPDATE] = "POST_POOP_UPDATE"
|
|
109
|
-
____exports.ModCallbackCustom.POST_PRESSURE_PLATE_RENDER =
|
|
111
|
+
____exports.ModCallbackCustom.POST_PRESSURE_PLATE_RENDER = 51
|
|
110
112
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PRESSURE_PLATE_RENDER] = "POST_PRESSURE_PLATE_RENDER"
|
|
111
|
-
____exports.ModCallbackCustom.POST_PRESSURE_PLATE_UPDATE =
|
|
113
|
+
____exports.ModCallbackCustom.POST_PRESSURE_PLATE_UPDATE = 52
|
|
112
114
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PRESSURE_PLATE_UPDATE] = "POST_PRESSURE_PLATE_UPDATE"
|
|
113
|
-
____exports.ModCallbackCustom.POST_PROJECTILE_INIT_LATE =
|
|
115
|
+
____exports.ModCallbackCustom.POST_PROJECTILE_INIT_LATE = 53
|
|
114
116
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PROJECTILE_INIT_LATE] = "POST_PROJECTILE_INIT_LATE"
|
|
115
|
-
____exports.ModCallbackCustom.POST_PURCHASE =
|
|
117
|
+
____exports.ModCallbackCustom.POST_PURCHASE = 54
|
|
116
118
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PURCHASE] = "POST_PURCHASE"
|
|
117
|
-
____exports.ModCallbackCustom.POST_ROCK_RENDER =
|
|
119
|
+
____exports.ModCallbackCustom.POST_ROCK_RENDER = 55
|
|
118
120
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ROCK_RENDER] = "POST_ROCK_RENDER"
|
|
119
|
-
____exports.ModCallbackCustom.POST_ROCK_UPDATE =
|
|
121
|
+
____exports.ModCallbackCustom.POST_ROCK_UPDATE = 56
|
|
120
122
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ROCK_UPDATE] = "POST_ROCK_UPDATE"
|
|
121
|
-
____exports.ModCallbackCustom.POST_ROOM_CLEAR_CHANGED =
|
|
123
|
+
____exports.ModCallbackCustom.POST_ROOM_CLEAR_CHANGED = 57
|
|
122
124
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ROOM_CLEAR_CHANGED] = "POST_ROOM_CLEAR_CHANGED"
|
|
123
|
-
____exports.ModCallbackCustom.POST_SACRIFICE =
|
|
125
|
+
____exports.ModCallbackCustom.POST_SACRIFICE = 58
|
|
124
126
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SACRIFICE] = "POST_SACRIFICE"
|
|
125
|
-
____exports.ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED =
|
|
127
|
+
____exports.ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED = 59
|
|
126
128
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED] = "POST_SLOT_ANIMATION_CHANGED"
|
|
127
|
-
____exports.ModCallbackCustom.POST_SLOT_DESTROYED =
|
|
129
|
+
____exports.ModCallbackCustom.POST_SLOT_DESTROYED = 60
|
|
128
130
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_DESTROYED] = "POST_SLOT_DESTROYED"
|
|
129
|
-
____exports.ModCallbackCustom.POST_SLOT_INIT =
|
|
131
|
+
____exports.ModCallbackCustom.POST_SLOT_INIT = 61
|
|
130
132
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_INIT] = "POST_SLOT_INIT"
|
|
131
|
-
____exports.ModCallbackCustom.POST_SLOT_RENDER =
|
|
133
|
+
____exports.ModCallbackCustom.POST_SLOT_RENDER = 62
|
|
132
134
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_RENDER] = "POST_SLOT_RENDER"
|
|
133
|
-
____exports.ModCallbackCustom.POST_SLOT_UPDATE =
|
|
135
|
+
____exports.ModCallbackCustom.POST_SLOT_UPDATE = 63
|
|
134
136
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_UPDATE] = "POST_SLOT_UPDATE"
|
|
135
|
-
____exports.ModCallbackCustom.POST_SPIKES_RENDER =
|
|
137
|
+
____exports.ModCallbackCustom.POST_SPIKES_RENDER = 64
|
|
136
138
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SPIKES_RENDER] = "POST_SPIKES_RENDER"
|
|
137
|
-
____exports.ModCallbackCustom.POST_SPIKES_UPDATE =
|
|
139
|
+
____exports.ModCallbackCustom.POST_SPIKES_UPDATE = 65
|
|
138
140
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SPIKES_UPDATE] = "POST_SPIKES_UPDATE"
|
|
139
|
-
____exports.ModCallbackCustom.POST_TEAR_INIT_LATE =
|
|
141
|
+
____exports.ModCallbackCustom.POST_TEAR_INIT_LATE = 66
|
|
140
142
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TEAR_INIT_LATE] = "POST_TEAR_INIT_LATE"
|
|
141
|
-
____exports.ModCallbackCustom.POST_TEAR_INIT_VERY_LATE =
|
|
143
|
+
____exports.ModCallbackCustom.POST_TEAR_INIT_VERY_LATE = 67
|
|
142
144
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TEAR_INIT_VERY_LATE] = "POST_TEAR_INIT_VERY_LATE"
|
|
143
|
-
____exports.ModCallbackCustom.POST_TNT_RENDER =
|
|
145
|
+
____exports.ModCallbackCustom.POST_TNT_RENDER = 68
|
|
144
146
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TNT_RENDER] = "POST_TNT_RENDER"
|
|
145
|
-
____exports.ModCallbackCustom.POST_TNT_UPDATE =
|
|
147
|
+
____exports.ModCallbackCustom.POST_TNT_UPDATE = 69
|
|
146
148
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TNT_UPDATE] = "POST_TNT_UPDATE"
|
|
147
|
-
____exports.ModCallbackCustom.POST_TRANSFORMATION =
|
|
149
|
+
____exports.ModCallbackCustom.POST_TRANSFORMATION = 70
|
|
148
150
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TRANSFORMATION] = "POST_TRANSFORMATION"
|
|
149
|
-
____exports.ModCallbackCustom.POST_TRINKET_BREAK =
|
|
151
|
+
____exports.ModCallbackCustom.POST_TRINKET_BREAK = 71
|
|
150
152
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TRINKET_BREAK] = "POST_TRINKET_BREAK"
|
|
151
|
-
____exports.ModCallbackCustom.PRE_BERSERK_DEATH =
|
|
153
|
+
____exports.ModCallbackCustom.PRE_BERSERK_DEATH = 72
|
|
152
154
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_BERSERK_DEATH] = "PRE_BERSERK_DEATH"
|
|
153
|
-
____exports.ModCallbackCustom.PRE_CUSTOM_REVIVE =
|
|
155
|
+
____exports.ModCallbackCustom.PRE_CUSTOM_REVIVE = 73
|
|
154
156
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_CUSTOM_REVIVE] = "PRE_CUSTOM_REVIVE"
|
|
155
|
-
____exports.ModCallbackCustom.PRE_ITEM_PICKUP =
|
|
157
|
+
____exports.ModCallbackCustom.PRE_ITEM_PICKUP = 74
|
|
156
158
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_ITEM_PICKUP] = "PRE_ITEM_PICKUP"
|
|
157
|
-
____exports.ModCallbackCustom.PRE_NEW_LEVEL =
|
|
159
|
+
____exports.ModCallbackCustom.PRE_NEW_LEVEL = 75
|
|
158
160
|
____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_NEW_LEVEL] = "PRE_NEW_LEVEL"
|
|
159
161
|
return ____exports
|
|
@@ -1,4 +1,21 @@
|
|
|
1
1
|
/// <reference types="isaac-typescript-definitions" />
|
|
2
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
3
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
4
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
5
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
6
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
7
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
8
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
9
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
10
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
11
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
12
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
13
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
14
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
15
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
16
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
17
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
18
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
2
19
|
/**
|
|
3
20
|
* After using the "playerDisplay" console command, text will be drawn on each player for debugging
|
|
4
21
|
* purposes. Use this function to specify a callback function that will returns the string that
|
|
@@ -1,4 +1,21 @@
|
|
|
1
1
|
/// <reference types="isaac-typescript-definitions" />
|
|
2
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
3
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
4
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
5
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
6
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
7
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
8
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
9
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
10
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
11
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
12
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
13
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
14
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
15
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
16
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
17
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
18
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
2
19
|
declare const v: {
|
|
3
20
|
run: {
|
|
4
21
|
player: boolean;
|
|
@@ -7,6 +7,8 @@ local jsonDecode = ____jsonHelpers.jsonDecode
|
|
|
7
7
|
local ____log = require("functions.log")
|
|
8
8
|
local log = ____log.log
|
|
9
9
|
local logError = ____log.logError
|
|
10
|
+
local ____table = require("functions.table")
|
|
11
|
+
local iterateTableDeterministically = ____table.iterateTableDeterministically
|
|
10
12
|
local ____constants = require("features.saveDataManager.constants")
|
|
11
13
|
local SAVE_DATA_MANAGER_DEBUG = ____constants.SAVE_DATA_MANAGER_DEBUG
|
|
12
14
|
local SAVE_DATA_MANAGER_FEATURE_NAME = ____constants.SAVE_DATA_MANAGER_FEATURE_NAME
|
|
@@ -41,26 +43,28 @@ function ____exports.loadFromDisk(self, mod, oldSaveData)
|
|
|
41
43
|
if SAVE_DATA_MANAGER_DEBUG then
|
|
42
44
|
log("Converted data from the \"save#.dat\" to a Lua table.")
|
|
43
45
|
end
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
iterateTableDeterministically(
|
|
47
|
+
nil,
|
|
48
|
+
newSaveData,
|
|
49
|
+
function(____, key, value)
|
|
46
50
|
if type(key) ~= "string" then
|
|
47
|
-
|
|
51
|
+
return
|
|
48
52
|
end
|
|
49
53
|
local valueType = type(value)
|
|
50
54
|
if valueType ~= "table" then
|
|
51
|
-
|
|
55
|
+
return
|
|
52
56
|
end
|
|
53
57
|
local oldSaveDataForSubscriber = oldSaveData[key]
|
|
54
58
|
if oldSaveDataForSubscriber == nil then
|
|
55
|
-
|
|
59
|
+
return
|
|
56
60
|
end
|
|
57
61
|
if SAVE_DATA_MANAGER_DEBUG then
|
|
58
62
|
log("Merging in stored data for feature: " .. key)
|
|
59
63
|
end
|
|
60
64
|
merge(nil, oldSaveDataForSubscriber, value, key)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
|
|
65
|
+
end,
|
|
66
|
+
SAVE_DATA_MANAGER_DEBUG
|
|
67
|
+
)
|
|
64
68
|
log(("The " .. SAVE_DATA_MANAGER_FEATURE_NAME) .. " loaded data from the \"save#.dat\" file.")
|
|
65
69
|
end
|
|
66
70
|
return ____exports
|
|
@@ -19,7 +19,9 @@ local ____log = require("functions.log")
|
|
|
19
19
|
local logError = ____log.logError
|
|
20
20
|
local ____table = require("functions.table")
|
|
21
21
|
local clearTable = ____table.clearTable
|
|
22
|
+
local iterateTableDeterministically = ____table.iterateTableDeterministically
|
|
22
23
|
local ____constants = require("features.saveDataManager.constants")
|
|
24
|
+
local SAVE_DATA_MANAGER_DEBUG = ____constants.SAVE_DATA_MANAGER_DEBUG
|
|
23
25
|
local SAVE_DATA_MANAGER_FEATURE_NAME = ____constants.SAVE_DATA_MANAGER_FEATURE_NAME
|
|
24
26
|
local ____load = require("features.saveDataManager.load")
|
|
25
27
|
local loadFromDisk = ____load.loadFromDisk
|
|
@@ -64,9 +66,14 @@ function restoreDefaultsAll(self)
|
|
|
64
66
|
restoreDefaults(nil, SaveDataKey.ROOM)
|
|
65
67
|
end
|
|
66
68
|
function restoreDefaults(self, saveDataKey)
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
iterateTableDeterministically(
|
|
70
|
+
nil,
|
|
71
|
+
saveDataMap,
|
|
72
|
+
function(____, subscriberName, saveData)
|
|
73
|
+
____exports.restoreDefaultSaveData(nil, subscriberName, saveData, saveDataKey)
|
|
74
|
+
end,
|
|
75
|
+
SAVE_DATA_MANAGER_DEBUG
|
|
76
|
+
)
|
|
70
77
|
end
|
|
71
78
|
function ____exports.restoreDefaultSaveData(self, subscriberName, saveData, saveDataKey)
|
|
72
79
|
if not RESETTABLE_SAVE_DATA_KEYS:has(saveDataKey) then
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local Map = ____lualib.Map
|
|
3
|
-
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
4
3
|
local Set = ____lualib.Set
|
|
5
4
|
local ____exports = {}
|
|
6
5
|
local mergeArray, mergeTSTLObject, mergeTable
|
|
@@ -19,6 +18,10 @@ local deserializeIsaacAPIClass = ____serialization.deserializeIsaacAPIClass
|
|
|
19
18
|
local isSerializedIsaacAPIClass = ____serialization.isSerializedIsaacAPIClass
|
|
20
19
|
local ____table = require("functions.table")
|
|
21
20
|
local clearTable = ____table.clearTable
|
|
21
|
+
local iterateTableDeterministically = ____table.iterateTableDeterministically
|
|
22
|
+
local ____tstlClass = require("functions.tstlClass")
|
|
23
|
+
local isTSTLMap = ____tstlClass.isTSTLMap
|
|
24
|
+
local isTSTLSet = ____tstlClass.isTSTLSet
|
|
22
25
|
local ____utils = require("functions.utils")
|
|
23
26
|
local getTraversalDescription = ____utils.getTraversalDescription
|
|
24
27
|
local ____constants = require("features.saveDataManager.constants")
|
|
@@ -62,7 +65,7 @@ function ____exports.merge(self, oldObject, newTable, traversalDescription)
|
|
|
62
65
|
mergeArray(nil, oldTable, newTable)
|
|
63
66
|
return
|
|
64
67
|
end
|
|
65
|
-
if
|
|
68
|
+
if isTSTLMap(nil, oldObject) or isTSTLSet(nil, oldObject) then
|
|
66
69
|
mergeTSTLObject(nil, oldObject, newTable, traversalDescription)
|
|
67
70
|
else
|
|
68
71
|
mergeTable(nil, oldObject, newTable, traversalDescription)
|
|
@@ -70,27 +73,34 @@ function ____exports.merge(self, oldObject, newTable, traversalDescription)
|
|
|
70
73
|
end
|
|
71
74
|
function mergeArray(self, oldArray, newArray)
|
|
72
75
|
clearTable(nil, oldArray)
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
iterateTableDeterministically(
|
|
77
|
+
nil,
|
|
78
|
+
newArray,
|
|
79
|
+
function(____, key, value)
|
|
80
|
+
oldArray[key] = value
|
|
81
|
+
end,
|
|
82
|
+
SAVE_DATA_MANAGER_DEBUG
|
|
83
|
+
)
|
|
76
84
|
end
|
|
77
85
|
function mergeTSTLObject(self, oldObject, newTable, traversalDescription)
|
|
78
86
|
oldObject:clear()
|
|
79
87
|
local convertStringKeysToNumbers = newTable[SerializationBrand.OBJECT_WITH_NUMBER_KEYS] ~= nil
|
|
80
|
-
|
|
81
|
-
|
|
88
|
+
iterateTableDeterministically(
|
|
89
|
+
nil,
|
|
90
|
+
newTable,
|
|
91
|
+
function(____, key, value)
|
|
82
92
|
if isSerializationBrand(nil, key) then
|
|
83
|
-
|
|
93
|
+
return
|
|
84
94
|
end
|
|
85
95
|
local keyToUse = key
|
|
86
96
|
if convertStringKeysToNumbers then
|
|
87
97
|
local numberKey = tonumber(key)
|
|
88
98
|
if numberKey == nil then
|
|
89
|
-
|
|
99
|
+
return
|
|
90
100
|
end
|
|
91
101
|
keyToUse = numberKey
|
|
92
102
|
end
|
|
93
|
-
if
|
|
103
|
+
if isTSTLMap(nil, oldObject) then
|
|
94
104
|
local valueType = type(value)
|
|
95
105
|
local valueCopy
|
|
96
106
|
if valueType == "table" then
|
|
@@ -99,22 +109,24 @@ function mergeTSTLObject(self, oldObject, newTable, traversalDescription)
|
|
|
99
109
|
valueCopy = value
|
|
100
110
|
end
|
|
101
111
|
oldObject:set(keyToUse, valueCopy)
|
|
102
|
-
elseif
|
|
112
|
+
elseif isTSTLSet(nil, oldObject) then
|
|
103
113
|
oldObject:add(keyToUse)
|
|
104
114
|
end
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
|
|
115
|
+
end,
|
|
116
|
+
SAVE_DATA_MANAGER_DEBUG
|
|
117
|
+
)
|
|
108
118
|
end
|
|
109
119
|
function mergeTable(self, oldTable, newTable, traversalDescription)
|
|
110
|
-
|
|
111
|
-
|
|
120
|
+
iterateTableDeterministically(
|
|
121
|
+
nil,
|
|
122
|
+
newTable,
|
|
123
|
+
function(____, key, value)
|
|
112
124
|
if SAVE_DATA_MANAGER_DEBUG then
|
|
113
125
|
local valueToPrint = value == "" and "(empty string)" or tostring(value)
|
|
114
126
|
log((("merge is merging: " .. traversalDescription) .. " --> ") .. valueToPrint)
|
|
115
127
|
end
|
|
116
128
|
if isSerializationBrand(nil, key) then
|
|
117
|
-
|
|
129
|
+
return
|
|
118
130
|
end
|
|
119
131
|
if isSerializedIsaacAPIClass(nil, value) then
|
|
120
132
|
if SAVE_DATA_MANAGER_DEBUG then
|
|
@@ -122,7 +134,7 @@ function mergeTable(self, oldTable, newTable, traversalDescription)
|
|
|
122
134
|
end
|
|
123
135
|
local deserializedObject = deserializeIsaacAPIClass(nil, value)
|
|
124
136
|
oldTable[key] = deserializedObject
|
|
125
|
-
|
|
137
|
+
return
|
|
126
138
|
end
|
|
127
139
|
local valueType = type(value)
|
|
128
140
|
if valueType == "table" then
|
|
@@ -137,8 +149,8 @@ function mergeTable(self, oldTable, newTable, traversalDescription)
|
|
|
137
149
|
else
|
|
138
150
|
oldTable[key] = value
|
|
139
151
|
end
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
|
|
152
|
+
end,
|
|
153
|
+
SAVE_DATA_MANAGER_DEBUG
|
|
154
|
+
)
|
|
143
155
|
end
|
|
144
156
|
return ____exports
|