isaacscript-common
Version:
Helper functions and features for IsaacScript mods.
185 lines (179 loc) • 10.9 kB
text/typescript
import { MOD_CALLBACK_CUSTOM_VALUES } from "./cachedEnumValues";
import * as cc from "./callbackClasses";
import { ModCallbackCustom } from "./enums/ModCallbackCustom";
import type { AnyClass } from "./types/AnyClass";
const MOD_CALLBACK_CUSTOM_TO_CLASS = {
[]: cc.EntityTakeDmgFilter,
[]: cc.EntityTakeDmgPlayer,
[]: cc.InputActionFilter,
[]: cc.InputActionPlayer,
[]: cc.PostAmbushFinished,
[]: cc.PostAmbushStarted,
[]: cc.PostBombExploded,
[]: cc.PostBombInitFilter,
[]: cc.PostBombInitLate,
[]: cc.PostBombRenderFilter,
[]: cc.PostBombUpdateFilter,
[]: cc.PostBoneSwing,
[]: cc.PostCollectibleEmpty,
[]: cc.PostCursedTeleport,
[]: cc.PostCustomRevive,
[]: cc.PostDiceRoomActivated,
[]: cc.PostDoorRender,
[]: cc.PostDoorUpdate,
[]: cc.PostEffectInitFilter,
[]: cc.PostEffectInitLate,
[]: cc.PostEffectRenderFilter,
[]: cc.PostEffectStateChanged,
[]: cc.PostEffectUpdateFilter,
[]: cc.PostEntityKillFilter,
[]: cc.PostEntityRemoveFilter,
[]: cc.PostEsauJr,
[]: cc.PostFamiliarInitFilter,
[]: cc.PostFamiliarInitLate,
[]: cc.PostFamiliarRenderFilter,
[]: cc.PostFamiliarStateChanged,
[]: cc.PostFamiliarUpdateFilter,
[]: cc.PostFirstFlip,
[]: cc.PostFirstEsauJr,
[]: cc.PostFlip,
[]: cc.PostGameEndFilter,
[]: cc.PostGameStartedReordered,
[]:
cc.PostGameStartedReorderedLast,
[]: cc.PostGreedModeWave,
[]: cc.PostGridEntityBroken,
[]: cc.PostGridEntityCollision,
[]:
cc.PostGridEntityCustomBroken,
[]:
cc.PostGridEntityCustomCollision,
[]: cc.PostGridEntityCustomInit,
[]:
cc.PostGridEntityCustomRemove,
[]:
cc.PostGridEntityCustomRender,
[]:
cc.PostGridEntityCustomStateChanged,
[]:
cc.PostGridEntityCustomUpdate,
[]: cc.PostGridEntityInit,
[]: cc.PostGridEntityRemove,
[]: cc.PostGridEntityRender,
[]:
cc.PostGridEntityStateChanged,
[]: cc.PostGridEntityUpdate,
[]: cc.PostHolyMantleRemoved,
[]: cc.PostItemDischarge,
[]: cc.PostItemPickup,
[]: cc.PostKeyboardPressed,
[]: cc.PostKnifeInitFilter,
[]: cc.PostKnifeInitLate,
[]: cc.PostKnifeRenderFilter,
[]: cc.PostKnifeUpdateFilter,
[]: cc.PostLaserInitFilter,
[]: cc.PostLaserInitLate,
[]: cc.PostLaserRenderFilter,
[]: cc.PostLaserUpdateFilter,
[]: cc.PostNewLevelReordered,
[]: cc.PostNewRoomEarly,
[]: cc.PostNewRoomReordered,
[]: cc.PostNPCDeathFilter,
[]: cc.PostNPCInitFilter,
[]: cc.PostNPCInitLate,
[]: cc.PostNPCRenderFilter,
[]: cc.PostNPCStateChanged,
[]: cc.PostNPCUpdateFilter,
[]:
cc.PostPEffectUpdateReordered,
[]: cc.PostPickupChanged,
[]: cc.PostPickupCollect,
[]: cc.PostPickupInitFilter,
[]: cc.PostPickupInitFirst,
[]: cc.PostPickupInitLate,
[]: cc.PostPickupRenderFilter,
[]:
cc.PostPickupSelectionFilter,
[]: cc.PostPickupStateChanged,
[]: cc.PostPickupUpdateFilter,
[]: cc.PostPitRender,
[]: cc.PostPitUpdate,
[]: cc.PostPlayerChangeHealth,
[]: cc.PostPlayerChangeStat,
[]: cc.PostPlayerChangeType,
[]:
cc.PostPlayerCollectibleAdded,
[]:
cc.PostPlayerCollectibleRemoved,
[]: cc.PostPlayerFatalDamage,
[]: cc.PostPlayerInitFirst,
[]: cc.PostPlayerInitLate,
[]:
cc.PostPlayerRenderReordered,
[]:
cc.PostPlayerUpdateReordered,
[]: cc.PostPoopRender,
[]: cc.PostPoopUpdate,
[]: cc.PostPressurePlateRender,
[]: cc.PostPressurePlateUpdate,
[]: cc.PostProjectileInitFilter,
[]: cc.PostProjectileInitLate,
[]: cc.PostProjectileKill,
[]:
cc.PostProjectileRenderFilter,
[]:
cc.PostProjectileUpdateFilter,
[]: cc.PostPurchase,
[]: cc.PostRockRender,
[]: cc.PostRockUpdate,
[]: cc.PostRoomClearChanged,
[]: cc.PostSacrifice,
[]: cc.PostSlotAnimationChanged,
[]: cc.PostSlotCollision,
[]: cc.PostSlotDestroyed,
[]: cc.PostSlotInit,
[]: cc.PostSlotRender,
[]: cc.PostSlotUpdate,
[]: cc.PostSpikesRender,
[]: cc.PostSpikesUpdate,
[]: cc.PostTearInitFilter,
[]: cc.PostTearInitLate,
[]: cc.PostTearInitVeryLate,
[]: cc.PostTearKill,
[]: cc.PostTearRenderFilter,
[]: cc.PostTearUpdateFilter,
[]: cc.PostTNTRender,
[]: cc.PostTNTUpdate,
[]: cc.PostTransformation,
[]: cc.PostTrinketBreak,
[]: cc.PostUsePillFilter,
[]: cc.PreBerserkDeath,
[]: cc.PreBombCollisionFilter,
[]: cc.PreCustomRevive,
[]: cc.PreEntitySpawnFilter,
[]:
cc.PreFamiliarCollisionFilter,
[]: cc.PreGetPedestal,
[]: cc.PreItemPickup,
[]: cc.PreKnifeCollisionFilter,
[]: cc.PreNewLevel,
[]: cc.PreNPCCollisionFilter,
[]: cc.PreNPCUpdateFilter,
[]:
cc.PreProjectileCollisionFilter,
[]: cc.PreRoomEntitySpawnFilter,
[]: cc.PreTearCollisionFilter,
} as const satisfies Record<ModCallbackCustom, AnyClass>;
export type ModCallbackCustomToClass = {
readonly [K in keyof typeof MOD_CALLBACK_CUSTOM_TO_CLASS]: InstanceType<
(typeof MOD_CALLBACK_CUSTOM_TO_CLASS)[K]
>;
};
export function getCallbacks(): ModCallbackCustomToClass {
const instantiatedClasses: Record<number, unknown> = {};
for (const modCallbackCustom of MOD_CALLBACK_CUSTOM_VALUES) {
const constructor = MOD_CALLBACK_CUSTOM_TO_CLASS[modCallbackCustom];
instantiatedClasses[modCallbackCustom] = new constructor();
}
return instantiatedClasses as unknown as ModCallbackCustomToClass;
}