UNPKG

isaac-typescript-definitions

Version:

TypeScript definitions for The Binding of Isaac: Repentance.

359 lines (302 loc) 10.2 kB
import type { Dimension } from "../../enums/Dimension"; import type { DoorSlot } from "../../enums/DoorSlot"; import type { EntityType } from "../../enums/EntityType"; import type { DisplayFlag } from "../../enums/flags/DisplayFlag"; import type { GridRoom } from "../../enums/GridRoom"; import type { RoomShape } from "../../enums/RoomShape"; import type { RoomType } from "../../enums/RoomType"; declare global { const MinimapAPI: MinimapAPIInterface | undefined; interface MinimapAPIInterface { AddDisplayFlagsCallback: ( mod: Mod, func: ( room: MinimapAPIRoomDescriptor, flags: BitFlags<DisplayFlag>, ) => BitFlags<DisplayFlag> | undefined, ) => void; AddIcon: ( id: number | string, sprite: Sprite, animationName: string, frame: number, color?: Color, ) => { Sprite: Sprite; animationName: string; color?: Color; frame: number; id: number | string; }; AddMapFlag: ( id: number | string, condition: () => boolean, sprite: Sprite, animName: string, animFrame: number | (() => number), ) => { ID: number | string; anim: string; color: Color; condition: () => boolean; frame: number | (() => number); sprite: Sprite; }; AddPickup: ( id: number | string, icon: string | MinimapAPIIcon, entityType: EntityType, variant: number, subtype: number, func: (pickup: EntityPickup) => boolean | undefined, icongroup: string | number, // cspell:ignore icongroup priority: number, ) => MinimapAPIRoomDescriptor; AddPlayerPositionCallback: ( mod: Mod, func: ( room: MinimapAPIRoomDescriptor, position: Vector, ) => Vector | undefined, ) => void; AddRoom: (table: { /** * The display flags that this room will take on if seen from an adjacent room. This is * usually 0 for secret rooms, 3 for locked rooms and 5 for all others. */ AdjacentDisplayFlags?: DisplayFlag | BitFlags<DisplayFlag>; /** * The API will automatically remove a room if you add this in the same position, setting this * to true will disable this functionality. */ AllowRoomOverlap?: boolean; /** The clear boolean for the room. */ Clear?: boolean; /** A Color object that is applied when this room is rendered on the map. */ Color?: Color; /** * A RoomDescriptor object if you are attaching a vanilla room to this table. Setting this * will cause this room's display flags and clear boolean to be taken from this * RoomDescriptor. */ Descriptor?: RoomDescriptor; /** The display flags for the room. Matches the format of `RoomDescriptor.DisplayFlags`. */ DisplayFlags?: DisplayFlag | BitFlags<DisplayFlag>; /** See the `Hidden` property of `MinimapAPIRoomDescriptor`. */ Hidden?: boolean; /** Any value. This is used to identify your room later. */ ID: number | string; /** * A list of icon IDs that display on the map (e.g. keys and hearts). This will be overridden * once the player enters this room. */ ItemIcons?: number[]; /** * A list of strings. This is only shown when the player does not know the room's type (e.g. * locked shop, dice room). */ LockedIcons?: string[]; /** * A boolean. If true, then this room's minimap appearance will never be changed by the API * itself, meaning its display flags, clear status, visited status and pickup icons will have * to be updated externally. */ NoUpdate?: boolean; /** A vector representing the position of the room on the minimap. */ Position: Vector; /** * A RoomShape enum value that represents the sprite on the minimap and where icons will be * placed. */ Shape: RoomShape; /** * A RoomType enum value. Optional, but recommended if you want the room to work as expected * with minimap revealing items. */ Type?: RoomType; /** * Whether the room has been visited. This will be set to true as soon as the player's map * position is in line with this room. */ Visited?: boolean; }) => MinimapAPIRoomDescriptor; AddRoomShape: ( id: number | string, smallAnims: MinimapAPIRoomAnimsTable, // cspell:ignore Anims largeAnims: MinimapAPIRoomAnimsTable, gridPivot: Vector, gridSize: Vector, positions: readonly Vector[], iconPositions: readonly Vector[], iconPositionCenter: Vector, largeIconPositions: readonly Vector[], largeIconPositionCenter: readonly Vector[], adjacentCoords: Vector, doorSlots?: readonly DoorSlot[], ) => void; GetConfig: (configOption: string) => boolean | number | undefined; GetCurrentRoom: () => MinimapAPIRoomDescriptor | undefined; GetLevel: (dimension?: Dimension) => MinimapAPIRoomDescriptor[]; GetPlayerPosition: () => Vector; GetPositionRelativeToDoor: ( room: MinimapAPIRoomDescriptor, doorslot: DoorSlot, // cspell:ignore doorslot ) => Vector; GetRoom: (position: Vector) => MinimapAPIRoomDescriptor | undefined; GetRoomAtPosition: ( position: Vector, ) => MinimapAPIRoomDescriptor | undefined; GetRoomById: (id: number | string) => MinimapAPIRoomDescriptor | undefined; GetRoomByIdx: ( roomGridIndex: int | GridRoom, ) => MinimapAPIRoomDescriptor | undefined; GetSaveTable: (menuExit: boolean) => LuaMap; IsPositionFree: (position: Vector) => boolean; IsPositionFreeNoAlign: (position: Vector, roomShape?: RoomShape) => boolean; IsRoomAdjacent: ( room1: MinimapAPIRoomDescriptor, room2: MinimapAPIRoomDescriptor, ) => boolean; PlayerInRoom: (room: MinimapAPIRoomDescriptor) => boolean; RemoveIcon: (id: string | number) => void; RemoveRoom: (position: Vector) => void; RemoveRoomByID: (id: number | string) => void; SetPlayerPosition: (position: Vector) => void; Config: { Disable: boolean; DisplayExploredRooms: boolean; DisplayMode: 0 | 1 | 2; DisplayOnNoHUD: boolean; HideInCombat: boolean; MapFrameHeight: number; MapFrameWidth: number; OverrideLost: boolean; OverrideVoid: boolean; PositionX: number; PositionY: number; ShowCurrentRoomItems: boolean; ShowIcons: boolean; ShowLevelFlags: boolean; ShowShadows: boolean; SmoothSlidingSpeed: number; }; Debug: { Colors: () => void; Icons: () => void; RandomMap: () => void; Shapes: () => void; }; Levels: Map<Dimension, MinimapAPIRoomDescriptor[]>; OverrideConfig: { Disable?: boolean; DisplayExploredRooms?: boolean; DisplayMode?: 0 | 1 | 2; DisplayOnNoHUD?: boolean; HideInCombat?: boolean; MapFrameHeight?: number; MapFrameWidth?: number; OverrideLost?: boolean; OverrideVoid?: boolean; PositionX?: number; PositionY?: number; ShowCurrentRoomItems?: boolean; ShowIcons?: boolean; ShowLevelFlags?: boolean; ShowShadows?: boolean; SmoothSlidingSpeed?: number; }; PickupChestNotCollected: (pickup: EntityPickup) => boolean | undefined; PickupNotCollected: (pickup: EntityPickup) => boolean | undefined; PickupSlotMachineNotBroken: (slot: Entity) => boolean | undefined; ReleaseVersion?: number; Version: string | number; } interface MinimapAPITeleportHandler { CanTeleport: ( room: MinimapAPIRoomDescriptor, cheatMode: boolean, ) => boolean; Teleport: (room: MinimapAPIRoomDescriptor) => void; } interface MinimapAPIIcon { Color: Color; anim: string; frame: number; sprite: Sprite; } interface MinimapAPIRoomAnimsTable { RoomCurrent: { anim: string; frame: number; sprite: Sprite; }; // cspell:ignore Semivisited RoomSemivisited: { anim: string; frame: number; sprite: Sprite; }; RoomUnvisited: { anim: string; frame: number; sprite: Sprite; }; RoomVisited: { anim: string; frame: number; sprite: Sprite; }; } interface MinimapAPIRoomDescriptor { AddAdjacentRoom: (room: MinimapAPIRoomDescriptor) => void; GetAdjacentRooms: () => MinimapAPIRoomDescriptor[]; GetColor: () => Color; GetDisplayFlags: () => BitFlags<DisplayFlag>; GetDisplayPosition: () => Vector; GetPosition: () => Vector; IsClear: () => boolean; IsIconVisible: () => boolean; IsShadow: () => boolean; IsValidTeleportTarget: () => boolean; IsVisible: () => boolean; IsVisited: () => boolean; Remove: () => void; RemoveAdjacentRoom: ( roomToRemove: MinimapAPIRoomDescriptor, ) => MinimapAPIRoomDescriptor; Reveal: () => void; SetDisplayFlags: (displayFlags: BitFlags<DisplayFlag>) => void; SetPosition: (pos: Vector) => void; SyncRoomDescriptor: () => void; UpdateAdjacentRoomsCache: () => void; UpdateType: () => void; AdjacentDisplayFlags: BitFlags<DisplayFlag>; Clear: boolean; Color: Color; Descriptor: RoomDescriptor; Dimension: int; DisplayFlags: BitFlags<DisplayFlag>; DisplayPosition: Vector; /** * External mods can set this to unconditionally hide a specific room (regardless of whether the * player is in or next to the room). * * MinimapAPI does not ever set this internally. */ Hidden: boolean; ID: int; IgnoreDescriptorFlags: boolean; ItemIcons: string[]; LockedIcons: string[]; NoUpdate: boolean; PermanentIcons: string[]; Position: Vector; RenderOffset: Vector; Shape: RoomShape; TargetRenderOffset: Vector; TeleportHandler: MinimapAPITeleportHandler; Type: RoomType; Visited: boolean; VisitedIcons: string[]; } }