isaacscript-common 87.9.7 → 87.9.8
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/cachedEnumValues.js +29 -32
- package/dist/callbackClasses.js +142 -289
- package/dist/callbacks.js +147 -183
- package/dist/classes/DefaultMap.js +4 -8
- package/dist/classes/ModFeature.js +21 -25
- package/dist/classes/ModUpgraded.js +43 -47
- package/dist/classes/callbacks/EntityTakeDmgFilter.js +6 -10
- package/dist/classes/callbacks/EntityTakeDmgPlayer.js +7 -11
- package/dist/classes/callbacks/InputActionFilter.js +4 -8
- package/dist/classes/callbacks/InputActionPlayer.js +4 -8
- package/dist/classes/callbacks/PostAmbushFinished.js +10 -14
- package/dist/classes/callbacks/PostAmbushStarted.js +10 -14
- package/dist/classes/callbacks/PostBombExploded.js +8 -12
- package/dist/classes/callbacks/PostBombInitFilter.js +6 -10
- package/dist/classes/callbacks/PostBombInitLate.js +6 -10
- package/dist/classes/callbacks/PostBombRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostBombUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostBoneSwing.js +7 -11
- package/dist/classes/callbacks/PostCollectibleEmpty.js +6 -10
- package/dist/classes/callbacks/PostCursedTeleport.js +30 -34
- package/dist/classes/callbacks/PostCustomRevive.js +4 -8
- package/dist/classes/callbacks/PostDiceRoomActivated.js +9 -13
- package/dist/classes/callbacks/PostDoorRender.js +8 -12
- package/dist/classes/callbacks/PostDoorUpdate.js +8 -12
- package/dist/classes/callbacks/PostEffectInitFilter.js +6 -10
- package/dist/classes/callbacks/PostEffectInitLate.js +6 -10
- package/dist/classes/callbacks/PostEffectRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostEffectStateChanged.js +8 -12
- package/dist/classes/callbacks/PostEffectUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostEntityKillFilter.js +6 -10
- package/dist/classes/callbacks/PostEntityRemoveFilter.js +6 -10
- package/dist/classes/callbacks/PostEsauJr.js +4 -8
- package/dist/classes/callbacks/PostFamiliarInitFilter.js +6 -10
- package/dist/classes/callbacks/PostFamiliarInitLate.js +6 -10
- package/dist/classes/callbacks/PostFamiliarRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostFamiliarStateChanged.js +8 -12
- package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostFirstEsauJr.js +4 -8
- package/dist/classes/callbacks/PostFirstFlip.js +4 -8
- package/dist/classes/callbacks/PostFlip.js +4 -8
- package/dist/classes/callbacks/PostGameEndFilter.js +6 -10
- package/dist/classes/callbacks/PostGameStartedReordered.js +6 -10
- package/dist/classes/callbacks/PostGameStartedReorderedLast.js +6 -10
- package/dist/classes/callbacks/PostGreedModeWave.js +7 -11
- package/dist/classes/callbacks/PostGridEntityBroken.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCollision.js +4 -8
- package/dist/classes/callbacks/PostGridEntityCustomBroken.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomCollision.js +4 -8
- package/dist/classes/callbacks/PostGridEntityCustomInit.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomRemove.js +4 -8
- package/dist/classes/callbacks/PostGridEntityCustomRender.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +6 -10
- package/dist/classes/callbacks/PostGridEntityInit.js +6 -10
- package/dist/classes/callbacks/PostGridEntityRemove.js +4 -8
- package/dist/classes/callbacks/PostGridEntityRender.js +6 -10
- package/dist/classes/callbacks/PostGridEntityStateChanged.js +6 -10
- package/dist/classes/callbacks/PostGridEntityUpdate.js +6 -10
- package/dist/classes/callbacks/PostHolyMantleRemoved.js +15 -19
- package/dist/classes/callbacks/PostItemDischarge.js +23 -27
- package/dist/classes/callbacks/PostItemPickup.js +6 -10
- package/dist/classes/callbacks/PostKeyboardChanged.js +9 -13
- package/dist/classes/callbacks/PostKnifeInitFilter.js +6 -10
- package/dist/classes/callbacks/PostKnifeInitLate.js +6 -10
- package/dist/classes/callbacks/PostKnifeRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostKnifeUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostLaserInitFilter.js +6 -10
- package/dist/classes/callbacks/PostLaserInitLate.js +6 -10
- package/dist/classes/callbacks/PostLaserRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostLaserUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCDeathFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCInitFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCInitLate.js +6 -10
- package/dist/classes/callbacks/PostNPCRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCStateChanged.js +8 -12
- package/dist/classes/callbacks/PostNPCUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostNewLevelReordered.js +6 -10
- package/dist/classes/callbacks/PostNewRoomEarly.js +17 -21
- package/dist/classes/callbacks/PostNewRoomReordered.js +6 -10
- package/dist/classes/callbacks/PostPEffectUpdateReordered.js +6 -10
- package/dist/classes/callbacks/PostPickupChanged.js +6 -10
- package/dist/classes/callbacks/PostPickupCollect.js +8 -12
- package/dist/classes/callbacks/PostPickupInitFilter.js +6 -10
- package/dist/classes/callbacks/PostPickupInitFirst.js +10 -14
- package/dist/classes/callbacks/PostPickupInitLate.js +6 -10
- package/dist/classes/callbacks/PostPickupRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostPickupSelectionFilter.js +4 -8
- package/dist/classes/callbacks/PostPickupStateChanged.js +8 -12
- package/dist/classes/callbacks/PostPickupUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostPitRender.js +8 -12
- package/dist/classes/callbacks/PostPitUpdate.js +8 -12
- package/dist/classes/callbacks/PostPlayerChangeHealth.js +14 -18
- package/dist/classes/callbacks/PostPlayerChangeStat.js +26 -30
- package/dist/classes/callbacks/PostPlayerChangeType.js +11 -15
- package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +6 -10
- package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +6 -10
- package/dist/classes/callbacks/PostPlayerFatalDamage.js +24 -28
- package/dist/classes/callbacks/PostPlayerInitFirst.js +12 -16
- package/dist/classes/callbacks/PostPlayerInitLate.js +9 -13
- package/dist/classes/callbacks/PostPlayerRenderReordered.js +6 -10
- package/dist/classes/callbacks/PostPlayerUpdateReordered.js +6 -10
- package/dist/classes/callbacks/PostPoopRender.js +8 -12
- package/dist/classes/callbacks/PostPoopUpdate.js +8 -12
- package/dist/classes/callbacks/PostPressurePlateRender.js +8 -12
- package/dist/classes/callbacks/PostPressurePlateUpdate.js +8 -12
- package/dist/classes/callbacks/PostProjectileInitFilter.js +6 -10
- package/dist/classes/callbacks/PostProjectileInitLate.js +6 -10
- package/dist/classes/callbacks/PostProjectileKill.js +8 -12
- package/dist/classes/callbacks/PostProjectileRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostProjectileUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostPurchase.js +21 -25
- package/dist/classes/callbacks/PostRockRender.js +8 -12
- package/dist/classes/callbacks/PostRockUpdate.js +8 -12
- package/dist/classes/callbacks/PostRoomClearChanged.js +9 -13
- package/dist/classes/callbacks/PostSacrifice.js +12 -16
- package/dist/classes/callbacks/PostSlotAnimationChanged.js +6 -10
- package/dist/classes/callbacks/PostSlotCollision.js +8 -12
- package/dist/classes/callbacks/PostSlotDestroyed.js +6 -10
- package/dist/classes/callbacks/PostSlotInit.js +6 -10
- package/dist/classes/callbacks/PostSlotRender.js +6 -10
- package/dist/classes/callbacks/PostSlotUpdate.js +6 -10
- package/dist/classes/callbacks/PostSpikesRender.js +8 -12
- package/dist/classes/callbacks/PostSpikesUpdate.js +8 -12
- package/dist/classes/callbacks/PostTNTRender.js +8 -12
- package/dist/classes/callbacks/PostTNTUpdate.js +8 -12
- package/dist/classes/callbacks/PostTearInitFilter.js +6 -10
- package/dist/classes/callbacks/PostTearInitLate.js +6 -10
- package/dist/classes/callbacks/PostTearInitVeryLate.js +6 -10
- package/dist/classes/callbacks/PostTearKill.js +8 -12
- package/dist/classes/callbacks/PostTearRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostTearUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostTransformation.js +10 -14
- package/dist/classes/callbacks/PostTrinketBreak.js +16 -20
- package/dist/classes/callbacks/PostUsePillFilter.js +18 -22
- package/dist/classes/callbacks/PreBerserkDeath.js +14 -18
- package/dist/classes/callbacks/PreBombCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreCustomRevive.js +6 -10
- package/dist/classes/callbacks/PreEntitySpawnFilter.js +4 -8
- package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreGetPedestal.js +8 -12
- package/dist/classes/callbacks/PreItemPickup.js +6 -10
- package/dist/classes/callbacks/PreKnifeCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreNPCCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreNPCUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PreNewLevel.js +10 -14
- package/dist/classes/callbacks/PreProjectileCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +4 -8
- package/dist/classes/callbacks/PreTearCollisionFilter.js +6 -10
- package/dist/classes/features/callbackLogic/CustomGridEntities.js +46 -50
- package/dist/classes/features/callbackLogic/CustomRevive.js +28 -32
- package/dist/classes/features/callbackLogic/EsauJrDetection.js +11 -15
- package/dist/classes/features/callbackLogic/FlipDetection.js +11 -15
- package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +26 -30
- package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +10 -14
- package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +6 -10
- package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +12 -16
- package/dist/classes/features/callbackLogic/ItemPickupDetection.js +17 -21
- package/dist/classes/features/callbackLogic/PickupChangeDetection.js +6 -10
- package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +39 -43
- package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +18 -22
- package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +17 -21
- package/dist/classes/features/callbackLogic/SlotRenderDetection.js +8 -12
- package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +9 -13
- package/dist/classes/features/other/CharacterHealthConversion.js +13 -17
- package/dist/classes/features/other/CharacterStats.js +9 -13
- package/dist/classes/features/other/CollectibleItemPoolType.js +17 -21
- package/dist/classes/features/other/CustomHotkeys.js +15 -19
- package/dist/classes/features/other/CustomItemPools.js +20 -24
- package/dist/classes/features/other/CustomPickups.js +15 -19
- package/dist/classes/features/other/CustomStages.js +116 -153
- package/dist/classes/features/other/CustomTrapdoors.js +119 -123
- package/dist/classes/features/other/DebugDisplay.js +77 -81
- package/dist/classes/features/other/DeployJSONRoom.js +65 -69
- package/dist/classes/features/other/DisableAllSound.js +14 -18
- package/dist/classes/features/other/DisableInputs.js +24 -28
- package/dist/classes/features/other/EdenStartingStatsHealth.js +36 -40
- package/dist/classes/features/other/ExtraConsoleCommands.js +65 -102
- package/dist/classes/features/other/FadeInRemover.js +9 -13
- package/dist/classes/features/other/FastReset.js +18 -22
- package/dist/classes/features/other/FlyingDetection.js +10 -14
- package/dist/classes/features/other/ForgottenSwitch.js +8 -12
- package/dist/classes/features/other/ItemPoolDetection.js +35 -39
- package/dist/classes/features/other/ModdedElementDetection.js +43 -47
- package/dist/classes/features/other/ModdedElementSets.js +135 -139
- package/dist/classes/features/other/NoSirenSteal.js +7 -11
- package/dist/classes/features/other/Pause.js +48 -52
- package/dist/classes/features/other/PersistentEntities.js +16 -20
- package/dist/classes/features/other/PickupIndexCreation.js +31 -35
- package/dist/classes/features/other/PlayerCollectibleTracking.js +18 -22
- package/dist/classes/features/other/PonyDetection.js +22 -26
- package/dist/classes/features/other/PressInput.js +10 -14
- package/dist/classes/features/other/PreventChildEntities.js +6 -10
- package/dist/classes/features/other/PreventGridEntityRespawn.js +34 -38
- package/dist/classes/features/other/RerunDetection.js +11 -15
- package/dist/classes/features/other/RoomClearFrame.js +11 -15
- package/dist/classes/features/other/RoomHistory.js +30 -34
- package/dist/classes/features/other/RunInNFrames.js +24 -28
- package/dist/classes/features/other/RunNextRoom.js +8 -12
- package/dist/classes/features/other/RunNextRun.js +8 -12
- package/dist/classes/features/other/SaveDataManager.js +61 -65
- package/dist/classes/features/other/SpawnRockAltRewards.js +115 -119
- package/dist/classes/features/other/StageHistory.js +76 -80
- package/dist/classes/features/other/StartAmbush.js +12 -16
- package/dist/classes/features/other/TaintedLazarusPlayers.js +10 -14
- package/dist/classes/features/other/UnlockAchievementsDetection.js +10 -14
- package/dist/classes/features/other/customStages/backdrop.js +68 -71
- package/dist/classes/features/other/customStages/constants.js +7 -10
- package/dist/classes/features/other/customStages/gridEntities.js +23 -30
- package/dist/classes/features/other/customStages/shadows.js +27 -30
- package/dist/classes/features/other/customStages/streakText.js +55 -60
- package/dist/classes/features/other/customStages/utils.js +13 -17
- package/dist/classes/features/other/customStages/v.js +4 -7
- package/dist/classes/features/other/customStages/versusScreen.js +46 -50
- package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +8 -12
- package/dist/classes/features/other/debugDisplay/utils.js +6 -10
- package/dist/classes/features/other/extraConsoleCommands/commands.js +411 -557
- package/dist/classes/features/other/extraConsoleCommands/subroutines.js +47 -57
- package/dist/classes/features/other/extraConsoleCommands/v.js +1 -4
- package/dist/classes/features/other/saveDataManager/constants.js +1 -4
- package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +17 -21
- package/dist/classes/features/other/saveDataManager/loadFromDisk.js +19 -22
- package/dist/classes/features/other/saveDataManager/restoreDefaults.js +20 -25
- package/dist/classes/features/other/saveDataManager/saveToDisk.js +13 -16
- package/dist/classes/private/CustomCallback.js +4 -8
- package/dist/classes/private/Feature.js +1 -5
- package/dist/core/cachedClasses.js +12 -15
- package/dist/core/constants.js +126 -130
- package/dist/core/constantsFirstLast.js +22 -25
- package/dist/core/constantsVanilla.js +25 -28
- package/dist/core/upgradeMod.js +7 -10
- package/dist/decorators.js +6 -10
- package/dist/enums/AmbushType.js +2 -5
- package/dist/enums/CornerType.js +2 -5
- package/dist/enums/HealthType.js +2 -5
- package/dist/enums/ISCFeature.js +2 -5
- package/dist/enums/LadderSubTypeCustom.js +2 -5
- package/dist/enums/ModCallbackCustom.js +2 -5
- package/dist/enums/MysteriousPaperEffect.js +2 -5
- package/dist/enums/PlayerStat.js +2 -5
- package/dist/enums/PocketItemType.js +2 -5
- package/dist/enums/RockAltType.js +2 -5
- package/dist/enums/SaveDataKey.js +2 -5
- package/dist/enums/SerializationType.js +2 -5
- package/dist/enums/SlotDestructionType.js +2 -5
- package/dist/enums/private/GridEntityTypeCustom.js +1 -4
- package/dist/enums/private/SerializationBrand.js +2 -5
- package/dist/enums/private/StageTravelState.js +2 -5
- package/dist/enums/private/TrapdoorAnimation.js +2 -5
- package/dist/enums/private/UIStreakAnimation.js +2 -5
- package/dist/features.js +138 -141
- package/dist/functions/ambush.js +9 -12
- package/dist/functions/array.js +45 -76
- package/dist/functions/arrayLua.js +7 -16
- package/dist/functions/benchmark.js +4 -7
- package/dist/functions/bitSet128.js +19 -26
- package/dist/functions/bitwise.js +14 -23
- package/dist/functions/bombs.js +1 -4
- package/dist/functions/bosses.js +68 -85
- package/dist/functions/cards.js +44 -62
- package/dist/functions/challenges.js +28 -39
- package/dist/functions/characters.js +68 -87
- package/dist/functions/charge.js +41 -52
- package/dist/functions/chargeBar.js +2 -6
- package/dist/functions/collectibleTag.js +9 -13
- package/dist/functions/collectibles.js +133 -172
- package/dist/functions/color.js +29 -38
- package/dist/functions/console.js +4 -8
- package/dist/functions/curses.js +6 -10
- package/dist/functions/debugFunctions.js +7 -14
- package/dist/functions/decorators.js +13 -19
- package/dist/functions/deepCopy.js +96 -99
- package/dist/functions/deepCopyTests.js +56 -59
- package/dist/functions/dimensions.js +10 -14
- package/dist/functions/direction.js +22 -30
- package/dist/functions/doors.js +104 -154
- package/dist/functions/easing.js +30 -62
- package/dist/functions/effects.js +6 -10
- package/dist/functions/emptyRoom.js +30 -34
- package/dist/functions/entities.js +88 -115
- package/dist/functions/entitiesSpecific.js +83 -125
- package/dist/functions/entityTypes.js +3 -6
- package/dist/functions/enums.js +27 -41
- package/dist/functions/external.js +4 -8
- package/dist/functions/familiars.js +17 -25
- package/dist/functions/flag.js +10 -19
- package/dist/functions/frames.js +31 -51
- package/dist/functions/globals.js +26 -66
- package/dist/functions/gridEntities.js +231 -269
- package/dist/functions/gridEntitiesSpecific.js +86 -126
- package/dist/functions/gridIndex.js +8 -11
- package/dist/functions/hash.js +1 -4
- package/dist/functions/hex.js +7 -11
- package/dist/functions/input.js +65 -88
- package/dist/functions/isaacAPIClass.js +28 -53
- package/dist/functions/itemPool.js +39 -48
- package/dist/functions/jsonHelpers.js +5 -42
- package/dist/functions/jsonRoom.js +39 -46
- package/dist/functions/kColor.js +30 -39
- package/dist/functions/language.js +3 -6
- package/dist/functions/level.js +20 -26
- package/dist/functions/levelGrid.js +81 -108
- package/dist/functions/log.js +6 -12
- package/dist/functions/logEntities.js +49 -59
- package/dist/functions/logMisc.js +183 -214
- package/dist/functions/map.js +10 -20
- package/dist/functions/math.js +16 -31
- package/dist/functions/merge.js +48 -51
- package/dist/functions/mergeTests.js +34 -37
- package/dist/functions/minimap.js +34 -46
- package/dist/functions/modFeatures.js +1 -4
- package/dist/functions/newArray.js +5 -8
- package/dist/functions/nextStage.js +63 -67
- package/dist/functions/npcDataStructures.js +9 -20
- package/dist/functions/npcs.js +37 -45
- package/dist/functions/pickupVariants.js +26 -39
- package/dist/functions/pickups.js +43 -59
- package/dist/functions/pickupsSpecific.js +76 -118
- package/dist/functions/pills.js +52 -72
- package/dist/functions/playerCenter.js +13 -16
- package/dist/functions/playerCollectibles.js +59 -79
- package/dist/functions/playerDataStructures.js +18 -29
- package/dist/functions/playerEffects.js +12 -19
- package/dist/functions/playerHealth.js +91 -113
- package/dist/functions/playerIndex.js +22 -33
- package/dist/functions/playerTrinkets.js +31 -43
- package/dist/functions/players.js +87 -126
- package/dist/functions/pocketItems.js +33 -43
- package/dist/functions/positionVelocity.js +23 -32
- package/dist/functions/pressurePlate.js +7 -10
- package/dist/functions/projectiles.js +11 -15
- package/dist/functions/random.js +8 -13
- package/dist/functions/readOnly.js +3 -8
- package/dist/functions/render.js +7 -12
- package/dist/functions/revive.js +38 -45
- package/dist/functions/rng.js +31 -44
- package/dist/functions/rockAlt.js +18 -22
- package/dist/functions/roomData.js +24 -40
- package/dist/functions/roomGrid.js +17 -25
- package/dist/functions/roomShape.js +39 -55
- package/dist/functions/roomShapeWalls.js +67 -71
- package/dist/functions/roomTransition.js +13 -17
- package/dist/functions/rooms.js +181 -244
- package/dist/functions/run.js +29 -39
- package/dist/functions/seeds.js +6 -10
- package/dist/functions/serialization.js +27 -34
- package/dist/functions/set.js +24 -40
- package/dist/functions/slots.js +18 -22
- package/dist/functions/sort.js +9 -15
- package/dist/functions/sound.js +12 -16
- package/dist/functions/spawnCollectible.js +21 -26
- package/dist/functions/sprites.js +16 -24
- package/dist/functions/stage.js +122 -164
- package/dist/functions/stats.js +37 -43
- package/dist/functions/storyBosses.js +36 -40
- package/dist/functions/string.js +19 -33
- package/dist/functions/table.js +21 -31
- package/dist/functions/tears.js +6 -14
- package/dist/functions/transformations.js +35 -42
- package/dist/functions/trinketGive.js +29 -36
- package/dist/functions/trinkets.js +45 -60
- package/dist/functions/tstlClass.js +11 -20
- package/dist/functions/types.js +22 -46
- package/dist/functions/ui.js +25 -40
- package/dist/functions/utils.js +22 -36
- package/dist/functions/vector.js +33 -46
- package/dist/functions/versusScreen.js +12 -18
- package/dist/functions/weighted.js +8 -12
- package/dist/index.js +150 -166
- package/dist/indexLua.js +151 -167
- package/dist/interfaces/ChargeBarSprites.js +1 -2
- package/dist/interfaces/Corner.js +1 -2
- package/dist/interfaces/CustomStageTSConfig.js +1 -2
- package/dist/interfaces/GridEntityCustomData.js +1 -2
- package/dist/interfaces/JSONRoomsFile.js +1 -2
- package/dist/interfaces/PlayerHealth.js +1 -2
- package/dist/interfaces/PlayerStats.js +2 -4
- package/dist/interfaces/PocketItemDescription.js +1 -2
- package/dist/interfaces/RoomDescription.js +1 -2
- package/dist/interfaces/SaveData.js +1 -2
- package/dist/interfaces/StageHistoryEntry.js +1 -2
- package/dist/interfaces/TSTLClassMetatable.js +1 -2
- package/dist/interfaces/TrinketSituation.js +1 -2
- package/dist/interfaces/private/AddCallbackParametersCustom.js +2 -4
- package/dist/interfaces/private/CustomStage.js +1 -2
- package/dist/interfaces/private/CustomTrapdoorDescription.js +1 -2
- package/dist/interfaces/private/ModUpgradedInterface.js +1 -2
- package/dist/isaacscript-common.lua +1 -1
- package/dist/maps/PHDPillConversionsMap.js +19 -22
- package/dist/maps/cardNameToTypeMap.js +205 -208
- package/dist/maps/characterNameToTypeMap.js +85 -88
- package/dist/maps/collectibleNameToTypeMap.js +5 -8
- package/dist/maps/defaultPlayerStatMap.js +10 -13
- package/dist/maps/entityTypeVariantToBossIDMap.js +3 -6
- package/dist/maps/falsePHDPillConversionsMap.js +33 -36
- package/dist/maps/gridEntityTypeToBrokenStateMap.js +15 -18
- package/dist/maps/gridEntityXMLMap.js +52 -55
- package/dist/maps/itemPoolTypeToItemPoolName.js +33 -36
- package/dist/maps/keyboardToStringMap.js +66 -69
- package/dist/maps/pillNameToEffectMap.js +83 -86
- package/dist/maps/roomNameToTypeMap.js +38 -41
- package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +9 -12
- package/dist/maps/transformationNameToPlayerFormMap.js +30 -33
- package/dist/maps/trinketNameToTypeMap.js +5 -8
- package/dist/objects/LRoomShapeToRectangles.js +22 -25
- package/dist/objects/backdropTypeToRockAltType.js +65 -68
- package/dist/objects/batteryNames.js +8 -11
- package/dist/objects/bombNames.js +11 -14
- package/dist/objects/bossIDToEntityTypeVariant.js +116 -119
- package/dist/objects/bossNamePNGFileNames.js +104 -107
- package/dist/objects/bossNames.js +105 -108
- package/dist/objects/bossPortraitPNGFileNames.js +104 -107
- package/dist/objects/cardDescriptions.js +101 -104
- package/dist/objects/cardNames.js +101 -104
- package/dist/objects/challengeBosses.js +49 -52
- package/dist/objects/challengeCharacters.js +49 -52
- package/dist/objects/challengeCollectibleTypes.js +160 -163
- package/dist/objects/challengeNames.js +49 -52
- package/dist/objects/challengeTrinketType.js +48 -51
- package/dist/objects/characterDamageMultipliers.js +44 -47
- package/dist/objects/characterNames.js +44 -47
- package/dist/objects/characterSpritePNGFileNames.js +44 -47
- package/dist/objects/characterStartingCollectibleTypes.js +49 -52
- package/dist/objects/characterStartingTrinketTypes.js +44 -47
- package/dist/objects/chestNames.js +15 -18
- package/dist/objects/coinNames.js +11 -14
- package/dist/objects/coinSubTypeToValue.js +11 -14
- package/dist/objects/collectibleDescriptions.js +725 -728
- package/dist/objects/collectibleNames.js +725 -728
- package/dist/objects/colors.js +1 -4
- package/dist/objects/directionNames.js +7 -10
- package/dist/objects/directionToDegrees.js +7 -10
- package/dist/objects/directionToMoveAction.js +7 -10
- package/dist/objects/directionToShootAction.js +7 -10
- package/dist/objects/directionToVector.js +9 -12
- package/dist/objects/doorSlotFlagToDoorSlot.js +11 -14
- package/dist/objects/doorSlotToDirection.js +11 -14
- package/dist/objects/doorSlotToDoorSlotFlag.js +11 -14
- package/dist/objects/gridEntityTypeToANM2Name.js +30 -33
- package/dist/objects/heartNames.js +16 -19
- package/dist/objects/isaacAPIClassTypeToBrand.js +8 -11
- package/dist/objects/isaacAPIClassTypeToFunctions.js +37 -40
- package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +9 -45
- package/dist/objects/kColors.js +1 -4
- package/dist/objects/keyNames.js +8 -11
- package/dist/objects/languageNames.js +9 -12
- package/dist/objects/oppositeDoorSlots.js +11 -14
- package/dist/objects/pillEffectClasses.js +53 -56
- package/dist/objects/pillEffectNames.js +53 -56
- package/dist/objects/pillEffectTypeToPillEffects.js +11 -14
- package/dist/objects/pillEffectTypes.js +53 -56
- package/dist/objects/playerNamePNGFileNames.js +44 -47
- package/dist/objects/playerPortraitPNGFileNames.js +44 -47
- package/dist/objects/roomShapeBounds.js +23 -26
- package/dist/objects/roomShapeCorners.js +128 -131
- package/dist/objects/roomShapeLayoutSizes.js +23 -26
- package/dist/objects/roomShapeToBottomRightPosition.js +17 -20
- package/dist/objects/roomShapeToDoorSlotCoordinates.js +78 -81
- package/dist/objects/roomShapeToDoorSlots.js +48 -51
- package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +82 -85
- package/dist/objects/roomShapeToGridWidth.js +14 -17
- package/dist/objects/roomShapeToTopLeftPosition.js +18 -21
- package/dist/objects/roomShapeVolumes.js +21 -24
- package/dist/objects/roomTypeNames.js +32 -35
- package/dist/objects/roomTypeSpecialGotoPrefixes.js +32 -35
- package/dist/objects/sackNames.js +6 -9
- package/dist/objects/slotNames.js +21 -24
- package/dist/objects/stageIDNames.js +33 -36
- package/dist/objects/stageToMusic.js +69 -72
- package/dist/objects/stageToStageID.js +90 -93
- package/dist/objects/stageTypeSuffixes.js +8 -11
- package/dist/objects/transformationNames.js +16 -19
- package/dist/objects/trinketDescriptions.js +192 -195
- package/dist/objects/trinketNames.js +192 -195
- package/dist/objects/versusScreenBackgroundColors.js +39 -42
- package/dist/objects/versusScreenDirtSpotColors.js +39 -42
- package/dist/patchErrorFunctions.js +4 -7
- package/dist/serialization.js +6 -9
- package/dist/sets/LRoomShapesSet.js +7 -10
- package/dist/sets/bigRoomShapesSet.js +10 -13
- package/dist/sets/bossSets.js +261 -264
- package/dist/sets/charactersThatStartWithAnActiveItemSet.js +14 -17
- package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +5 -8
- package/dist/sets/charactersWithFreeDevilDealsSet.js +3 -6
- package/dist/sets/charactersWithNoRedHeartsSet.js +11 -14
- package/dist/sets/charactersWithNoSoulHeartsSet.js +8 -11
- package/dist/sets/consoleCommandsSet.js +2 -5
- package/dist/sets/entitiesWithArmorSet.js +44 -47
- package/dist/sets/familiarsThatShootPlayerTearsSet.js +11 -14
- package/dist/sets/itemConfigCardTypesForCards.js +7 -10
- package/dist/sets/lostStyleCharactersSet.js +8 -11
- package/dist/sets/mineShaftRoomSubTypesSet.js +8 -11
- package/dist/sets/narrowRoomShapesSet.js +7 -10
- package/dist/sets/poopGridEntityXMLTypesSet.js +12 -15
- package/dist/sets/redHeartSubTypesSet.js +6 -9
- package/dist/sets/repentanceBossIDsSet.js +26 -29
- package/dist/sets/sinEntityTypesSet.js +10 -13
- package/dist/sets/singleUseActiveCollectibleTypesSet.js +11 -14
- package/dist/shaderCrashFix.js +4 -7
- package/dist/shouldFire.js +28 -58
- package/dist/types/AddSubtract.js +1 -2
- package/dist/types/AllButFirst.js +1 -2
- package/dist/types/AllButLast.js +1 -2
- package/dist/types/AnyClass.js +1 -2
- package/dist/types/AnyEntity.js +1 -2
- package/dist/types/AnyFunction.js +1 -2
- package/dist/types/AnyGridEntity.js +1 -2
- package/dist/types/CompositionTypeSatisfiesEnum.js +1 -2
- package/dist/types/ConversionHeartSubType.js +1 -2
- package/dist/types/Decrement.js +1 -2
- package/dist/types/ERange.js +1 -2
- package/dist/types/EntityID.js +1 -2
- package/dist/types/FunctionTuple.js +1 -2
- package/dist/types/GridEntityID.js +1 -2
- package/dist/types/HasFunction.js +1 -2
- package/dist/types/IRange.js +1 -2
- package/dist/types/Immutable.js +1 -2
- package/dist/types/Increment.js +1 -2
- package/dist/types/LowercaseKeys.js +1 -2
- package/dist/types/NaturalNumbersLessThan.js +1 -2
- package/dist/types/NaturalNumbersLessThanOrEqualTo.js +1 -2
- package/dist/types/ObjectValues.js +1 -2
- package/dist/types/PickingUpItem.js +15 -22
- package/dist/types/PickupIndex.js +1 -2
- package/dist/types/PlayerIndex.js +1 -2
- package/dist/types/PossibleStatType.js +1 -2
- package/dist/types/PublicInterface.js +1 -2
- package/dist/types/ReadonlyMap.js +1 -4
- package/dist/types/ReadonlyRecord.js +1 -2
- package/dist/types/ReadonlySet.js +1 -4
- package/dist/types/StartsWithLowercase.js +1 -2
- package/dist/types/StartsWithUppercase.js +1 -2
- package/dist/types/TSTLClass.js +1 -2
- package/dist/types/Tuple.js +1 -2
- package/dist/types/TupleKeys.js +1 -2
- package/dist/types/TupleToIntersection.js +1 -2
- package/dist/types/TupleToUnion.js +1 -2
- package/dist/types/TupleWithLengthBetween.js +1 -2
- package/dist/types/TupleWithMaxLength.js +1 -2
- package/dist/types/UnionToIntersection.js +1 -2
- package/dist/types/UppercaseKeys.js +1 -2
- package/dist/types/WeightedArray.js +1 -2
- package/dist/types/WidenLiteral.js +1 -2
- package/dist/types/Writable.js +1 -2
- package/dist/types/private/CallbackTuple.js +1 -2
- package/dist/types/private/ModUpgradedWithFeatures.js +1 -2
- package/package.json +3 -3
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const constants_1 = require("../../../../core/constants");
|
|
10
|
-
const UIStreakAnimation_1 = require("../../../../enums/private/UIStreakAnimation");
|
|
11
|
-
const frames_1 = require("../../../../functions/frames");
|
|
12
|
-
const ui_1 = require("../../../../functions/ui");
|
|
13
|
-
const v_1 = require("./v");
|
|
1
|
+
import { ButtonAction } from "isaac-typescript-definitions";
|
|
2
|
+
import { CONTROLLER_INDEX_VALUES } from "../../../../cachedEnumValues";
|
|
3
|
+
import { fonts, game } from "../../../../core/cachedClasses";
|
|
4
|
+
import { KColorDefault, VectorOne } from "../../../../core/constants";
|
|
5
|
+
import { UIStreakAnimation } from "../../../../enums/private/UIStreakAnimation";
|
|
6
|
+
import { getElapsedGameFramesSince, getElapsedRenderFramesSince, } from "../../../../functions/frames";
|
|
7
|
+
import { getScreenBottomCenterPos, getScreenTopCenterPos, } from "../../../../functions/ui";
|
|
8
|
+
import { v } from "./v";
|
|
14
9
|
/** Corresponds to "resources/gfx/ui/ui_streak.anm2". */
|
|
15
10
|
const UI_STREAK_ANIMATION_END_FRAMES = {
|
|
16
|
-
[
|
|
17
|
-
[
|
|
18
|
-
[
|
|
11
|
+
[UIStreakAnimation.NONE]: 0,
|
|
12
|
+
[UIStreakAnimation.TEXT]: 69,
|
|
13
|
+
[UIStreakAnimation.TEXT_STAY]: 1,
|
|
19
14
|
};
|
|
20
15
|
/** This must match the name of the shader in "shaders.xml". */
|
|
21
16
|
const EMPTY_SHADER_NAME = "IsaacScript-RenderAboveHUD";
|
|
@@ -72,7 +67,7 @@ const TEXT_OUT_SCALES = [
|
|
|
72
67
|
Vector(3, 0.2),
|
|
73
68
|
];
|
|
74
69
|
// ModCallback.POST_RENDER (2)
|
|
75
|
-
function streakTextPostRender() {
|
|
70
|
+
export function streakTextPostRender() {
|
|
76
71
|
// The top streak only plays when the player arrives on the floor (or continues a game from the
|
|
77
72
|
// main menu.)
|
|
78
73
|
checkEndTopStreakText();
|
|
@@ -82,30 +77,30 @@ function streakTextPostRender() {
|
|
|
82
77
|
checkEndBottomStreakText();
|
|
83
78
|
}
|
|
84
79
|
function checkEndTopStreakText() {
|
|
85
|
-
if (
|
|
86
|
-
||
|
|
80
|
+
if (v.run.topStreakTextStartedRenderFrame === null
|
|
81
|
+
|| v.run.topStreakText.animation !== UIStreakAnimation.TEXT_STAY) {
|
|
87
82
|
return;
|
|
88
83
|
}
|
|
89
|
-
const elapsedFrames =
|
|
84
|
+
const elapsedFrames = getElapsedRenderFramesSince(v.run.topStreakTextStartedRenderFrame);
|
|
90
85
|
if (elapsedFrames >= 115) {
|
|
91
|
-
|
|
86
|
+
v.run.topStreakText.animation = UIStreakAnimation.TEXT;
|
|
92
87
|
// We adjust by the frame backwards by an arbitrary amount to roughly align with the speed of
|
|
93
88
|
// the vanilla animation.
|
|
94
|
-
|
|
89
|
+
v.run.topStreakText.frame = TEXT_OUT_FRAME - 2;
|
|
95
90
|
}
|
|
96
91
|
}
|
|
97
92
|
function trackMapInputPressed() {
|
|
98
|
-
const gameFrameCount =
|
|
99
|
-
for (const controllerIndex of
|
|
100
|
-
const oldPushedMapFrame =
|
|
101
|
-
const isPushingMap = Input.IsActionPressed(
|
|
93
|
+
const gameFrameCount = game.GetFrameCount();
|
|
94
|
+
for (const controllerIndex of CONTROLLER_INDEX_VALUES) {
|
|
95
|
+
const oldPushedMapFrame = v.run.controllerIndexPushingMapRenderFrame.get(controllerIndex);
|
|
96
|
+
const isPushingMap = Input.IsActionPressed(ButtonAction.MAP, controllerIndex);
|
|
102
97
|
if (isPushingMap) {
|
|
103
98
|
if (oldPushedMapFrame === undefined) {
|
|
104
|
-
|
|
99
|
+
v.run.controllerIndexPushingMapRenderFrame.set(controllerIndex, gameFrameCount);
|
|
105
100
|
}
|
|
106
101
|
}
|
|
107
102
|
else {
|
|
108
|
-
|
|
103
|
+
v.run.controllerIndexPushingMapRenderFrame.delete(controllerIndex);
|
|
109
104
|
}
|
|
110
105
|
}
|
|
111
106
|
}
|
|
@@ -114,20 +109,20 @@ function trackMapInputPressed() {
|
|
|
114
109
|
* slides in from the left.
|
|
115
110
|
*/
|
|
116
111
|
function checkStartBottomStreakText() {
|
|
117
|
-
if (
|
|
112
|
+
if (v.run.bottomStreakText.animation !== UIStreakAnimation.NONE) {
|
|
118
113
|
return;
|
|
119
114
|
}
|
|
120
115
|
const pushedMapFrames = [
|
|
121
|
-
...
|
|
116
|
+
...v.run.controllerIndexPushingMapRenderFrame.values(),
|
|
122
117
|
];
|
|
123
118
|
if (pushedMapFrames.length === 0) {
|
|
124
119
|
return;
|
|
125
120
|
}
|
|
126
121
|
const earliestFrame = Math.min(...pushedMapFrames);
|
|
127
|
-
const elapsedFrames =
|
|
122
|
+
const elapsedFrames = getElapsedGameFramesSince(earliestFrame);
|
|
128
123
|
if (elapsedFrames >= NUM_RENDER_FRAMES_MAP_HELD_BEFORE_STREAK_TEXT) {
|
|
129
|
-
|
|
130
|
-
|
|
124
|
+
v.run.bottomStreakText.animation = UIStreakAnimation.TEXT;
|
|
125
|
+
v.run.bottomStreakText.frame = 0;
|
|
131
126
|
}
|
|
132
127
|
}
|
|
133
128
|
/**
|
|
@@ -135,36 +130,36 @@ function checkStartBottomStreakText() {
|
|
|
135
130
|
* right.
|
|
136
131
|
*/
|
|
137
132
|
function checkEndBottomStreakText() {
|
|
138
|
-
if (
|
|
133
|
+
if (v.run.bottomStreakText.animation !== UIStreakAnimation.TEXT_STAY) {
|
|
139
134
|
return;
|
|
140
135
|
}
|
|
141
136
|
const pushedMapFrames = [
|
|
142
|
-
...
|
|
137
|
+
...v.run.controllerIndexPushingMapRenderFrame.values(),
|
|
143
138
|
];
|
|
144
139
|
if (pushedMapFrames.length === 0) {
|
|
145
|
-
|
|
140
|
+
v.run.bottomStreakText.animation = UIStreakAnimation.TEXT;
|
|
146
141
|
// We adjust by the frame backwards by an arbitrary amount to roughly align with the speed of
|
|
147
142
|
// the vanilla animation.
|
|
148
|
-
|
|
143
|
+
v.run.bottomStreakText.frame = TEXT_OUT_FRAME - 2;
|
|
149
144
|
}
|
|
150
145
|
}
|
|
151
146
|
// ModCallback.GET_SHADER_PARAMS (22)
|
|
152
|
-
function streakTextGetShaderParams(customStage, shaderName) {
|
|
147
|
+
export function streakTextGetShaderParams(customStage, shaderName) {
|
|
153
148
|
if (shaderName !== EMPTY_SHADER_NAME) {
|
|
154
149
|
return;
|
|
155
150
|
}
|
|
156
|
-
const topCenterPos =
|
|
151
|
+
const topCenterPos = getScreenTopCenterPos();
|
|
157
152
|
const topStreakPosition = topCenterPos.add(STREAK_SPRITE_TOP_OFFSET);
|
|
158
|
-
renderStreakText(customStage,
|
|
159
|
-
const bottomCenterPos =
|
|
153
|
+
renderStreakText(customStage, v.run.topStreakText, topStreakPosition);
|
|
154
|
+
const bottomCenterPos = getScreenBottomCenterPos();
|
|
160
155
|
const bottomStreakPosition = bottomCenterPos.add(STREAK_SPRITE_BOTTOM_OFFSET);
|
|
161
|
-
renderStreakText(customStage,
|
|
156
|
+
renderStreakText(customStage, v.run.bottomStreakText, bottomStreakPosition);
|
|
162
157
|
}
|
|
163
158
|
function renderStreakText(customStage, streakText, position) {
|
|
164
|
-
if (streakText.animation ===
|
|
159
|
+
if (streakText.animation === UIStreakAnimation.NONE) {
|
|
165
160
|
return;
|
|
166
161
|
}
|
|
167
|
-
if (streakText.animation !==
|
|
162
|
+
if (streakText.animation !== UIStreakAnimation.TEXT_STAY) {
|
|
168
163
|
const { pauseFrame } = streakText;
|
|
169
164
|
streakText.pauseFrame = !streakText.pauseFrame;
|
|
170
165
|
if (!pauseFrame) {
|
|
@@ -173,49 +168,49 @@ function renderStreakText(customStage, streakText, position) {
|
|
|
173
168
|
}
|
|
174
169
|
const endFrame = UI_STREAK_ANIMATION_END_FRAMES[streakText.animation];
|
|
175
170
|
if (streakText.frame > endFrame) {
|
|
176
|
-
streakText.animation =
|
|
171
|
+
streakText.animation = UIStreakAnimation.NONE;
|
|
177
172
|
streakText.frame = 0;
|
|
178
173
|
return;
|
|
179
174
|
}
|
|
180
|
-
if (streakText.animation ===
|
|
175
|
+
if (streakText.animation === UIStreakAnimation.TEXT
|
|
181
176
|
&& streakText.frame === TEXT_STAY_FRAME) {
|
|
182
|
-
streakText.animation =
|
|
177
|
+
streakText.animation = UIStreakAnimation.TEXT_STAY;
|
|
183
178
|
streakText.frame = 0;
|
|
184
179
|
}
|
|
185
|
-
const isPaused =
|
|
180
|
+
const isPaused = game.IsPaused();
|
|
186
181
|
if (isPaused) {
|
|
187
182
|
return;
|
|
188
183
|
}
|
|
189
|
-
const font =
|
|
184
|
+
const font = fonts.upheaval;
|
|
190
185
|
const { name } = customStage;
|
|
191
|
-
const numberSuffix =
|
|
186
|
+
const numberSuffix = v.run.firstFloor ? "I" : "II";
|
|
192
187
|
const nameWithNumberSuffix = `${name} ${numberSuffix}`;
|
|
193
188
|
const length = font.GetStringWidthUTF8(nameWithNumberSuffix);
|
|
194
189
|
const centeredX = position.X - length / 2;
|
|
195
190
|
let adjustment = 0;
|
|
196
|
-
let scale =
|
|
197
|
-
if (streakText.animation ===
|
|
191
|
+
let scale = VectorOne;
|
|
192
|
+
if (streakText.animation === UIStreakAnimation.TEXT) {
|
|
198
193
|
if (streakText.frame < TEXT_STAY_FRAME) {
|
|
199
194
|
adjustment = TEXT_IN_ADJUSTMENTS[streakText.frame] ?? 0;
|
|
200
|
-
scale = TEXT_IN_SCALES[streakText.frame] ??
|
|
195
|
+
scale = TEXT_IN_SCALES[streakText.frame] ?? VectorOne;
|
|
201
196
|
}
|
|
202
197
|
else {
|
|
203
198
|
const adjustedFrame = streakText.frame - TEXT_OUT_FRAME;
|
|
204
199
|
adjustment = TEXT_OUT_ADJUSTMENTS[adjustedFrame] ?? 0;
|
|
205
|
-
scale = TEXT_OUT_SCALES[adjustedFrame] ??
|
|
200
|
+
scale = TEXT_OUT_SCALES[adjustedFrame] ?? VectorOne;
|
|
206
201
|
}
|
|
207
202
|
}
|
|
208
203
|
const adjustedX = centeredX + adjustment;
|
|
209
204
|
const adjustedY = position.Y + STREAK_TEXT_BOTTOM_Y_OFFSET;
|
|
210
|
-
font.DrawStringScaled(nameWithNumberSuffix, adjustedX, adjustedY, scale.X, scale.Y,
|
|
205
|
+
font.DrawStringScaled(nameWithNumberSuffix, adjustedX, adjustedY, scale.X, scale.Y, KColorDefault);
|
|
211
206
|
}
|
|
212
|
-
function topStreakTextStart() {
|
|
213
|
-
const level =
|
|
207
|
+
export function topStreakTextStart() {
|
|
208
|
+
const level = game.GetLevel();
|
|
214
209
|
const renderFrameCount = Isaac.GetFrameCount();
|
|
215
210
|
// Show the vanilla streak text, which will have a blank name because of the -1 floor.
|
|
216
211
|
level.ShowName(false);
|
|
217
212
|
// Initiate the animation for the custom text.
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
213
|
+
v.run.topStreakText.animation = UIStreakAnimation.TEXT;
|
|
214
|
+
v.run.topStreakText.frame = 0;
|
|
215
|
+
v.run.topStreakTextStartedRenderFrame = renderFrameCount;
|
|
221
216
|
}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
exports.getRandomBossRoomFromPool = getRandomBossRoomFromPool;
|
|
5
|
-
const array_1 = require("../../../../functions/array");
|
|
6
|
-
const log_1 = require("../../../../functions/log");
|
|
7
|
-
const random_1 = require("../../../../functions/random");
|
|
1
|
+
import { sumArray } from "../../../../functions/array";
|
|
2
|
+
import { log } from "../../../../functions/log";
|
|
3
|
+
import { getRandomFloat } from "../../../../functions/random";
|
|
8
4
|
/**
|
|
9
5
|
* Helper function to get a random custom stage room from an array of custom stage rooms.
|
|
10
6
|
*
|
|
@@ -12,20 +8,20 @@ const random_1 = require("../../../../functions/random");
|
|
|
12
8
|
* properly account for each room weight using the algorithm from:
|
|
13
9
|
* https://stackoverflow.com/questions/1761626/weighted-random-numbers
|
|
14
10
|
*/
|
|
15
|
-
function getRandomCustomStageRoom(roomsMetadata, seedOrRNG, verbose = false) {
|
|
11
|
+
export function getRandomCustomStageRoom(roomsMetadata, seedOrRNG, verbose = false) {
|
|
16
12
|
const totalWeight = getTotalWeightOfCustomStageRooms(roomsMetadata);
|
|
17
13
|
if (verbose) {
|
|
18
|
-
|
|
14
|
+
log(`Total weight of the custom stage rooms provided: ${totalWeight}`);
|
|
19
15
|
}
|
|
20
|
-
const chosenWeight =
|
|
16
|
+
const chosenWeight = getRandomFloat(0, totalWeight, seedOrRNG);
|
|
21
17
|
if (verbose) {
|
|
22
|
-
|
|
18
|
+
log(`Randomly chose weight for custom stage room: ${chosenWeight}`);
|
|
23
19
|
}
|
|
24
20
|
return getCustomStageRoomWithChosenWeight(roomsMetadata, chosenWeight);
|
|
25
21
|
}
|
|
26
22
|
function getTotalWeightOfCustomStageRooms(roomsMetadata) {
|
|
27
23
|
const weights = roomsMetadata.map((roomMetadata) => roomMetadata.weight);
|
|
28
|
-
return
|
|
24
|
+
return sumArray(weights);
|
|
29
25
|
}
|
|
30
26
|
function getCustomStageRoomWithChosenWeight(roomsMetadata, chosenWeight) {
|
|
31
27
|
for (const roomMetadata of roomsMetadata) {
|
|
@@ -36,14 +32,14 @@ function getCustomStageRoomWithChosenWeight(roomsMetadata, chosenWeight) {
|
|
|
36
32
|
}
|
|
37
33
|
error(`Failed to get a custom stage room with chosen weight: ${chosenWeight}`);
|
|
38
34
|
}
|
|
39
|
-
function getRandomBossRoomFromPool(roomsMetadata, bossPool, seedOrRNG, verbose = false) {
|
|
35
|
+
export function getRandomBossRoomFromPool(roomsMetadata, bossPool, seedOrRNG, verbose = false) {
|
|
40
36
|
const totalWeight = getTotalWeightOfBossPool(bossPool);
|
|
41
37
|
if (verbose) {
|
|
42
|
-
|
|
38
|
+
log(`Total weight of the custom stage boss pool provided: ${totalWeight}`);
|
|
43
39
|
}
|
|
44
|
-
const chosenWeight =
|
|
40
|
+
const chosenWeight = getRandomFloat(0, totalWeight, seedOrRNG);
|
|
45
41
|
if (verbose) {
|
|
46
|
-
|
|
42
|
+
log(`Randomly chose weight for custom stage boss pool: ${chosenWeight}`);
|
|
47
43
|
}
|
|
48
44
|
const bossEntry = getBossEntryWithChosenWeight(bossPool, chosenWeight);
|
|
49
45
|
const roomsMetadataForBoss = roomsMetadata.filter((roomMetadata) => roomMetadata.subType === bossEntry.subType);
|
|
@@ -51,7 +47,7 @@ function getRandomBossRoomFromPool(roomsMetadata, bossPool, seedOrRNG, verbose =
|
|
|
51
47
|
}
|
|
52
48
|
function getTotalWeightOfBossPool(bossPool) {
|
|
53
49
|
const weights = bossPool.map((bossEntry) => bossEntry.weight);
|
|
54
|
-
return
|
|
50
|
+
return sumArray(weights);
|
|
55
51
|
}
|
|
56
52
|
function getBossEntryWithChosenWeight(bossPool, chosenWeight) {
|
|
57
53
|
for (const bossEntry of bossPool) {
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.v = void 0;
|
|
4
|
-
const UIStreakAnimation_1 = require("../../../../enums/private/UIStreakAnimation");
|
|
1
|
+
import { UIStreakAnimation } from "../../../../enums/private/UIStreakAnimation";
|
|
5
2
|
// This is registered in "CustomStages.ts".
|
|
6
3
|
// eslint-disable-next-line isaacscript/require-v-registration
|
|
7
|
-
|
|
4
|
+
export const v = {
|
|
8
5
|
run: {
|
|
9
6
|
currentCustomStage: null,
|
|
10
7
|
/** Whether we are on e.g. Caves 1 or Caves 2. */
|
|
@@ -14,12 +11,12 @@ exports.v = {
|
|
|
14
11
|
controllerIndexPushingMapRenderFrame: new Map(),
|
|
15
12
|
topStreakTextStartedRenderFrame: null,
|
|
16
13
|
topStreakText: {
|
|
17
|
-
animation:
|
|
14
|
+
animation: UIStreakAnimation.NONE,
|
|
18
15
|
frame: 0,
|
|
19
16
|
pauseFrame: false,
|
|
20
17
|
},
|
|
21
18
|
bottomStreakText: {
|
|
22
|
-
animation:
|
|
19
|
+
animation: UIStreakAnimation.NONE,
|
|
23
20
|
frame: 0,
|
|
24
21
|
pauseFrame: false,
|
|
25
22
|
},
|
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// This emulates the vanilla versus screen that shows up when you enter a boss room.
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
const constants_1 = require("./constants");
|
|
18
|
-
const v_1 = require("./v");
|
|
19
|
-
const DEFAULT_STAGE_ID = isaac_typescript_definitions_1.StageID.BASEMENT;
|
|
2
|
+
import { BossID, PlayerType, RoomType, SoundEffect, StageID, } from "isaac-typescript-definitions";
|
|
3
|
+
import { game, sfxManager } from "../../../../core/cachedClasses";
|
|
4
|
+
import { arrayRemove } from "../../../../functions/array";
|
|
5
|
+
import { getBosses } from "../../../../functions/bosses";
|
|
6
|
+
import { getRoomSubType } from "../../../../functions/roomData";
|
|
7
|
+
import { removeCharactersBefore } from "../../../../functions/string";
|
|
8
|
+
import { getScreenCenterPos } from "../../../../functions/ui";
|
|
9
|
+
import { eRange } from "../../../../functions/utils";
|
|
10
|
+
import { getBossNamePNGFilePath, getBossPortraitPNGFilePath, getCharacterNamePNGFilePath, getCharacterPortraitPNGFilePath, } from "../../../../functions/versusScreen";
|
|
11
|
+
import { VERSUS_SCREEN_BACKGROUND_COLORS } from "../../../../objects/versusScreenBackgroundColors";
|
|
12
|
+
import { VERSUS_SCREEN_DIRT_SPOT_COLORS } from "../../../../objects/versusScreenDirtSpotColors";
|
|
13
|
+
import { CUSTOM_FLOOR_STAGE, CUSTOM_FLOOR_STAGE_TYPE, CUSTOM_STAGE_FEATURE_NAME, DEFAULT_BASE_STAGE, DEFAULT_BASE_STAGE_TYPE, ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH, } from "./constants";
|
|
14
|
+
import { v } from "./v";
|
|
15
|
+
const DEFAULT_STAGE_ID = StageID.BASEMENT;
|
|
20
16
|
const VERSUS_SCREEN_ANIMATION_NAME = "Scene";
|
|
21
17
|
/** The layers range from 0 to 13. */
|
|
22
18
|
const NUM_VERSUS_SCREEN_ANM2_LAYERS = 14;
|
|
@@ -46,7 +42,7 @@ var VersusScreenLayer;
|
|
|
46
42
|
VersusScreenLayer[VersusScreenLayer["BOSS_PORTRAIT_2_GROUND"] = 14] = "BOSS_PORTRAIT_2_GROUND";
|
|
47
43
|
})(VersusScreenLayer || (VersusScreenLayer = {}));
|
|
48
44
|
/** These are the non-special layers that we will render last. */
|
|
49
|
-
const OTHER_ANM2_LAYERS =
|
|
45
|
+
const OTHER_ANM2_LAYERS = arrayRemove(eRange(NUM_VERSUS_SCREEN_ANM2_LAYERS), VersusScreenLayer.BACKGROUND, VersusScreenLayer.BOSS_SPOT, VersusScreenLayer.PLAYER_SPOT, VersusScreenLayer.OVERLAY, VersusScreenLayer.PLAYER_PORTRAIT_ALT);
|
|
50
46
|
const VANILLA_VERSUS_PLAYBACK_SPEED = 0.5;
|
|
51
47
|
/** We lazy load the sprite when first needed. */
|
|
52
48
|
const versusScreenSprite = Sprite();
|
|
@@ -64,10 +60,10 @@ const versusScreenBackgroundSprite = Sprite();
|
|
|
64
60
|
* color it with the `Color` field.
|
|
65
61
|
*/
|
|
66
62
|
const versusScreenDirtSpotSprite = Sprite();
|
|
67
|
-
function playVersusScreenAnimation(customStage, disableAllSound, pause, runInNFrames) {
|
|
68
|
-
const room =
|
|
63
|
+
export function playVersusScreenAnimation(customStage, disableAllSound, pause, runInNFrames) {
|
|
64
|
+
const room = game.GetRoom();
|
|
69
65
|
const roomType = room.GetType();
|
|
70
|
-
if (roomType !==
|
|
66
|
+
if (roomType !== RoomType.BOSS) {
|
|
71
67
|
return;
|
|
72
68
|
}
|
|
73
69
|
const roomCleared = room.IsClear();
|
|
@@ -77,25 +73,25 @@ function playVersusScreenAnimation(customStage, disableAllSound, pause, runInNFr
|
|
|
77
73
|
if (willVanillaVersusScreenPlay()) {
|
|
78
74
|
// Since we are on an invalid stage, the versus screen will have a completely black background.
|
|
79
75
|
// Revert to using the background from the default stage.
|
|
80
|
-
const level =
|
|
81
|
-
level.SetStage(
|
|
76
|
+
const level = game.GetLevel();
|
|
77
|
+
level.SetStage(DEFAULT_BASE_STAGE, DEFAULT_BASE_STAGE_TYPE);
|
|
82
78
|
runInNFrames.runNextGameFrame(() => {
|
|
83
|
-
const futureLevel =
|
|
84
|
-
futureLevel.SetStage(
|
|
79
|
+
const futureLevel = game.GetLevel();
|
|
80
|
+
futureLevel.SetStage(CUSTOM_FLOOR_STAGE, CUSTOM_FLOOR_STAGE_TYPE);
|
|
85
81
|
});
|
|
86
82
|
return;
|
|
87
83
|
}
|
|
88
|
-
const hud =
|
|
89
|
-
|
|
84
|
+
const hud = game.GetHUD();
|
|
85
|
+
v.run.showingBossVersusScreen = true;
|
|
90
86
|
pause.pause();
|
|
91
87
|
hud.SetVisible(false);
|
|
92
|
-
disableAllSound.disableAllSound(
|
|
88
|
+
disableAllSound.disableAllSound(CUSTOM_STAGE_FEATURE_NAME);
|
|
93
89
|
// In vanilla, the "overlay.png" file has a white background. We must convert it to a PNG that
|
|
94
90
|
// uses a transparent background in order for the background behind it to be visible. We use the
|
|
95
91
|
// same "overlay.png" file as StageAPI uses for this purpose.
|
|
96
92
|
if (!versusScreenSprite.IsLoaded()) {
|
|
97
93
|
versusScreenSprite.Load("gfx/ui/boss/versusscreen.anm2", false);
|
|
98
|
-
versusScreenSprite.ReplaceSpritesheet(VersusScreenLayer.OVERLAY, `${
|
|
94
|
+
versusScreenSprite.ReplaceSpritesheet(VersusScreenLayer.OVERLAY, `${ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH}/overlay.png`);
|
|
99
95
|
}
|
|
100
96
|
// Player
|
|
101
97
|
{
|
|
@@ -106,16 +102,16 @@ function playVersusScreenAnimation(customStage, disableAllSound, pause, runInNFr
|
|
|
106
102
|
// Boss
|
|
107
103
|
{
|
|
108
104
|
const { namePNGPath, portraitPNGPath } = getBossPNGPaths(customStage);
|
|
109
|
-
const trimmedNamePNGPath =
|
|
105
|
+
const trimmedNamePNGPath = removeCharactersBefore(namePNGPath, "gfx/");
|
|
110
106
|
versusScreenSprite.ReplaceSpritesheet(VersusScreenLayer.BOSS_NAME, trimmedNamePNGPath);
|
|
111
|
-
const trimmedPortraitPNGPath =
|
|
107
|
+
const trimmedPortraitPNGPath = removeCharactersBefore(portraitPNGPath, "gfx/");
|
|
112
108
|
versusScreenSprite.ReplaceSpritesheet(VersusScreenLayer.BOSS_PORTRAIT, trimmedPortraitPNGPath);
|
|
113
109
|
}
|
|
114
110
|
versusScreenSprite.LoadGraphics();
|
|
115
111
|
if (!versusScreenBackgroundSprite.IsLoaded()) {
|
|
116
112
|
versusScreenBackgroundSprite.Load("gfx/ui/boss/versusscreen.anm2", true);
|
|
117
113
|
}
|
|
118
|
-
let backgroundColor =
|
|
114
|
+
let backgroundColor = VERSUS_SCREEN_BACKGROUND_COLORS[DEFAULT_STAGE_ID];
|
|
119
115
|
if (customStage.versusScreen?.backgroundColor !== undefined) {
|
|
120
116
|
const { r, g, b, a } = customStage.versusScreen.backgroundColor;
|
|
121
117
|
backgroundColor = Color(r, g, b, a);
|
|
@@ -124,7 +120,7 @@ function playVersusScreenAnimation(customStage, disableAllSound, pause, runInNFr
|
|
|
124
120
|
if (!versusScreenDirtSpotSprite.IsLoaded()) {
|
|
125
121
|
versusScreenDirtSpotSprite.Load("gfx/ui/boss/versusscreen.anm2", true);
|
|
126
122
|
}
|
|
127
|
-
let dirtSpotColor =
|
|
123
|
+
let dirtSpotColor = VERSUS_SCREEN_DIRT_SPOT_COLORS[DEFAULT_STAGE_ID];
|
|
128
124
|
if (customStage.versusScreen?.dirtSpotColor !== undefined) {
|
|
129
125
|
const { r, g, b } = customStage.versusScreen.dirtSpotColor;
|
|
130
126
|
dirtSpotColor = Color(r, g, b);
|
|
@@ -140,18 +136,18 @@ function playVersusScreenAnimation(customStage, disableAllSound, pause, runInNFr
|
|
|
140
136
|
}
|
|
141
137
|
}
|
|
142
138
|
function willVanillaVersusScreenPlay() {
|
|
143
|
-
const bosses =
|
|
139
|
+
const bosses = getBosses();
|
|
144
140
|
return bosses.some((boss) => boss.GetBossID() !== 0);
|
|
145
141
|
}
|
|
146
142
|
/** Use the character of the 0th player. */
|
|
147
143
|
function getPlayerPNGPaths() {
|
|
148
144
|
const player = Isaac.GetPlayer();
|
|
149
145
|
const character = player.GetPlayerType();
|
|
150
|
-
if (character ===
|
|
146
|
+
if (character === PlayerType.POSSESSOR) {
|
|
151
147
|
error("Failed to get the player PNG paths since they are a possessor.");
|
|
152
148
|
}
|
|
153
|
-
const namePNGPath =
|
|
154
|
-
const portraitPNGPath =
|
|
149
|
+
const namePNGPath = getCharacterNamePNGFilePath(character);
|
|
150
|
+
const portraitPNGPath = getCharacterPortraitPNGFilePath(character);
|
|
155
151
|
return {
|
|
156
152
|
namePNGPath,
|
|
157
153
|
portraitPNGPath,
|
|
@@ -165,11 +161,11 @@ function getBossPNGPaths(customStage) {
|
|
|
165
161
|
return paths;
|
|
166
162
|
}
|
|
167
163
|
// If this is not a vanilla boss, default to showing question marks.
|
|
168
|
-
const bosses =
|
|
164
|
+
const bosses = getBosses();
|
|
169
165
|
const firstBoss = bosses[0];
|
|
170
166
|
const bossID = firstBoss === undefined ? 0 : firstBoss.GetBossID();
|
|
171
167
|
if (bossID === 0) {
|
|
172
|
-
const questionMarkPath =
|
|
168
|
+
const questionMarkPath = getBossNamePNGFilePath(BossID.BLUE_BABY);
|
|
173
169
|
const namePNGPath = questionMarkPath;
|
|
174
170
|
const portraitPNGPath = questionMarkPath;
|
|
175
171
|
return {
|
|
@@ -179,8 +175,8 @@ function getBossPNGPaths(customStage) {
|
|
|
179
175
|
}
|
|
180
176
|
// If this is a vanilla boss, it will have a boss ID, and we can use the corresponding vanilla
|
|
181
177
|
// files.
|
|
182
|
-
const namePNGPath =
|
|
183
|
-
const portraitPNGPath =
|
|
178
|
+
const namePNGPath = getBossNamePNGFilePath(bossID);
|
|
179
|
+
const portraitPNGPath = getBossPortraitPNGFilePath(bossID);
|
|
184
180
|
return {
|
|
185
181
|
namePNGPath,
|
|
186
182
|
portraitPNGPath,
|
|
@@ -190,7 +186,7 @@ function getBossPNGPathsCustom(customStage) {
|
|
|
190
186
|
if (customStage.bossPool === undefined) {
|
|
191
187
|
return undefined;
|
|
192
188
|
}
|
|
193
|
-
const roomSubType =
|
|
189
|
+
const roomSubType = getRoomSubType();
|
|
194
190
|
const matchingBossEntry = customStage.bossPool.find((bossEntry) => bossEntry.subType === roomSubType);
|
|
195
191
|
if (matchingBossEntry === undefined) {
|
|
196
192
|
return undefined;
|
|
@@ -198,17 +194,17 @@ function getBossPNGPathsCustom(customStage) {
|
|
|
198
194
|
return matchingBossEntry.versusScreen;
|
|
199
195
|
}
|
|
200
196
|
function finishVersusScreenAnimation(pause, disableAllSound) {
|
|
201
|
-
const hud =
|
|
202
|
-
|
|
197
|
+
const hud = game.GetHUD();
|
|
198
|
+
v.run.showingBossVersusScreen = false;
|
|
203
199
|
pause.unpause();
|
|
204
200
|
hud.SetVisible(true);
|
|
205
|
-
disableAllSound.enableAllSound(
|
|
201
|
+
disableAllSound.enableAllSound(CUSTOM_STAGE_FEATURE_NAME);
|
|
206
202
|
// The sound effect only plays once the versus cutscene is over.
|
|
207
|
-
|
|
203
|
+
sfxManager.Play(SoundEffect.CASTLE_PORTCULLIS);
|
|
208
204
|
}
|
|
209
205
|
// ModCallback.POST_RENDER (2)
|
|
210
|
-
function versusScreenPostRender(pause, disableAllSound) {
|
|
211
|
-
if (!
|
|
206
|
+
export function versusScreenPostRender(pause, disableAllSound) {
|
|
207
|
+
if (!v.run.showingBossVersusScreen) {
|
|
212
208
|
return;
|
|
213
209
|
}
|
|
214
210
|
// We do not want to early return when the game is paused because we need to start displaying the
|
|
@@ -217,7 +213,7 @@ function versusScreenPostRender(pause, disableAllSound) {
|
|
|
217
213
|
finishVersusScreenAnimation(pause, disableAllSound);
|
|
218
214
|
return;
|
|
219
215
|
}
|
|
220
|
-
const position =
|
|
216
|
+
const position = getScreenCenterPos();
|
|
221
217
|
// First, we render the background.
|
|
222
218
|
versusScreenBackgroundSprite.RenderLayer(VersusScreenLayer.BACKGROUND, position);
|
|
223
219
|
versusScreenBackgroundSprite.Update();
|
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const Feature_1 = require("../../../private/Feature");
|
|
7
|
-
const utils_1 = require("./utils");
|
|
8
|
-
class DebugDisplayBomb extends Feature_1.Feature {
|
|
1
|
+
import { ModCallback } from "isaac-typescript-definitions";
|
|
2
|
+
import { renderTextOnEntity } from "../../../../functions/render";
|
|
3
|
+
import { Feature } from "../../../private/Feature";
|
|
4
|
+
import { defaultEntityDisplayCallback } from "./utils";
|
|
5
|
+
export class DebugDisplayBomb extends Feature {
|
|
9
6
|
// ModCallback.POST_BOMB_RENDER (59)
|
|
10
7
|
postBombRender = (bomb) => {
|
|
11
8
|
const text = this.textCallback(bomb);
|
|
12
|
-
|
|
9
|
+
renderTextOnEntity(bomb, text);
|
|
13
10
|
};
|
|
14
|
-
textCallback =
|
|
11
|
+
textCallback = defaultEntityDisplayCallback;
|
|
15
12
|
constructor() {
|
|
16
13
|
super();
|
|
17
14
|
this.callbacksUsed = [
|
|
18
15
|
// 59
|
|
19
|
-
[
|
|
16
|
+
[ModCallback.POST_BOMB_RENDER, this.postBombRender],
|
|
20
17
|
];
|
|
21
18
|
}
|
|
22
19
|
}
|
|
23
|
-
exports.DebugDisplayBomb = DebugDisplayBomb;
|
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const Feature_1 = require("../../../private/Feature");
|
|
7
|
-
const utils_1 = require("./utils");
|
|
8
|
-
class DebugDisplayDoor extends Feature_1.Feature {
|
|
1
|
+
import { ModCallbackCustom } from "../../../../enums/ModCallbackCustom";
|
|
2
|
+
import { renderTextOnEntity } from "../../../../functions/render";
|
|
3
|
+
import { Feature } from "../../../private/Feature";
|
|
4
|
+
import { defaultGridEntityDisplayCallback } from "./utils";
|
|
5
|
+
export class DebugDisplayDoor extends Feature {
|
|
9
6
|
// ModCallbackCustom.POST_DOOR_RENDER
|
|
10
7
|
postDoorRender = (door) => {
|
|
11
8
|
const text = this.textCallback(door);
|
|
12
|
-
|
|
9
|
+
renderTextOnEntity(door, text);
|
|
13
10
|
};
|
|
14
|
-
textCallback =
|
|
11
|
+
textCallback = defaultGridEntityDisplayCallback;
|
|
15
12
|
constructor() {
|
|
16
13
|
super();
|
|
17
14
|
this.customCallbacksUsed = [
|
|
18
|
-
[
|
|
15
|
+
[ModCallbackCustom.POST_DOOR_RENDER, this.postDoorRender],
|
|
19
16
|
];
|
|
20
17
|
}
|
|
21
18
|
}
|
|
22
|
-
exports.DebugDisplayDoor = DebugDisplayDoor;
|
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const Feature_1 = require("../../../private/Feature");
|
|
7
|
-
const utils_1 = require("./utils");
|
|
8
|
-
class DebugDisplayEffect extends Feature_1.Feature {
|
|
1
|
+
import { ModCallback } from "isaac-typescript-definitions";
|
|
2
|
+
import { renderTextOnEntity } from "../../../../functions/render";
|
|
3
|
+
import { Feature } from "../../../private/Feature";
|
|
4
|
+
import { defaultEntityDisplayCallback } from "./utils";
|
|
5
|
+
export class DebugDisplayEffect extends Feature {
|
|
9
6
|
// ModCallback.POST_EFFECT_RENDER (56)
|
|
10
7
|
postEffectRender = (effect) => {
|
|
11
8
|
const text = this.textCallback(effect);
|
|
12
|
-
|
|
9
|
+
renderTextOnEntity(effect, text);
|
|
13
10
|
};
|
|
14
|
-
textCallback =
|
|
11
|
+
textCallback = defaultEntityDisplayCallback;
|
|
15
12
|
constructor() {
|
|
16
13
|
super();
|
|
17
14
|
this.callbacksUsed = [
|
|
18
15
|
// 56
|
|
19
|
-
[
|
|
16
|
+
[ModCallback.POST_EFFECT_RENDER, this.postEffectRender],
|
|
20
17
|
];
|
|
21
18
|
}
|
|
22
19
|
}
|
|
23
|
-
exports.DebugDisplayEffect = DebugDisplayEffect;
|