UNPKG

isaacscript-common

Version:

Helper functions and features for IsaacScript mods.

101 lines 3.97 kB
import { DamageFlag } from "isaac-typescript-definitions"; import type { ReadonlyRecord } from "../types/ReadonlyRecord"; /** * Helper function to add a bit flag to an existing set of bit flags. * * This is a variadic function, so pass as many flags as you want to add. * * Example 1: * * ```ts * // Give the player spectral tears * const player = Isaac.GetPlayer(); * player.TearFlags = addFlag(player.TearFlags, TearFlags.TEAR_SPECTRAL); * ``` * * Example 2: * * ```ts * // Give the player spectral and homing tears * const player = Isaac.GetPlayer(); * player.TearFlags = addFlag(player.TearFlags, TearFlags.TEAR_SPECTRAL, TearFlags.TEAR_HOMING); * ``` * * @param flags The existing set of bit flags. * @param flagsToAdd One or more bit flags to add, each as a separate argument. * @returns The combined bit flags. */ export declare function addFlag<T extends BitFlag | BitFlag128>(flags: T | BitFlags<T>, ...flagsToAdd: readonly T[]): BitFlags<T>; /** * Helper function for casting a flag enum value to a `BitFlags` object. * * This is useful because the compiler will prevent you from assigning a specific flag to a * `BitFlags` field. (It does this to ensure type safety, since `BitFlags` can represent a zero * value or a composition of N flags.) * * For example: * * ```ts * player.TearFlags = bitFlags(TearFlag.SPECTRAL); * ``` */ export declare function bitFlags<T extends BitFlag | BitFlag128>(flag: T): BitFlags<T>; /** * Helper function to get the key associated with a particular flag. * * (Since bit flags are represented by custom objects instead of normal TypeScript enums, you cannot * use the reverse mapping to find the associated key of a given enum value. Use this helper * function instead of indexing the enum directly.) */ export declare function getFlagName<T extends BitFlag | BitFlag128>(flag: BitFlag, flagEnum: ReadonlyRecord<string, T>): string | undefined; /** * Helper function to determine if a particular bit flag is set to true. * * This is a variadic function, so pass as many flags as you want to check for. If passed multiple * flags, it will only return true if all of the flags are set. * * For example: * * ```ts * const player = Isaac.GetPlayer(); * if (hasFlag(player.TearFlags, TearFlags.TEAR_SPECTRAL) { * // The player currently has spectral tears * } * ``` * * @param flags The existing set of bit flags. * @param flagsToCheck One or more bit flags to check for, each as a separate argument. */ export declare function hasFlag<T extends BitFlag | BitFlag128>(flags: T | BitFlags<T>, ...flagsToCheck: readonly T[]): boolean; /** * Helper function to check if every bit in the flag is turned off. * * (This is equivalent to checking if the flag is equal to 0, but this is not possible without * casting the flag to a number.) */ export declare function isEmptyFlag(flag: BitFlag | BitFlag128): boolean; /** * Helper function to determine whether damage to a player in the `ENTITY_TAKE_DMG` callback was * self-inflicted. For example, damage from a Curse Room door, a Razor, or a Blood Donation Machine * would count as self-inflicted damage. */ export declare function isSelfDamage(damageFlags: DamageFlag | BitFlags<DamageFlag>): boolean; /** * Helper function to remove a bit flag from an existing set of bit flags. * * This is a variadic function, so pass as many flags as you want to remove. * * For example: * * ```ts * // Remove spectral tears from the player, if present * const player = Isaac.GetPlayer(); * player.TearFlags = removeFlag(player.TearFlags, TearFlags.TEAR_SPECTRAL); * ``` * * @param flags The existing set of bit flags. * @param flagsToRemove One or more bit flags to remove, each as a separate argument. * @returns The combined bit flags. */ export declare function removeFlag<T extends BitFlag | BitFlag128>(flags: T | BitFlags<T>, ...flagsToRemove: readonly T[]): BitFlags<T>; //# sourceMappingURL=flag.d.ts.map