isaacscript-common
Version:
Helper functions and features for IsaacScript mods.
131 lines (117 loc) • 3.84 kB
text/typescript
import { DoorSlot, RoomShape } from "isaac-typescript-definitions";
import { LEVEL_GRID_ROW_WIDTH } from "../core/constants";
import { ReadonlyMap } from "../types/ReadonlyMap";
const LEFT = -1;
const UP = -LEVEL_GRID_ROW_WIDTH;
const RIGHT = 1;
const DOWN = LEVEL_GRID_ROW_WIDTH;
/**
* Deltas are considered to be from the safe grid index of the room (i.e. the top left corner, or
* top right corner in the case of `RoomShape.LTL`).
*/
// We don't use `as const` since we need the map to be indexable by all `DoorSlot`.
// eslint-disable-next-line complete/require-capital-const-assertions
export const ROOM_SHAPE_TO_DOOR_SLOTS_TO_GRID_INDEX_DELTA: Readonly<
Record<RoomShape, ReadonlyMap<DoorSlot, int>>
> = {
// 1
[]: new ReadonlyMap([
[], // 0
[], // 1
[], // 2
[], // 3
]),
// 2
[]: new ReadonlyMap([
[], // 0
[], // 2
]),
// 3
[]: new ReadonlyMap([
[], // 1
[], // 3
]),
// 4
[]: new ReadonlyMap([
[], // 0
[], // 1
[], // 2
[], // 3
[], // 4
[], // 6
]),
// 5
[]: new ReadonlyMap([
[], // 1
[], // 3
]),
// 6
[]: new ReadonlyMap([
[], // 0
[], // 1
[], // 2
[], // 3
[], // 5
[], // 7
]),
// 7
[]: new ReadonlyMap([
[], // 0
[], // 2
]),
// 8
[]: new ReadonlyMap([
[], // 0
[], // 1
[], // 2
[], // 3
[], // 4
[], // 5
[], // 6
[], // 7
]),
// 9
[]: new ReadonlyMap([
[], // 0
[], // 1
[], // 2
[], // 3
[], // 4
[], // 5
[], // 6
[], // 7
]),
// 10
[]: new ReadonlyMap([
[], // 0
[], // 1
[], // 2
[], // 3
[], // 4
[], // 5
[], // 6
[], // 7
]),
// 11
[]: new ReadonlyMap([
[], // 0
[], // 1
[], // 2
[], // 3
[], // 4
[], // 5
[], // 6
[], // 7
]),
// 12
[]: new ReadonlyMap([
[], // 0
[], // 1
[], // 2
[], // 3
[], // 4
[], // 5
[], // 6
[], // 7
]),
};