isaacscript-common 6.6.1-dev.1 → 6.6.1-dev.2
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 +1 -0
- package/cachedClasses.js +59 -0
- package/callbacks/customRevive.js +153 -0
- package/callbacks/itemPickup.js +64 -0
- package/callbacks/postAmbush.js +54 -0
- package/callbacks/postBombExploded.js +20 -0
- package/callbacks/postBombInitLate.js +28 -0
- package/callbacks/postBoneSwing.js +49 -0
- package/callbacks/postCollectibleEmpty.js +32 -0
- package/callbacks/postCollectibleInitFirst.js +27 -0
- package/callbacks/postCursedTeleport.js +120 -0
- package/callbacks/postCustomDoorEnter.js +205 -0
- package/callbacks/postDiceRoomActivated.js +39 -0
- package/callbacks/postDoorRender.js +20 -0
- package/callbacks/postDoorUpdate.js +20 -0
- package/callbacks/postEffectInitLate.js +28 -0
- package/callbacks/postEffectStateChanged.js +31 -0
- package/callbacks/postEsauJr.js +70 -0
- package/callbacks/postFamiliarInitLate.js +28 -0
- package/callbacks/postFamiliarStateChanged.js +31 -0
- package/callbacks/postFlip.js +59 -0
- package/callbacks/postGreedModeWave.js +31 -0
- package/callbacks/postGridEntity.js +107 -0
- package/callbacks/postGridEntityCollision.js +49 -0
- package/callbacks/postGridEntityRender.js +20 -0
- package/callbacks/postHolyMantleRemoved.js +33 -0
- package/callbacks/postItemDischarged.js +94 -0
- package/callbacks/postKnifeInitLate.js +28 -0
- package/callbacks/postLaserInitLate.js +28 -0
- package/callbacks/postNPCInitLate.js +28 -0
- package/callbacks/postNPCStateChanged.js +31 -0
- package/callbacks/postNewRoomEarly.js +69 -0
- package/callbacks/postPickupCollect.js +37 -0
- package/callbacks/postPickupInitFirst.js +52 -0
- package/callbacks/postPickupInitLate.js +28 -0
- package/callbacks/postPickupStateChanged.js +31 -0
- package/callbacks/postPitRender.js +20 -0
- package/callbacks/postPitUpdate.js +20 -0
- package/callbacks/postPlayerChangeHealth.js +43 -0
- package/callbacks/postPlayerChangeType.js +31 -0
- package/callbacks/postPlayerCollectible.js +74 -0
- package/callbacks/postPlayerFatalDamage.js +74 -0
- package/callbacks/postPlayerInitLate.js +28 -0
- package/callbacks/postPlayerReordered.js +109 -0
- package/callbacks/postPoopRender.js +20 -0
- package/callbacks/postPoopUpdate.js +20 -0
- package/callbacks/postPressurePlateRender.js +20 -0
- package/callbacks/postPressurePlateUpdate.js +20 -0
- package/callbacks/postProjectileInitLate.js +28 -0
- package/callbacks/postPurchase.js +39 -0
- package/callbacks/postRockRender.js +20 -0
- package/callbacks/postRockUpdate.js +20 -0
- package/callbacks/postRoomClearChanged.js +41 -0
- package/callbacks/postSacrifice.js +38 -0
- package/callbacks/postSlotDestroyed.js +64 -0
- package/callbacks/postSlotInitUpdate.js +49 -0
- package/callbacks/postSlotRender.js +48 -0
- package/callbacks/postSpikesRender.js +20 -0
- package/callbacks/postSpikesUpdate.js +20 -0
- package/callbacks/postTNTRender.js +20 -0
- package/callbacks/postTNTUpdate.js +20 -0
- package/callbacks/postTearInitLate.js +28 -0
- package/callbacks/postTearInitVeryLate.js +32 -0
- package/callbacks/postTransformation.js +37 -0
- package/callbacks/postTrinketBreak.js +64 -0
- package/callbacks/preBerserkDeath.js +35 -0
- package/callbacks/preNewLevel.js +45 -0
- package/callbacks/reorderedCallbacks.js +136 -0
- package/callbacks/subscriptions/postAmbushFinished.js +20 -0
- package/callbacks/subscriptions/postAmbushStarted.js +20 -0
- package/callbacks/subscriptions/postBombInitLate.js +20 -0
- package/callbacks/subscriptions/postBoneExploded.js +20 -0
- package/callbacks/subscriptions/postBoneSwing.js +16 -0
- package/callbacks/subscriptions/postCollectibleEmpty.js +21 -0
- package/callbacks/subscriptions/postCollectibleInitFirst.js +21 -0
- package/callbacks/subscriptions/postCursedTeleport.js +16 -0
- package/callbacks/subscriptions/postCustomDoorEnter.js +21 -0
- package/callbacks/subscriptions/postCustomRevive.js +21 -0
- package/callbacks/subscriptions/postDiceRoomActivated.js +21 -0
- package/callbacks/subscriptions/postDoorRender.js +22 -0
- package/callbacks/subscriptions/postDoorUpdate.js +22 -0
- package/callbacks/subscriptions/postEffectInitLate.js +20 -0
- package/callbacks/subscriptions/postEffectStateChanged.js +20 -0
- package/callbacks/subscriptions/postEsauJr.js +16 -0
- package/callbacks/subscriptions/postFamiliarInitLate.js +20 -0
- package/callbacks/subscriptions/postFamiliarStateChanged.js +20 -0
- package/callbacks/subscriptions/postFirstEsauJr.js +16 -0
- package/callbacks/subscriptions/postFirstFlip.js +16 -0
- package/callbacks/subscriptions/postFlip.js +16 -0
- package/callbacks/subscriptions/postGameStartedReordered.js +16 -0
- package/callbacks/subscriptions/postGreedModeWave.js +16 -0
- package/callbacks/subscriptions/postGridEntityBroken.js +28 -0
- package/callbacks/subscriptions/postGridEntityCollision.js +28 -0
- package/callbacks/subscriptions/postGridEntityInit.js +28 -0
- package/callbacks/subscriptions/postGridEntityRemove.js +26 -0
- package/callbacks/subscriptions/postGridEntityRender.js +28 -0
- package/callbacks/subscriptions/postGridEntityStateChanged.js +28 -0
- package/callbacks/subscriptions/postGridEntityUpdate.js +28 -0
- package/callbacks/subscriptions/postHolyMantleRemoved.js +25 -0
- package/callbacks/subscriptions/postItemDischarged.js +21 -0
- package/callbacks/subscriptions/postItemPickup.js +25 -0
- package/callbacks/subscriptions/postKnifeInitLate.js +20 -0
- package/callbacks/subscriptions/postLaserInitLate.js +20 -0
- package/callbacks/subscriptions/postNPCInitLate.js +20 -0
- package/callbacks/subscriptions/postNPCStateChanged.js +24 -0
- package/callbacks/subscriptions/postNewLevelReordered.js +16 -0
- package/callbacks/subscriptions/postNewRoomEarly.js +16 -0
- package/callbacks/subscriptions/postNewRoomReordered.js +16 -0
- package/callbacks/subscriptions/postPEffectUpdateReordered.js +25 -0
- package/callbacks/subscriptions/postPickupCollect.js +20 -0
- package/callbacks/subscriptions/postPickupInitFirst.js +20 -0
- package/callbacks/subscriptions/postPickupInitLate.js +20 -0
- package/callbacks/subscriptions/postPickupStateChanged.js +20 -0
- package/callbacks/subscriptions/postPitRender.js +22 -0
- package/callbacks/subscriptions/postPitUpdate.js +22 -0
- package/callbacks/subscriptions/postPlayerChangeHealth.js +25 -0
- package/callbacks/subscriptions/postPlayerChangeType.js +20 -0
- package/callbacks/subscriptions/postPlayerCollectibleAdded.js +21 -0
- package/callbacks/subscriptions/postPlayerCollectibleRemoved.js +21 -0
- package/callbacks/subscriptions/postPlayerFatalDamage.js +29 -0
- package/callbacks/subscriptions/postPlayerInitLate.js +25 -0
- package/callbacks/subscriptions/postPlayerInitReordered.js +25 -0
- package/callbacks/subscriptions/postPlayerRenderReordered.js +25 -0
- package/callbacks/subscriptions/postPlayerUpdateReordered.js +25 -0
- package/callbacks/subscriptions/postPoopRender.js +22 -0
- package/callbacks/subscriptions/postPoopUpdate.js +22 -0
- package/callbacks/subscriptions/postPressurePlateRender.js +22 -0
- package/callbacks/subscriptions/postPressurePlateUpdate.js +22 -0
- package/callbacks/subscriptions/postProjectileInitLate.js +21 -0
- package/callbacks/subscriptions/postPurchase.js +16 -0
- package/callbacks/subscriptions/postRockRender.js +22 -0
- package/callbacks/subscriptions/postRockUpdate.js +22 -0
- package/callbacks/subscriptions/postRoomClearChanged.js +20 -0
- package/callbacks/subscriptions/postSacrifice.js +25 -0
- package/callbacks/subscriptions/postSlotAnimationChanged.js +20 -0
- package/callbacks/subscriptions/postSlotDestroyed.js +26 -0
- package/callbacks/subscriptions/postSlotInit.js +20 -0
- package/callbacks/subscriptions/postSlotRender.js +20 -0
- package/callbacks/subscriptions/postSlotUpdate.js +20 -0
- package/callbacks/subscriptions/postSpikesRender.js +22 -0
- package/callbacks/subscriptions/postSpikesUpdate.js +22 -0
- package/callbacks/subscriptions/postTNTRender.js +22 -0
- package/callbacks/subscriptions/postTNTUpdate.js +22 -0
- package/callbacks/subscriptions/postTearInitLate.js +20 -0
- package/callbacks/subscriptions/postTearInitVeryLate.js +20 -0
- package/callbacks/subscriptions/postTransformation.js +20 -0
- package/callbacks/subscriptions/postTrinketBreak.js +21 -0
- package/callbacks/subscriptions/preBerserkDeath.js +26 -0
- package/callbacks/subscriptions/preCustomRevive.js +29 -0
- package/callbacks/subscriptions/preItemPickup.js +25 -0
- package/callbacks/subscriptions/preNewLevel.js +16 -0
- package/classes/DefaultMap.js +145 -0
- package/classes/ModUpgraded.js +57 -0
- package/constants.js +143 -0
- package/constantsFirstLast.js +156 -0
- package/enums/AmbushType.js +6 -0
- package/enums/CornerType.js +8 -0
- package/enums/DecorationVariant.js +11 -0
- package/enums/HealthType.js +18 -0
- package/enums/ModCallbackCustom.js +1213 -0
- package/enums/PocketItemType.js +10 -0
- package/enums/RockAltType.js +9 -0
- package/enums/SerializationType.js +7 -0
- package/enums/SlotDestructionType.js +6 -0
- package/enums/private/CopyableIsaacAPIClassType.js +9 -0
- package/enums/private/SaveDataKey.js +8 -0
- package/enums/private/SerializationBrand.js +41 -0
- package/features/characterHealthConversion.js +86 -0
- package/features/characterStats.js +52 -0
- package/features/collectibleItemPoolType.js +45 -0
- package/features/customGridEntity.js +148 -0
- package/features/customStage/backdrop.js +191 -0
- package/features/customStage/customStageConstants.js +2 -0
- package/features/customStage/exports.js +147 -0
- package/features/customStage/gridEntities.js +138 -0
- package/features/customStage/init.js +104 -0
- package/features/customStage/metadata.json +1 -0
- package/features/customStage/shadows.js +63 -0
- package/features/customStage/streakText.js +35 -0
- package/features/customStage/util.js +36 -0
- package/features/customStage/v.js +18 -0
- package/features/customStage/versusScreen.js +184 -0
- package/features/debugDisplay/debugDisplay.js +183 -0
- package/features/debugDisplay/exports.js +441 -0
- package/features/debugDisplay/v.d.ts +18 -0
- package/features/debugDisplay/v.js +61 -0
- package/features/deployJSONRoom.js +532 -0
- package/features/disableAllSound.js +63 -0
- package/features/disableInputs.js +130 -0
- package/features/extraConsoleCommands/commandsDisplay.js +236 -0
- package/features/extraConsoleCommands/commandsSubroutines.js +109 -0
- package/features/extraConsoleCommands/exports.js +53 -0
- package/features/extraConsoleCommands/init.js +239 -0
- package/features/extraConsoleCommands/listCommands.js +1081 -0
- package/features/extraConsoleCommands/v.js +25 -0
- package/features/fadeInRemover.js +51 -0
- package/features/fastReset.js +61 -0
- package/features/forgottenSwitch.js +33 -0
- package/features/pause.js +68 -0
- package/features/persistentEntities.js +120 -0
- package/features/playerInventory.js +89 -0
- package/features/ponyDetection.js +63 -0
- package/features/preventCollectibleRotation.js +81 -0
- package/features/registerHotkey.js +91 -0
- package/features/roomClearFrame.js +42 -0
- package/features/runInNFrames.js +189 -0
- package/features/runNextRoom.js +34 -0
- package/features/saveDataManager/exports.js +183 -0
- package/features/saveDataManager/load.js +69 -0
- package/features/saveDataManager/main.js +131 -0
- package/features/saveDataManager/maps.js +9 -0
- package/features/saveDataManager/merge.js +139 -0
- package/features/saveDataManager/save.js +43 -0
- package/features/saveDataManager/saveDataManagerConstants.js +4 -0
- package/features/saveDataManager/serializationBrand.js +12 -0
- package/features/sirenHelpers.js +90 -0
- package/features/stageHistory.js +43 -0
- package/features/taintedLazarusPlayers.js +92 -0
- package/featuresInitialized.js +16 -0
- package/functions/ambush.js +35 -0
- package/functions/array.js +423 -0
- package/functions/benchmark.js +28 -0
- package/functions/bitwise.js +74 -0
- package/functions/bombs.js +11 -0
- package/functions/boss.js +137 -0
- package/functions/cacheFlag.js +11 -0
- package/functions/cards.js +217 -0
- package/functions/challenges.js +9 -0
- package/functions/character.js +102 -0
- package/functions/charge.js +202 -0
- package/functions/chargeBar.js +44 -0
- package/functions/collectibleCacheFlag.js +68 -0
- package/functions/collectibleSet.js +108 -0
- package/functions/collectibleTag.js +65 -0
- package/functions/collectibles.js +469 -0
- package/functions/color.d.ts +1 -1
- package/functions/color.js +60 -0
- package/functions/debug.js +60 -0
- package/functions/deepCopy.js +361 -0
- package/functions/deepCopyTests.js +308 -0
- package/functions/direction.js +41 -0
- package/functions/doors.js +326 -0
- package/functions/easing.js +142 -0
- package/functions/eden.js +32 -0
- package/functions/effects.js +11 -0
- package/functions/entity.js +324 -0
- package/functions/entitySpecific.js +481 -0
- package/functions/entityTypes.js +6 -0
- package/functions/enums.js +151 -0
- package/functions/familiars.js +85 -0
- package/functions/flag.js +137 -0
- package/functions/flying.js +88 -0
- package/functions/globals.js +230 -0
- package/functions/gridEntity.js +488 -0
- package/functions/gridEntitySpecific.js +109 -0
- package/functions/input.js +95 -0
- package/functions/isaacAPIClass.js +48 -0
- package/functions/jsonHelpers.js +40 -0
- package/functions/jsonRoom.js +132 -0
- package/functions/kColor.d.ts +1 -1
- package/functions/kColor.js +63 -0
- package/functions/language.js +13 -0
- package/functions/level.js +20 -0
- package/functions/log.js +567 -0
- package/functions/map.js +45 -0
- package/functions/math.js +103 -0
- package/functions/mergeTests.js +213 -0
- package/functions/minimap.js +80 -0
- package/functions/nextStage.js +290 -0
- package/functions/npc.js +101 -0
- package/functions/pickupVariants.js +47 -0
- package/functions/pickups.js +219 -0
- package/functions/pills.js +160 -0
- package/functions/player.js +808 -0
- package/functions/playerCenter.js +50 -0
- package/functions/playerDataStructures.js +114 -0
- package/functions/playerHealth.js +321 -0
- package/functions/playerIndex.js +160 -0
- package/functions/pocketItems.js +124 -0
- package/functions/positionVelocity.js +136 -0
- package/functions/random.js +73 -0
- package/functions/revive.js +140 -0
- package/functions/rng.d.ts +1 -1
- package/functions/rng.js +117 -0
- package/functions/roomData.js +174 -0
- package/functions/roomGrid.js +81 -0
- package/functions/roomShape.js +99 -0
- package/functions/rooms.js +487 -0
- package/functions/run.js +53 -0
- package/functions/saveFile.js +104 -0
- package/functions/seeds.js +18 -0
- package/functions/serialization.js +52 -0
- package/functions/set.js +99 -0
- package/functions/sound.js +9 -0
- package/functions/spawnCollectible.js +66 -0
- package/functions/sprite.js +80 -0
- package/functions/stage.js +172 -0
- package/functions/string.js +37 -0
- package/functions/table.js +143 -0
- package/functions/tears.js +31 -0
- package/functions/transformations.js +101 -0
- package/functions/trinketCacheFlag.js +46 -0
- package/functions/trinketGive.js +121 -0
- package/functions/trinkets.js +169 -0
- package/functions/tstlClass.js +125 -0
- package/functions/types.js +27 -0
- package/functions/ui.js +124 -0
- package/functions/utils.js +172 -0
- package/functions/vector.js +68 -0
- package/index.js +140 -0
- package/initCustomCallbacks.js +133 -0
- package/initFeatures.js +51 -0
- package/interfaces/AddCallbackParameterCustom.js +2 -0
- package/interfaces/ChargeBarSprites.js +2 -0
- package/interfaces/Corner.js +2 -0
- package/interfaces/CustomGridEntityData.js +2 -0
- package/interfaces/CustomStage.js +2 -0
- package/interfaces/CustomStageLua.js +13 -0
- package/interfaces/JSONRoomsFile.js +2 -0
- package/interfaces/PlayerHealth.js +2 -0
- package/interfaces/PocketItemDescription.js +2 -0
- package/interfaces/SaveData.js +2 -0
- package/interfaces/TrinketSituation.js +2 -0
- package/interfaces/private/TSTLClassMetatable.js +2 -0
- package/maps/PHDPillConversions.js +20 -0
- package/maps/cardMap.js +208 -0
- package/maps/characterMap.js +86 -0
- package/maps/collectibleDescriptionMap.js +728 -0
- package/maps/collectibleNameMap.js +727 -0
- package/maps/defaultPlayerStatMap.js +14 -0
- package/maps/falsePHDPillConversions.js +34 -0
- package/maps/gridEntityTypeToBrokenStateMap.js +29 -0
- package/maps/gridEntityXMLMap.js +128 -0
- package/maps/pillEffectMap.js +88 -0
- package/maps/roomShapeToTopLeftWallGridIndexMap.js +14 -0
- package/maps/roomTypeMap.js +39 -0
- package/maps/trinketDescriptionMap.js +196 -0
- package/maps/trinketNameMap.js +195 -0
- package/objects/LRoomShapeToRectangles.js +33 -0
- package/objects/backdropTypeToRockAltType.js +66 -0
- package/objects/bossNamePNGFileNames.js +112 -0
- package/objects/bossPortraitPNGFileNames.js +115 -0
- package/objects/callbackRegisterFunctions.js +170 -0
- package/objects/cardDescriptions.js +104 -0
- package/objects/cardNames.js +104 -0
- package/objects/cardTypes.js +103 -0
- package/objects/challengeNames.js +51 -0
- package/objects/characterNames.js +46 -0
- package/objects/coinSubTypeToValue.js +13 -0
- package/objects/colors.d.ts +1 -0
- package/objects/colors.js +24 -0
- package/objects/directionNames.js +9 -0
- package/objects/directionToDegrees.js +9 -0
- package/objects/directionToVector.js +10 -0
- package/objects/doorSlotFlagToDoorSlot.js +13 -0
- package/objects/doorSlotToDirection.js +13 -0
- package/objects/doorSlotToDoorSlotFlag.js +13 -0
- package/objects/isaacAPIClassTypeToBrand.js +9 -0
- package/objects/isaacAPIClassTypeToCopyFunction.js +12 -0
- package/objects/languageNames.js +11 -0
- package/objects/oppositeDoorSlots.js +13 -0
- package/objects/pillEffectClasses.js +56 -0
- package/objects/pillEffectNames.js +55 -0
- package/objects/pillEffectTypes.js +55 -0
- package/objects/playerNamePNGFileNames.js +55 -0
- package/objects/playerPortraitPNGFileNames.js +52 -0
- package/objects/roomShapeBounds.js +46 -0
- package/objects/roomShapeCorners.js +268 -0
- package/objects/roomShapeLayoutSizes.js +39 -0
- package/objects/roomShapeToBottomRightPosition.js +22 -0
- package/objects/roomShapeToDoorSlotCoordinates.js +109 -0
- package/objects/roomShapeToDoorSlots.js +69 -0
- package/objects/roomShapeToDoorSlotsToGridIndexDelta.js +113 -0
- package/objects/roomShapeToGridWidth.js +18 -0
- package/objects/roomShapeToTopLeftPosition.js +23 -0
- package/objects/roomShapeVolumes.js +30 -0
- package/objects/roomTypeGotoPrefixes.js +33 -0
- package/objects/roomTypeNames.js +34 -0
- package/objects/serializedIsaacAPIClassTypeToIdentityFunction.js +12 -0
- package/objects/stageTypeSuffixes.js +10 -0
- package/objects/stageTypeToLetter.js +12 -0
- package/objects/transformationNames.js +18 -0
- package/objects/versusScreenBackgroundColors.js +36 -0
- package/objects/versusScreenDirtSpotColors.js +36 -0
- package/package.json +1 -1
- package/patchErrorFunctions.js +67 -0
- package/sets/LRoomShapesSet.js +8 -0
- package/sets/bossSets.js +374 -0
- package/sets/charactersThatStartWithAnActiveItemSet.js +15 -0
- package/sets/charactersWithBlackHeartFromEternalHeartSet.js +6 -0
- package/sets/charactersWithFreeDevilDealsSet.js +3 -0
- package/sets/charactersWithNoRedHeartsSet.js +16 -0
- package/sets/charactersWithNoSoulHeartsSet.js +13 -0
- package/sets/chestPickupVariantsSet.js +16 -0
- package/sets/consoleCommandsSet.js +61 -0
- package/sets/familiarsThatShootPlayerTearsSet.js +12 -0
- package/sets/lostStyleCharactersSet.js +13 -0
- package/sets/mineShaftRoomSubTypesSet.js +9 -0
- package/sets/narrowRoomShapesSet.js +8 -0
- package/sets/redHeartSubTypesSet.js +7 -0
- package/sets/sinEntityTypesSet.js +11 -0
- package/sets/singleUseActiveCollectibleTypesSet.js +12 -0
- package/sets/storyBossesSet.js +17 -0
- package/shaderCrashFix.js +17 -0
- package/types/AnyEntity.js +2 -0
- package/types/CollectibleIndex.js +2 -0
- package/types/PickingUpItem.js +38 -0
- package/types/PlayerIndex.js +2 -0
- package/types/private/IsaacAPIClass.js +2 -0
- package/types/private/SerializedIsaacAPIClass.js +2 -0
- package/types/private/TSTLClass.js +2 -0
- package/upgradeMod.js +47 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { Direction } from "isaac-typescript-definitions";
|
|
2
|
+
import { directionToVector } from "./direction";
|
|
3
|
+
/**
|
|
4
|
+
* Helper function to normalize an integer.
|
|
5
|
+
*
|
|
6
|
+
* - If `x` is less than `min`, then it will be clamped to `min`.
|
|
7
|
+
* - If `x` is greater than `max`, then it will be clamped to `max`.
|
|
8
|
+
*/
|
|
9
|
+
export function clamp(x, min, max) {
|
|
10
|
+
return Math.max(min, Math.min(x, max));
|
|
11
|
+
}
|
|
12
|
+
export function getAngleDifference(angle1, angle2) {
|
|
13
|
+
const subtractedAngle = angle1 - angle2;
|
|
14
|
+
return ((subtractedAngle + 180) % 360) - 180;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Helper function to get an array of equidistant points on the circumference around a circle.
|
|
18
|
+
* Useful for equally distributing things in a circle pattern.
|
|
19
|
+
*
|
|
20
|
+
* @param centerPos A position that represents the center of the center to get the points from.
|
|
21
|
+
* @param radius The radius of the circle.
|
|
22
|
+
* @param numPoints The number of points on the circumference of the circle to get.
|
|
23
|
+
* @param xMultiplier An optional multiplier to get the points around an oval. Default is 1.
|
|
24
|
+
* @param yMultiplier An optional multiplier to get the points around an oval. Default is 1.
|
|
25
|
+
* @param initialDirection By default, the first point on the circle will be on the top center, but
|
|
26
|
+
* this can be optionally changed by specifying this argument.
|
|
27
|
+
*/
|
|
28
|
+
export function getCircleDiscretizedPoints(centerPos, radius, numPoints, xMultiplier = 1, yMultiplier = 1, initialDirection = Direction.UP) {
|
|
29
|
+
const vector = directionToVector(initialDirection);
|
|
30
|
+
const initialPosition = vector.mul(radius);
|
|
31
|
+
const positions = [];
|
|
32
|
+
for (let i = 0; i < numPoints; i++) {
|
|
33
|
+
const rotatedPosition = initialPosition.Rotated((i * 360) / numPoints);
|
|
34
|
+
rotatedPosition.X *= xMultiplier;
|
|
35
|
+
rotatedPosition.Y *= yMultiplier;
|
|
36
|
+
const positionFromCenter = centerPos.add(rotatedPosition);
|
|
37
|
+
positions.push(positionFromCenter);
|
|
38
|
+
}
|
|
39
|
+
return positions;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Helper function to check if a given position is within a given rectangle.
|
|
43
|
+
*
|
|
44
|
+
* This is an inclusive check, meaning that it will return true if the position is on the border of
|
|
45
|
+
* the rectangle.
|
|
46
|
+
*/
|
|
47
|
+
export function inRectangle(position, topLeft, bottomRight) {
|
|
48
|
+
return (position.X >= topLeft.X &&
|
|
49
|
+
position.X <= bottomRight.X &&
|
|
50
|
+
position.Y >= topLeft.Y &&
|
|
51
|
+
position.Y <= bottomRight.Y);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* From: https://www.geeksforgeeks.org/check-if-any-point-overlaps-the-given-circle-and-rectangle/
|
|
55
|
+
*/
|
|
56
|
+
export function isCircleIntersectingRectangle(circleCenter, circleRadius, rectangleTopLeft, rectangleBottomRight) {
|
|
57
|
+
const nearestX = Math.max(rectangleTopLeft.X, Math.min(circleCenter.X, rectangleBottomRight.X));
|
|
58
|
+
const nearestY = Math.max(rectangleTopLeft.Y, Math.min(circleCenter.Y, rectangleBottomRight.Y));
|
|
59
|
+
const nearestPointToCircleOnRectangle = Vector(nearestX, nearestY);
|
|
60
|
+
const distanceToCenterOfCircle = nearestPointToCircleOnRectangle.Distance(circleCenter);
|
|
61
|
+
return distanceToCenterOfCircle <= circleRadius;
|
|
62
|
+
}
|
|
63
|
+
export function isEven(num) {
|
|
64
|
+
// This is benchmarked to be faster than using the modulus operator by 3%.
|
|
65
|
+
return (num & 1) === 0;
|
|
66
|
+
}
|
|
67
|
+
export function isOdd(num) {
|
|
68
|
+
// This is benchmarked to be faster than using the modulus operator by 3%.
|
|
69
|
+
return (num & 1) === 1;
|
|
70
|
+
}
|
|
71
|
+
export function lerp(a, b, pos) {
|
|
72
|
+
return a + (b - a) * pos;
|
|
73
|
+
}
|
|
74
|
+
export function lerpAngleDegrees(aStart, aEnd, percent) {
|
|
75
|
+
return aStart + getAngleDifference(aStart, aEnd) * percent;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* If rounding fails, this function returns 0.
|
|
79
|
+
* From: http://lua-users.org/wiki/SimpleRound
|
|
80
|
+
*
|
|
81
|
+
* @param num The number to round.
|
|
82
|
+
* @param numDecimalPlaces Default is 0.
|
|
83
|
+
*/
|
|
84
|
+
export function round(num, numDecimalPlaces = 0) {
|
|
85
|
+
const roundedNum = tonumber(string.format(`%.${numDecimalPlaces}f`, num));
|
|
86
|
+
return roundedNum === undefined ? 0 : roundedNum;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* @returns 1 if n is positive, -1 if n is negative, or 0 if n is 0.
|
|
90
|
+
*/
|
|
91
|
+
export function sign(n) {
|
|
92
|
+
if (n > 0) {
|
|
93
|
+
return 1;
|
|
94
|
+
}
|
|
95
|
+
if (n < 0) {
|
|
96
|
+
return -1;
|
|
97
|
+
}
|
|
98
|
+
return 0;
|
|
99
|
+
}
|
|
100
|
+
export function tanh(x) {
|
|
101
|
+
return (Math.exp(x) - Math.exp(-x)) / (Math.exp(x) + Math.exp(-x));
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVoRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsQ0FBTSxFQUFFLEdBQVEsRUFBRSxHQUFRO0lBQzlDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQWEsRUFBRSxNQUFhO0lBQzdELE1BQU0sZUFBZSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDeEMsT0FBTyxDQUFDLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQ3hDLFNBQWlCLEVBQ2pCLE1BQWEsRUFDYixTQUFjLEVBQ2QsV0FBVyxHQUFHLENBQUMsRUFDZixXQUFXLEdBQUcsQ0FBQyxFQUNmLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxFQUFFO0lBRS9CLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbkQsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxNQUFNLFNBQVMsR0FBYSxFQUFFLENBQUM7SUFDL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFB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
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { SerializationType } from "../enums/SerializationType";
|
|
2
|
+
import { merge } from "../features/saveDataManager/merge";
|
|
3
|
+
import { deepCopy } from "./deepCopy";
|
|
4
|
+
import { log } from "./log";
|
|
5
|
+
import { isRNG, newRNG } from "./rng";
|
|
6
|
+
import { isSerializedIsaacAPIClass } from "./serialization";
|
|
7
|
+
import { copyVector, isVector } from "./vector";
|
|
8
|
+
export function mergeTests() {
|
|
9
|
+
oldTableHasUpdatedValue();
|
|
10
|
+
newTableHasSameValue();
|
|
11
|
+
oldTableHasUpdatedValueFromNull();
|
|
12
|
+
oldTableHasSerializedIsaacAPIClass();
|
|
13
|
+
oldTableHasFilledInterface();
|
|
14
|
+
oldTableHasVector();
|
|
15
|
+
oldTableHasVectorSerialized();
|
|
16
|
+
oldTableHasRNG();
|
|
17
|
+
oldTableHasRNGSerialized();
|
|
18
|
+
log("All merge tests passed!");
|
|
19
|
+
}
|
|
20
|
+
function oldTableHasUpdatedValue() {
|
|
21
|
+
const key = "foo";
|
|
22
|
+
const oldValue = "bar";
|
|
23
|
+
const newValue = "baz";
|
|
24
|
+
const oldTable = {
|
|
25
|
+
foo: oldValue,
|
|
26
|
+
};
|
|
27
|
+
const newTable = {
|
|
28
|
+
foo: newValue,
|
|
29
|
+
};
|
|
30
|
+
merge(oldTable, newTable, "oldTableHasUpdatedValue");
|
|
31
|
+
const oldTableValue = oldTable.get(key);
|
|
32
|
+
if (oldTableValue !== newValue) {
|
|
33
|
+
error(`The old table does not have a value of: ${newValue}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function newTableHasSameValue() {
|
|
37
|
+
const key = "foo";
|
|
38
|
+
const oldValue = "bar";
|
|
39
|
+
const newValue = "baz";
|
|
40
|
+
const oldTable = {
|
|
41
|
+
foo: oldValue,
|
|
42
|
+
};
|
|
43
|
+
const newTable = {
|
|
44
|
+
foo: newValue,
|
|
45
|
+
};
|
|
46
|
+
merge(oldTable, newTable, "newTableHasSameValue");
|
|
47
|
+
const newTableValue = newTable.get(key);
|
|
48
|
+
if (newTableValue !== newValue) {
|
|
49
|
+
error(`The new table does not have a value of: ${newValue}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function oldTableHasUpdatedValueFromNull() {
|
|
53
|
+
const key = "foo";
|
|
54
|
+
const newValue = "baz";
|
|
55
|
+
const oldTable = {
|
|
56
|
+
foo: null,
|
|
57
|
+
};
|
|
58
|
+
const newTable = {
|
|
59
|
+
foo: newValue,
|
|
60
|
+
};
|
|
61
|
+
merge(oldTable, newTable, "oldTableHasUpdatedValueFromNull");
|
|
62
|
+
const oldTableValue = oldTable.get(key);
|
|
63
|
+
if (oldTableValue !== newValue) {
|
|
64
|
+
error(`The old table does not have a value of: ${newValue}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function oldTableHasSerializedIsaacAPIClass() {
|
|
68
|
+
const x = 50;
|
|
69
|
+
const y = 60;
|
|
70
|
+
const vector = Vector(x, y);
|
|
71
|
+
const vectorSerialized = copyVector(vector, SerializationType.SERIALIZE);
|
|
72
|
+
if (!isSerializedIsaacAPIClass(vectorSerialized)) {
|
|
73
|
+
error('The "isSerializedIsaacAPIClass" function says that a serialized vector is not serialized.');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function oldTableHasFilledInterface() {
|
|
77
|
+
const key = "foo";
|
|
78
|
+
const newValue = "baz";
|
|
79
|
+
const oldTable = {
|
|
80
|
+
foo: null,
|
|
81
|
+
};
|
|
82
|
+
const foo = {
|
|
83
|
+
bar: newValue,
|
|
84
|
+
};
|
|
85
|
+
const newTable = {
|
|
86
|
+
foo,
|
|
87
|
+
};
|
|
88
|
+
merge(oldTable, newTable, "oldTableHasFilledInterface");
|
|
89
|
+
const oldTableValue = oldTable.get(key);
|
|
90
|
+
if (oldTableValue === undefined) {
|
|
91
|
+
error(`The old table's key of "${key}" was not filled.`);
|
|
92
|
+
}
|
|
93
|
+
if (oldTableValue.bar !== newValue) {
|
|
94
|
+
error('The old table\'s key of "bar" was not filled.');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function oldTableHasVector() {
|
|
98
|
+
log("Starting test: oldTableHasVector");
|
|
99
|
+
const key = "foo";
|
|
100
|
+
const x = 50;
|
|
101
|
+
const y = 60;
|
|
102
|
+
const newValue = Vector(x, y);
|
|
103
|
+
const oldTable = {
|
|
104
|
+
foo: null,
|
|
105
|
+
};
|
|
106
|
+
const foo = {
|
|
107
|
+
bar: newValue,
|
|
108
|
+
};
|
|
109
|
+
const newTable = {
|
|
110
|
+
foo,
|
|
111
|
+
};
|
|
112
|
+
merge(oldTable, newTable, "oldTableHasVector");
|
|
113
|
+
const oldTableValue = oldTable.get(key);
|
|
114
|
+
if (oldTableValue === undefined) {
|
|
115
|
+
error(`The old table's key of "${key}" was not filled.`);
|
|
116
|
+
}
|
|
117
|
+
if (oldTableValue.bar.X !== x) {
|
|
118
|
+
error(`The old table's value for "x" does not match: ${x}`);
|
|
119
|
+
}
|
|
120
|
+
if (oldTableValue.bar.Y !== y) {
|
|
121
|
+
error(`The old table's value for "y" does not match: ${y}`);
|
|
122
|
+
}
|
|
123
|
+
if (!isVector(oldTableValue.bar)) {
|
|
124
|
+
error("The old table's value is not a Vector object.");
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function oldTableHasVectorSerialized() {
|
|
128
|
+
log("Starting test: oldTableHasVectorSerialized");
|
|
129
|
+
const key = "foo";
|
|
130
|
+
const x = 50;
|
|
131
|
+
const y = 60;
|
|
132
|
+
const newValue = Vector(x, y);
|
|
133
|
+
const oldTable = {
|
|
134
|
+
foo: null,
|
|
135
|
+
};
|
|
136
|
+
const foo = {
|
|
137
|
+
bar: newValue,
|
|
138
|
+
};
|
|
139
|
+
const newTable = {
|
|
140
|
+
foo,
|
|
141
|
+
};
|
|
142
|
+
const newTableSerialized = deepCopy(newTable, SerializationType.SERIALIZE);
|
|
143
|
+
merge(oldTable, newTableSerialized, "oldTableHasVectorSerialized");
|
|
144
|
+
const oldTableValue = oldTable.get(key);
|
|
145
|
+
if (oldTableValue === undefined) {
|
|
146
|
+
error(`The old table's key of "${key}" was not filled.`);
|
|
147
|
+
}
|
|
148
|
+
if (oldTableValue.bar.X !== x) {
|
|
149
|
+
error(`The old table's value for "x" does not match: ${x}`);
|
|
150
|
+
}
|
|
151
|
+
if (oldTableValue.bar.Y !== y) {
|
|
152
|
+
error(`The old table's value for "y" does not match: ${y}`);
|
|
153
|
+
}
|
|
154
|
+
if (!isVector(oldTableValue.bar)) {
|
|
155
|
+
error("The old table's value is not a Vector object (during the serialized test).");
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function oldTableHasRNG() {
|
|
159
|
+
log("Starting test: oldTableHasRNG");
|
|
160
|
+
const key = "foo";
|
|
161
|
+
const seed = 50;
|
|
162
|
+
const newValue = newRNG(seed);
|
|
163
|
+
const oldTable = {
|
|
164
|
+
foo: null,
|
|
165
|
+
};
|
|
166
|
+
const foo = {
|
|
167
|
+
bar: newValue,
|
|
168
|
+
};
|
|
169
|
+
const newTable = {
|
|
170
|
+
foo,
|
|
171
|
+
};
|
|
172
|
+
merge(oldTable, newTable, "oldTableHasRNG");
|
|
173
|
+
const oldTableValue = oldTable.get(key);
|
|
174
|
+
if (oldTableValue === undefined) {
|
|
175
|
+
error(`The old table's key of "${key}" was not filled.`);
|
|
176
|
+
}
|
|
177
|
+
if (!isRNG(oldTableValue.bar)) {
|
|
178
|
+
error("The old table's value is not an RNG object.");
|
|
179
|
+
}
|
|
180
|
+
const newSeed = oldTableValue.bar.GetSeed();
|
|
181
|
+
if (newSeed !== seed) {
|
|
182
|
+
error(`The old table's seed not match: ${seed}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
function oldTableHasRNGSerialized() {
|
|
186
|
+
log("Starting test: oldTableHasRNGSerialized");
|
|
187
|
+
const key = "foo";
|
|
188
|
+
const seed = 50;
|
|
189
|
+
const newValue = newRNG(seed);
|
|
190
|
+
const oldTable = {
|
|
191
|
+
foo: null,
|
|
192
|
+
};
|
|
193
|
+
const foo = {
|
|
194
|
+
bar: newValue,
|
|
195
|
+
};
|
|
196
|
+
const newTable = {
|
|
197
|
+
foo,
|
|
198
|
+
};
|
|
199
|
+
const newTableSerialized = deepCopy(newTable, SerializationType.SERIALIZE);
|
|
200
|
+
merge(oldTable, newTableSerialized, "oldTableHasRNGSerialized");
|
|
201
|
+
const oldTableValue = oldTable.get(key);
|
|
202
|
+
if (oldTableValue === undefined) {
|
|
203
|
+
error(`The old table's key of "${key}" was not filled.`);
|
|
204
|
+
}
|
|
205
|
+
if (!isRNG(oldTableValue.bar)) {
|
|
206
|
+
error("The old table's value is not an RNG object (during the serialized test).");
|
|
207
|
+
}
|
|
208
|
+
const newSeed = oldTableValue.bar.GetSeed();
|
|
209
|
+
if (newSeed !== seed) {
|
|
210
|
+
error(`The old table's seed not match: ${seed}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2VUZXN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL21lcmdlVGVzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM1QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN0QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVoRCxNQUFNLFVBQVUsVUFBVTtJQUN4Qix1QkFBdUIsRUFBRSxDQUFDO0lBQzFCLG9CQUFvQixFQUFFLENBQUM7SUFDdkIsK0JBQStCLEVBQUUsQ0FBQztJQUNsQyxrQ0FBa0MsRUFBRSxDQUFDO0lBRXJDLDBCQUEwQixFQUFFLENBQUM7SUFDN0IsaUJBQWlCLEVBQUUsQ0FBQztJQUNwQiwyQkFBMkIsRUFBRSxDQUFDO0lBQzlCLGNBQWMsRUFBRSxDQUFDO0lBQ2pCLHdCQUF3QixFQUFFLENBQUM7SUFFM0IsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVELFNBQVMsdUJBQXVCO0lBQzlCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQztJQUNsQixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDdkIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLE1BQU0sUUFBUSxHQUFHO1FBQ2YsR0FBRyxFQUFFLFFBQVE7S0FDNkIs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
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { DisplayFlagZero } from "isaac-typescript-definitions";
|
|
2
|
+
import { game } from "../cachedClasses";
|
|
3
|
+
import { getRoomDescriptor } from "./roomData";
|
|
4
|
+
import { getRoomsInGrid } from "./rooms";
|
|
5
|
+
/**
|
|
6
|
+
* Helper function to set the value of `DisplayFlag` for every room on the floor to 0.
|
|
7
|
+
*
|
|
8
|
+
* This function automatically calls the `Level.UpdateVisibility` after setting the flags so that
|
|
9
|
+
* the changes will be immediately visible.
|
|
10
|
+
*/
|
|
11
|
+
export function clearFloorDisplayFlags() {
|
|
12
|
+
const level = game.GetLevel();
|
|
13
|
+
for (const room of getRoomsInGrid()) {
|
|
14
|
+
room.DisplayFlags = DisplayFlagZero;
|
|
15
|
+
}
|
|
16
|
+
// We must call the "Level.UpdateVisibility" method for the changes to be visible.
|
|
17
|
+
level.UpdateVisibility();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Helper function to get the minimap `DisplayFlag` value for every room on the floor. Returns a map
|
|
21
|
+
* that is indexed by the room's safe grid index.
|
|
22
|
+
*/
|
|
23
|
+
export function getFloorDisplayFlags() {
|
|
24
|
+
const displayFlagsMap = new Map();
|
|
25
|
+
const roomsInGrid = getRoomsInGrid();
|
|
26
|
+
for (const roomDescriptor of roomsInGrid) {
|
|
27
|
+
displayFlagsMap.set(roomDescriptor.SafeGridIndex, roomDescriptor.DisplayFlags);
|
|
28
|
+
}
|
|
29
|
+
return displayFlagsMap;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Helper function to get a particular room's minimap display flags (e.g. whether or not it is
|
|
33
|
+
* visible and so on).
|
|
34
|
+
*
|
|
35
|
+
* @param roomGridIndex Optional. Default is the current room index.
|
|
36
|
+
*/
|
|
37
|
+
export function getRoomDisplayFlags(roomGridIndex) {
|
|
38
|
+
const roomDescriptor = getRoomDescriptor(roomGridIndex);
|
|
39
|
+
return roomDescriptor.DisplayFlags;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Helper function to set the minimap `DisplayFlag` value for multiple rooms at once.
|
|
43
|
+
*
|
|
44
|
+
* This function automatically calls the `Level.UpdateVisibility` after setting the flags so that
|
|
45
|
+
* the changes will be immediately visible.
|
|
46
|
+
*
|
|
47
|
+
* @param displayFlagsMap A map of the display flags that is indexed by the room's safe grid index.
|
|
48
|
+
*/
|
|
49
|
+
export function setDisplayFlags(displayFlagsMap) {
|
|
50
|
+
const level = game.GetLevel();
|
|
51
|
+
for (const [roomGridIndex, displayFlags] of displayFlagsMap.entries()) {
|
|
52
|
+
if (MinimapAPI === undefined) {
|
|
53
|
+
setRoomDisplayFlags(roomGridIndex, displayFlags);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
const roomDescriptor = MinimapAPI.GetRoomByIdx(roomGridIndex);
|
|
57
|
+
if (roomDescriptor !== undefined) {
|
|
58
|
+
roomDescriptor.DisplayFlags = displayFlags;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// We must call the "Level.UpdateVisibility" method for the changes to be visible.
|
|
63
|
+
level.UpdateVisibility();
|
|
64
|
+
}
|
|
65
|
+
/** Alias for the `setDisplayFlags` function. */
|
|
66
|
+
export function setFloorDisplayFlags(displayFlagsMap) {
|
|
67
|
+
setDisplayFlags(displayFlagsMap);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Helper function to set a particular room's minimap display flags (e.g. whether or not it is
|
|
71
|
+
* visible and so on).
|
|
72
|
+
*
|
|
73
|
+
* @param roomGridIndex Set to undefined to use the current room index.
|
|
74
|
+
* @param displayFlags The bit flags value to set. (See the `DisplayFlag` enum.)
|
|
75
|
+
*/
|
|
76
|
+
export function setRoomDisplayFlags(roomGridIndex, displayFlags) {
|
|
77
|
+
const roomDescriptor = getRoomDescriptor(roomGridIndex);
|
|
78
|
+
roomDescriptor.DisplayFlags = displayFlags;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL21pbmltYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV6Qzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxzQkFBc0I7SUFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRTlCLEtBQUssTUFBTSxJQUFJLElBQUksY0FBYyxFQUFFLEVBQUU7UUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxlQUFlLENBQUM7S0FDckM7SUFFRCxrRkFBa0Y7SUFDbEYsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7QUFDM0IsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7SUFFOUQsTUFBTSxXQUFXLEdBQUcsY0FBYyxFQUFFLENBQUM7SUFDckMsS0FBSyxNQUFNLGNBQWMsSUFBSSxXQUFXLEVBQUU7UUFDeEMsZUFBZSxDQUFDLEdBQUcsQ0FDakIsY0FBYyxDQUFDLGFBQWEsRUFDNUIsY0FBYyxDQUFDLFlBQVksQ0FDNUIsQ0FBQztLQUNIO0lBRUQsT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxhQUFtQjtJQUVuQixNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4RCxPQUFPLGNBQWMsQ0FBQyxZQUFZLENBQUM7QUFDckMsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUM3QixlQUFnRDtJQUVoRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFOUIsS0FBSyxNQUFNLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNyRSxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDNUIsbUJBQW1CLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ2xEO2FBQU07WUFDTCxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlELElBQUksY0FBYyxLQUFLLFNBQVMsRUFBRTtnQkFDaEMsY0FBYyxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7YUFDNUM7U0FDRjtLQUNGO0lBRUQsa0ZBQWtGO0lBQ2xGLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0FBQzNCLENBQUM7QUFFRCxnREFBZ0Q7QUFDaEQsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxlQUFnRDtJQUVoRCxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsYUFBOEIsRUFDOUIsWUFBbUM7SUFFbkMsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEQsY0FBYyxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7QUFDN0MsQ0FBQyJ9
|