isaacscript-common
Version:
Helper functions and features for IsaacScript mods.
79 lines • 3.94 kB
TypeScript
import { CopyableIsaacAPIClassType } from "isaac-typescript-definitions";
import type { SerializedBitSet128 } from "../functions/bitSet128";
import { copyBitSet128, deserializeBitSet128, isBitSet128, isSerializedBitSet128, serializeBitSet128 } from "../functions/bitSet128";
import type { SerializedColor } from "../functions/color";
import { copyColor, deserializeColor, isColor, isSerializedColor, serializeColor } from "../functions/color";
import type { SerializedKColor } from "../functions/kColor";
import { copyKColor, deserializeKColor, isKColor, isSerializedKColor, serializeKColor } from "../functions/kColor";
import type { SerializedRNG } from "../functions/rng";
import { copyRNG, deserializeRNG, isRNG, isSerializedRNG, serializeRNG } from "../functions/rng";
import type { SerializedVector } from "../functions/vector";
import { copyVector, deserializeVector, isSerializedVector, isVector, serializeVector } from "../functions/vector";
/** A type representing an Isaac API class that can be safely copied or serialized. */
export type CopyableIsaacAPIClass = BitSet128 | Color | KColor | RNG | Vector;
/**
* A type representing an Isaac API class like `Color` or `RNG` that has been written to the
* "save#.dat" file. It is used by the save data manager when reading and writing to that file.
*
* For the list of supported classes, see the `CopyableIsaacAPIClassType` enum.
*/
export type SerializedIsaacAPIClass = SerializedBitSet128 | SerializedColor | SerializedKColor | SerializedRNG | SerializedVector;
export interface IsaacAPIClassTypeToType {
[CopyableIsaacAPIClassType.BIT_SET_128]: BitSet128;
[CopyableIsaacAPIClassType.COLOR]: Color;
[CopyableIsaacAPIClassType.K_COLOR]: KColor;
[CopyableIsaacAPIClassType.RNG]: RNG;
[CopyableIsaacAPIClassType.VECTOR]: Vector;
}
export interface IsaacAPIClassTypeToSerializedType {
[CopyableIsaacAPIClassType.BIT_SET_128]: SerializedBitSet128;
[CopyableIsaacAPIClassType.COLOR]: SerializedColor;
[CopyableIsaacAPIClassType.K_COLOR]: SerializedKColor;
[CopyableIsaacAPIClassType.RNG]: SerializedRNG;
[CopyableIsaacAPIClassType.VECTOR]: SerializedVector;
}
export interface IsaacAPIClassTypeFunctions<T, SerializedT> {
is: (object: unknown) => object is T;
isSerialized: (object: unknown) => object is SerializedT;
copy: (object: T) => T;
serialize: (object: T) => SerializedT;
deserialize: (object: SerializedT) => T;
}
export declare const ISAAC_API_CLASS_TYPE_TO_FUNCTIONS: {
readonly BitSet128: {
readonly is: typeof isBitSet128;
readonly isSerialized: typeof isSerializedBitSet128;
readonly copy: typeof copyBitSet128;
readonly serialize: typeof serializeBitSet128;
readonly deserialize: typeof deserializeBitSet128;
};
readonly Color: {
readonly is: typeof isColor;
readonly isSerialized: typeof isSerializedColor;
readonly copy: typeof copyColor;
readonly serialize: typeof serializeColor;
readonly deserialize: typeof deserializeColor;
};
readonly KColor: {
readonly is: typeof isKColor;
readonly isSerialized: typeof isSerializedKColor;
readonly copy: typeof copyKColor;
readonly serialize: typeof serializeKColor;
readonly deserialize: typeof deserializeKColor;
};
readonly RNG: {
readonly is: typeof isRNG;
readonly isSerialized: typeof isSerializedRNG;
readonly copy: typeof copyRNG;
readonly serialize: typeof serializeRNG;
readonly deserialize: typeof deserializeRNG;
};
readonly Vector: {
readonly is: typeof isVector;
readonly isSerialized: typeof isSerializedVector;
readonly copy: typeof copyVector;
readonly serialize: typeof serializeVector;
readonly deserialize: typeof deserializeVector;
};
};
//# sourceMappingURL=isaacAPIClassTypeToFunctions.d.ts.map