UNPKG

isaacscript-common

Version:

Helper functions and features for IsaacScript mods.

60 lines (47 loc) 1.51 kB
import { ModCallback } from "isaac-typescript-definitions"; import { game } from "../../core/cachedClasses"; import { ModCallbackCustom } from "../../enums/ModCallbackCustom"; import type { FireArgs, OptionalArgs } from "../private/CustomCallback"; import { CustomCallback } from "../private/CustomCallback"; type T = ModCallbackCustom.POST_ROOM_CLEAR_CHANGED; const v = { room: { cleared: false, }, }; export class PostRoomClearChanged extends CustomCallback<T> { public override v = v; constructor() { super(); this.callbacksUsed = [ // 1 [ModCallback.POST_UPDATE, this.postUpdate], ]; this.customCallbacksUsed = [ [ModCallbackCustom.POST_NEW_ROOM_REORDERED, this.postNewRoomReordered], ]; } protected override shouldFire = ( fireArgs: FireArgs<T>, optionalArgs: OptionalArgs<T>, ): boolean => { const [roomClear] = fireArgs; const [callbackRoomClear] = optionalArgs; return callbackRoomClear === undefined || callbackRoomClear === roomClear; }; // ModCallback.POST_UPDATE (1) private readonly postUpdate = (): void => { const room = game.GetRoom(); const roomClear = room.IsClear(); if (roomClear !== v.room.cleared) { v.room.cleared = roomClear; this.fire(roomClear); } }; // ModCallbackCustom.POST_NEW_ROOM_REORDERED private readonly postNewRoomReordered = (): void => { const room = game.GetRoom(); const roomClear = room.IsClear(); v.room.cleared = roomClear; }; }