@drincs/nqtr 0.1.8 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/classes/Activity.js +12 -8
  2. package/dist/classes/Activity.js.map +1 -1
  3. package/dist/classes/Activity.mjs +12 -8
  4. package/dist/classes/Activity.mjs.map +1 -1
  5. package/dist/classes/Commitment.js +6 -4
  6. package/dist/classes/Commitment.js.map +1 -1
  7. package/dist/classes/Commitment.mjs +6 -4
  8. package/dist/classes/Commitment.mjs.map +1 -1
  9. package/dist/classes/index.js +12 -8
  10. package/dist/classes/index.js.map +1 -1
  11. package/dist/classes/index.mjs +12 -8
  12. package/dist/classes/index.mjs.map +1 -1
  13. package/dist/classes/navigation/ActivityRoom.js +6 -4
  14. package/dist/classes/navigation/ActivityRoom.js.map +1 -1
  15. package/dist/classes/navigation/ActivityRoom.mjs +6 -4
  16. package/dist/classes/navigation/ActivityRoom.mjs.map +1 -1
  17. package/dist/classes/navigation/Location.js +6 -4
  18. package/dist/classes/navigation/Location.js.map +1 -1
  19. package/dist/classes/navigation/Location.mjs +6 -4
  20. package/dist/classes/navigation/Location.mjs.map +1 -1
  21. package/dist/classes/navigation/Map.js +6 -4
  22. package/dist/classes/navigation/Map.js.map +1 -1
  23. package/dist/classes/navigation/Map.mjs +6 -4
  24. package/dist/classes/navigation/Map.mjs.map +1 -1
  25. package/dist/classes/navigation/Room.js +18 -12
  26. package/dist/classes/navigation/Room.js.map +1 -1
  27. package/dist/classes/navigation/Room.mjs +18 -12
  28. package/dist/classes/navigation/Room.mjs.map +1 -1
  29. package/dist/classes/navigation/index.js +30 -20
  30. package/dist/classes/navigation/index.js.map +1 -1
  31. package/dist/classes/navigation/index.mjs +30 -20
  32. package/dist/classes/navigation/index.mjs.map +1 -1
  33. package/dist/functions/ActivityFunctions.js.map +1 -1
  34. package/dist/functions/ActivityFunctions.mjs.map +1 -1
  35. package/dist/functions/NavigationFunctions.js +6 -4
  36. package/dist/functions/NavigationFunctions.js.map +1 -1
  37. package/dist/functions/NavigationFunctions.mjs +6 -4
  38. package/dist/functions/NavigationFunctions.mjs.map +1 -1
  39. package/dist/functions/index.js +6 -4
  40. package/dist/functions/index.js.map +1 -1
  41. package/dist/functions/index.mjs +6 -4
  42. package/dist/functions/index.mjs.map +1 -1
  43. package/dist/index.js +42 -28
  44. package/dist/index.js.map +1 -1
  45. package/dist/index.mjs +42 -28
  46. package/dist/index.mjs.map +1 -1
  47. package/package.json +2 -2
@@ -66,14 +66,16 @@ var LocationBaseModel = class extends pixiVn.StoredClassModel {
66
66
  * The function for rendering the icon of the location.
67
67
  */
68
68
  get renderIcon() {
69
- if (typeof this._renderIcon !== "function") {
70
- return (props) => this._renderIcon;
69
+ let render = this._renderIcon;
70
+ if (render === void 0) {
71
+ return void 0;
71
72
  }
72
- if (this._renderIcon !== void 0) {
73
+ if (typeof render === "function") {
73
74
  return (props) => {
74
- return this._renderIcon(this, props);
75
+ return render(this, props);
75
76
  };
76
77
  }
78
+ return (props) => render;
77
79
  }
78
80
  /**
79
81
  * The map where the location is.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/navigation/Location.ts","../../../src/decorators/RoomDecorator.ts"],"names":[],"mappings":";AACA,SAAS,SAAS,wBAAwB;;;ACCnC,IAAM,kBAAmD,CAAC;AA2C1D,SAAS,mBAAgE,UAAsC;AAClH,SAAO,OAAO,OAAO,eAAe,EAAE,OAAO,UAAQ,KAAK,SAAS,OAAO,SAAS,EAAE;AACzF;;;ADzCA,IAAM,oBAAoB;AAmC1B,IAAqB,oBAArB,cAAyF,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtG,YAAY,IAAY,KAAW,QAAsC,CAAC,GAAG;AACzE,UAAM,mBAAmB,EAAE;AAC3B,SAAK,cAAc,MAAM,QAAQ;AACjC,SAAK,kBAAkB,MAAM,YAAY;AACzC,SAAK,gBAAgB,MAAM,UAAU;AACrC,SAAK,cAAc,MAAM;AACzB,SAAK,OAAO;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAe;AACf,WAAO,KAAK,mBAA2B,MAAM,KAAK,KAAK;AAAA,EAC3D;AAAA,EACA,IAAI,KAAK,OAA2B;AAChC,SAAK,mBAAmB,QAAQ,KAAK;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,WAAoB;AACpB,QAAI,QAAQ,KAAK,mBAA4B,UAAU,KAAK,KAAK;AACjE,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS,OAAyB;AAClC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,SAAkB;AAClB,QAAI,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAC/D,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,OAAyB;AAChC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,aAAkF;AAClF,QAAI,OAAO,KAAK,gBAAgB,YAAY;AACxC,aAAO,CAAC,UAAqC,KAAK;AAAA,IACtD;AACA,QAAI,KAAK,gBAAgB,QAAW;AAChC,aAAO,CAAC,UAAqC;AACzC,eAAQ,KAAK,YAAoB,MAAM,KAAK;AAAA,MAChD;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,MAAY;AACZ,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,cAA8E;AAC1E,QAAI,QAAQ,KAAK,SAAgB;AACjC,QAAI,MAAM,WAAW,GAAG;AACpB,cAAQ,MAAM,uBAAuB,KAAK,EAAE,eAAe;AAC3D;AAAA,IACJ;AACA,WAAO,MAAM,KAAK,UAAQ,KAAK,UAAU,KAAK,MAAM,CAAC;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAiE;AAC7D,WAAO,mBAA0B,IAAI;AAAA,EACzC;AACJ","sourcesContent":["import { GraphicItemType, OnRenderGraphicItemProps } from \"@drincs/nqtr/dist/override\";\nimport { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { getRoomsByLocation } from \"../../decorators/RoomDecorator\";\nimport MapBaseModel from \"./Map\";\nimport RoomBaseModel from \"./Room\";\n\nconst LOCATION_CATEGORY = \"__nqtr-location__\"\n\nexport interface LocationBaseModelProps<TMap extends MapBaseModel = MapBaseModel> {\n /**\n * The name\n * @default \"\"\n */\n name?: string\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n * @default false\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n * @default false\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an Element or a Pixi'VN CanvasItem\n * @default undefined\n */\n renderIcon?: GraphicItemType | ((location: LocationBaseModel<TMap>, props?: OnRenderGraphicItemProps) => GraphicItemType)\n}\n\n/**\n * The base model of a location. I suggest you extend this class to create your own location model.\n * @example\n * ```typescript\n * export const mcHome = new LocationBaseModel('mc_home', mainMap, {\n * name: 'MC Home',\n * icon: \"https://icon.jpg\",\n * });\n * ```\n */\nexport default class LocationBaseModel<TMap extends MapBaseModel = MapBaseModel> extends StoredClassModel {\n /**\n * @param id The id of the location, it must be unique.\n * @param map The map where the location is.\n * @param props The properties of the location.\n */\n constructor(id: string, map: TMap, props: LocationBaseModelProps<TMap> = {}) {\n super(LOCATION_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._renderIcon = props.renderIcon\n this._map = map\n }\n\n private defaultName: string\n /**\n * The name of the location.\n * If you set undefined, it will return the initial value of name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultDisabled: boolean | string\n /**\n * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n */\n get disabled(): boolean {\n let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set disabled(value: boolean | string) {\n this.setStorageProperty(\"disabled\", value)\n }\n\n private defaultHidden: boolean | string\n /**\n * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n */\n get hidden(): boolean {\n let value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set hidden(value: boolean | string) {\n this.setStorageProperty(\"hidden\", value)\n }\n\n private _renderIcon?: GraphicItemType | ((location: LocationBaseModel<TMap>, props?: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The function for rendering the icon of the location.\n */\n get renderIcon(): ((props?: OnRenderGraphicItemProps) => GraphicItemType) | undefined {\n if (typeof this._renderIcon !== \"function\") {\n return (props?: OnRenderGraphicItemProps) => this._renderIcon as GraphicItemType\n }\n if (this._renderIcon !== undefined) {\n return (props?: OnRenderGraphicItemProps) => {\n return (this._renderIcon as any)(this, props)\n }\n }\n }\n\n private _map: TMap\n /**\n * The map where the location is.\n */\n get map(): TMap {\n return this._map\n }\n\n /**\n * Get the entrance room of the location.\n * You can cast the room to a specific type that extends RoomBaseModel.\n * @returns The entrance room or the first room if there is no entrance.\n * @example\n * ```typescript\n * const entranceHome = new RoomBaseModel(\"entrance-home\", home, { isEntrance: true })\n * saveRoom(entranceHome)\n * const home = new LocationBaseModel(\"home\", map, { name: \"Home\" })\n * \n * const entrance = home.getEntrance() // entrance === entranceHome\n * ```\n */\n getEntrance<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined {\n let rooms = this.getRooms<TRoom>()\n if (rooms.length === 0) {\n console.error(`[NQTR] The location ${this.id} has no rooms`)\n return\n }\n return rooms.find(room => room.isEntrance) || rooms[0]\n }\n\n /**\n * Get all rooms in the location.\n * You can cast the rooms to a specific type that extends RoomBaseModel.\n * @returns The rooms in the location.\n */\n getRooms<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom[] {\n return getRoomsByLocation<TRoom>(this)\n }\n}\n","import { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes/navigation\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\n\n/**\n * Save a room in the registered rooms.\n * @param room The room to save.\n * @returns \n */\nexport function saveRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom | TRoom[]) {\n if (Array.isArray(room)) {\n room.forEach(c => saveRoom(c))\n return\n }\n if (registeredRooms[room.id]) {\n console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`)\n }\n registeredRooms[room.id] = room\n}\n\n/**\n * Get a room by its id.\n * @param id The id of the room.\n * @returns The room or undefined if not found.\n */\nexport function getRoomById<TRoom extends RoomBaseModel = RoomBaseModel>(id: string): TRoom | undefined {\n try {\n let room = registeredRooms[id]\n if (!room) {\n console.error(`[NQTR] Room ${id} not found`)\n return\n }\n return room as TRoom\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Room ${id}`, e)\n return\n }\n}\n\n/**\n * Get all rooms in a location.\n * @param location The location where the rooms are.\n * @returns The rooms in the location.\n */\nexport function getRoomsByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location.id === location.id) as TRoom[]\n}\n\n/**\n * Get all locations in the registered rooms.\n * @returns All locations in the registered rooms.\n */\nexport function getAllLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n let result: { [id: string]: TLocation } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.id] = room.location as TLocation\n })\n return Object.values(result)\n}\n\n/**\n * Get all locations in a map.\n * @param map The map where the locations are.\n * @returns The locations in the map.\n */\nexport function getLocationsByMap<TLocation extends LocationBaseModel = LocationBaseModel>(map: MapBaseModel): TLocation[] {\n return getAllLocations<TLocation>().filter(location => location.map.id === map.id) as TLocation[]\n}\n\n/**\n * Get all maps in the registered rooms.\n * @returns All maps in the registered rooms.\n */\nexport function getAllMaps<TMap extends MapBaseModel = MapBaseModel>(): TMap[] {\n let result: { [id: string]: TMap } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.map.id] = room.location.map as TMap\n })\n return Object.values(result)\n}\n"]}
1
+ {"version":3,"sources":["../../../src/classes/navigation/Location.ts","../../../src/decorators/RoomDecorator.ts"],"names":[],"mappings":";AACA,SAAS,SAAS,wBAAwB;;;ACCnC,IAAM,kBAAmD,CAAC;AA2C1D,SAAS,mBAAgE,UAAsC;AAClH,SAAO,OAAO,OAAO,eAAe,EAAE,OAAO,UAAQ,KAAK,SAAS,OAAO,SAAS,EAAE;AACzF;;;ADzCA,IAAM,oBAAoB;AAmC1B,IAAqB,oBAArB,cAAyF,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtG,YAAY,IAAY,KAAW,QAAsC,CAAC,GAAG;AACzE,UAAM,mBAAmB,EAAE;AAC3B,SAAK,cAAc,MAAM,QAAQ;AACjC,SAAK,kBAAkB,MAAM,YAAY;AACzC,SAAK,gBAAgB,MAAM,UAAU;AACrC,SAAK,cAAc,MAAM;AACzB,SAAK,OAAO;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAe;AACf,WAAO,KAAK,mBAA2B,MAAM,KAAK,KAAK;AAAA,EAC3D;AAAA,EACA,IAAI,KAAK,OAA2B;AAChC,SAAK,mBAAmB,QAAQ,KAAK;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,WAAoB;AACpB,QAAI,QAAQ,KAAK,mBAA4B,UAAU,KAAK,KAAK;AACjE,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS,OAAyB;AAClC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,SAAkB;AAClB,QAAI,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAC/D,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,OAAyB;AAChC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,aAAkF;AAClF,QAAI,SAAS,KAAK;AAClB,QAAI,WAAW,QAAW;AACtB,aAAO;AAAA,IACX;AACA,QAAI,OAAO,WAAW,YAAY;AAC9B,aAAO,CAAC,UAAqC;AACzC,eAAO,OAAO,MAAM,KAAK;AAAA,MAC7B;AAAA,IACJ;AACA,WAAO,CAAC,UAAqC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,MAAY;AACZ,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,cAA8E;AAC1E,QAAI,QAAQ,KAAK,SAAgB;AACjC,QAAI,MAAM,WAAW,GAAG;AACpB,cAAQ,MAAM,uBAAuB,KAAK,EAAE,eAAe;AAC3D;AAAA,IACJ;AACA,WAAO,MAAM,KAAK,UAAQ,KAAK,UAAU,KAAK,MAAM,CAAC;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAiE;AAC7D,WAAO,mBAA0B,IAAI;AAAA,EACzC;AACJ","sourcesContent":["import { GraphicItemType, OnRenderGraphicItemProps } from \"@drincs/nqtr/dist/override\";\nimport { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { getRoomsByLocation } from \"../../decorators/RoomDecorator\";\nimport MapBaseModel from \"./Map\";\nimport RoomBaseModel from \"./Room\";\n\nconst LOCATION_CATEGORY = \"__nqtr-location__\"\n\nexport interface LocationBaseModelProps<TMap extends MapBaseModel = MapBaseModel> {\n /**\n * The name\n * @default \"\"\n */\n name?: string\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n * @default false\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n * @default false\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an Element or a Pixi'VN CanvasItem\n * @default undefined\n */\n renderIcon?: GraphicItemType | ((location: LocationBaseModel<TMap>, props?: OnRenderGraphicItemProps) => GraphicItemType)\n}\n\n/**\n * The base model of a location. I suggest you extend this class to create your own location model.\n * @example\n * ```typescript\n * export const mcHome = new LocationBaseModel('mc_home', mainMap, {\n * name: 'MC Home',\n * icon: \"https://icon.jpg\",\n * });\n * ```\n */\nexport default class LocationBaseModel<TMap extends MapBaseModel = MapBaseModel> extends StoredClassModel {\n /**\n * @param id The id of the location, it must be unique.\n * @param map The map where the location is.\n * @param props The properties of the location.\n */\n constructor(id: string, map: TMap, props: LocationBaseModelProps<TMap> = {}) {\n super(LOCATION_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._renderIcon = props.renderIcon\n this._map = map\n }\n\n private defaultName: string\n /**\n * The name of the location.\n * If you set undefined, it will return the initial value of name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultDisabled: boolean | string\n /**\n * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n */\n get disabled(): boolean {\n let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set disabled(value: boolean | string) {\n this.setStorageProperty(\"disabled\", value)\n }\n\n private defaultHidden: boolean | string\n /**\n * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n */\n get hidden(): boolean {\n let value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set hidden(value: boolean | string) {\n this.setStorageProperty(\"hidden\", value)\n }\n\n private _renderIcon?: GraphicItemType | ((location: LocationBaseModel<TMap>, props?: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The function for rendering the icon of the location.\n */\n get renderIcon(): ((props?: OnRenderGraphicItemProps) => GraphicItemType) | undefined {\n let render = this._renderIcon\n if (render === undefined) {\n return undefined\n }\n if (typeof render === \"function\") {\n return (props?: OnRenderGraphicItemProps) => {\n return render(this, props)\n }\n }\n return (props?: OnRenderGraphicItemProps) => render\n }\n\n private _map: TMap\n /**\n * The map where the location is.\n */\n get map(): TMap {\n return this._map\n }\n\n /**\n * Get the entrance room of the location.\n * You can cast the room to a specific type that extends RoomBaseModel.\n * @returns The entrance room or the first room if there is no entrance.\n * @example\n * ```typescript\n * const entranceHome = new RoomBaseModel(\"entrance-home\", home, { isEntrance: true })\n * saveRoom(entranceHome)\n * const home = new LocationBaseModel(\"home\", map, { name: \"Home\" })\n * \n * const entrance = home.getEntrance() // entrance === entranceHome\n * ```\n */\n getEntrance<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined {\n let rooms = this.getRooms<TRoom>()\n if (rooms.length === 0) {\n console.error(`[NQTR] The location ${this.id} has no rooms`)\n return\n }\n return rooms.find(room => room.isEntrance) || rooms[0]\n }\n\n /**\n * Get all rooms in the location.\n * You can cast the rooms to a specific type that extends RoomBaseModel.\n * @returns The rooms in the location.\n */\n getRooms<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom[] {\n return getRoomsByLocation<TRoom>(this)\n }\n}\n","import { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes/navigation\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\n\n/**\n * Save a room in the registered rooms.\n * @param room The room to save.\n * @returns \n */\nexport function saveRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom | TRoom[]) {\n if (Array.isArray(room)) {\n room.forEach(c => saveRoom(c))\n return\n }\n if (registeredRooms[room.id]) {\n console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`)\n }\n registeredRooms[room.id] = room\n}\n\n/**\n * Get a room by its id.\n * @param id The id of the room.\n * @returns The room or undefined if not found.\n */\nexport function getRoomById<TRoom extends RoomBaseModel = RoomBaseModel>(id: string): TRoom | undefined {\n try {\n let room = registeredRooms[id]\n if (!room) {\n console.error(`[NQTR] Room ${id} not found`)\n return\n }\n return room as TRoom\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Room ${id}`, e)\n return\n }\n}\n\n/**\n * Get all rooms in a location.\n * @param location The location where the rooms are.\n * @returns The rooms in the location.\n */\nexport function getRoomsByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location.id === location.id) as TRoom[]\n}\n\n/**\n * Get all locations in the registered rooms.\n * @returns All locations in the registered rooms.\n */\nexport function getAllLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n let result: { [id: string]: TLocation } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.id] = room.location as TLocation\n })\n return Object.values(result)\n}\n\n/**\n * Get all locations in a map.\n * @param map The map where the locations are.\n * @returns The locations in the map.\n */\nexport function getLocationsByMap<TLocation extends LocationBaseModel = LocationBaseModel>(map: MapBaseModel): TLocation[] {\n return getAllLocations<TLocation>().filter(location => location.map.id === map.id) as TLocation[]\n}\n\n/**\n * Get all maps in the registered rooms.\n * @returns All maps in the registered rooms.\n */\nexport function getAllMaps<TMap extends MapBaseModel = MapBaseModel>(): TMap[] {\n let result: { [id: string]: TMap } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.map.id] = room.location.map as TMap\n })\n return Object.values(result)\n}\n"]}
@@ -64,14 +64,16 @@ var LocationBaseModel = class extends StoredClassModel {
64
64
  * The function for rendering the icon of the location.
65
65
  */
66
66
  get renderIcon() {
67
- if (typeof this._renderIcon !== "function") {
68
- return (props) => this._renderIcon;
67
+ let render = this._renderIcon;
68
+ if (render === void 0) {
69
+ return void 0;
69
70
  }
70
- if (this._renderIcon !== void 0) {
71
+ if (typeof render === "function") {
71
72
  return (props) => {
72
- return this._renderIcon(this, props);
73
+ return render(this, props);
73
74
  };
74
75
  }
76
+ return (props) => render;
75
77
  }
76
78
  /**
77
79
  * The map where the location is.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/navigation/Location.ts","../../../src/decorators/RoomDecorator.ts"],"names":[],"mappings":";AACA,SAAS,SAAS,wBAAwB;;;ACCnC,IAAM,kBAAmD,CAAC;AA2C1D,SAAS,mBAAgE,UAAsC;AAClH,SAAO,OAAO,OAAO,eAAe,EAAE,OAAO,UAAQ,KAAK,SAAS,OAAO,SAAS,EAAE;AACzF;;;ADzCA,IAAM,oBAAoB;AAmC1B,IAAqB,oBAArB,cAAyF,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtG,YAAY,IAAY,KAAW,QAAsC,CAAC,GAAG;AACzE,UAAM,mBAAmB,EAAE;AAC3B,SAAK,cAAc,MAAM,QAAQ;AACjC,SAAK,kBAAkB,MAAM,YAAY;AACzC,SAAK,gBAAgB,MAAM,UAAU;AACrC,SAAK,cAAc,MAAM;AACzB,SAAK,OAAO;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAe;AACf,WAAO,KAAK,mBAA2B,MAAM,KAAK,KAAK;AAAA,EAC3D;AAAA,EACA,IAAI,KAAK,OAA2B;AAChC,SAAK,mBAAmB,QAAQ,KAAK;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,WAAoB;AACpB,QAAI,QAAQ,KAAK,mBAA4B,UAAU,KAAK,KAAK;AACjE,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS,OAAyB;AAClC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,SAAkB;AAClB,QAAI,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAC/D,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,OAAyB;AAChC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,aAAkF;AAClF,QAAI,OAAO,KAAK,gBAAgB,YAAY;AACxC,aAAO,CAAC,UAAqC,KAAK;AAAA,IACtD;AACA,QAAI,KAAK,gBAAgB,QAAW;AAChC,aAAO,CAAC,UAAqC;AACzC,eAAQ,KAAK,YAAoB,MAAM,KAAK;AAAA,MAChD;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,MAAY;AACZ,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,cAA8E;AAC1E,QAAI,QAAQ,KAAK,SAAgB;AACjC,QAAI,MAAM,WAAW,GAAG;AACpB,cAAQ,MAAM,uBAAuB,KAAK,EAAE,eAAe;AAC3D;AAAA,IACJ;AACA,WAAO,MAAM,KAAK,UAAQ,KAAK,UAAU,KAAK,MAAM,CAAC;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAiE;AAC7D,WAAO,mBAA0B,IAAI;AAAA,EACzC;AACJ","sourcesContent":["import { GraphicItemType, OnRenderGraphicItemProps } from \"@drincs/nqtr/dist/override\";\nimport { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { getRoomsByLocation } from \"../../decorators/RoomDecorator\";\nimport MapBaseModel from \"./Map\";\nimport RoomBaseModel from \"./Room\";\n\nconst LOCATION_CATEGORY = \"__nqtr-location__\"\n\nexport interface LocationBaseModelProps<TMap extends MapBaseModel = MapBaseModel> {\n /**\n * The name\n * @default \"\"\n */\n name?: string\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n * @default false\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n * @default false\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an Element or a Pixi'VN CanvasItem\n * @default undefined\n */\n renderIcon?: GraphicItemType | ((location: LocationBaseModel<TMap>, props?: OnRenderGraphicItemProps) => GraphicItemType)\n}\n\n/**\n * The base model of a location. I suggest you extend this class to create your own location model.\n * @example\n * ```typescript\n * export const mcHome = new LocationBaseModel('mc_home', mainMap, {\n * name: 'MC Home',\n * icon: \"https://icon.jpg\",\n * });\n * ```\n */\nexport default class LocationBaseModel<TMap extends MapBaseModel = MapBaseModel> extends StoredClassModel {\n /**\n * @param id The id of the location, it must be unique.\n * @param map The map where the location is.\n * @param props The properties of the location.\n */\n constructor(id: string, map: TMap, props: LocationBaseModelProps<TMap> = {}) {\n super(LOCATION_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._renderIcon = props.renderIcon\n this._map = map\n }\n\n private defaultName: string\n /**\n * The name of the location.\n * If you set undefined, it will return the initial value of name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultDisabled: boolean | string\n /**\n * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n */\n get disabled(): boolean {\n let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set disabled(value: boolean | string) {\n this.setStorageProperty(\"disabled\", value)\n }\n\n private defaultHidden: boolean | string\n /**\n * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n */\n get hidden(): boolean {\n let value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set hidden(value: boolean | string) {\n this.setStorageProperty(\"hidden\", value)\n }\n\n private _renderIcon?: GraphicItemType | ((location: LocationBaseModel<TMap>, props?: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The function for rendering the icon of the location.\n */\n get renderIcon(): ((props?: OnRenderGraphicItemProps) => GraphicItemType) | undefined {\n if (typeof this._renderIcon !== \"function\") {\n return (props?: OnRenderGraphicItemProps) => this._renderIcon as GraphicItemType\n }\n if (this._renderIcon !== undefined) {\n return (props?: OnRenderGraphicItemProps) => {\n return (this._renderIcon as any)(this, props)\n }\n }\n }\n\n private _map: TMap\n /**\n * The map where the location is.\n */\n get map(): TMap {\n return this._map\n }\n\n /**\n * Get the entrance room of the location.\n * You can cast the room to a specific type that extends RoomBaseModel.\n * @returns The entrance room or the first room if there is no entrance.\n * @example\n * ```typescript\n * const entranceHome = new RoomBaseModel(\"entrance-home\", home, { isEntrance: true })\n * saveRoom(entranceHome)\n * const home = new LocationBaseModel(\"home\", map, { name: \"Home\" })\n * \n * const entrance = home.getEntrance() // entrance === entranceHome\n * ```\n */\n getEntrance<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined {\n let rooms = this.getRooms<TRoom>()\n if (rooms.length === 0) {\n console.error(`[NQTR] The location ${this.id} has no rooms`)\n return\n }\n return rooms.find(room => room.isEntrance) || rooms[0]\n }\n\n /**\n * Get all rooms in the location.\n * You can cast the rooms to a specific type that extends RoomBaseModel.\n * @returns The rooms in the location.\n */\n getRooms<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom[] {\n return getRoomsByLocation<TRoom>(this)\n }\n}\n","import { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes/navigation\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\n\n/**\n * Save a room in the registered rooms.\n * @param room The room to save.\n * @returns \n */\nexport function saveRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom | TRoom[]) {\n if (Array.isArray(room)) {\n room.forEach(c => saveRoom(c))\n return\n }\n if (registeredRooms[room.id]) {\n console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`)\n }\n registeredRooms[room.id] = room\n}\n\n/**\n * Get a room by its id.\n * @param id The id of the room.\n * @returns The room or undefined if not found.\n */\nexport function getRoomById<TRoom extends RoomBaseModel = RoomBaseModel>(id: string): TRoom | undefined {\n try {\n let room = registeredRooms[id]\n if (!room) {\n console.error(`[NQTR] Room ${id} not found`)\n return\n }\n return room as TRoom\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Room ${id}`, e)\n return\n }\n}\n\n/**\n * Get all rooms in a location.\n * @param location The location where the rooms are.\n * @returns The rooms in the location.\n */\nexport function getRoomsByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location.id === location.id) as TRoom[]\n}\n\n/**\n * Get all locations in the registered rooms.\n * @returns All locations in the registered rooms.\n */\nexport function getAllLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n let result: { [id: string]: TLocation } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.id] = room.location as TLocation\n })\n return Object.values(result)\n}\n\n/**\n * Get all locations in a map.\n * @param map The map where the locations are.\n * @returns The locations in the map.\n */\nexport function getLocationsByMap<TLocation extends LocationBaseModel = LocationBaseModel>(map: MapBaseModel): TLocation[] {\n return getAllLocations<TLocation>().filter(location => location.map.id === map.id) as TLocation[]\n}\n\n/**\n * Get all maps in the registered rooms.\n * @returns All maps in the registered rooms.\n */\nexport function getAllMaps<TMap extends MapBaseModel = MapBaseModel>(): TMap[] {\n let result: { [id: string]: TMap } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.map.id] = room.location.map as TMap\n })\n return Object.values(result)\n}\n"]}
1
+ {"version":3,"sources":["../../../src/classes/navigation/Location.ts","../../../src/decorators/RoomDecorator.ts"],"names":[],"mappings":";AACA,SAAS,SAAS,wBAAwB;;;ACCnC,IAAM,kBAAmD,CAAC;AA2C1D,SAAS,mBAAgE,UAAsC;AAClH,SAAO,OAAO,OAAO,eAAe,EAAE,OAAO,UAAQ,KAAK,SAAS,OAAO,SAAS,EAAE;AACzF;;;ADzCA,IAAM,oBAAoB;AAmC1B,IAAqB,oBAArB,cAAyF,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtG,YAAY,IAAY,KAAW,QAAsC,CAAC,GAAG;AACzE,UAAM,mBAAmB,EAAE;AAC3B,SAAK,cAAc,MAAM,QAAQ;AACjC,SAAK,kBAAkB,MAAM,YAAY;AACzC,SAAK,gBAAgB,MAAM,UAAU;AACrC,SAAK,cAAc,MAAM;AACzB,SAAK,OAAO;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAe;AACf,WAAO,KAAK,mBAA2B,MAAM,KAAK,KAAK;AAAA,EAC3D;AAAA,EACA,IAAI,KAAK,OAA2B;AAChC,SAAK,mBAAmB,QAAQ,KAAK;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,WAAoB;AACpB,QAAI,QAAQ,KAAK,mBAA4B,UAAU,KAAK,KAAK;AACjE,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS,OAAyB;AAClC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,SAAkB;AAClB,QAAI,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAC/D,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,OAAyB;AAChC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,aAAkF;AAClF,QAAI,SAAS,KAAK;AAClB,QAAI,WAAW,QAAW;AACtB,aAAO;AAAA,IACX;AACA,QAAI,OAAO,WAAW,YAAY;AAC9B,aAAO,CAAC,UAAqC;AACzC,eAAO,OAAO,MAAM,KAAK;AAAA,MAC7B;AAAA,IACJ;AACA,WAAO,CAAC,UAAqC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,MAAY;AACZ,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,cAA8E;AAC1E,QAAI,QAAQ,KAAK,SAAgB;AACjC,QAAI,MAAM,WAAW,GAAG;AACpB,cAAQ,MAAM,uBAAuB,KAAK,EAAE,eAAe;AAC3D;AAAA,IACJ;AACA,WAAO,MAAM,KAAK,UAAQ,KAAK,UAAU,KAAK,MAAM,CAAC;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAiE;AAC7D,WAAO,mBAA0B,IAAI;AAAA,EACzC;AACJ","sourcesContent":["import { GraphicItemType, OnRenderGraphicItemProps } from \"@drincs/nqtr/dist/override\";\nimport { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { getRoomsByLocation } from \"../../decorators/RoomDecorator\";\nimport MapBaseModel from \"./Map\";\nimport RoomBaseModel from \"./Room\";\n\nconst LOCATION_CATEGORY = \"__nqtr-location__\"\n\nexport interface LocationBaseModelProps<TMap extends MapBaseModel = MapBaseModel> {\n /**\n * The name\n * @default \"\"\n */\n name?: string\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n * @default false\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n * @default false\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an Element or a Pixi'VN CanvasItem\n * @default undefined\n */\n renderIcon?: GraphicItemType | ((location: LocationBaseModel<TMap>, props?: OnRenderGraphicItemProps) => GraphicItemType)\n}\n\n/**\n * The base model of a location. I suggest you extend this class to create your own location model.\n * @example\n * ```typescript\n * export const mcHome = new LocationBaseModel('mc_home', mainMap, {\n * name: 'MC Home',\n * icon: \"https://icon.jpg\",\n * });\n * ```\n */\nexport default class LocationBaseModel<TMap extends MapBaseModel = MapBaseModel> extends StoredClassModel {\n /**\n * @param id The id of the location, it must be unique.\n * @param map The map where the location is.\n * @param props The properties of the location.\n */\n constructor(id: string, map: TMap, props: LocationBaseModelProps<TMap> = {}) {\n super(LOCATION_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._renderIcon = props.renderIcon\n this._map = map\n }\n\n private defaultName: string\n /**\n * The name of the location.\n * If you set undefined, it will return the initial value of name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultDisabled: boolean | string\n /**\n * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n */\n get disabled(): boolean {\n let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set disabled(value: boolean | string) {\n this.setStorageProperty(\"disabled\", value)\n }\n\n private defaultHidden: boolean | string\n /**\n * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n */\n get hidden(): boolean {\n let value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set hidden(value: boolean | string) {\n this.setStorageProperty(\"hidden\", value)\n }\n\n private _renderIcon?: GraphicItemType | ((location: LocationBaseModel<TMap>, props?: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The function for rendering the icon of the location.\n */\n get renderIcon(): ((props?: OnRenderGraphicItemProps) => GraphicItemType) | undefined {\n let render = this._renderIcon\n if (render === undefined) {\n return undefined\n }\n if (typeof render === \"function\") {\n return (props?: OnRenderGraphicItemProps) => {\n return render(this, props)\n }\n }\n return (props?: OnRenderGraphicItemProps) => render\n }\n\n private _map: TMap\n /**\n * The map where the location is.\n */\n get map(): TMap {\n return this._map\n }\n\n /**\n * Get the entrance room of the location.\n * You can cast the room to a specific type that extends RoomBaseModel.\n * @returns The entrance room or the first room if there is no entrance.\n * @example\n * ```typescript\n * const entranceHome = new RoomBaseModel(\"entrance-home\", home, { isEntrance: true })\n * saveRoom(entranceHome)\n * const home = new LocationBaseModel(\"home\", map, { name: \"Home\" })\n * \n * const entrance = home.getEntrance() // entrance === entranceHome\n * ```\n */\n getEntrance<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined {\n let rooms = this.getRooms<TRoom>()\n if (rooms.length === 0) {\n console.error(`[NQTR] The location ${this.id} has no rooms`)\n return\n }\n return rooms.find(room => room.isEntrance) || rooms[0]\n }\n\n /**\n * Get all rooms in the location.\n * You can cast the rooms to a specific type that extends RoomBaseModel.\n * @returns The rooms in the location.\n */\n getRooms<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom[] {\n return getRoomsByLocation<TRoom>(this)\n }\n}\n","import { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes/navigation\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\n\n/**\n * Save a room in the registered rooms.\n * @param room The room to save.\n * @returns \n */\nexport function saveRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom | TRoom[]) {\n if (Array.isArray(room)) {\n room.forEach(c => saveRoom(c))\n return\n }\n if (registeredRooms[room.id]) {\n console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`)\n }\n registeredRooms[room.id] = room\n}\n\n/**\n * Get a room by its id.\n * @param id The id of the room.\n * @returns The room or undefined if not found.\n */\nexport function getRoomById<TRoom extends RoomBaseModel = RoomBaseModel>(id: string): TRoom | undefined {\n try {\n let room = registeredRooms[id]\n if (!room) {\n console.error(`[NQTR] Room ${id} not found`)\n return\n }\n return room as TRoom\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Room ${id}`, e)\n return\n }\n}\n\n/**\n * Get all rooms in a location.\n * @param location The location where the rooms are.\n * @returns The rooms in the location.\n */\nexport function getRoomsByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location.id === location.id) as TRoom[]\n}\n\n/**\n * Get all locations in the registered rooms.\n * @returns All locations in the registered rooms.\n */\nexport function getAllLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n let result: { [id: string]: TLocation } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.id] = room.location as TLocation\n })\n return Object.values(result)\n}\n\n/**\n * Get all locations in a map.\n * @param map The map where the locations are.\n * @returns The locations in the map.\n */\nexport function getLocationsByMap<TLocation extends LocationBaseModel = LocationBaseModel>(map: MapBaseModel): TLocation[] {\n return getAllLocations<TLocation>().filter(location => location.map.id === map.id) as TLocation[]\n}\n\n/**\n * Get all maps in the registered rooms.\n * @returns All maps in the registered rooms.\n */\nexport function getAllMaps<TMap extends MapBaseModel = MapBaseModel>(): TMap[] {\n let result: { [id: string]: TMap } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.map.id] = room.location.map as TMap\n })\n return Object.values(result)\n}\n"]}
@@ -45,14 +45,16 @@ var MapBaseModel = class extends pixiVn.StoredClassModel {
45
45
  * The function for rendering the image of the map.
46
46
  */
47
47
  get renderImage() {
48
- if (typeof this._renderImage !== "function") {
49
- return (props) => this._renderImage;
48
+ let render = this._renderImage;
49
+ if (render === void 0) {
50
+ return void 0;
50
51
  }
51
- if (this.renderImage !== void 0) {
52
+ if (typeof render === "function") {
52
53
  return (props) => {
53
- return this.renderImage(this, props);
54
+ return render(this, props);
54
55
  };
55
56
  }
57
+ return (props) => render;
56
58
  }
57
59
  /**
58
60
  * Whether is disabled. If it is a string, it is a Pixi'VN flag name.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/navigation/Map.ts","../../../src/decorators/RoomDecorator.ts"],"names":[],"mappings":";AACA,SAAS,SAAS,wBAAwB;;;ACCnC,IAAM,kBAAmD,CAAC;AAmD1D,SAAS,kBAAwF;AACpG,MAAI,SAAsC,CAAC;AAC3C,SAAO,OAAO,eAAe,EAAE,QAAQ,UAAQ;AAC3C,WAAO,KAAK,SAAS,EAAE,IAAI,KAAK;AAAA,EACpC,CAAC;AACD,SAAO,OAAO,OAAO,MAAM;AAC/B;AAOO,SAAS,kBAA2E,KAAgC;AACvH,SAAO,gBAA2B,EAAE,OAAO,cAAY,SAAS,IAAI,OAAO,IAAI,EAAE;AACrF;;;AD/DA,IAAM,eAAe;AAiErB,IAAqB,eAArB,cAA0C,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKvD,YAAY,IAAY,QAA2B,CAAC,GAAG;AACnD,UAAM,cAAc,EAAE;AACtB,SAAK,cAAc,MAAM,QAAQ;AACjC,SAAK,eAAe,MAAM;AAC1B,SAAK,kBAAkB,MAAM,YAAY;AACzC,SAAK,gBAAgB,MAAM,UAAU;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAe;AACf,WAAO,KAAK,mBAA2B,MAAM,KAAK,KAAK;AAAA,EAC3D;AAAA,EACA,IAAI,KAAK,OAA2B;AAChC,SAAK,mBAAmB,QAAQ,KAAK;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,cAAmF;AACnF,QAAI,OAAO,KAAK,iBAAiB,YAAY;AACzC,aAAO,CAAC,UAAqC,KAAK;AAAA,IACtD;AACA,QAAI,KAAK,gBAAgB,QAAW;AAChC,aAAO,CAAC,UAAqC;AACzC,eAAQ,KAAK,YAAoB,MAAM,KAAK;AAAA,MAChD;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,WAAoB;AACpB,QAAI,QAAQ,KAAK,mBAA4B,UAAU,KAAK,KAAK;AACjE,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS,OAAyB;AAClC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,SAAkB;AAClB,QAAI,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAC/D,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,OAAyB;AAChC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,IAAI,kBAA6C;AAC7C,WAAO,KAAK,oBAAoB,CAAC;AAAA,EACrC;AAAA,EACA,IAAI,gBAAgB,OAA8C;AAC9D,SAAK,mBAAmB;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAqF;AACjF,WAAO,kBAA6B,IAAI;AAAA,EAC5C;AACJ","sourcesContent":["import { GraphicItemType, OnRenderGraphicItemProps } from \"@drincs/nqtr/dist/override\"\nimport { getFlag, StoredClassModel } from \"@drincs/pixi-vn\"\nimport { getLocationsByMap } from \"../../decorators/RoomDecorator\"\nimport LocationBaseModel from \"./Location\"\n\nconst MAP_CATEGORY = \"__nqtr-map__\"\n\nexport interface MapBaseModelProps {\n /**\n * The name\n * @default \"\"\n */\n name?: string\n /**\n * The image. It can be a string, an Element or a Pixi'VN Canvas Item.\n * Or an object to manage multiple image types. For example to have a image based on time.\n * @example\n * ```ts\n * {\n * \"morning\": \"morning-background.jpg\",\n * \"afternoon\": \"afternoon-background.jpg\",\n * \"evening\": \"evening-background.jpg\",\n * \"night\": \"night-background.jpg\"\n * }\n * ```\n * @default undefined\n */\n renderImage?: GraphicItemType | ((map: MapBaseModel, props?: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The neighboring maps that are available in this map.\n * @example\n * ```ts\n * {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * ```\n * @default {}\n */\n neighboringMaps?: { [key: string]: string }\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n * @default false\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n * @default false\n */\n hidden?: boolean | string\n}\n\n/**\n * The base model of a map. I suggest you extend this class to create your own map model.\n * @example\n * ```typescript\n * export const mainMap = new MapBaseModel('main_map', {\n * name: 'Main Map',\n * image: \"https://image.jpg\",\n * neighboringMaps: {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * });\n * ```\n */\nexport default class MapBaseModel extends StoredClassModel {\n /**\n * @param id The id of the map, it must be unique.\n * @param props The properties of the map. \n */\n constructor(id: string, props: MapBaseModelProps = {}) {\n super(MAP_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this._renderImage = props.renderImage\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n }\n\n private defaultName: string\n /**\n * The name of the map.\n * If you set undefined, it will return the initial value of name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty(\"name\", value)\n }\n\n private _renderImage?: GraphicItemType | ((map: MapBaseModel, props?: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The function for rendering the image of the map.\n */\n get renderImage(): ((props?: OnRenderGraphicItemProps) => GraphicItemType) | undefined {\n if (typeof this._renderImage !== \"function\") {\n return (props?: OnRenderGraphicItemProps) => this._renderImage as GraphicItemType\n }\n if (this.renderImage !== undefined) {\n return (props?: OnRenderGraphicItemProps) => {\n return (this.renderImage as any)(this, props)\n }\n }\n }\n\n private defaultDisabled: boolean | string\n /**\n * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n */\n get disabled(): boolean {\n let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set disabled(value: boolean | string) {\n this.setStorageProperty(\"disabled\", value)\n }\n\n private defaultHidden: boolean | string\n /**\n * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n */\n get hidden(): boolean {\n let value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set hidden(value: boolean | string) {\n this.setStorageProperty(\"hidden\", value)\n }\n\n private _neighboringMaps?: { [key: string]: string }\n /**\n * The neighboring maps that are available in this map.\n * @example\n * ```ts\n * {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * ```\n */\n get neighboringMaps(): { [key: string]: string } {\n return this._neighboringMaps || {}\n }\n set neighboringMaps(value: { [key: string]: string } | undefined) {\n this._neighboringMaps = value\n }\n\n /**\n * Get all locations in the map.\n * @returns The locations in the map.\n */\n getLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n return getLocationsByMap<TLocation>(this)\n }\n}\n","import { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes/navigation\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\n\n/**\n * Save a room in the registered rooms.\n * @param room The room to save.\n * @returns \n */\nexport function saveRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom | TRoom[]) {\n if (Array.isArray(room)) {\n room.forEach(c => saveRoom(c))\n return\n }\n if (registeredRooms[room.id]) {\n console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`)\n }\n registeredRooms[room.id] = room\n}\n\n/**\n * Get a room by its id.\n * @param id The id of the room.\n * @returns The room or undefined if not found.\n */\nexport function getRoomById<TRoom extends RoomBaseModel = RoomBaseModel>(id: string): TRoom | undefined {\n try {\n let room = registeredRooms[id]\n if (!room) {\n console.error(`[NQTR] Room ${id} not found`)\n return\n }\n return room as TRoom\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Room ${id}`, e)\n return\n }\n}\n\n/**\n * Get all rooms in a location.\n * @param location The location where the rooms are.\n * @returns The rooms in the location.\n */\nexport function getRoomsByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location.id === location.id) as TRoom[]\n}\n\n/**\n * Get all locations in the registered rooms.\n * @returns All locations in the registered rooms.\n */\nexport function getAllLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n let result: { [id: string]: TLocation } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.id] = room.location as TLocation\n })\n return Object.values(result)\n}\n\n/**\n * Get all locations in a map.\n * @param map The map where the locations are.\n * @returns The locations in the map.\n */\nexport function getLocationsByMap<TLocation extends LocationBaseModel = LocationBaseModel>(map: MapBaseModel): TLocation[] {\n return getAllLocations<TLocation>().filter(location => location.map.id === map.id) as TLocation[]\n}\n\n/**\n * Get all maps in the registered rooms.\n * @returns All maps in the registered rooms.\n */\nexport function getAllMaps<TMap extends MapBaseModel = MapBaseModel>(): TMap[] {\n let result: { [id: string]: TMap } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.map.id] = room.location.map as TMap\n })\n return Object.values(result)\n}\n"]}
1
+ {"version":3,"sources":["../../../src/classes/navigation/Map.ts","../../../src/decorators/RoomDecorator.ts"],"names":[],"mappings":";AACA,SAAS,SAAS,wBAAwB;;;ACCnC,IAAM,kBAAmD,CAAC;AAmD1D,SAAS,kBAAwF;AACpG,MAAI,SAAsC,CAAC;AAC3C,SAAO,OAAO,eAAe,EAAE,QAAQ,UAAQ;AAC3C,WAAO,KAAK,SAAS,EAAE,IAAI,KAAK;AAAA,EACpC,CAAC;AACD,SAAO,OAAO,OAAO,MAAM;AAC/B;AAOO,SAAS,kBAA2E,KAAgC;AACvH,SAAO,gBAA2B,EAAE,OAAO,cAAY,SAAS,IAAI,OAAO,IAAI,EAAE;AACrF;;;AD/DA,IAAM,eAAe;AAiErB,IAAqB,eAArB,cAA0C,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKvD,YAAY,IAAY,QAA2B,CAAC,GAAG;AACnD,UAAM,cAAc,EAAE;AACtB,SAAK,cAAc,MAAM,QAAQ;AACjC,SAAK,eAAe,MAAM;AAC1B,SAAK,kBAAkB,MAAM,YAAY;AACzC,SAAK,gBAAgB,MAAM,UAAU;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAe;AACf,WAAO,KAAK,mBAA2B,MAAM,KAAK,KAAK;AAAA,EAC3D;AAAA,EACA,IAAI,KAAK,OAA2B;AAChC,SAAK,mBAAmB,QAAQ,KAAK;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,cAAmF;AACnF,QAAI,SAAS,KAAK;AAClB,QAAI,WAAW,QAAW;AACtB,aAAO;AAAA,IACX;AACA,QAAI,OAAO,WAAW,YAAY;AAC9B,aAAO,CAAC,UAAqC;AACzC,eAAO,OAAO,MAAM,KAAK;AAAA,MAC7B;AAAA,IACJ;AACA,WAAO,CAAC,UAAqC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,WAAoB;AACpB,QAAI,QAAQ,KAAK,mBAA4B,UAAU,KAAK,KAAK;AACjE,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS,OAAyB;AAClC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,SAAkB;AAClB,QAAI,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAC/D,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,OAAyB;AAChC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,IAAI,kBAA6C;AAC7C,WAAO,KAAK,oBAAoB,CAAC;AAAA,EACrC;AAAA,EACA,IAAI,gBAAgB,OAA8C;AAC9D,SAAK,mBAAmB;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAqF;AACjF,WAAO,kBAA6B,IAAI;AAAA,EAC5C;AACJ","sourcesContent":["import { GraphicItemType, OnRenderGraphicItemProps } from \"@drincs/nqtr/dist/override\"\nimport { getFlag, StoredClassModel } from \"@drincs/pixi-vn\"\nimport { getLocationsByMap } from \"../../decorators/RoomDecorator\"\nimport LocationBaseModel from \"./Location\"\n\nconst MAP_CATEGORY = \"__nqtr-map__\"\n\nexport interface MapBaseModelProps {\n /**\n * The name\n * @default \"\"\n */\n name?: string\n /**\n * The image. It can be a string, an Element or a Pixi'VN Canvas Item.\n * Or an object to manage multiple image types. For example to have a image based on time.\n * @example\n * ```ts\n * {\n * \"morning\": \"morning-background.jpg\",\n * \"afternoon\": \"afternoon-background.jpg\",\n * \"evening\": \"evening-background.jpg\",\n * \"night\": \"night-background.jpg\"\n * }\n * ```\n * @default undefined\n */\n renderImage?: GraphicItemType | ((map: MapBaseModel, props?: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The neighboring maps that are available in this map.\n * @example\n * ```ts\n * {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * ```\n * @default {}\n */\n neighboringMaps?: { [key: string]: string }\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n * @default false\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n * @default false\n */\n hidden?: boolean | string\n}\n\n/**\n * The base model of a map. I suggest you extend this class to create your own map model.\n * @example\n * ```typescript\n * export const mainMap = new MapBaseModel('main_map', {\n * name: 'Main Map',\n * image: \"https://image.jpg\",\n * neighboringMaps: {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * });\n * ```\n */\nexport default class MapBaseModel extends StoredClassModel {\n /**\n * @param id The id of the map, it must be unique.\n * @param props The properties of the map. \n */\n constructor(id: string, props: MapBaseModelProps = {}) {\n super(MAP_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this._renderImage = props.renderImage\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n }\n\n private defaultName: string\n /**\n * The name of the map.\n * If you set undefined, it will return the initial value of name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty(\"name\", value)\n }\n\n private _renderImage?: GraphicItemType | ((map: MapBaseModel, props?: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The function for rendering the image of the map.\n */\n get renderImage(): ((props?: OnRenderGraphicItemProps) => GraphicItemType) | undefined {\n let render = this._renderImage\n if (render === undefined) {\n return undefined\n }\n if (typeof render === \"function\") {\n return (props?: OnRenderGraphicItemProps) => {\n return render(this, props)\n }\n }\n return (props?: OnRenderGraphicItemProps) => render\n }\n\n private defaultDisabled: boolean | string\n /**\n * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n */\n get disabled(): boolean {\n let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set disabled(value: boolean | string) {\n this.setStorageProperty(\"disabled\", value)\n }\n\n private defaultHidden: boolean | string\n /**\n * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n */\n get hidden(): boolean {\n let value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set hidden(value: boolean | string) {\n this.setStorageProperty(\"hidden\", value)\n }\n\n private _neighboringMaps?: { [key: string]: string }\n /**\n * The neighboring maps that are available in this map.\n * @example\n * ```ts\n * {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * ```\n */\n get neighboringMaps(): { [key: string]: string } {\n return this._neighboringMaps || {}\n }\n set neighboringMaps(value: { [key: string]: string } | undefined) {\n this._neighboringMaps = value\n }\n\n /**\n * Get all locations in the map.\n * @returns The locations in the map.\n */\n getLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n return getLocationsByMap<TLocation>(this)\n }\n}\n","import { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes/navigation\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\n\n/**\n * Save a room in the registered rooms.\n * @param room The room to save.\n * @returns \n */\nexport function saveRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom | TRoom[]) {\n if (Array.isArray(room)) {\n room.forEach(c => saveRoom(c))\n return\n }\n if (registeredRooms[room.id]) {\n console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`)\n }\n registeredRooms[room.id] = room\n}\n\n/**\n * Get a room by its id.\n * @param id The id of the room.\n * @returns The room or undefined if not found.\n */\nexport function getRoomById<TRoom extends RoomBaseModel = RoomBaseModel>(id: string): TRoom | undefined {\n try {\n let room = registeredRooms[id]\n if (!room) {\n console.error(`[NQTR] Room ${id} not found`)\n return\n }\n return room as TRoom\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Room ${id}`, e)\n return\n }\n}\n\n/**\n * Get all rooms in a location.\n * @param location The location where the rooms are.\n * @returns The rooms in the location.\n */\nexport function getRoomsByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location.id === location.id) as TRoom[]\n}\n\n/**\n * Get all locations in the registered rooms.\n * @returns All locations in the registered rooms.\n */\nexport function getAllLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n let result: { [id: string]: TLocation } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.id] = room.location as TLocation\n })\n return Object.values(result)\n}\n\n/**\n * Get all locations in a map.\n * @param map The map where the locations are.\n * @returns The locations in the map.\n */\nexport function getLocationsByMap<TLocation extends LocationBaseModel = LocationBaseModel>(map: MapBaseModel): TLocation[] {\n return getAllLocations<TLocation>().filter(location => location.map.id === map.id) as TLocation[]\n}\n\n/**\n * Get all maps in the registered rooms.\n * @returns All maps in the registered rooms.\n */\nexport function getAllMaps<TMap extends MapBaseModel = MapBaseModel>(): TMap[] {\n let result: { [id: string]: TMap } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.map.id] = room.location.map as TMap\n })\n return Object.values(result)\n}\n"]}
@@ -43,14 +43,16 @@ var MapBaseModel = class extends StoredClassModel {
43
43
  * The function for rendering the image of the map.
44
44
  */
45
45
  get renderImage() {
46
- if (typeof this._renderImage !== "function") {
47
- return (props) => this._renderImage;
46
+ let render = this._renderImage;
47
+ if (render === void 0) {
48
+ return void 0;
48
49
  }
49
- if (this.renderImage !== void 0) {
50
+ if (typeof render === "function") {
50
51
  return (props) => {
51
- return this.renderImage(this, props);
52
+ return render(this, props);
52
53
  };
53
54
  }
55
+ return (props) => render;
54
56
  }
55
57
  /**
56
58
  * Whether is disabled. If it is a string, it is a Pixi'VN flag name.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/navigation/Map.ts","../../../src/decorators/RoomDecorator.ts"],"names":[],"mappings":";AACA,SAAS,SAAS,wBAAwB;;;ACCnC,IAAM,kBAAmD,CAAC;AAmD1D,SAAS,kBAAwF;AACpG,MAAI,SAAsC,CAAC;AAC3C,SAAO,OAAO,eAAe,EAAE,QAAQ,UAAQ;AAC3C,WAAO,KAAK,SAAS,EAAE,IAAI,KAAK;AAAA,EACpC,CAAC;AACD,SAAO,OAAO,OAAO,MAAM;AAC/B;AAOO,SAAS,kBAA2E,KAAgC;AACvH,SAAO,gBAA2B,EAAE,OAAO,cAAY,SAAS,IAAI,OAAO,IAAI,EAAE;AACrF;;;AD/DA,IAAM,eAAe;AAiErB,IAAqB,eAArB,cAA0C,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKvD,YAAY,IAAY,QAA2B,CAAC,GAAG;AACnD,UAAM,cAAc,EAAE;AACtB,SAAK,cAAc,MAAM,QAAQ;AACjC,SAAK,eAAe,MAAM;AAC1B,SAAK,kBAAkB,MAAM,YAAY;AACzC,SAAK,gBAAgB,MAAM,UAAU;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAe;AACf,WAAO,KAAK,mBAA2B,MAAM,KAAK,KAAK;AAAA,EAC3D;AAAA,EACA,IAAI,KAAK,OAA2B;AAChC,SAAK,mBAAmB,QAAQ,KAAK;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,cAAmF;AACnF,QAAI,OAAO,KAAK,iBAAiB,YAAY;AACzC,aAAO,CAAC,UAAqC,KAAK;AAAA,IACtD;AACA,QAAI,KAAK,gBAAgB,QAAW;AAChC,aAAO,CAAC,UAAqC;AACzC,eAAQ,KAAK,YAAoB,MAAM,KAAK;AAAA,MAChD;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,WAAoB;AACpB,QAAI,QAAQ,KAAK,mBAA4B,UAAU,KAAK,KAAK;AACjE,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS,OAAyB;AAClC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,SAAkB;AAClB,QAAI,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAC/D,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,OAAyB;AAChC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,IAAI,kBAA6C;AAC7C,WAAO,KAAK,oBAAoB,CAAC;AAAA,EACrC;AAAA,EACA,IAAI,gBAAgB,OAA8C;AAC9D,SAAK,mBAAmB;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAqF;AACjF,WAAO,kBAA6B,IAAI;AAAA,EAC5C;AACJ","sourcesContent":["import { GraphicItemType, OnRenderGraphicItemProps } from \"@drincs/nqtr/dist/override\"\nimport { getFlag, StoredClassModel } from \"@drincs/pixi-vn\"\nimport { getLocationsByMap } from \"../../decorators/RoomDecorator\"\nimport LocationBaseModel from \"./Location\"\n\nconst MAP_CATEGORY = \"__nqtr-map__\"\n\nexport interface MapBaseModelProps {\n /**\n * The name\n * @default \"\"\n */\n name?: string\n /**\n * The image. It can be a string, an Element or a Pixi'VN Canvas Item.\n * Or an object to manage multiple image types. For example to have a image based on time.\n * @example\n * ```ts\n * {\n * \"morning\": \"morning-background.jpg\",\n * \"afternoon\": \"afternoon-background.jpg\",\n * \"evening\": \"evening-background.jpg\",\n * \"night\": \"night-background.jpg\"\n * }\n * ```\n * @default undefined\n */\n renderImage?: GraphicItemType | ((map: MapBaseModel, props?: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The neighboring maps that are available in this map.\n * @example\n * ```ts\n * {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * ```\n * @default {}\n */\n neighboringMaps?: { [key: string]: string }\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n * @default false\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n * @default false\n */\n hidden?: boolean | string\n}\n\n/**\n * The base model of a map. I suggest you extend this class to create your own map model.\n * @example\n * ```typescript\n * export const mainMap = new MapBaseModel('main_map', {\n * name: 'Main Map',\n * image: \"https://image.jpg\",\n * neighboringMaps: {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * });\n * ```\n */\nexport default class MapBaseModel extends StoredClassModel {\n /**\n * @param id The id of the map, it must be unique.\n * @param props The properties of the map. \n */\n constructor(id: string, props: MapBaseModelProps = {}) {\n super(MAP_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this._renderImage = props.renderImage\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n }\n\n private defaultName: string\n /**\n * The name of the map.\n * If you set undefined, it will return the initial value of name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty(\"name\", value)\n }\n\n private _renderImage?: GraphicItemType | ((map: MapBaseModel, props?: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The function for rendering the image of the map.\n */\n get renderImage(): ((props?: OnRenderGraphicItemProps) => GraphicItemType) | undefined {\n if (typeof this._renderImage !== \"function\") {\n return (props?: OnRenderGraphicItemProps) => this._renderImage as GraphicItemType\n }\n if (this.renderImage !== undefined) {\n return (props?: OnRenderGraphicItemProps) => {\n return (this.renderImage as any)(this, props)\n }\n }\n }\n\n private defaultDisabled: boolean | string\n /**\n * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n */\n get disabled(): boolean {\n let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set disabled(value: boolean | string) {\n this.setStorageProperty(\"disabled\", value)\n }\n\n private defaultHidden: boolean | string\n /**\n * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n */\n get hidden(): boolean {\n let value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set hidden(value: boolean | string) {\n this.setStorageProperty(\"hidden\", value)\n }\n\n private _neighboringMaps?: { [key: string]: string }\n /**\n * The neighboring maps that are available in this map.\n * @example\n * ```ts\n * {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * ```\n */\n get neighboringMaps(): { [key: string]: string } {\n return this._neighboringMaps || {}\n }\n set neighboringMaps(value: { [key: string]: string } | undefined) {\n this._neighboringMaps = value\n }\n\n /**\n * Get all locations in the map.\n * @returns The locations in the map.\n */\n getLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n return getLocationsByMap<TLocation>(this)\n }\n}\n","import { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes/navigation\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\n\n/**\n * Save a room in the registered rooms.\n * @param room The room to save.\n * @returns \n */\nexport function saveRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom | TRoom[]) {\n if (Array.isArray(room)) {\n room.forEach(c => saveRoom(c))\n return\n }\n if (registeredRooms[room.id]) {\n console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`)\n }\n registeredRooms[room.id] = room\n}\n\n/**\n * Get a room by its id.\n * @param id The id of the room.\n * @returns The room or undefined if not found.\n */\nexport function getRoomById<TRoom extends RoomBaseModel = RoomBaseModel>(id: string): TRoom | undefined {\n try {\n let room = registeredRooms[id]\n if (!room) {\n console.error(`[NQTR] Room ${id} not found`)\n return\n }\n return room as TRoom\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Room ${id}`, e)\n return\n }\n}\n\n/**\n * Get all rooms in a location.\n * @param location The location where the rooms are.\n * @returns The rooms in the location.\n */\nexport function getRoomsByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location.id === location.id) as TRoom[]\n}\n\n/**\n * Get all locations in the registered rooms.\n * @returns All locations in the registered rooms.\n */\nexport function getAllLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n let result: { [id: string]: TLocation } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.id] = room.location as TLocation\n })\n return Object.values(result)\n}\n\n/**\n * Get all locations in a map.\n * @param map The map where the locations are.\n * @returns The locations in the map.\n */\nexport function getLocationsByMap<TLocation extends LocationBaseModel = LocationBaseModel>(map: MapBaseModel): TLocation[] {\n return getAllLocations<TLocation>().filter(location => location.map.id === map.id) as TLocation[]\n}\n\n/**\n * Get all maps in the registered rooms.\n * @returns All maps in the registered rooms.\n */\nexport function getAllMaps<TMap extends MapBaseModel = MapBaseModel>(): TMap[] {\n let result: { [id: string]: TMap } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.map.id] = room.location.map as TMap\n })\n return Object.values(result)\n}\n"]}
1
+ {"version":3,"sources":["../../../src/classes/navigation/Map.ts","../../../src/decorators/RoomDecorator.ts"],"names":[],"mappings":";AACA,SAAS,SAAS,wBAAwB;;;ACCnC,IAAM,kBAAmD,CAAC;AAmD1D,SAAS,kBAAwF;AACpG,MAAI,SAAsC,CAAC;AAC3C,SAAO,OAAO,eAAe,EAAE,QAAQ,UAAQ;AAC3C,WAAO,KAAK,SAAS,EAAE,IAAI,KAAK;AAAA,EACpC,CAAC;AACD,SAAO,OAAO,OAAO,MAAM;AAC/B;AAOO,SAAS,kBAA2E,KAAgC;AACvH,SAAO,gBAA2B,EAAE,OAAO,cAAY,SAAS,IAAI,OAAO,IAAI,EAAE;AACrF;;;AD/DA,IAAM,eAAe;AAiErB,IAAqB,eAArB,cAA0C,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKvD,YAAY,IAAY,QAA2B,CAAC,GAAG;AACnD,UAAM,cAAc,EAAE;AACtB,SAAK,cAAc,MAAM,QAAQ;AACjC,SAAK,eAAe,MAAM;AAC1B,SAAK,kBAAkB,MAAM,YAAY;AACzC,SAAK,gBAAgB,MAAM,UAAU;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAe;AACf,WAAO,KAAK,mBAA2B,MAAM,KAAK,KAAK;AAAA,EAC3D;AAAA,EACA,IAAI,KAAK,OAA2B;AAChC,SAAK,mBAAmB,QAAQ,KAAK;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,cAAmF;AACnF,QAAI,SAAS,KAAK;AAClB,QAAI,WAAW,QAAW;AACtB,aAAO;AAAA,IACX;AACA,QAAI,OAAO,WAAW,YAAY;AAC9B,aAAO,CAAC,UAAqC;AACzC,eAAO,OAAO,MAAM,KAAK;AAAA,MAC7B;AAAA,IACJ;AACA,WAAO,CAAC,UAAqC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,WAAoB;AACpB,QAAI,QAAQ,KAAK,mBAA4B,UAAU,KAAK,KAAK;AACjE,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS,OAAyB;AAClC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,SAAkB;AAClB,QAAI,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAC/D,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,OAAyB;AAChC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,IAAI,kBAA6C;AAC7C,WAAO,KAAK,oBAAoB,CAAC;AAAA,EACrC;AAAA,EACA,IAAI,gBAAgB,OAA8C;AAC9D,SAAK,mBAAmB;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAqF;AACjF,WAAO,kBAA6B,IAAI;AAAA,EAC5C;AACJ","sourcesContent":["import { GraphicItemType, OnRenderGraphicItemProps } from \"@drincs/nqtr/dist/override\"\nimport { getFlag, StoredClassModel } from \"@drincs/pixi-vn\"\nimport { getLocationsByMap } from \"../../decorators/RoomDecorator\"\nimport LocationBaseModel from \"./Location\"\n\nconst MAP_CATEGORY = \"__nqtr-map__\"\n\nexport interface MapBaseModelProps {\n /**\n * The name\n * @default \"\"\n */\n name?: string\n /**\n * The image. It can be a string, an Element or a Pixi'VN Canvas Item.\n * Or an object to manage multiple image types. For example to have a image based on time.\n * @example\n * ```ts\n * {\n * \"morning\": \"morning-background.jpg\",\n * \"afternoon\": \"afternoon-background.jpg\",\n * \"evening\": \"evening-background.jpg\",\n * \"night\": \"night-background.jpg\"\n * }\n * ```\n * @default undefined\n */\n renderImage?: GraphicItemType | ((map: MapBaseModel, props?: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The neighboring maps that are available in this map.\n * @example\n * ```ts\n * {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * ```\n * @default {}\n */\n neighboringMaps?: { [key: string]: string }\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n * @default false\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n * @default false\n */\n hidden?: boolean | string\n}\n\n/**\n * The base model of a map. I suggest you extend this class to create your own map model.\n * @example\n * ```typescript\n * export const mainMap = new MapBaseModel('main_map', {\n * name: 'Main Map',\n * image: \"https://image.jpg\",\n * neighboringMaps: {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * });\n * ```\n */\nexport default class MapBaseModel extends StoredClassModel {\n /**\n * @param id The id of the map, it must be unique.\n * @param props The properties of the map. \n */\n constructor(id: string, props: MapBaseModelProps = {}) {\n super(MAP_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this._renderImage = props.renderImage\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n }\n\n private defaultName: string\n /**\n * The name of the map.\n * If you set undefined, it will return the initial value of name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty(\"name\", value)\n }\n\n private _renderImage?: GraphicItemType | ((map: MapBaseModel, props?: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The function for rendering the image of the map.\n */\n get renderImage(): ((props?: OnRenderGraphicItemProps) => GraphicItemType) | undefined {\n let render = this._renderImage\n if (render === undefined) {\n return undefined\n }\n if (typeof render === \"function\") {\n return (props?: OnRenderGraphicItemProps) => {\n return render(this, props)\n }\n }\n return (props?: OnRenderGraphicItemProps) => render\n }\n\n private defaultDisabled: boolean | string\n /**\n * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n */\n get disabled(): boolean {\n let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set disabled(value: boolean | string) {\n this.setStorageProperty(\"disabled\", value)\n }\n\n private defaultHidden: boolean | string\n /**\n * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n */\n get hidden(): boolean {\n let value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set hidden(value: boolean | string) {\n this.setStorageProperty(\"hidden\", value)\n }\n\n private _neighboringMaps?: { [key: string]: string }\n /**\n * The neighboring maps that are available in this map.\n * @example\n * ```ts\n * {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * ```\n */\n get neighboringMaps(): { [key: string]: string } {\n return this._neighboringMaps || {}\n }\n set neighboringMaps(value: { [key: string]: string } | undefined) {\n this._neighboringMaps = value\n }\n\n /**\n * Get all locations in the map.\n * @returns The locations in the map.\n */\n getLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n return getLocationsByMap<TLocation>(this)\n }\n}\n","import { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes/navigation\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\n\n/**\n * Save a room in the registered rooms.\n * @param room The room to save.\n * @returns \n */\nexport function saveRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom | TRoom[]) {\n if (Array.isArray(room)) {\n room.forEach(c => saveRoom(c))\n return\n }\n if (registeredRooms[room.id]) {\n console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`)\n }\n registeredRooms[room.id] = room\n}\n\n/**\n * Get a room by its id.\n * @param id The id of the room.\n * @returns The room or undefined if not found.\n */\nexport function getRoomById<TRoom extends RoomBaseModel = RoomBaseModel>(id: string): TRoom | undefined {\n try {\n let room = registeredRooms[id]\n if (!room) {\n console.error(`[NQTR] Room ${id} not found`)\n return\n }\n return room as TRoom\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Room ${id}`, e)\n return\n }\n}\n\n/**\n * Get all rooms in a location.\n * @param location The location where the rooms are.\n * @returns The rooms in the location.\n */\nexport function getRoomsByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location.id === location.id) as TRoom[]\n}\n\n/**\n * Get all locations in the registered rooms.\n * @returns All locations in the registered rooms.\n */\nexport function getAllLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n let result: { [id: string]: TLocation } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.id] = room.location as TLocation\n })\n return Object.values(result)\n}\n\n/**\n * Get all locations in a map.\n * @param map The map where the locations are.\n * @returns The locations in the map.\n */\nexport function getLocationsByMap<TLocation extends LocationBaseModel = LocationBaseModel>(map: MapBaseModel): TLocation[] {\n return getAllLocations<TLocation>().filter(location => location.map.id === map.id) as TLocation[]\n}\n\n/**\n * Get all maps in the registered rooms.\n * @returns All maps in the registered rooms.\n */\nexport function getAllMaps<TMap extends MapBaseModel = MapBaseModel>(): TMap[] {\n let result: { [id: string]: TMap } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.map.id] = room.location.map as TMap\n })\n return Object.values(result)\n}\n"]}
@@ -441,14 +441,16 @@ var ActivityStoredAbstract = class {
441
441
  * The function for rendering the icon of the activity.
442
442
  */
443
443
  get renderIcon() {
444
- if (typeof this._renderIcon !== "function") {
445
- return (props) => this._renderIcon;
444
+ let render = this._renderIcon;
445
+ if (render === void 0) {
446
+ return void 0;
446
447
  }
447
- if (this._renderIcon !== void 0) {
448
+ if (typeof render === "function") {
448
449
  return (props) => {
449
- return this._renderIcon(this, props);
450
+ return render(this, props);
450
451
  };
451
452
  }
453
+ return (props) => render;
452
454
  }
453
455
  /**
454
456
  * The function that is called when the activity is runned.
@@ -577,14 +579,16 @@ var RoomBaseModel = class extends pixiVn.StoredClassModel {
577
579
  * The function for rendering the image of the room.
578
580
  */
579
581
  get renderImage() {
580
- if (typeof this._renderImage !== "function") {
581
- return (props) => this._renderImage;
582
+ let render = this._renderImage;
583
+ if (render === void 0) {
584
+ return void 0;
582
585
  }
583
- if (this.renderImage !== void 0) {
586
+ if (typeof render === "function") {
584
587
  return (props) => {
585
- return this.renderImage(this, props);
588
+ return render(this, props);
586
589
  };
587
590
  }
591
+ return (props) => render;
588
592
  }
589
593
  /**
590
594
  * The activities that are available in this room.
@@ -745,14 +749,16 @@ var RoomBaseModel = class extends pixiVn.StoredClassModel {
745
749
  * The function for rendering the icon of the room.
746
750
  */
747
751
  get renderIcon() {
748
- if (typeof this._renderIcon !== "function") {
749
- return (props) => this._renderIcon;
752
+ let render = this._renderIcon;
753
+ if (render === void 0) {
754
+ return void 0;
750
755
  }
751
- if (this._renderIcon !== void 0) {
756
+ if (typeof render === "function") {
752
757
  return (props) => {
753
- return this._renderIcon(this, props);
758
+ return render(this, props);
754
759
  };
755
760
  }
761
+ return (props) => render;
756
762
  }
757
763
  /**
758
764
  * Get the character commitments of the room.