{"version":3,"sources":["../src/index.ts","../src/domain/entities/area/Area.ts","../src/domain/entities/place/Place.ts","../src/domain/entities/place/Place.enums.ts","../src/domain/factories/area/Creator.ts","../src/domain/factories/area/AreaFactory.ts","../src/domain/factories/place/Creator.ts","../src/domain/factories/place/RoomPlaceFactory.ts"],"sourcesContent":["import 'module-alias/register'\nexport * from './domain'\n","import type { IArea } from './IArea'\nimport type { IPlace } from '@domain/entities/place'\n\nexport default class Area implements IArea {\n  constructor(\n    public id: string = '',\n    public name: string = '',\n    public maximumLevel: number = 1,\n    public minimumLevel: number = 1,\n    public places: Array<IPlace> = [],\n  ) {}\n\n  addPlace(place: IPlace): void {\n    this.places.push(place)\n  }\n\n  removePlace(placeId: string): void {\n    this.places = this.places.filter((place) => place.id !== placeId)\n  }\n}\n","import type {\n  IPlace,\n  IPlaceAttr,\n  IPlaceExit,\n  IPlaceNpc,\n  IPlacePlayer,\n} from './IPlace'\nimport type { PlaceType } from './Place.enums'\n\nexport default class Place implements IPlace {\n  constructor(\n    public attrs: Array<IPlaceAttr> = [],\n    public code: string,\n    public exits: Array<IPlaceExit> = [],\n    public id: string = '',\n    public isExitToOtherArea: boolean = false,\n    public npcs: Array<IPlaceNpc> = [],\n    public placeType: PlaceType,\n    public players: Array<IPlacePlayer> = [],\n    public security: number,\n  ) {}\n\n  addPlayer(player: IPlacePlayer): void {\n    const playerExists = this.players.find((p) => p.id === player.id)\n    if (!playerExists) this.players.push(player)\n  }\n\n  removePlayer(playerId: string): void {\n    this.players = this.players.filter((player) => player.id !== playerId)\n  }\n\n  addNpc(npc: IPlaceNpc): void {\n    const npcExists = this.npcs.find((npc) => npc.id === npc.id)\n    if (!npcExists) this.npcs.push(npc)\n  }\n\n  removeNpc(npcName: string): void {\n    this.npcs = this.npcs.filter((npc) => npc.name !== npcName)\n  }\n\n  addExit(exit: IPlaceExit): void {\n    const currentPlace = this.exits.find((e) => e.id === exit.id)\n    if (currentPlace)\n      throw new Error(`the site already has an exit to ${exit.id}`)\n\n    const orientation = this.exits.find(\n      (e) => e.orientation === exit.orientation,\n    )\n    if (orientation)\n      throw new Error(`the site already has an exit to ${exit.orientation}`)\n\n    this.exits.push(exit)\n  }\n\n  removeExit(exitId: IPlaceExit['id']): void {\n    this.exits = this.exits.filter((e) => e.id !== exitId)\n  }\n\n  getVisibleExits(): Array<IPlaceExit> {\n    return this.exits.filter((e) => e.visible && !e.disabled)\n  }\n\n  toJSON(): IPlace {\n    return {\n      attrs: this.attrs,\n      code: this.code,\n      exits: this.exits,\n      id: this.id,\n      isExitToOtherArea: this.isExitToOtherArea,\n      npcs: this.npcs,\n      placeType: this.placeType,\n      players: this.players,\n      security: this.security,\n    }\n  }\n}\n","export enum PlaceType {\n  ROOM = 'ROOM',\n  CITY = 'CITY',\n  FOREST = 'FOREST',\n}\n\nexport enum Orientation {\n  N = 'N',\n  S = 'S',\n  E = 'E',\n  W = 'W',\n  NE = 'NE',\n  SE = 'SE',\n  SW = 'SW',\n  NW = 'NW',\n  UP = 'UP',\n  DOWN = 'DOWN',\n}\n","import type { IArea } from '@domain/entities/area'\n\nabstract class Creator {\n  public abstract createArea(name: string): IArea\n}\n\nexport default Creator\n","import { Area } from '@domain/entities/area'\nimport type { IArea } from '@domain/entities/area'\nimport Creator from './Creator'\n\nexport default class AreaFactory extends Creator {\n  public createArea(name: string): IArea {\n    return new Area('', name, 1, 1, [])\n  }\n}\n","import type { IPlace } from '@domain/entities'\n\nabstract class Creator {\n  public abstract createPlace(code: string, security: number): IPlace\n}\n\nexport default Creator\n","import { Place, PlaceType } from '@domain/entities'\nimport type { IPlace } from '@domain/entities'\nimport Creator from './Creator'\n\nexport default class RoomPlaceFactory extends Creator {\n  public createPlace(code: string, security: number): IPlace {\n    return new Place([], code, [], '', false, [], PlaceType.ROOM, [], security)\n  }\n}\n"],"mappings":"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","names":["npc","PlaceType","Orientation","Creator","Creator_default","Creator_default"]}