mwg API
    Preparing search index...

    Class Doors

    Open/closed/locked door state, the same shape Secrets already uses: the state itself is just terrain (a door swaps between its own open and closed terrain kinds, so passable/ transparent need no door-specific code at all), and this class remembers the other half - which cells are doors, and what they swap to.

    Locking is a separate flag from open/closed: a locked door is always closed and refuses to open until unlock is called (typically once a game confirms the actor holds the right key item), rather than open/closed and locked/unlocked being folded into one state.

    import { Doors, Level, WALL, FLOOR } from '@datamoc/mw_games/roguelike';

    const level = new Level(20, 20, [WALL, FLOOR], 1);
    const doors = new Doors(level);

    doors.place(5, 5, { open: 1, closed: 0, locked: 'brass-key' });
    doors.unlock(5, 5); // once the player is confirmed to hold the key
    doors.open(5, 5);
    console.log(doors.isOpen(5, 5));
    Index
    • Parameters

      • x: number
      • y: number

      Returns boolean

      false, changing nothing, for an already-closed door or not a door

    • Parameters

      • x: number
      • y: number

      Returns boolean

      false, changing nothing, for a locked door, an already-open one, or not a door

    • places a door at (x, y), swapping between open/closed terrain kinds

      Parameters

      • x: number
      • y: number
      • options: { closed: number; locked?: string; open: number; startOpen?: boolean }

      Returns void

    • the id of the key item that unlocks this door, or undefined if it is not locked

      Parameters

      • x: number
      • y: number

      Returns string | undefined

    • Returns {
          doors: {
              cell: number;
              closed: number;
              isOpen: boolean;
              locked?: string;
              open: number;
          }[];
      }

    • removes a door's lock, leaving it closed but now openable; false if it was not locked

      Parameters

      • x: number
      • y: number

      Returns boolean

    • Rebuilds doors from save data onto a (separately restored) level, re-applying each door's terrain so an open door still reads as open to passable/transparent.

      Parameters

      • level: Level
      • data: {
            doors: {
                cell: number;
                closed: number;
                isOpen: boolean;
                locked?: string;
                open: number;
            }[];
        }

      Returns Doors