@dev-dungeon/mud-engine
Version:
TypeScript game engine library for MUDs that handles core logic, including entity creation, room management, and game interactions in a modular and extensible way.
1 lines • 6.88 kB
Source Map (JSON)
{"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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAO;;;ACGP,IAAqB,OAArB,MAA2C;AAAA,EACzC,YACS,KAAa,IACb,OAAe,IACf,eAAuB,GACvB,eAAuB,GACvB,SAAwB,CAAC,GAChC;AALO;AACA;AACA;AACA;AACA;AAAA,EACN;AAAA,EAEH,SAAS,OAAqB;AAC5B,SAAK,OAAO,KAAK,KAAK;AAAA,EACxB;AAAA,EAEA,YAAY,SAAuB;AACjC,SAAK,SAAS,KAAK,OAAO,OAAO,CAAC,UAAU,MAAM,OAAO,OAAO;AAAA,EAClE;AACF;;;ACVA,IAAqB,QAArB,MAA6C;AAAA,EAC3C,YACS,QAA2B,CAAC,GAC5B,MACA,QAA2B,CAAC,GAC5B,KAAa,IACb,oBAA6B,OAC7B,OAAyB,CAAC,GAC1B,WACA,UAA+B,CAAC,GAChC,UACP;AATO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACN;AAAA,EAEH,UAAU,QAA4B;AACpC,UAAM,eAAe,KAAK,QAAQ,KAAK,CAAC,MAAM,EAAE,OAAO,OAAO,EAAE;AAChE,QAAI,CAAC,aAAc,MAAK,QAAQ,KAAK,MAAM;AAAA,EAC7C;AAAA,EAEA,aAAa,UAAwB;AACnC,SAAK,UAAU,KAAK,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,QAAQ;AAAA,EACvE;AAAA,EAEA,OAAO,KAAsB;AAC3B,UAAM,YAAY,KAAK,KAAK,KAAK,CAACA,SAAQA,KAAI,OAAOA,KAAI,EAAE;AAC3D,QAAI,CAAC,UAAW,MAAK,KAAK,KAAK,GAAG;AAAA,EACpC;AAAA,EAEA,UAAU,SAAuB;AAC/B,SAAK,OAAO,KAAK,KAAK,OAAO,CAAC,QAAQ,IAAI,SAAS,OAAO;AAAA,EAC5D;AAAA,EAEA,QAAQ,MAAwB;AAC9B,UAAM,eAAe,KAAK,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE;AAC5D,QAAI;AACF,YAAM,IAAI,MAAM,mCAAmC,KAAK,EAAE,EAAE;AAE9D,UAAM,cAAc,KAAK,MAAM;AAAA,MAC7B,CAAC,MAAM,EAAE,gBAAgB,KAAK;AAAA,IAChC;AACA,QAAI;AACF,YAAM,IAAI,MAAM,mCAAmC,KAAK,WAAW,EAAE;AAEvE,SAAK,MAAM,KAAK,IAAI;AAAA,EACtB;AAAA,EAEA,WAAW,QAAgC;AACzC,SAAK,QAAQ,KAAK,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,MAAM;AAAA,EACvD;AAAA,EAEA,kBAAqC;AACnC,WAAO,KAAK,MAAM,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,QAAQ;AAAA,EAC1D;AAAA,EAEA,SAAiB;AACf,WAAO;AAAA,MACL,OAAO,KAAK;AAAA,MACZ,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,IAAI,KAAK;AAAA,MACT,mBAAmB,KAAK;AAAA,MACxB,MAAM,KAAK;AAAA,MACX,WAAW,KAAK;AAAA,MAChB,SAAS,KAAK;AAAA,MACd,UAAU,KAAK;AAAA,IACjB;AAAA,EACF;AACF;;;AC3EO,IAAK,YAAL,kBAAKC,eAAL;AACL,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,YAAS;AAHC,SAAAA;AAAA,GAAA;AAML,IAAK,cAAL,kBAAKC,iBAAL;AACL,EAAAA,aAAA,OAAI;AACJ,EAAAA,aAAA,OAAI;AACJ,EAAAA,aAAA,OAAI;AACJ,EAAAA,aAAA,OAAI;AACJ,EAAAA,aAAA,QAAK;AACL,EAAAA,aAAA,QAAK;AACL,EAAAA,aAAA,QAAK;AACL,EAAAA,aAAA,QAAK;AACL,EAAAA,aAAA,QAAK;AACL,EAAAA,aAAA,UAAO;AAVG,SAAAA;AAAA,GAAA;;;ACJZ,IAAe,UAAf,MAAuB;AAEvB;AAEA,IAAO,kBAAQ;;;ACFf,IAAqB,cAArB,cAAyC,gBAAQ;AAAA,EACxC,WAAW,MAAqB;AACrC,WAAO,IAAI,KAAK,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC;AAAA,EACpC;AACF;;;ACNA,IAAeC,WAAf,MAAuB;AAEvB;AAEA,IAAOC,mBAAQD;;;ACFf,IAAqB,mBAArB,cAA8CE,iBAAQ;AAAA,EAC7C,YAAY,MAAc,UAA0B;AACzD,WAAO,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,sBAAmB,CAAC,GAAG,QAAQ;AAAA,EAC5E;AACF;","names":["npc","PlaceType","Orientation","Creator","Creator_default","Creator_default"]}