isaacscript-common 4.0.3 → 4.0.4

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.
Files changed (366) hide show
  1. package/package.json +1 -1
  2. package/cachedClasses.ts +0 -39
  3. package/callbacks/customRevive.ts +0 -215
  4. package/callbacks/itemPickup.ts +0 -101
  5. package/callbacks/postAmbush.ts +0 -73
  6. package/callbacks/postBombExploded.ts +0 -26
  7. package/callbacks/postBombInitLate.ts +0 -36
  8. package/callbacks/postBoneSwing.ts +0 -64
  9. package/callbacks/postCollectibleInitFirst.ts +0 -40
  10. package/callbacks/postCursedTeleport.ts +0 -185
  11. package/callbacks/postCustomDoorEnter.ts +0 -292
  12. package/callbacks/postDiceRoomActivated.ts +0 -60
  13. package/callbacks/postDoorRender.ts +0 -26
  14. package/callbacks/postDoorUpdate.ts +0 -26
  15. package/callbacks/postEffectInitLate.ts +0 -36
  16. package/callbacks/postEffectStateChanged.ts +0 -43
  17. package/callbacks/postEsauJr.ts +0 -109
  18. package/callbacks/postFamiliarInitLate.ts +0 -36
  19. package/callbacks/postFamiliarStateChanged.ts +0 -43
  20. package/callbacks/postFlip.ts +0 -90
  21. package/callbacks/postGreedModeWave.ts +0 -41
  22. package/callbacks/postGridEntity.ts +0 -164
  23. package/callbacks/postGridEntityCollision.ts +0 -69
  24. package/callbacks/postGridEntityRender.ts +0 -26
  25. package/callbacks/postHolyMantleRemoved.ts +0 -55
  26. package/callbacks/postItemDischarged.ts +0 -154
  27. package/callbacks/postKnifeInitLate.ts +0 -36
  28. package/callbacks/postLaserInitLate.ts +0 -36
  29. package/callbacks/postNPCInitLate.ts +0 -36
  30. package/callbacks/postNPCStateChanged.ts +0 -42
  31. package/callbacks/postNewRoomEarly.ts +0 -96
  32. package/callbacks/postPickupCollect.ts +0 -48
  33. package/callbacks/postPickupInitFirst.ts +0 -70
  34. package/callbacks/postPickupInitLate.ts +0 -36
  35. package/callbacks/postPickupStateChanged.ts +0 -43
  36. package/callbacks/postPitRender.ts +0 -26
  37. package/callbacks/postPitUpdate.ts +0 -26
  38. package/callbacks/postPlayerChangeHealth.ts +0 -62
  39. package/callbacks/postPlayerChangeType.ts +0 -56
  40. package/callbacks/postPlayerCollectible.ts +0 -113
  41. package/callbacks/postPlayerFatalDamage.ts +0 -141
  42. package/callbacks/postPlayerInitLate.ts +0 -37
  43. package/callbacks/postPlayerReordered.ts +0 -142
  44. package/callbacks/postPoopRender.ts +0 -26
  45. package/callbacks/postPoopUpdate.ts +0 -26
  46. package/callbacks/postPressurePlateRender.ts +0 -26
  47. package/callbacks/postPressurePlateUpdate.ts +0 -26
  48. package/callbacks/postProjectileInitLate.ts +0 -36
  49. package/callbacks/postPurchase.ts +0 -64
  50. package/callbacks/postRockRender.ts +0 -26
  51. package/callbacks/postRockUpdate.ts +0 -26
  52. package/callbacks/postRoomClearChanged.ts +0 -57
  53. package/callbacks/postSacrifice.ts +0 -64
  54. package/callbacks/postSlotDestroyed.ts +0 -92
  55. package/callbacks/postSlotInitUpdate.ts +0 -68
  56. package/callbacks/postSlotRender.ts +0 -69
  57. package/callbacks/postSpikesRender.ts +0 -26
  58. package/callbacks/postSpikesUpdate.ts +0 -26
  59. package/callbacks/postTNTRender.ts +0 -26
  60. package/callbacks/postTNTUpdate.ts +0 -26
  61. package/callbacks/postTearInitLate.ts +0 -36
  62. package/callbacks/postTearInitVeryLate.ts +0 -41
  63. package/callbacks/postTransformation.ts +0 -59
  64. package/callbacks/postTrinketBreak.ts +0 -112
  65. package/callbacks/preBerserkDeath.ts +0 -49
  66. package/callbacks/preNewLevel.ts +0 -55
  67. package/callbacks/reorderedCallbacks.ts +0 -168
  68. package/callbacks/subscriptions/postAmbushFinished.ts +0 -32
  69. package/callbacks/subscriptions/postAmbushStarted.ts +0 -32
  70. package/callbacks/subscriptions/postBombInitLate.ts +0 -32
  71. package/callbacks/subscriptions/postBoneExploded.ts +0 -32
  72. package/callbacks/subscriptions/postBoneSwing.ts +0 -24
  73. package/callbacks/subscriptions/postCollectibleInitFirst.ts +0 -37
  74. package/callbacks/subscriptions/postCursedTeleport.ts +0 -24
  75. package/callbacks/subscriptions/postCustomDoorEnter.ts +0 -45
  76. package/callbacks/subscriptions/postCustomRevive.ts +0 -36
  77. package/callbacks/subscriptions/postDiceRoomActivated.ts +0 -38
  78. package/callbacks/subscriptions/postDoorRender.ts +0 -35
  79. package/callbacks/subscriptions/postDoorUpdate.ts +0 -35
  80. package/callbacks/subscriptions/postEffectInitLate.ts +0 -32
  81. package/callbacks/subscriptions/postEffectStateChanged.ts +0 -40
  82. package/callbacks/subscriptions/postEsauJr.ts +0 -24
  83. package/callbacks/subscriptions/postFamiliarInitLate.ts +0 -32
  84. package/callbacks/subscriptions/postFamiliarStateChanged.ts +0 -40
  85. package/callbacks/subscriptions/postFirstEsauJr.ts +0 -24
  86. package/callbacks/subscriptions/postFirstFlip.ts +0 -24
  87. package/callbacks/subscriptions/postFlip.ts +0 -22
  88. package/callbacks/subscriptions/postGameStartedReordered.ts +0 -24
  89. package/callbacks/subscriptions/postGreedModeWave.ts +0 -24
  90. package/callbacks/subscriptions/postGridEntityBroken.ts +0 -51
  91. package/callbacks/subscriptions/postGridEntityCollision.ts +0 -54
  92. package/callbacks/subscriptions/postGridEntityInit.ts +0 -51
  93. package/callbacks/subscriptions/postGridEntityRemove.ts +0 -52
  94. package/callbacks/subscriptions/postGridEntityRender.ts +0 -51
  95. package/callbacks/subscriptions/postGridEntityStateChanged.ts +0 -55
  96. package/callbacks/subscriptions/postGridEntityUpdate.ts +0 -51
  97. package/callbacks/subscriptions/postHolyMantleRemoved.ts +0 -48
  98. package/callbacks/subscriptions/postItemDischarged.ts +0 -43
  99. package/callbacks/subscriptions/postItemPickup.ts +0 -64
  100. package/callbacks/subscriptions/postKnifeInitLate.ts +0 -32
  101. package/callbacks/subscriptions/postLaserInitLate.ts +0 -32
  102. package/callbacks/subscriptions/postNPCInitLate.ts +0 -32
  103. package/callbacks/subscriptions/postNPCStateChanged.ts +0 -42
  104. package/callbacks/subscriptions/postNewLevelReordered.ts +0 -22
  105. package/callbacks/subscriptions/postNewRoomEarly.ts +0 -22
  106. package/callbacks/subscriptions/postNewRoomReordered.ts +0 -22
  107. package/callbacks/subscriptions/postPEffectUpdateReordered.ts +0 -40
  108. package/callbacks/subscriptions/postPickupCollect.ts +0 -35
  109. package/callbacks/subscriptions/postPickupInitFirst.ts +0 -32
  110. package/callbacks/subscriptions/postPickupInitLate.ts +0 -32
  111. package/callbacks/subscriptions/postPickupStateChanged.ts +0 -40
  112. package/callbacks/subscriptions/postPitRender.ts +0 -35
  113. package/callbacks/subscriptions/postPitUpdate.ts +0 -35
  114. package/callbacks/subscriptions/postPlayerChangeHealth.ts +0 -49
  115. package/callbacks/subscriptions/postPlayerChangeType.ts +0 -40
  116. package/callbacks/subscriptions/postPlayerCollectibleAdded.ts +0 -38
  117. package/callbacks/subscriptions/postPlayerCollectibleRemoved.ts +0 -38
  118. package/callbacks/subscriptions/postPlayerFatalDamage.ts +0 -68
  119. package/callbacks/subscriptions/postPlayerInitLate.ts +0 -40
  120. package/callbacks/subscriptions/postPlayerInitReordered.ts +0 -40
  121. package/callbacks/subscriptions/postPlayerRenderReordered.ts +0 -40
  122. package/callbacks/subscriptions/postPlayerUpdateReordered.ts +0 -40
  123. package/callbacks/subscriptions/postPoopRender.ts +0 -35
  124. package/callbacks/subscriptions/postPoopUpdate.ts +0 -35
  125. package/callbacks/subscriptions/postPressurePlateRender.ts +0 -37
  126. package/callbacks/subscriptions/postPressurePlateUpdate.ts +0 -37
  127. package/callbacks/subscriptions/postProjectileInitLate.ts +0 -35
  128. package/callbacks/subscriptions/postPurchase.ts +0 -31
  129. package/callbacks/subscriptions/postRockRender.ts +0 -35
  130. package/callbacks/subscriptions/postRockUpdate.ts +0 -35
  131. package/callbacks/subscriptions/postRoomClearChanged.ts +0 -30
  132. package/callbacks/subscriptions/postSacrifice.ts +0 -43
  133. package/callbacks/subscriptions/postSlotAnimationChanged.ts +0 -40
  134. package/callbacks/subscriptions/postSlotDestroyed.ts +0 -55
  135. package/callbacks/subscriptions/postSlotInit.ts +0 -32
  136. package/callbacks/subscriptions/postSlotRender.ts +0 -32
  137. package/callbacks/subscriptions/postSlotUpdate.ts +0 -32
  138. package/callbacks/subscriptions/postSpikesRender.ts +0 -35
  139. package/callbacks/subscriptions/postSpikesUpdate.ts +0 -35
  140. package/callbacks/subscriptions/postTNTRender.ts +0 -35
  141. package/callbacks/subscriptions/postTNTUpdate.ts +0 -35
  142. package/callbacks/subscriptions/postTearInitLate.ts +0 -32
  143. package/callbacks/subscriptions/postTearInitVeryLate.ts +0 -32
  144. package/callbacks/subscriptions/postTransformation.ts +0 -40
  145. package/callbacks/subscriptions/postTrinketBreak.ts +0 -38
  146. package/callbacks/subscriptions/preBerserkDeath.ts +0 -42
  147. package/callbacks/subscriptions/preCustomRevive.ts +0 -46
  148. package/callbacks/subscriptions/preItemPickup.ts +0 -64
  149. package/callbacks/subscriptions/preNewLevel.ts +0 -24
  150. package/classes/DefaultMap.ts +0 -174
  151. package/classes/ModUpgraded.ts +0 -84
  152. package/constants.ts +0 -162
  153. package/constantsFirstLast.ts +0 -217
  154. package/enums/AmbushType.ts +0 -4
  155. package/enums/HealthType.ts +0 -16
  156. package/enums/ModCallbackCustom.ts +0 -1278
  157. package/enums/PocketItemType.ts +0 -8
  158. package/enums/SerializationType.ts +0 -5
  159. package/enums/SlotDestructionType.ts +0 -4
  160. package/enums/private/CopyableIsaacAPIClassType.ts +0 -7
  161. package/enums/private/SaveDataKey.ts +0 -14
  162. package/enums/private/SerializationBrand.ts +0 -42
  163. package/features/characterHealthConversion.ts +0 -111
  164. package/features/characterStats.ts +0 -61
  165. package/features/debugDisplay/debugDisplay.ts +0 -221
  166. package/features/debugDisplay/exports.ts +0 -368
  167. package/features/debugDisplay/v.ts +0 -65
  168. package/features/deployJSONRoom.ts +0 -743
  169. package/features/disableInputs.ts +0 -193
  170. package/features/disableSound.ts +0 -77
  171. package/features/extraConsoleCommands/commandsDisplay.ts +0 -290
  172. package/features/extraConsoleCommands/commandsSubroutines.ts +0 -139
  173. package/features/extraConsoleCommands/init.ts +0 -334
  174. package/features/extraConsoleCommands/listCommands.ts +0 -1299
  175. package/features/extraConsoleCommands/v.ts +0 -14
  176. package/features/fadeInRemover.ts +0 -60
  177. package/features/fastReset.ts +0 -75
  178. package/features/forgottenSwitch.ts +0 -50
  179. package/features/getCollectibleItemPoolType.ts +0 -66
  180. package/features/persistentEntities.ts +0 -183
  181. package/features/playerInventory.ts +0 -135
  182. package/features/ponyDetection.ts +0 -74
  183. package/features/preventCollectibleRotation.ts +0 -115
  184. package/features/runInNFrames.ts +0 -148
  185. package/features/saveDataManager/constants.ts +0 -4
  186. package/features/saveDataManager/exports.ts +0 -229
  187. package/features/saveDataManager/load.ts +0 -99
  188. package/features/saveDataManager/main.ts +0 -195
  189. package/features/saveDataManager/maps.ts +0 -13
  190. package/features/saveDataManager/merge.ts +0 -194
  191. package/features/saveDataManager/save.ts +0 -74
  192. package/features/saveDataManager/serializationBrand.ts +0 -16
  193. package/features/sirenHelpers.ts +0 -129
  194. package/features/taintedLazarusPlayers.ts +0 -113
  195. package/featuresInitialized.ts +0 -20
  196. package/functions/ambush.ts +0 -47
  197. package/functions/array.ts +0 -410
  198. package/functions/benchmark.ts +0 -36
  199. package/functions/bitwise.ts +0 -24
  200. package/functions/bombs.ts +0 -12
  201. package/functions/boss.ts +0 -227
  202. package/functions/cacheFlag.ts +0 -12
  203. package/functions/cards.ts +0 -271
  204. package/functions/challenges.ts +0 -13
  205. package/functions/character.ts +0 -126
  206. package/functions/charge.ts +0 -237
  207. package/functions/chargeBar.ts +0 -67
  208. package/functions/collectibleCacheFlag.ts +0 -90
  209. package/functions/collectibleSet.ts +0 -56
  210. package/functions/collectibleTag.ts +0 -89
  211. package/functions/collectibles.ts +0 -659
  212. package/functions/color.ts +0 -128
  213. package/functions/debug.ts +0 -68
  214. package/functions/deepCopy.ts +0 -535
  215. package/functions/deepCopyTests.ts +0 -386
  216. package/functions/direction.ts +0 -49
  217. package/functions/doors.ts +0 -347
  218. package/functions/easing.ts +0 -182
  219. package/functions/eden.ts +0 -47
  220. package/functions/effects.ts +0 -20
  221. package/functions/entity.ts +0 -439
  222. package/functions/entitySpecific.ts +0 -889
  223. package/functions/entityTypes.ts +0 -6
  224. package/functions/enums.ts +0 -146
  225. package/functions/familiars.ts +0 -106
  226. package/functions/flag.ts +0 -165
  227. package/functions/flying.ts +0 -117
  228. package/functions/globals.ts +0 -242
  229. package/functions/gridEntity.ts +0 -511
  230. package/functions/gridEntitySpecific.ts +0 -112
  231. package/functions/input.ts +0 -139
  232. package/functions/isaacAPIClass.ts +0 -67
  233. package/functions/jsonHelpers.ts +0 -45
  234. package/functions/jsonRoom.ts +0 -100
  235. package/functions/kColor.ts +0 -129
  236. package/functions/language.ts +0 -13
  237. package/functions/level.ts +0 -31
  238. package/functions/log.ts +0 -720
  239. package/functions/map.ts +0 -56
  240. package/functions/math.ts +0 -149
  241. package/functions/mergeTests.ts +0 -288
  242. package/functions/npc.ts +0 -148
  243. package/functions/pickupVariants.ts +0 -60
  244. package/functions/pickups.ts +0 -499
  245. package/functions/pills.ts +0 -205
  246. package/functions/player.ts +0 -1056
  247. package/functions/playerDataStructures.ts +0 -150
  248. package/functions/playerHealth.ts +0 -382
  249. package/functions/playerIndex.ts +0 -195
  250. package/functions/pocketItems.ts +0 -149
  251. package/functions/positionVelocity.ts +0 -188
  252. package/functions/random.ts +0 -77
  253. package/functions/revive.ts +0 -201
  254. package/functions/rng.ts +0 -172
  255. package/functions/roomData.ts +0 -199
  256. package/functions/roomGrid.ts +0 -109
  257. package/functions/roomShape.ts +0 -80
  258. package/functions/rooms.ts +0 -648
  259. package/functions/run.ts +0 -36
  260. package/functions/saveFile.ts +0 -128
  261. package/functions/seeds.ts +0 -19
  262. package/functions/serialization.ts +0 -91
  263. package/functions/set.ts +0 -95
  264. package/functions/sound.ts +0 -9
  265. package/functions/spawnCollectible.ts +0 -104
  266. package/functions/sprite.ts +0 -107
  267. package/functions/stage.ts +0 -125
  268. package/functions/string.ts +0 -47
  269. package/functions/table.ts +0 -189
  270. package/functions/tears.ts +0 -32
  271. package/functions/transformations.ts +0 -131
  272. package/functions/trinketCacheFlag.ts +0 -60
  273. package/functions/trinketGive.ts +0 -157
  274. package/functions/trinkets.ts +0 -215
  275. package/functions/tstlClass.ts +0 -157
  276. package/functions/types.ts +0 -36
  277. package/functions/ui.ts +0 -138
  278. package/functions/utils.ts +0 -189
  279. package/functions/vector.ts +0 -126
  280. package/index.ts +0 -172
  281. package/initCustomCallbacks.ts +0 -132
  282. package/initFeatures.ts +0 -39
  283. package/interfaces/AddCallbackParameterCustom.ts +0 -188
  284. package/interfaces/ChargeBarSprites.ts +0 -12
  285. package/interfaces/JSONDoor.ts +0 -13
  286. package/interfaces/JSONEntity.ts +0 -16
  287. package/interfaces/JSONRoom.ts +0 -36
  288. package/interfaces/JSONRooms.ts +0 -12
  289. package/interfaces/JSONSpawn.ts +0 -14
  290. package/interfaces/PlayerHealth.ts +0 -16
  291. package/interfaces/PocketItemDescription.ts +0 -9
  292. package/interfaces/SaveData.ts +0 -29
  293. package/interfaces/TrinketSituation.ts +0 -9
  294. package/interfaces/private/TSTLClassMetatable.ts +0 -8
  295. package/maps/PHDPillConversions.ts +0 -21
  296. package/maps/cardMap.ts +0 -209
  297. package/maps/characterMap.ts +0 -87
  298. package/maps/collectibleDescriptionMap.ts +0 -732
  299. package/maps/collectibleNameMap.ts +0 -731
  300. package/maps/defaultPlayerStatMap.ts +0 -17
  301. package/maps/falsePHDPillConversions.ts +0 -35
  302. package/maps/gridEntityTypeToBrokenStateMap.ts +0 -50
  303. package/maps/gridEntityXMLMap.ts +0 -176
  304. package/maps/pillEffectMap.ts +0 -88
  305. package/maps/roomShapeToTopLeftWallGridIndexMap.ts +0 -18
  306. package/maps/roomTypeMap.ts +0 -40
  307. package/maps/trinketDescriptionMap.ts +0 -200
  308. package/maps/trinketNameMap.ts +0 -198
  309. package/objects/LRoomShapeToRectangles.ts +0 -44
  310. package/objects/callbackRegisterFunctions.ts +0 -187
  311. package/objects/cardDescriptions.ts +0 -105
  312. package/objects/cardNames.ts +0 -105
  313. package/objects/cardTypes.ts +0 -104
  314. package/objects/challengeNames.ts +0 -52
  315. package/objects/characterNames.ts +0 -48
  316. package/objects/coinSubTypeToValue.ts +0 -14
  317. package/objects/colors.ts +0 -16
  318. package/objects/directionNames.ts +0 -11
  319. package/objects/directionToDegrees.ts +0 -11
  320. package/objects/directionToVector.ts +0 -12
  321. package/objects/doorSlotFlagToDoorSlot.ts +0 -16
  322. package/objects/doorSlotToDirection.ts +0 -14
  323. package/objects/isaacAPIClassTypeToBrand.ts +0 -11
  324. package/objects/isaacAPIClassTypeToCopyFunction.ts +0 -18
  325. package/objects/languageNames.ts +0 -13
  326. package/objects/oppositeDoorSlots.ts +0 -15
  327. package/objects/pillEffectClasses.ts +0 -63
  328. package/objects/pillEffectNames.ts +0 -57
  329. package/objects/pillEffectTypes.ts +0 -62
  330. package/objects/roomShapeBounds.ts +0 -71
  331. package/objects/roomShapeLayoutSizes.ts +0 -45
  332. package/objects/roomShapeToBottomRightPosition.ts +0 -25
  333. package/objects/roomShapeToDoorSlots.ts +0 -83
  334. package/objects/roomShapeToDoorSlotsToGridIndexDelta.ts +0 -127
  335. package/objects/roomShapeToGridWidth.ts +0 -21
  336. package/objects/roomShapeToTopLeftPosition.ts +0 -26
  337. package/objects/roomShapeVolumes.ts +0 -38
  338. package/objects/roomTypeNames.ts +0 -36
  339. package/objects/serializedIsaacAPIClassTypeToIdentityFunction.ts +0 -14
  340. package/objects/stageTypeToLetter.ts +0 -15
  341. package/objects/transformationNames.ts +0 -18
  342. package/patchErrorFunctions.ts +0 -92
  343. package/sets/LRoomShapesSet.ts +0 -8
  344. package/sets/bossSets.ts +0 -470
  345. package/sets/charactersThatStartWithAnActiveItemSet.ts +0 -16
  346. package/sets/charactersWithBlackHeartFromEternalHeartSet.ts +0 -7
  347. package/sets/charactersWithFreeDevilDealsSet.ts +0 -4
  348. package/sets/charactersWithNoRedHeartsSet.ts +0 -17
  349. package/sets/charactersWithNoSoulHeartsSet.ts +0 -14
  350. package/sets/chestPickupVariantsSet.ts +0 -16
  351. package/sets/familiarsThatShootPlayerTearsSet.ts +0 -13
  352. package/sets/lostStyleCharactersSet.ts +0 -13
  353. package/sets/mineShaftRoomSubTypesSet.ts +0 -10
  354. package/sets/redHeartSubTypesSet.ts +0 -7
  355. package/sets/sinEntityTypesSet.ts +0 -11
  356. package/sets/singleUseActiveCollectibleTypesSet.ts +0 -13
  357. package/sets/storyBossesSet.ts +0 -17
  358. package/types/AnyEntity.ts +0 -12
  359. package/types/AwaitingTextInput.d.ts +0 -2
  360. package/types/CollectibleIndex.ts +0 -16
  361. package/types/PickingUpItem.ts +0 -89
  362. package/types/PlayerIndex.ts +0 -13
  363. package/types/private/IsaacAPIClass.ts +0 -3
  364. package/types/private/SerializedIsaacAPIClass.ts +0 -3
  365. package/types/private/TSTLClass.ts +0 -3
  366. package/upgradeMod.ts +0 -55
@@ -1,139 +0,0 @@
1
- import {
2
- ButtonAction,
3
- Controller,
4
- ControllerIndex,
5
- Keyboard,
6
- } from "isaac-typescript-definitions";
7
- import { MAX_NUM_INPUTS } from "../constants";
8
- import { copySet } from "./set";
9
- import { trimPrefix } from "./string";
10
- import { erange } from "./utils";
11
-
12
- const MODIFIER_KEYS: readonly Keyboard[] = [
13
- Keyboard.LEFT_SHIFT, // 340
14
- Keyboard.LEFT_CONTROL, // 341
15
- Keyboard.LEFT_ALT, // 342
16
- Keyboard.LEFT_SUPER, // 343
17
- Keyboard.RIGHT_SHIFT, // 344
18
- Keyboard.RIGHT_CONTROL, // 345
19
- Keyboard.RIGHT_ALT, // 346
20
- Keyboard.RIGHT_SUPER, // 347
21
- ];
22
-
23
- const MOVEMENT_ACTIONS: readonly ButtonAction[] = [
24
- ButtonAction.LEFT, // 0
25
- ButtonAction.RIGHT, // 1
26
- ButtonAction.UP, // 2
27
- ButtonAction.DOWN, // 3
28
- ];
29
-
30
- const MOVEMENT_ACTIONS_SET: ReadonlySet<ButtonAction> = new Set(
31
- MOVEMENT_ACTIONS,
32
- );
33
-
34
- const SHOOTING_ACTIONS: readonly ButtonAction[] = [
35
- ButtonAction.SHOOT_LEFT, // 4
36
- ButtonAction.SHOOT_RIGHT, // 5
37
- ButtonAction.SHOOT_UP, // 6
38
- ButtonAction.SHOOT_DOWN, // 7
39
- ];
40
-
41
- const SHOOTING_ACTIONS_SET: ReadonlySet<ButtonAction> = new Set(
42
- SHOOTING_ACTIONS,
43
- );
44
-
45
- /** Helper function to get the enum name for the specified `Controller` value. */
46
- export function controllerToString(controller: Controller): string {
47
- const key = Controller[controller];
48
- if (key === undefined) {
49
- return "unknown";
50
- }
51
-
52
- return trimPrefix(key, "BUTTON_");
53
- }
54
-
55
- export function getMoveActions(): Set<ButtonAction> {
56
- return copySet(MOVEMENT_ACTIONS_SET);
57
- }
58
-
59
- export function getShootActions(): Set<ButtonAction> {
60
- return copySet(SHOOTING_ACTIONS_SET);
61
- }
62
-
63
- /** Iterates over all inputs to determine if a particular button is pressed (i.e. held down). */
64
- export function isActionPressedOnAnyInput(buttonAction: ButtonAction): boolean {
65
- const validInputs = erange(MAX_NUM_INPUTS);
66
- return validInputs.some((input) =>
67
- Input.IsActionPressed(buttonAction, input),
68
- );
69
- }
70
-
71
- /**
72
- * Iterates over all inputs to determine if a particular button is triggered (i.e. held down and
73
- * then released).
74
- */
75
- export function isActionTriggeredOnAnyInput(
76
- buttonAction: ButtonAction,
77
- ): boolean {
78
- const validInputs = erange(MAX_NUM_INPUTS);
79
- return validInputs.some((input) =>
80
- Input.IsActionTriggered(buttonAction, input),
81
- );
82
- }
83
-
84
- /**
85
- * Helper function to see if a particular keyboard key is being pressed down by the player.
86
- *
87
- * This function is variadic, meaning you can pass as many keyboard values as you want to check for.
88
- * This function will return true if any of the values are pressed.
89
- */
90
- export function isKeyboardPressed(...keys: Keyboard[]): boolean {
91
- return keys.some((key) =>
92
- Input.IsButtonPressed(key, ControllerIndex.KEYBOARD),
93
- );
94
- }
95
-
96
- /**
97
- * Helper function to check if one or more modifier keys are being pressed down on the keyboard.
98
- *
99
- * A modifier key is defined as shift, control, alt, or Windows.
100
- */
101
- export function isModifierKeyPressed(): boolean {
102
- return isKeyboardPressed(...MODIFIER_KEYS);
103
- }
104
-
105
- export function isMoveAction(buttonAction: ButtonAction): boolean {
106
- return MOVEMENT_ACTIONS_SET.has(buttonAction);
107
- }
108
-
109
- export function isMoveActionPressedOnAnyInput(): boolean {
110
- return MOVEMENT_ACTIONS.some((moveAction) =>
111
- isActionPressedOnAnyInput(moveAction),
112
- );
113
- }
114
-
115
- export function isMoveActionTriggeredOnAnyInput(): boolean {
116
- return MOVEMENT_ACTIONS.some((moveAction) =>
117
- isActionTriggeredOnAnyInput(moveAction),
118
- );
119
- }
120
-
121
- export function isShootAction(buttonAction: ButtonAction): boolean {
122
- return SHOOTING_ACTIONS_SET.has(buttonAction);
123
- }
124
-
125
- export function isShootActionPressedOnAnyInput(): boolean {
126
- return SHOOTING_ACTIONS.some((shootAction) =>
127
- isActionPressedOnAnyInput(shootAction),
128
- );
129
- }
130
-
131
- export function isShootActionTriggeredOnAnyInput(): boolean {
132
- return SHOOTING_ACTIONS.some((shootAction) =>
133
- isActionTriggeredOnAnyInput(shootAction),
134
- );
135
- }
136
-
137
- export function keyboardToString(keyboard: Keyboard): string {
138
- return Keyboard[keyboard] ?? "unknown";
139
- }
@@ -1,67 +0,0 @@
1
- import { IsaacAPIClass } from "../types/private/IsaacAPIClass";
2
- import { isString, isUserdata } from "./types";
3
-
4
- /**
5
- * Helper function to get the name of a class from the Isaac API. This is contained within the
6
- * "__type" metatable key.
7
- *
8
- * For example, a `Vector` class is has a name of "Vector".
9
- *
10
- * Returns undefined if the object is not of type `userdata` or if the "__type" metatable key does
11
- * not exist.
12
- */
13
- export function getIsaacAPIClassName(object: unknown): string | undefined {
14
- if (!isUserdata(object)) {
15
- return undefined;
16
- }
17
-
18
- const metatable = getmetatable(object) as
19
- | LuaTable<AnyNotNil, unknown>
20
- | undefined;
21
- if (metatable === undefined) {
22
- return undefined;
23
- }
24
-
25
- const classType = metatable.get("__type");
26
- if (!isString(classType)) {
27
- return undefined;
28
- }
29
-
30
- return classType;
31
- }
32
-
33
- /**
34
- * Helper function to check if something is an instantiated class from the Isaac API. (All classes
35
- * from the Isaac API have a type of "userdata" in Lua with a metatable key of "__type" equal to the
36
- * name of the class.)
37
- */
38
- export function isIsaacAPIClass(object: unknown): object is IsaacAPIClass {
39
- const isaacAPIClassType = getIsaacAPIClassName(object);
40
- return isaacAPIClassType !== undefined;
41
- }
42
-
43
- export function isIsaacAPIClassOfType(
44
- object: unknown,
45
- classType: string,
46
- ): boolean {
47
- const isaacAPIClassType = getIsaacAPIClassName(object);
48
- return (
49
- isaacAPIClassType === classType ||
50
- isaacAPIClassType === `const ${classType}`
51
- );
52
- }
53
-
54
- /**
55
- * Helper function to check if an instantiated Isaac API class is equal to another one of the same
56
- * type. You must provide the list of keys to check for.
57
- */
58
- export function isaacAPIClassEquals(
59
- object1: unknown,
60
- object2: unknown,
61
- keys: string[],
62
- ): boolean {
63
- const table1 = object1 as LuaTable<AnyNotNil, unknown>;
64
- const table2 = object2 as LuaTable<AnyNotNil, unknown>;
65
-
66
- return keys.every((key) => table1.get(key) === table2.get(key));
67
- }
@@ -1,45 +0,0 @@
1
- import * as json from "json";
2
- import { logError } from "./log";
3
-
4
- function tryDecode(this: void, jsonString: string) {
5
- return json.decode(jsonString) as LuaTable;
6
- }
7
-
8
- function tryEncode(this: void, luaTable: unknown) {
9
- return json.encode(luaTable);
10
- }
11
-
12
- /**
13
- * Converts a JSON string to a Lua table.
14
- *
15
- * In most cases, this function will be used for reading data from a "save#.dat" file. If decoding
16
- * fails, it will return a blank Lua table instead of throwing an error. (This allows execution to
17
- * continue in cases where users have no current save data or have manually removed their existing
18
- * save data.)
19
- */
20
- export function jsonDecode(jsonString: string): LuaTable<AnyNotNil, unknown> {
21
- const [ok, luaTableOrErrMsg] = pcall(tryDecode, jsonString);
22
- if (!ok) {
23
- // Instead of throwing an error, continue execution of the callback.
24
- logError(`Failed to convert the JSON string to a Lua table: ${jsonString}`);
25
- return new LuaTable();
26
- }
27
-
28
- return luaTableOrErrMsg;
29
- }
30
-
31
- /**
32
- * Converts a Lua table to a JSON string.
33
- *
34
- * In most cases, this function will be used for writing data to a "save#.dat" file. If encoding
35
- * fails, it will throw an error to prevent writing a blank string or corrupted data to a user's
36
- * "save#.dat" file.
37
- */
38
- export function jsonEncode(luaTable: unknown): string {
39
- const [ok, jsonStringOrErrMsg] = pcall(tryEncode, luaTable);
40
- if (!ok) {
41
- error(`Failed to convert the Lua table to JSON: ${jsonStringOrErrMsg}`);
42
- }
43
-
44
- return jsonStringOrErrMsg;
45
- }
@@ -1,100 +0,0 @@
1
- import { JSONRoom } from "../interfaces/JSONRoom";
2
- import { sumArray } from "./array";
3
- import { log } from "./log";
4
- import { getRandomFloat } from "./random";
5
- import { getRandomSeed } from "./rng";
6
-
7
- export function getJSONRoomOfVariant(
8
- jsonRooms: JSONRoom[],
9
- variant: int,
10
- ): JSONRoom | undefined {
11
- const jsonRoomsOfVariant = jsonRooms.filter((jsonRoom) => {
12
- const roomVariantString = jsonRoom.$.variant;
13
- const roomVariant = tonumber(roomVariantString);
14
- return roomVariant === variant;
15
- });
16
-
17
- // The room variant acts as an ID for the room. We assume that there should only be a single room
18
- // per variant.
19
- if (jsonRoomsOfVariant.length === 0) {
20
- return undefined;
21
- }
22
-
23
- if (jsonRoomsOfVariant.length === 1) {
24
- return jsonRoomsOfVariant[0];
25
- }
26
-
27
- return error(
28
- `Found ${jsonRoomsOfVariant.length} JSON rooms with a variant of ${variant}, when there should only be 1.`,
29
- );
30
- }
31
-
32
- export function getJSONRoomsOfSubType(
33
- jsonRooms: JSONRoom[],
34
- subType: int,
35
- ): JSONRoom[] {
36
- return jsonRooms.filter((jsonRoom) => {
37
- const roomSubTypeString = jsonRoom.$.subtype;
38
- const roomSubType = tonumber(roomSubTypeString);
39
- return roomSubType === subType;
40
- });
41
- }
42
-
43
- /**
44
- * Helper function to get a random JSON room from an array of JSON rooms.
45
- *
46
- * Note that this function does not simply choose a random element in the provided array; it will
47
- * properly account for each room weight using the algorithm from:
48
- * https://stackoverflow.com/questions/1761626/weighted-random-numbers
49
- */
50
- export function getRandomJSONRoom(
51
- jsonRooms: JSONRoom[],
52
- seedOrRNG: Seed | RNG = getRandomSeed(),
53
- verbose = false,
54
- ): JSONRoom {
55
- const totalWeight = getTotalWeightOfJSONRooms(jsonRooms);
56
- if (verbose) {
57
- log(`Total weight of the JSON rooms provided: ${totalWeight}`);
58
- }
59
-
60
- const chosenWeight = getRandomFloat(0, totalWeight, seedOrRNG);
61
- if (verbose) {
62
- log(`Randomly chose weight for JSON room: ${chosenWeight}`);
63
- }
64
-
65
- return getJSONRoomWithChosenWeight(jsonRooms, chosenWeight);
66
- }
67
-
68
- function getTotalWeightOfJSONRooms(jsonRooms: JSONRoom[]) {
69
- const weights = jsonRooms.map((jsonRoom) => {
70
- const roomWeightString = jsonRoom.$.weight;
71
- const roomWeight = tonumber(roomWeightString);
72
- if (roomWeight === undefined) {
73
- error(`Failed to parse the weight of a JSON room: ${roomWeightString}.`);
74
- }
75
- return roomWeight;
76
- });
77
-
78
- return sumArray(weights);
79
- }
80
-
81
- function getJSONRoomWithChosenWeight(
82
- jsonRooms: JSONRoom[],
83
- chosenWeight: float,
84
- ) {
85
- for (const jsonRoom of jsonRooms) {
86
- const roomWeightString = jsonRoom.$.weight;
87
- const roomWeight = tonumber(roomWeightString);
88
- if (roomWeight === undefined) {
89
- error(`Failed to parse the weight of a JSON room: ${roomWeightString}`);
90
- }
91
-
92
- if (chosenWeight < roomWeight) {
93
- return jsonRoom;
94
- }
95
-
96
- chosenWeight -= roomWeight;
97
- }
98
-
99
- return error(`Failed to get a JSON room with chosen weight: ${chosenWeight}`);
100
- }
@@ -1,129 +0,0 @@
1
- import { SerializationBrand } from "../enums/private/SerializationBrand";
2
- import { SerializationType } from "../enums/SerializationType";
3
- import { isaacAPIClassEquals, isIsaacAPIClassOfType } from "./isaacAPIClass";
4
- import { copyValuesToTable, getNumbersFromTable, tableHasKeys } from "./table";
5
- import { isTable } from "./types";
6
-
7
- type SerializedKColor = LuaTable<string, unknown> & {
8
- readonly __serializedKColorBrand: unique symbol;
9
- };
10
-
11
- interface CopyKColorReturn {
12
- [SerializationType.NONE]: KColor;
13
- [SerializationType.SERIALIZE]: SerializedKColor;
14
- [SerializationType.DESERIALIZE]: KColor;
15
- }
16
-
17
- const KEYS = ["Red", "Green", "Blue", "Alpha"];
18
- const OBJECT_NAME = "KColor";
19
-
20
- /**
21
- * Helper function to copy a `KColor` object.
22
- *
23
- * @param kColor The KColor object to copy. In the case of deserialization, this will actually be a
24
- * Lua table instead of an instantiated KColor class.
25
- * @param serializationType Default is `SerializationType.NONE`.
26
- */
27
- export function copyKColor<
28
- K extends KColor | SerializedKColor,
29
- S extends SerializationType,
30
- >(kColor: K, serializationType: S): CopyKColorReturn[S];
31
- export function copyKColor<K extends KColor | SerializedKColor>(
32
- kColor: K,
33
- ): CopyKColorReturn[SerializationType.NONE];
34
- export function copyKColor(
35
- kColor: KColor | SerializedKColor,
36
- serializationType = SerializationType.NONE,
37
- ): CopyKColorReturn[keyof CopyKColorReturn] {
38
- switch (serializationType) {
39
- case SerializationType.NONE: {
40
- if (!isKColor(kColor)) {
41
- error(
42
- `Failed to copy a ${OBJECT_NAME} object since the provided object was not a userdata ${OBJECT_NAME} class.`,
43
- );
44
- }
45
-
46
- return KColor(kColor.Red, kColor.Green, kColor.Blue, kColor.Alpha);
47
- }
48
-
49
- case SerializationType.SERIALIZE: {
50
- if (!isKColor(kColor)) {
51
- error(
52
- `Failed to serialize a ${OBJECT_NAME} object since the provided object was not a userdata ${OBJECT_NAME} class.`,
53
- );
54
- }
55
-
56
- const kColorTable = new LuaTable<string, unknown>();
57
- copyValuesToTable(kColor, KEYS, kColorTable);
58
- kColorTable.set(SerializationBrand.K_COLOR, "");
59
- return kColorTable as SerializedKColor;
60
- }
61
-
62
- case SerializationType.DESERIALIZE: {
63
- if (!isTable(kColor)) {
64
- error(
65
- `Failed to deserialize a ${OBJECT_NAME} object since the provided object was not a Lua table.`,
66
- );
67
- }
68
-
69
- const [r, g, b, a] = getNumbersFromTable(
70
- kColor as LuaTable<string, unknown>,
71
- OBJECT_NAME,
72
- ...KEYS,
73
- );
74
-
75
- if (r === undefined) {
76
- error(
77
- `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: r`,
78
- );
79
- }
80
- if (g === undefined) {
81
- error(
82
- `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: g`,
83
- );
84
- }
85
- if (b === undefined) {
86
- error(
87
- `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: b`,
88
- );
89
- }
90
- if (a === undefined) {
91
- error(
92
- `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: a`,
93
- );
94
- }
95
-
96
- return KColor(r, g, b, a);
97
- }
98
- }
99
- }
100
-
101
- /** Returns `KColor(1, 1, 1, 1)`. */
102
- export function getDefaultKColor(): KColor {
103
- return KColor(1, 1, 1, 1);
104
- }
105
-
106
- /** Helper function to check if something is an instantiated KColor object. */
107
- export function isKColor(object: unknown): object is KColor {
108
- return isIsaacAPIClassOfType(object, OBJECT_NAME);
109
- }
110
-
111
- /**
112
- * Used to determine is the given table is a serialized `KColor` object created by the save data
113
- * manager and/or the `deepCopy` function.
114
- */
115
- export function isSerializedKColor(
116
- object: unknown,
117
- ): object is SerializedKColor {
118
- if (!isTable(object)) {
119
- return false;
120
- }
121
-
122
- return (
123
- tableHasKeys(object, ...KEYS) && object.has(SerializationBrand.K_COLOR)
124
- );
125
- }
126
-
127
- export function kColorEquals(kColor1: KColor, kColor2: KColor): boolean {
128
- return isaacAPIClassEquals(kColor1, kColor2, KEYS);
129
- }
@@ -1,13 +0,0 @@
1
- import { LANGUAGE_NAMES } from "../objects/languageNames";
2
-
3
- /**
4
- * Helper function to convert the language abbreviation from `Options.Language` to the "full"
5
- * language name.
6
- *
7
- * For example, if the current language is set to Korean, `Options.Language` will be set to "kr",
8
- * and this function will return "Korean".
9
- */
10
- export function getLanguageName(): string {
11
- const languageAbbreviation = Options.Language;
12
- return LANGUAGE_NAMES[languageAbbreviation];
13
- }
@@ -1,31 +0,0 @@
1
- import { DoorSlot } from "isaac-typescript-definitions";
2
- import { game } from "../cachedClasses";
3
- import { getEnumValues } from "./enums";
4
- import {
5
- getNumRooms,
6
- getRooms,
7
- isDoorSlotValidAtGridIndexForRedRoom,
8
- } from "./rooms";
9
-
10
- export function fillLevelWithRedRooms(): void {
11
- const level = game.GetLevel();
12
-
13
- let numRooms: int;
14
- do {
15
- const rooms = getRooms();
16
- numRooms = rooms.length;
17
-
18
- for (const roomDescriptor of rooms) {
19
- for (const doorSlot of getEnumValues(DoorSlot)) {
20
- if (
21
- isDoorSlotValidAtGridIndexForRedRoom(
22
- doorSlot,
23
- roomDescriptor.GridIndex,
24
- )
25
- ) {
26
- level.MakeRedRoomDoor(roomDescriptor.GridIndex, doorSlot);
27
- }
28
- }
29
- }
30
- } while (numRooms !== getNumRooms());
31
- }