isaac-typescript-definitions
Version:
TypeScript definitions for The Binding of Isaac: Repentance.
498 lines (432 loc) • 14.5 kB
TypeScript
declare const EID: EIDInterface | undefined;
declare interface EIDDescriptionObject {
Description: string;
ID: int;
ItemType: int;
ItemVariant: int;
Name: string;
RealID: int;
Transformation: string;
fullItemString: string;
}
/**
* @param LeftOffset Default is -1.
* @param TopOffset Default is 0.
* @param SpriteObject Default is `EID.InlineIconSprite`.
*/
declare type EIDInlineIcon = [
AnimationName: string,
Frame: int,
Width: int,
Height: int,
LeftOffset?: int,
TopOffset?: int,
SpriteObject?: Sprite,
];
declare type EIDTransformationTargetType =
| "collectible"
| "trinket"
| "card"
| "pill"
| "entity";
declare interface EIDInterface {
/** Gets the size of the screen. */
GetScreenSize: () => Vector;
/** Adds a character specific description for the item "Birthright". */
addBirthright: (
characterId: int,
description: string,
playerName?: string,
language?: string,
) => void;
/** Adds a description for a card/rune. */
addCard: (
id: int,
description: string,
itemName?: string,
language?: string,
) => void;
/** Adds a description for a collectible. */
addCollectible: (
id: int,
description: string,
itemName?: string,
language?: string,
) => void;
/**
* Adds a new color object with the shortcut defined in the "shortcut" variable.
*
* Shortcuts are case-sensitive! Shortcuts can be overridden with this function to allow for full
* control over everything.
*
* Define a callback to let it be called when interpreting the color-markup. Define a `KColor`
* otherwise for a simple color change.
*/
addColor: (
shortcut: string,
kColor: KColor,
callback?: (color: KColor) => KColor,
) => void;
/**
* Adds Description object modifiers. Used for altering descriptions. Examples: Spindown Dice,
* Tarot Cloth, etc.
*
* @param condition A function that returns `true` if `callback` should be called on the given
* EIDDescriptionObject.
* @param callback A function that returns a modified version of the given EIDDescriptionObject.
*/
addDescriptionModifier: (
modifierName: string,
condition: (this: void, testDescription: EIDDescriptionObject) => boolean,
callback: (
this: void,
oldDescription: EIDDescriptionObject,
) => EIDDescriptionObject,
) => void;
/**
* Adds a description for an entity.
*
* When subtype is -1 or undefined, it will affect all subtypes of that entity.
*/
addEntity: (
id: int,
variant: int,
subtype: int | undefined,
entityName: string,
description: string,
language?: string,
) => void;
/**
* Adds a new icon object with the shortcut defined in the "shortcut" variable.
*
* Shortcuts are case-sensitive! Shortcuts can be overridden with this function to allow for full
* control over everything.
*
* @param shortcut
* @param animationName
* @param animationFrame Setting to -1 will play the animation.
* @param width
* @param height
* @param leftOffset Default is -1.
* @param topOffset Default is 0.
* @param spriteObject Needs to be a `Sprite` with an .anm2 loaded.
*/
addIcon: (
shortcut: string,
animationName: string,
animationFrame: int,
width: int,
height: int,
leftOffset: float | undefined,
topOffset: float | undefined,
spriteObject: Sprite,
) => void;
/** Adds a description for a pill effect. */
addPill: (
id: int,
description: string,
itemName?: string,
language?: string,
) => void;
/**
* Adds a text position modifier `Vector`, which will be applied to the text position variable.
*
* Useful to add small offsets. For example: for schoolbag HUD.
*/
addTextPosModifier: (identifier: string, modifierVector: Vector) => void;
/** Adds a description for a trinket. */
addTrinket: (
id: int,
description: string,
itemName?: string,
language?: string,
) => void;
/**
* Changes the initial position of all EID descriptions.
*
* Useful to totally alter and override the current initial overlay position.
*/
alterTextPos: (newPosVector: Vector) => void;
/** Appends a given string to the description of a given `EIDDescriptionObj`. */
appendToDescription: (
descObj: EIDDescriptionObject,
appendString: string,
) => void;
/** Compares two KColors. Returns true if they are equal. */
areColorsEqual: (c1: KColor, c2: KColor) => boolean;
/**
* Assigns transformations to an entity (Adds to existing transformations).
*
* When type = entity, targetIdentifier must be in the format "ID.Variant.subtype". For any other
* type, it can just be the id.
*
* Example: `EID.assignTransformation("collectible", 1, "My Transformation")`.
*/
assignTransformation: (
targetType: EIDTransformationTargetType,
targetIdentifier: string | int,
transformationString: string,
) => void;
/** Creates a copy of a `KColor` object. This prevents overwriting existing `KColor` objects. */
copyKColor: (colorObj: KColor) => KColor;
/**
* Tries to read special markup used to generate icons for all collectibles/trinkets and the
* default cards/pills.
*
* @returns An `EIDInlineIcon` Object or `undefined` if no parsing was possible.
*/
createItemIconObject: (str: string) => EIDInlineIcon | undefined;
/** Creates a new transformation. */
createTransformation: (
uniqueName: string,
displayName: string,
language?: string,
) => void;
/**
* Overrides all potentially displayed texts and permanently displays the given texts. Can be
* turned off again using `EID.hidePermanentText`.
*/
displayPermanentText: (descriptionObject: EIDDescriptionObject) => void;
/**
* Filters a given string and looks for `KColor` markup. Splits the text into subsections limited
* by them.
*
* @returns An array of tables containing subsections of the text, their respective `KColor`, and
* the width of the subsection.
*/
filterColorMarkup: (
text: string,
baseKColor: KColor,
) => Array<[string, KColor, int]>;
/**
* Searches through the given string and replaces Icon placeholders with icons. Returns 2 values:
*
* - The string without the placeholders but with an accurate space between lines.
* - An array of tables containing each Inline Sprite and the preceding text width.
*/
filterIconMarkup: (
text: string,
textPosX?: int,
textPosY?: int,
) => LuaMultiReturn<[string, Array<[EIDInlineIcon, int]>]>;
/**
* Fits a given string to a specific width.
*
* @returns The string as a table of lines.
*/
fitTextToWidth: (
str: string,
textboxWidth: number, // cspell:ignore textbox
) => string[];
/**
* Generates a string with the defined pixel-length using a custom 1px wide character.
*
* This will only work for EID's specific custom font.
*/
generatePlaceholderString: (length: int) => string;
/** Returns an adjusted SubType id for special cases like Horse Pills and Golden Trinkets. */
getAdjustedSubtype: (Type: int, Variant: int, SubType: int) => int;
/**
* Gets a `KColor` from a Markup-string (example Input: `"{{ColorText}}"`).
*
* @returns The `KColor` object and a `boolean` value indicating if the given string was a color
* markup.
*/
getColor: (
str: string,
baseKColor: KColor,
) => LuaMultiReturn<[KColor, boolean]>;
/**
* Returns the description data table in the current language related to a given id, variant and
* subtype.
*
* Falls back to English if it doesn't exist.
*/
getDescriptionData: (
Type: int,
Variant: int,
SubType: int,
) => EIDDescriptionObject;
/**
* Returns the specified object table in the current language.
*
* Falls back to English if it doesn't exist.
*/
getDescriptionEntry: (
objTable: string,
objID?: string,
) => EIDDescriptionObject;
/**
* Returns the description object of the specified entity.
*
* Falls back to English if the objID isn't available.
*/
getDescriptionObj: (
Type: int,
Variant: int,
SubType: int,
) => EIDDescriptionObject;
/** Get `KColor` object of "Error" texts. */
getErrorColor: () => KColor;
/** Turns entity type names into actual in-game ID.Variant pairs. */
getIDVariantString: (typeName: string) => string;
/**
* Returns the `EIDInlineIcon` object of a given icon string.
*
* Can be used to validate an icon string.
*/
getIcon: (str: string) => EIDInlineIcon;
/**
* Returns the entity that is currently described. Returns last described entity if currently not
* displaying text.
*/
getLastDescribedEntity: () => Entity;
/**
* Fetches description table from the legacy mod descriptions if they exist.
*
* @returns ["", "", description], ["", name, description], or `undefined` (if there is no legacy
* description).
*/
getLegacyModDescription: (
Type: int,
Variant: int,
SubType: int,
) => ["", "", string] | ["", string, string] | undefined;
/** Get `KColor` object of "Entity Name" texts. */
getNameColor: () => KColor;
/** Tries to get the in-game name of an item based on its ID. */
getObjectName: (Type: int, Variant: int, SubType: int) => string;
/** Converts a given CollectibleID into the respective Spindown dice result. */
getSpindownResult: (collectibleID: int) => int;
/** Returns the width of a given string in pixels. */
getStrWidth: (str: string) => int;
/** Turns entity type and variants into their EID table-name. */
getTableName: (Type: int, Variant: int, SubType: int) => string;
/** Get `KColor` object of "Description" texts. */
getTextColor: () => KColor;
/** Returns the current text position. */
getTextPosition: () => Vector;
/**
* Gets the transformation uniqueName / ID of a given entity.
*
* Example: `EID:getTransformation(5,100,34)` will return `"12"` which is the id for Bookworm.
*/
getTransformation: (Type: int, Variant: int, SubType: int) => string;
/** Get `KColor` object of "Transformation" texts. */
getTransformationColor: () => KColor;
/** Returns the icon for a given transformation name or ID. */
getTransformationIcon: (str: string) => EIDInlineIcon;
/**
* Gets the name of the given transformation by its uniqueName / ID.
*
* (Note: this function might be broken.)
*/
getTransformationName: (id: string) => string;
/**
* Tries to get the in-game description of an object, based on their description in the XML files.
*
* @returns `"(no description available)"` if it cannot find the given object's description.
*/
getXMLDescription: (Type: int, Variant: int, SubType: int) => string;
/**
* Returns the icon used for the bullet-point. It will look at the first word in the given string.
*/
handleBulletpointIcon: (text: string) => EIDInlineIcon; // cspell:ignore Bulletpoint
/** Returns `true`, if curse of blind is active. */
hasCurseBlind: () => boolean;
/** Check if an entity is part of the describable entities. */
hasDescription: (entity: Entity) => boolean;
/** Hides permanently displayed text objects if they exist. */
hidePermanentText: () => void;
/** Interpolates between 2 KColors with a given fraction. */
interpolateColors: (
kColor1: KColor,
kColor2: KColor,
fraction: number,
) => KColor;
/** Returns if EID is displaying text right now. */
isDisplayingText: () => boolean;
/** Loads a given font from a given file path and use it to render text. */
loadFont: (fontFileName: string) => boolean;
/**
* Removes a Description object modifier. Used for altering descriptions.
*
* Examples: Spindown Dice, Tarot Cloth, etc.
*/
removeDescriptionModifier: (modifierName: string) => void;
/**
* Removes a given value from the string inside a table.
*
* Example: `"1,2,3"`, removing `2` will return `"1,3"`.
*/
removeEntryFromString: (
sourceTable: LuaMap<string | number, string> | readonly string[],
entryKey: string | number,
entryValue: string,
) => void;
/**
* Removes a text position modifier `Vector`.
*
* Useful to remove small offsets. For example: for schoolbag HUD.
*/
removeTextPosModifier: (identifier: string) => void;
/**
* Removes a transformation from an entity.
*
* When type = entity, targetIdentifier must be in the format "ID.Variant.subtype". For any other
* type, it can just be the id.
*
* EXAMPLE: `EID.removeTransformation("collectible", 1, "My Transformation")`.
*/
removeTransformation: (
targetType: EIDTransformationTargetType,
targetIdentifier: string | int,
transformationString: string,
) => void;
/** Helper function to render Icons in specific EID settings. */
renderIcon: (spriteObj: Sprite, posX: int, posY: int) => void;
/**
* Renders a list of given inline sprite objects returned by the `EID.filterIconMarkup` function.
*/
renderInlineIcons: (
spriteTable: ReadonlyArray<readonly [icon: EIDInlineIcon, width: int]>,
posX: int,
posY: int,
) => void;
/**
* Renders a given string using the EID custom font. This will also apply any markup and render
* icons.
*
* Needs to be called in a render callback.
*
* @returns The last used `KColor`.
*/
renderString: (
str: string,
position: Vector,
scale: Vector,
kColor: KColor,
) => KColor;
/** Replaces shorthand-representations of a character with the internal reference. */
replaceShortMarkupStrings: (text: string) => string;
/**
* Converts a given table into a string containing the crafting icons of the table.
*
* Example input: `{1,2,3,4,5,6,7,8}`
*
* Result:
* `"{{Crafting8}}{{Crafting7}}{{Crafting6}}{{Crafting5}}{{Crafting4}}{{Crafting3}}{{Crafting2}}{{Crafting1}}"`
*
* Prefer `EID.tableToCraftingIconsMerged` due to improved render performance.
*/
tableToCraftingIconsFull: (craftTable: readonly int[]) => string;
/**
* Converts a given table into a string containing the crafting icons of the table, which are also
* grouped to reduce render lag.
*
* Example input: `{1,1,1,2,2,3,3,3}`.
*
* Result: `"3{{Crafting3}}2{{Crafting2}}3{{Crafting1}}"`.
*/
tableToCraftingIconsMerged: (craftTable: readonly int[]) => string;
}