@drincs/nqtr 0.1.9 → 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.
- package/dist/classes/Activity.js +10 -12
- package/dist/classes/Activity.js.map +1 -1
- package/dist/classes/Activity.mjs +10 -12
- package/dist/classes/Activity.mjs.map +1 -1
- package/dist/classes/Commitment.js +5 -6
- package/dist/classes/Commitment.js.map +1 -1
- package/dist/classes/Commitment.mjs +5 -6
- package/dist/classes/Commitment.mjs.map +1 -1
- package/dist/classes/index.js +10 -12
- package/dist/classes/index.js.map +1 -1
- package/dist/classes/index.mjs +10 -12
- package/dist/classes/index.mjs.map +1 -1
- package/dist/classes/navigation/ActivityRoom.js +5 -6
- package/dist/classes/navigation/ActivityRoom.js.map +1 -1
- package/dist/classes/navigation/ActivityRoom.mjs +5 -6
- package/dist/classes/navigation/ActivityRoom.mjs.map +1 -1
- package/dist/classes/navigation/Location.js +5 -6
- package/dist/classes/navigation/Location.js.map +1 -1
- package/dist/classes/navigation/Location.mjs +5 -6
- package/dist/classes/navigation/Location.mjs.map +1 -1
- package/dist/classes/navigation/Map.js +5 -6
- package/dist/classes/navigation/Map.js.map +1 -1
- package/dist/classes/navigation/Map.mjs +5 -6
- package/dist/classes/navigation/Map.mjs.map +1 -1
- package/dist/classes/navigation/Room.js +15 -18
- package/dist/classes/navigation/Room.js.map +1 -1
- package/dist/classes/navigation/Room.mjs +15 -18
- package/dist/classes/navigation/Room.mjs.map +1 -1
- package/dist/classes/navigation/index.js +25 -30
- package/dist/classes/navigation/index.js.map +1 -1
- package/dist/classes/navigation/index.mjs +25 -30
- package/dist/classes/navigation/index.mjs.map +1 -1
- package/dist/functions/ActivityFunctions.js.map +1 -1
- package/dist/functions/ActivityFunctions.mjs.map +1 -1
- package/dist/functions/NavigationFunctions.js +5 -6
- package/dist/functions/NavigationFunctions.js.map +1 -1
- package/dist/functions/NavigationFunctions.mjs +5 -6
- package/dist/functions/NavigationFunctions.mjs.map +1 -1
- package/dist/functions/index.js +5 -6
- package/dist/functions/index.js.map +1 -1
- package/dist/functions/index.mjs +5 -6
- package/dist/functions/index.mjs.map +1 -1
- package/dist/index.js +35 -42
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +35 -42
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -66,17 +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
|
-
|
|
69
|
+
let render = this._renderIcon;
|
|
70
|
+
if (render === void 0) {
|
|
70
71
|
return void 0;
|
|
71
72
|
}
|
|
72
|
-
if (typeof
|
|
73
|
-
return (props) => this._renderIcon;
|
|
74
|
-
}
|
|
75
|
-
if (this._renderIcon !== void 0) {
|
|
73
|
+
if (typeof render === "function") {
|
|
76
74
|
return (props) => {
|
|
77
|
-
return
|
|
75
|
+
return render(this, props);
|
|
78
76
|
};
|
|
79
77
|
}
|
|
78
|
+
return (props) => render;
|
|
80
79
|
}
|
|
81
80
|
/**
|
|
82
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,
|
|
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,17 +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
|
-
|
|
67
|
+
let render = this._renderIcon;
|
|
68
|
+
if (render === void 0) {
|
|
68
69
|
return void 0;
|
|
69
70
|
}
|
|
70
|
-
if (typeof
|
|
71
|
-
return (props) => this._renderIcon;
|
|
72
|
-
}
|
|
73
|
-
if (this._renderIcon !== void 0) {
|
|
71
|
+
if (typeof render === "function") {
|
|
74
72
|
return (props) => {
|
|
75
|
-
return
|
|
73
|
+
return render(this, props);
|
|
76
74
|
};
|
|
77
75
|
}
|
|
76
|
+
return (props) => render;
|
|
78
77
|
}
|
|
79
78
|
/**
|
|
80
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,
|
|
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,17 +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
|
-
|
|
48
|
+
let render = this._renderImage;
|
|
49
|
+
if (render === void 0) {
|
|
49
50
|
return void 0;
|
|
50
51
|
}
|
|
51
|
-
if (typeof
|
|
52
|
-
return (props) => this._renderImage;
|
|
53
|
-
}
|
|
54
|
-
if (this.renderImage !== void 0) {
|
|
52
|
+
if (typeof render === "function") {
|
|
55
53
|
return (props) => {
|
|
56
|
-
return
|
|
54
|
+
return render(this, props);
|
|
57
55
|
};
|
|
58
56
|
}
|
|
57
|
+
return (props) => render;
|
|
59
58
|
}
|
|
60
59
|
/**
|
|
61
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,CAAC,KAAK,cAAc;AACpB,aAAO;AAAA,IACX;AACA,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 (!this._renderImage) {\n return undefined\n }\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,17 +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
|
-
|
|
46
|
+
let render = this._renderImage;
|
|
47
|
+
if (render === void 0) {
|
|
47
48
|
return void 0;
|
|
48
49
|
}
|
|
49
|
-
if (typeof
|
|
50
|
-
return (props) => this._renderImage;
|
|
51
|
-
}
|
|
52
|
-
if (this.renderImage !== void 0) {
|
|
50
|
+
if (typeof render === "function") {
|
|
53
51
|
return (props) => {
|
|
54
|
-
return
|
|
52
|
+
return render(this, props);
|
|
55
53
|
};
|
|
56
54
|
}
|
|
55
|
+
return (props) => render;
|
|
57
56
|
}
|
|
58
57
|
/**
|
|
59
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,CAAC,KAAK,cAAc;AACpB,aAAO;AAAA,IACX;AACA,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 (!this._renderImage) {\n return undefined\n }\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,17 +441,16 @@ var ActivityStoredAbstract = class {
|
|
|
441
441
|
* The function for rendering the icon of the activity.
|
|
442
442
|
*/
|
|
443
443
|
get renderIcon() {
|
|
444
|
-
|
|
444
|
+
let render = this._renderIcon;
|
|
445
|
+
if (render === void 0) {
|
|
445
446
|
return void 0;
|
|
446
447
|
}
|
|
447
|
-
if (typeof
|
|
448
|
-
return (props) => this._renderIcon;
|
|
449
|
-
}
|
|
450
|
-
if (this._renderIcon !== void 0) {
|
|
448
|
+
if (typeof render === "function") {
|
|
451
449
|
return (props) => {
|
|
452
|
-
return
|
|
450
|
+
return render(this, props);
|
|
453
451
|
};
|
|
454
452
|
}
|
|
453
|
+
return (props) => render;
|
|
455
454
|
}
|
|
456
455
|
/**
|
|
457
456
|
* The function that is called when the activity is runned.
|
|
@@ -580,17 +579,16 @@ var RoomBaseModel = class extends pixiVn.StoredClassModel {
|
|
|
580
579
|
* The function for rendering the image of the room.
|
|
581
580
|
*/
|
|
582
581
|
get renderImage() {
|
|
583
|
-
|
|
582
|
+
let render = this._renderImage;
|
|
583
|
+
if (render === void 0) {
|
|
584
584
|
return void 0;
|
|
585
585
|
}
|
|
586
|
-
if (typeof
|
|
587
|
-
return (props) => this._renderImage;
|
|
588
|
-
}
|
|
589
|
-
if (this.renderImage !== void 0) {
|
|
586
|
+
if (typeof render === "function") {
|
|
590
587
|
return (props) => {
|
|
591
|
-
return
|
|
588
|
+
return render(this, props);
|
|
592
589
|
};
|
|
593
590
|
}
|
|
591
|
+
return (props) => render;
|
|
594
592
|
}
|
|
595
593
|
/**
|
|
596
594
|
* The activities that are available in this room.
|
|
@@ -751,17 +749,16 @@ var RoomBaseModel = class extends pixiVn.StoredClassModel {
|
|
|
751
749
|
* The function for rendering the icon of the room.
|
|
752
750
|
*/
|
|
753
751
|
get renderIcon() {
|
|
754
|
-
|
|
752
|
+
let render = this._renderIcon;
|
|
753
|
+
if (render === void 0) {
|
|
755
754
|
return void 0;
|
|
756
755
|
}
|
|
757
|
-
if (typeof
|
|
758
|
-
return (props) => this._renderIcon;
|
|
759
|
-
}
|
|
760
|
-
if (this._renderIcon !== void 0) {
|
|
756
|
+
if (typeof render === "function") {
|
|
761
757
|
return (props) => {
|
|
762
|
-
return
|
|
758
|
+
return render(this, props);
|
|
763
759
|
};
|
|
764
760
|
}
|
|
761
|
+
return (props) => render;
|
|
765
762
|
}
|
|
766
763
|
/**
|
|
767
764
|
* Get the character commitments of the room.
|