@drincs/nqtr 0.0.3 → 0.0.4

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/index.d.mts CHANGED
@@ -315,11 +315,17 @@ interface RoomBaseModelProps {
315
315
  * The icon element. Can be a string or an HTMLElement or a Pixi'VN CanvasItem
316
316
  */
317
317
  iconElement?: GraphicItemType;
318
+ /**
319
+ * Whether is an entrance room, so when the player enters in the location, it will be the first room to be shown.
320
+ */
321
+ isEntrance?: boolean;
318
322
  }
319
323
  declare class RoomBaseModel<TLocation extends LocationBaseModel = LocationBaseModel> extends StoredClassModel {
320
324
  constructor(id: string, location: TLocation, props: RoomBaseModelProps);
321
325
  private _location;
322
326
  get location(): TLocation;
327
+ private _isEntrance?;
328
+ get isEntrance(): boolean;
323
329
  private defaultName;
324
330
  get name(): string;
325
331
  set name(value: string);
@@ -370,9 +376,8 @@ interface LocationBaseModelProps {
370
376
  iconElement?: GraphicItemType;
371
377
  }
372
378
  declare class LocationBaseModel<TMap extends MapBaseModel = MapBaseModel> extends StoredClassModel {
373
- constructor(id: string, map: TMap, entrance: RoomBaseModel, props: LocationBaseModelProps);
374
- private _entrance;
375
- get entrance(): RoomBaseModel;
379
+ constructor(id: string, map: TMap, props: LocationBaseModelProps);
380
+ getEntrance<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined;
376
381
  private defaultName;
377
382
  get name(): string;
378
383
  set name(value: string);
package/dist/index.d.ts CHANGED
@@ -315,11 +315,17 @@ interface RoomBaseModelProps {
315
315
  * The icon element. Can be a string or an HTMLElement or a Pixi'VN CanvasItem
316
316
  */
317
317
  iconElement?: GraphicItemType;
318
+ /**
319
+ * Whether is an entrance room, so when the player enters in the location, it will be the first room to be shown.
320
+ */
321
+ isEntrance?: boolean;
318
322
  }
319
323
  declare class RoomBaseModel<TLocation extends LocationBaseModel = LocationBaseModel> extends StoredClassModel {
320
324
  constructor(id: string, location: TLocation, props: RoomBaseModelProps);
321
325
  private _location;
322
326
  get location(): TLocation;
327
+ private _isEntrance?;
328
+ get isEntrance(): boolean;
323
329
  private defaultName;
324
330
  get name(): string;
325
331
  set name(value: string);
@@ -370,9 +376,8 @@ interface LocationBaseModelProps {
370
376
  iconElement?: GraphicItemType;
371
377
  }
372
378
  declare class LocationBaseModel<TMap extends MapBaseModel = MapBaseModel> extends StoredClassModel {
373
- constructor(id: string, map: TMap, entrance: RoomBaseModel, props: LocationBaseModelProps);
374
- private _entrance;
375
- get entrance(): RoomBaseModel;
379
+ constructor(id: string, map: TMap, props: LocationBaseModelProps);
380
+ getEntrance<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined;
376
381
  private defaultName;
377
382
  get name(): string;
378
383
  set name(value: string);
package/dist/index.js CHANGED
@@ -484,22 +484,53 @@ var ActivityModel = class {
484
484
 
485
485
  // src/classes/navigation/Location.ts
486
486
  var import_pixi_vn3 = require("@drincs/pixi-vn");
487
+
488
+ // src/decorators/RoomDecorator.ts
489
+ var registeredRooms = {};
490
+ function saveRoom(room) {
491
+ if (Array.isArray(room)) {
492
+ room.forEach((c) => saveRoom(c));
493
+ return;
494
+ }
495
+ if (registeredRooms[room.id]) {
496
+ console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`);
497
+ }
498
+ registeredRooms[room.id] = room;
499
+ }
500
+ function getRoomById(id) {
501
+ try {
502
+ let room = registeredRooms[id];
503
+ if (!room) {
504
+ console.error(`[NQTR] Room ${id} not found`);
505
+ return;
506
+ }
507
+ return room;
508
+ } catch (e) {
509
+ console.error(`[NQTR] Error while getting Room ${id}`, e);
510
+ return;
511
+ }
512
+ }
513
+ function getRoomByLocation(location) {
514
+ return Object.values(registeredRooms).filter((room) => room.location === location);
515
+ }
516
+
517
+ // src/classes/navigation/Location.ts
487
518
  var LOCATION_CATEGORY = "__nqtr-location__";
488
519
  var LocationBaseModel = class extends import_pixi_vn3.StoredClassModel {
489
- constructor(id, map, entrance, props) {
520
+ constructor(id, map, props) {
490
521
  super(LOCATION_CATEGORY, id);
491
- if (entrance.location.id !== id) {
492
- throw new Error(`[NQTR] Entrance room ${entrance.id} is not in location ${id}`);
493
- }
494
- this._entrance = entrance;
495
522
  this.defaultName = props.name || "";
496
523
  this.defaultDisabled = props.disabled || false;
497
524
  this.defaultHidden = props.hidden || false;
498
525
  this._iconElement = props.iconElement;
499
526
  this._map = map;
500
527
  }
501
- get entrance() {
502
- return this._entrance;
528
+ getEntrance() {
529
+ let rooms = getRoomByLocation(this);
530
+ if (rooms.length === 0) {
531
+ return;
532
+ }
533
+ return rooms.find((room) => room.isEntrance) || rooms[0];
503
534
  }
504
535
  get name() {
505
536
  return this.getStorageProperty("name") || this.defaultName;
@@ -673,32 +704,6 @@ function getTemporaryCommitments() {
673
704
  return commitments;
674
705
  }
675
706
 
676
- // src/decorators/RoomDecorator.ts
677
- var registeredRooms = {};
678
- function saveRoom(room) {
679
- if (Array.isArray(room)) {
680
- room.forEach((c) => saveRoom(c));
681
- return;
682
- }
683
- if (registeredRooms[room.id]) {
684
- console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`);
685
- }
686
- registeredRooms[room.id] = room;
687
- }
688
- function getRoomById(id) {
689
- try {
690
- let room = registeredRooms[id];
691
- if (!room) {
692
- console.error(`[NQTR] Room ${id} not found`);
693
- return;
694
- }
695
- return room;
696
- } catch (e) {
697
- console.error(`[NQTR] Error while getting Room ${id}`, e);
698
- return;
699
- }
700
- }
701
-
702
707
  // src/functions/RoutineFunctions.ts
703
708
  function clearExpiredRoutine() {
704
709
  Object.entries(registeredCommitments).forEach(([_, commitment]) => {
@@ -808,10 +813,14 @@ var RoomBaseModel = class extends import_pixi_vn6.StoredClassModel {
808
813
  this.defaultDisabled = props.disabled || false;
809
814
  this.defaultHidden = props.hidden || false;
810
815
  this._iconElement = props.iconElement;
816
+ this._isEntrance = props.isEntrance;
811
817
  }
812
818
  get location() {
813
819
  return this._location;
814
820
  }
821
+ get isEntrance() {
822
+ return this._isEntrance || false;
823
+ }
815
824
  get name() {
816
825
  return this.getStorageProperty("name") || this.defaultName;
817
826
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/classes/Activity.ts","../src/managers/TimeManager.ts","../src/classes/navigation/Location.ts","../src/classes/navigation/Map.ts","../src/classes/navigation/Room.ts","../src/decorators/ActivityDecorator.ts","../src/decorators/CommitmentDecorator.ts","../src/decorators/RoomDecorator.ts","../src/functions/RoutineFunctions.ts","../src/classes/navigation/ActivityRoom.ts","../src/classes/quest/Goal.ts","../src/classes/quest/Quest.ts","../src/classes/quest/Stage.ts","../src/enums/ExecutionTypeEnum.ts","../src/functions/NavigationFunctions.ts","../src/functions/ActivityFunctions.ts"],"sourcesContent":["export * from './classes';\nexport * from './classes/navigation';\nexport * from './classes/quest';\nexport * from './decorators';\nexport * from './enums';\nexport * from './functions';\nexport * from './managers';\nexport * from './types';\n\n","import { getFlag } from \"@drincs/pixi-vn\";\nimport TimeManager from \"../managers/TimeManager\";\nimport { GraphicItemType } from \"../types/GraphicItem\";\n\nexport interface ActivityProps {\n /**\n * The name\n */\n name?: string\n /**\n * The hour when the activity starts. If the activity is not started yet, it will be hidden.\n * If you set 3, the activity will be hidden into hours 1 and 2, and will be shown from hour 3.\n */\n fromHour?: number\n /**\n * The hour when the activity ends. If the activity is ended yet, it will be hidden.\n * If you set 3, the activity will be shown into hours 1 and 2 and will be hidden from hour 3.\n */\n toHour?: number\n /**\n * The day when the activity starts. If the activity is not started yet, it will be hidden.\n * If you set 3, the activity will be hidden into days 1 and 2, and will be shown from day 3.\n */\n fromDay?: number\n /**\n * The day when the activity ends. If the activity is ended yet, it will be deleted or hidden.\n * If you set 3, the activity will be shown into days 1 and 2 and will be deleted or hidden from day 3.\n */\n toDay?: number\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an HTMLElement or a Pixi'VN CanvasItem\n */\n iconElement?: GraphicItemType\n}\n\nexport abstract class ActivityStoredAbstract {\n constructor(onRun: (activity: ActivityModel) => void, props: ActivityProps) {\n this.defaultName = props.name\n this.defaultFromHour = props.fromHour\n this.defaultToHour = props.toHour\n this.defaultFromDay = props.fromDay\n this.defaultToDay = props.toDay\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._iconElement = props.iconElement\n this._onRun = onRun\n }\n\n abstract setStorageProperty<T>(propertyName: string, value: T | undefined): void;\n abstract getStorageProperty<T>(propertyName: string): T | undefined;\n abstract get id(): string\n\n private defaultName?: string\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 defaultFromHour?: number\n get fromHour(): number {\n return this.getStorageProperty<number>(\"fromHour\") || this.defaultFromHour || TimeManager.minDayHours\n }\n set fromHour(value: number | undefined) {\n this.setStorageProperty(\"fromHour\", value)\n }\n\n private defaultToHour?: number\n get toHour(): number {\n return this.getStorageProperty<number>(\"toHour\") || this.defaultToHour || (TimeManager.maxDayHours + 1)\n }\n set toHour(value: number | undefined) {\n this.setStorageProperty(\"toHour\", value)\n }\n\n private defaultFromDay?: number\n get fromDay(): number | undefined {\n return this.getStorageProperty<number>(\"fromDay\") || this.defaultFromDay\n }\n set fromDay(value: number | undefined) {\n this.setStorageProperty(\"fromDay\", value)\n }\n\n private defaultToDay?: number\n get toDay(): number | undefined {\n return this.getStorageProperty<number>(\"toDay\") || this.defaultToDay\n }\n set toDay(value: number | undefined) {\n this.setStorageProperty(\"toDay\", value)\n }\n\n private defaultDisabled: boolean | string\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 get hidden(): boolean {\n if (this.fromDay && this.fromDay > TimeManager.currentDay) {\n return true\n }\n if (!TimeManager.nowIsBetween(this.fromHour, this.toHour)) {\n return true\n }\n if (!this.isExpired) {\n return true\n }\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 _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n private _onRun: (activity: ActivityModel) => void\n get onRun() {\n return this._onRun\n }\n\n isExpired(): boolean {\n if (this.toDay && this.toDay <= TimeManager.currentDay) {\n return true\n }\n return false\n }\n\n export(): ActivityProps {\n return {\n name: this.getStorageProperty<string>(\"name\") || this.defaultName,\n fromHour: this.getStorageProperty<number>(\"fromHour\") || this.defaultFromHour,\n toHour: this.getStorageProperty<number>(\"toHour\") || this.defaultToHour,\n fromDay: this.getStorageProperty<number>(\"fromDay\") || this.defaultFromDay,\n toDay: this.getStorageProperty<number>(\"toDay\") || this.defaultToDay,\n disabled: this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled,\n hidden: this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden,\n iconElement: this._iconElement\n }\n }\n}\n\nexport default class ActivityModel {\n constructor(id: string, onRun: (activity: ActivityModel) => void, props: ActivityProps) {\n this._id = id\n this._name = props.name\n this._fromHour = props.fromHour\n this._toHour = props.toHour\n this._fromDay = props.fromDay\n this._toDay = props.toDay\n this._disabled = props.disabled || false\n this._hidden = props.hidden || false\n this._iconElement = props.iconElement\n this._onRun = onRun\n }\n\n private _id: string\n get id(): string {\n return this._id\n }\n\n private _name?: string\n get name(): string | undefined {\n return this._name\n }\n\n private _fromHour?: number\n get fromHour(): number | undefined {\n return this._fromHour\n }\n\n private _toHour?: number\n get toHour(): number | undefined {\n return this._toHour\n }\n\n private _fromDay?: number\n get fromDay(): number | undefined {\n return this._fromDay\n }\n\n private _toDay?: number\n get toDay(): number | undefined {\n return this._toDay\n }\n\n private _disabled?: boolean | string\n get disabled(): boolean | undefined {\n if (typeof this._disabled === \"string\") {\n return getFlag(this._disabled)\n }\n return this._disabled\n }\n\n private _hidden: boolean | string\n get hidden(): boolean {\n if (this.fromDay && this.fromDay > TimeManager.currentDay) {\n return true\n }\n if (!this.isDeadline) {\n return true\n }\n if (typeof this._hidden === \"string\") {\n return getFlag(this._hidden)\n }\n return this._hidden\n }\n\n private _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n private _onRun: (activity: ActivityModel) => void\n get onRun() {\n return this._onRun\n }\n\n isDeadline(): boolean {\n if (this.toDay && this.toDay <= TimeManager.currentDay) {\n return true\n }\n return false\n }\n\n export(): ActivityProps {\n return {\n name: this._name,\n fromHour: this._fromHour,\n toHour: this._toHour,\n fromDay: this._fromDay,\n toDay: this._toDay,\n disabled: this._disabled,\n hidden: this._hidden,\n iconElement: this._iconElement,\n }\n }\n}\n","import { GameStorageManager } from \"@drincs/pixi-vn\";\n\nconst TIME_SETTINGS_KEY = '___nqtr-time_manager_settings___';\nconst TIME_DATA_KEY = '___nqtr-time_manager_data___';\n\n/**\n * Time Settings, which can be set using `TimeManager.editSettings`\n */\nexport interface TimeSettings {\n /**\n * Minimum hour of the day (default: 0)\n */\n minDayHours?: number\n /**\n * Maximum hour of the day (default: 24)\n */\n maxDayHours?: number\n /**\n * Default time spent (default: 1)\n */\n defaultTimeSpent?: number\n /**\n * Time slots (default: [])\n * @example\n * ```ts\n * [\n * { name: 'Morning', startHour: 5 },\n * { name: 'Afternoon', startHour: 12 },\n * { name: 'Evening', startHour: 18 },\n * { name: 'Night', startHour: 22 }\n * ]\n */\n timeSlots?: ITimeStlot[]\n /**\n * Week length (default: 7)\n */\n weekLength?: number\n /**\n * Weekend start day. For example, if the real life weekend starts on Saturday, then the value should be 6 (default: weekLength - 1)\n */\n weekendStartDay?: number\n /**\n * Week days names (default: [])\n * @example\n * ```ts\n * ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']\n * ```\n */\n weekDaysNames?: string[]\n}\n\ninterface ITimeData {\n currentHour?: number\n currentDay?: number\n}\n\nexport interface ITimeStlot {\n name: string\n startHour: number\n}\n\nexport default class TimeManager {\n private constructor() { }\n private static editSettings(settings: TimeSettings) {\n let data: any = {}\n if (typeof settings.minDayHours === 'number') {\n data['minDayHours'] = settings.minDayHours\n }\n if (typeof settings.maxDayHours === 'number') {\n data['maxDayHours'] = settings.maxDayHours\n }\n if (typeof settings.minDayHours === 'number') {\n data['defaultTimeSpent'] = settings.defaultTimeSpent\n }\n if (Array.isArray(settings.timeSlots)) {\n data['timeSlots'] = settings.timeSlots\n }\n if (typeof settings.weekLength === 'number') {\n data['weekLength'] = settings.weekLength\n }\n if (typeof settings.weekendStartDay === 'number') {\n let weekLength = settings.weekLength || TimeManager.weekLength\n if (settings.weekendStartDay >= weekLength) {\n console.warn(`[NQTR] Weekend start day should be less than week length ${weekLength}`)\n }\n data['weekendStartDay'] = settings.weekendStartDay\n }\n if (Array.isArray(settings.weekDaysNames)) {\n let weekLength = settings.weekLength || TimeManager.weekLength\n if (settings.weekDaysNames.length !== weekLength) {\n console.warn(`[NQTR] Week days names should be equal to week length ${weekLength}`)\n }\n data['weekDaysNames'] = settings.weekDaysNames\n }\n GameStorageManager.setVariable(TIME_SETTINGS_KEY, data)\n }\n /**\n * Get time settings\n */\n static get settings(): TimeSettings {\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY) || {}\n return settings\n }\n /**\n * Set time settings, Is very important to set the settings before using the nqtr library, bacause more of the features are based on the time settings.\n */\n static set settings(value: TimeSettings) {\n TimeManager.editSettings(value)\n }\n static get minDayHours(): number {\n let result = 0\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('minDayHours')) {\n result = settings.minDayHours || 0\n }\n return result\n }\n static get maxDayHours(): number {\n let result = 24\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('maxDayHours')) {\n result = settings.maxDayHours || 24\n }\n return result\n }\n static get defaultTimeSpent(): number {\n let result = 1\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('defaultTimeSpent')) {\n result = settings.defaultTimeSpent || 1\n }\n return result\n }\n static get timeSlots(): ITimeStlot[] {\n let result: ITimeStlot[] = []\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('timeSlots')) {\n result = settings.timeSlots || []\n }\n return result\n }\n static get weekLength(): number {\n let result = 7\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('weekLength')) {\n result = settings.weekLength || 7\n }\n return result\n }\n static get weekendStartDay(): number {\n let result = TimeManager.weekLength - 1\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('weekendStartDay')) {\n result = settings.weekendStartDay || TimeManager.weekLength - 1\n }\n return result\n }\n static get weekDaysNames(): string[] {\n let result: string[] = []\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('weekDaysNames')) {\n result = settings.weekDaysNames || result\n }\n return result\n }\n\n /**\n * Get the current hour\n */\n static get currentHour(): number {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (data.hasOwnProperty('currentHour') && typeof data.currentHour === 'number') {\n return data.currentHour\n }\n return TimeManager.minDayHours\n }\n static set currentHour(value: number | undefined) {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (typeof value === 'number') {\n data.currentHour = value\n } else {\n delete data.currentHour\n }\n GameStorageManager.setVariable(TIME_DATA_KEY, data)\n }\n /**\n * Get the current day\n */\n static get currentDay(): number {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (data.hasOwnProperty('currentDay') && typeof data.currentDay === 'number') {\n return data.currentDay\n }\n return 0\n }\n static set currentDay(value: number | undefined) {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (typeof value === 'number') {\n data.currentDay = value\n }\n else {\n delete data.currentDay\n }\n GameStorageManager.setVariable(TIME_DATA_KEY, data)\n }\n /**\n * If the current day is greater than or equal to the weekend start day, then it will return true.\n */\n static get isWeekend(): boolean {\n return TimeManager.currentWeekDayNumber >= TimeManager.weekendStartDay\n }\n /**\n * Get the current week day number (1-TimeManager.weekLength).\n * For example, if the week length is 7 and the current day is 10, then the result will be 4.\n */\n static get currentWeekDayNumber(): number {\n let result = TimeManager.currentDay % TimeManager.weekLength\n return result + 1\n }\n /**\n * Get the current week day name. If the week days names are not defined, then it will return undefined.\n * For example, if the week days names are ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] and the current day is 10, then the result will be 'Thursday'.\n */\n static get currentDayName(): string | undefined {\n let weekDayNumber = TimeManager.currentWeekDayNumber - 1\n if (weekDayNumber >= TimeManager.weekDaysNames.length) {\n console.warn(`[NQTR] Week day name is not defined for day ${weekDayNumber}`, TimeManager.weekDaysNames)\n return undefined\n }\n return TimeManager.weekDaysNames[weekDayNumber]\n }\n /**\n * Get the current TimeManager.timeSlots index.\n * You can use this property to create \"Image that changes based on the time period\":\n * @example\n * ```ts\n * import { TimeManager } from '@drincs/nqtr';\n * \n * function changeBackground() {\n * return (\n * <img src={`background-${TimeManager.currentTimeSlot}.png`} />\n * )\n * }\n */\n static get currentTimeSlots(): number {\n if (TimeManager.timeSlots.length === 0) {\n console.warn('[NQTR] Time slots are not defined')\n return 0\n }\n TimeManager.timeSlots.forEach((slot, index) => {\n if (TimeManager.timeSlots.length > index + 1) {\n if (TimeManager.nowIsBetween(slot.startHour, TimeManager.timeSlots[index + 1].startHour)) {\n return index\n }\n }\n })\n return 0\n }\n\n /**\n * This function will increase the current hour by the given time spent.\n * If the new hour is greater than or equal to the max day hours, then it will increase the day and set the new hour.\n * @param timeSpent is the time spent in hours (default: TimeManager.defaultTimeSpent)\n * @returns TimeManager.currentHour\n */\n static increaseHour(timeSpent: number = TimeManager.defaultTimeSpent): number {\n let newHour = TimeManager.currentHour + timeSpent\n if (newHour >= TimeManager.maxDayHours) {\n TimeManager.increaseDay()\n newHour = TimeManager.minDayHours + (newHour - TimeManager.maxDayHours)\n }\n TimeManager.currentHour = newHour\n return TimeManager.currentHour\n }\n\n /**\n * This function will increase the current day by the given days.\n * @param newDayHour is the hour of the new day (default: TimeManager.minDayHours)\n * @param days is the number of days to increase (default: 1)\n * @returns TimeManager.currentDay\n */\n static increaseDay(newDayHour: number = TimeManager.minDayHours, days: number = 1): number {\n let newDay = TimeManager.currentDay + days\n TimeManager.currentDay = newDay\n TimeManager.currentHour = newDayHour\n return TimeManager.currentDay\n }\n\n /**\n * This function will check if the current hour is between the given hours.\n * @param fromHour the starting hour. If the TimeManager.currentHour is equal to this hour, the function will return true.\n * @param toHour the ending hour.\n * @returns true if the current hour is between the given hours, otherwise false.\n */\n static nowIsBetween(fromHour: number, toHour: number): boolean {\n let currentHour = TimeManager.currentHour\n if (fromHour < toHour) {\n return currentHour >= fromHour && currentHour < toHour\n }\n return currentHour >= fromHour || currentHour < toHour\n }\n}\n","import { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { GraphicItemType } from \"../../types/GraphicItem\";\nimport MapBaseModel from \"./Map\";\nimport RoomBaseModel from \"./Room\";\n\nconst LOCATION_CATEGORY = \"__nqtr-location__\"\n\nexport interface LocationBaseModelProps {\n /**\n * The name\n */\n name?: string\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an HTMLElement or a Pixi'VN CanvasItem\n */\n iconElement?: GraphicItemType\n}\n\nexport default class LocationBaseModel<TMap extends MapBaseModel = MapBaseModel> extends StoredClassModel {\n constructor(id: string, map: TMap, entrance: RoomBaseModel, props: LocationBaseModelProps) {\n super(LOCATION_CATEGORY, id)\n if (entrance.location.id !== id) {\n throw new Error(`[NQTR] Entrance room ${entrance.id} is not in location ${id}`)\n }\n this._entrance = entrance\n this.defaultName = props.name || \"\"\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._iconElement = props.iconElement\n this._map = map\n }\n private _entrance: RoomBaseModel\n get entrance(): RoomBaseModel {\n return this._entrance\n }\n\n private defaultName: string\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultDisabled: boolean | string\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 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 _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n private _map: TMap\n get map(): TMap {\n return this._map\n }\n}\n","import { getFlag, StoredClassModel } from \"@drincs/pixi-vn\"\nimport { GraphicItemType } from \"../../types/GraphicItem\"\n\nconst MAP_CATEGORY = \"__nqtr-map__\"\n\nexport interface MapBaseModelProps<TMap extends MapBaseModel = MapBaseModel> {\n /**\n * The name\n */\n name?: string\n /**\n * The image. It can be a string, an HTMLElement 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 */\n image?: GraphicItemType | { [key: string]: GraphicItemType }\n /**\n * The neighboring maps that are available in this map.\n * @example\n * ```ts\n * {\n * \"north\": atlantaMap,\n * \"south\": miamiMap,\n * \"east\": savannahMap,\n * \"west\": birminghamMap\n * }\n * ```\n */\n neighboringMaps?: { [key: string]: TMap }\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n}\n\nexport default class MapBaseModel extends StoredClassModel {\n constructor(id: string, props: MapBaseModelProps) {\n super(MAP_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this.defaultImage = props.image\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n }\n\n private defaultName: string\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultImage?: GraphicItemType | { [key: string]: GraphicItemType }\n get image(): GraphicItemType | { [key: string]: GraphicItemType } | undefined {\n return this.getStorageProperty<GraphicItemType>(\"image\") || this.defaultImage\n }\n set image(value: GraphicItemType | { [key: string]: GraphicItemType } | undefined) {\n this.setStorageProperty(\"image\", value)\n }\n\n private defaultDisabled: boolean | string\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 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","import { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { getActivityById } from \"../../decorators\";\nimport { getCurrentCommitments } from \"../../functions/RoutineFunctions\";\nimport { GraphicItemType } from \"../../types/GraphicItem\";\nimport ActivityModel, { ActivityProps } from \"../Activity\";\nimport CommitmentBaseModel from \"../Commitment\";\nimport { ActivityRoom } from \"./ActivityRoom\";\nimport LocationBaseModel from \"./Location\";\n\nexport const ROOM_CATEGORY = \"__nqtr-room__\"\n\ninterface RoomActivityMemory { [key: string]: ActivityProps }\n\nexport interface RoomBaseModelProps {\n /**\n * The name\n */\n name?: string\n /**\n * The image. It can be a string, an HTMLElement 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 */\n image?: GraphicItemType | { [key: string]: GraphicItemType }\n /**\n * The activities that are available in this room.\n */\n defaultActivities?: ActivityModel[],\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an HTMLElement or a Pixi'VN CanvasItem\n */\n iconElement?: GraphicItemType\n}\n\nexport default class RoomBaseModel<TLocation extends LocationBaseModel = LocationBaseModel> extends StoredClassModel {\n constructor(id: string, location: TLocation, props: RoomBaseModelProps) {\n super(ROOM_CATEGORY, id)\n this._location = location\n this.defaultName = props.name || \"\"\n this.defaultImage = props.image\n this.defaultActivityIds = props.defaultActivities?.map(activity => activity.id) || []\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._iconElement = props.iconElement\n }\n\n private _location: TLocation\n get location(): TLocation {\n return this._location\n }\n\n private defaultName: string\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultImage?: GraphicItemType | { [key: string]: GraphicItemType }\n get image(): GraphicItemType | { [key: string]: GraphicItemType } | undefined {\n return this.getStorageProperty<GraphicItemType>(\"image\") || this.defaultImage\n }\n set image(value: GraphicItemType | { [key: string]: GraphicItemType } | undefined) {\n this.setStorageProperty(\"image\", value)\n }\n\n private defaultActivityIds: string[]\n get defaultActivities(): ActivityRoom<this>[] {\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n let activities = this.defaultActivityIds.map(id => {\n let activity = getActivityById(id)\n if (!activity) {\n console.warn(`[NQTR] Activity with id ${id} not found, so it will be ignored.`)\n return undefined\n }\n let memory = activity.export()\n if (roomMemories && roomMemories[id]) {\n memory = {\n ...memory,\n ...roomMemories[id]\n }\n }\n return new ActivityRoom(id, this, activity.onRun, memory)\n }).filter(activity => activity !== undefined)\n return activities as ActivityRoom<this>[]\n }\n\n get activityIds(): string[] {\n let addedActivityIds = this.getStorageProperty<string[]>(`addedActivityIds`) || []\n return this.defaultActivityIds.concat(addedActivityIds)\n }\n get activities(): ActivityRoom<this>[] {\n let activities = this.activityIds.map(id => {\n return this.getActivity(id)\n }).filter(activity => activity !== undefined)\n return activities as ActivityRoom<this>[]\n }\n getActivityMemory(id: string): object | undefined {\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n let roomMemory = roomMemories[id] || {}\n return roomMemory\n }\n getActivity(id: string): ActivityRoom<this> | undefined {\n if (!this.activityIds.includes(id)) {\n console.error(`[NQTR] Activity with id ${id} not found in room ${this.id}`)\n return undefined\n }\n let activity = getActivityById(id)\n if (!activity) {\n console.error(`[NQTR] Activity with id ${id} not found`)\n return undefined\n }\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n let roomMemory = roomMemories[id] || {}\n roomMemory = {\n ...activity.export(),\n ...roomMemory\n }\n return new ActivityRoom(id, this, activity.onRun, roomMemory)\n }\n setActivity(activity: ActivityRoom) {\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n roomMemories[activity.id] = activity.export()\n this.setStorageProperty(\"activities_memory\", roomMemories)\n }\n addActivity(activity: ActivityModel) {\n if (this.activityIds.includes(activity.id)) {\n let currentActivity = this.getActivity(activity.id)\n if (currentActivity && currentActivity.isExpired()) {\n this.removeActivity(activity.id)\n return\n } else {\n console.error(`[NQTR] Activity with id ${activity.id} already exists in room ${this.id}, so it will be ignored.`)\n return\n }\n }\n let addedActivityIds = this.getStorageProperty<string[]>(`addedActivityIds`) || []\n addedActivityIds.push(activity.id)\n this.setStorageProperty(\"addedActivityIds\", addedActivityIds)\n }\n removeActivity(activity: ActivityModel | string) {\n let activityId = typeof activity === \"string\" ? activity : activity.id\n if (this.defaultActivityIds.includes(activityId)) {\n console.warn(`[NQTR] Activity with id ${activityId} is a default activity, so it can't be removed. It will be hidden instead.`)\n let activityToEdit = this.getActivity(activityId)\n if (!activityToEdit) {\n console.error(`[NQTR] Activity with id ${activityId} not found, so it can't be hidden.`)\n return\n }\n activityToEdit.hidden = true\n return\n }\n let addedActivityIds = this.getStorageProperty<string[]>(`addedActivityIds`) || []\n let index = addedActivityIds.indexOf(activityId)\n if (index === -1) {\n console.error(`[NQTR] Activity with id ${activityId} not found, so it can't be removed.`)\n return\n }\n addedActivityIds.splice(index, 1)\n this.setStorageProperty(\"addedActivityIds\", addedActivityIds)\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n delete roomMemories[activityId]\n this.setStorageProperty(\"activities_memory\", roomMemories)\n }\n clearExpiredActivities() {\n this.activities.forEach(activity => {\n if (activity.isExpired()) {\n this.removeActivity(activity.id)\n }\n })\n }\n\n private defaultDisabled: boolean | string\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 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 _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n getRoutine<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n let commitments = getCurrentCommitments<TCommitment>()\n return commitments.filter(c => c.room.id === this.id)\n }\n}\n","import { ActivityModel } from \"../classes\"\n\nexport const registeredActivities: { [id: string]: ActivityModel } = {}\n\nexport function saveActivity(activity: ActivityModel | ActivityModel[]) {\n if (Array.isArray(activity)) {\n activity.forEach(c => saveActivity(c))\n return\n }\n if (registeredActivities[activity.id]) {\n console.warn(`[NQTR] Activity id ${activity.id} already exists, it will be overwritten`)\n }\n registeredActivities[activity.id] = activity\n}\n\nexport function getActivityById(id: string): ActivityModel | undefined {\n try {\n let activity = registeredActivities[id]\n if (!activity) {\n console.error(`[NQTR] Activity ${id} not found`)\n return\n }\n return activity as ActivityModel\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Activity ${id}`, e)\n return\n }\n}\n","import { GameStorageManager } from \"@drincs/pixi-vn\"\nimport CommitmentBaseModel from \"../classes/Commitment\"\n\nconst TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY = \"___nqtr-temporary_commitment___\"\nexport const registeredCommitments: { [id: string]: CommitmentBaseModel } = {}\nexport const fixedCommitments: { [id: string]: CommitmentBaseModel } = {}\n\nexport function saveCommitment<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(commitment: TCommitment | TCommitment[]) {\n if (Array.isArray(commitment)) {\n commitment.forEach(c => saveCommitment(c))\n return\n }\n if (registeredCommitments[commitment.id]) {\n console.warn(`[NQTR] Commitment id ${commitment.id} already exists, it will be overwritten`)\n }\n registeredCommitments[commitment.id] = commitment\n}\n\nexport function getCommitmentById<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(id: string): TCommitment | undefined {\n try {\n let commitment = registeredCommitments[id]\n if (!commitment) {\n console.error(`[NQTR] Commitment ${id} not found`)\n return\n }\n return commitment as TCommitment\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Commitment ${id}`, e)\n return\n }\n}\n\nexport function setFixedCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(commitments: TCommitment[] | TCommitment) {\n if (Array.isArray(commitments)) {\n commitments.forEach(c => saveCommitment(c))\n return\n }\n if (registeredCommitments[commitments.id]) {\n console.warn(`[NQTR] Commitment id ${commitments.id} already exists, it will be overwritten`)\n }\n registeredCommitments[commitments.id] = commitments\n}\n\nexport function addTemporaryCommitment<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(commitment: TCommitment[] | TCommitment) {\n if (!Array.isArray(commitment)) {\n commitment = [commitment]\n }\n let commitmentsIds = commitment.map(commitment => {\n let commitmentTest = getCommitmentById(commitment.id)\n if (!commitmentTest) {\n console.warn(`[NQTR] Commitment ${commitment.id} not found, it will be ignored`)\n return undefined\n }\n return commitment.id\n }).filter(id => id !== undefined)\n\n GameStorageManager.setVariable(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY, [commitmentsIds])\n}\n\nexport function getFixedCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n return Object.values(fixedCommitments) as TCommitment[]\n}\n\nexport function getTemporaryCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n let commitmentsIds = GameStorageManager.getVariable<string[]>(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY)\n if (!commitmentsIds) {\n return []\n }\n let commitments = commitmentsIds.map(id => getCommitmentById<TCommitment>(id)).filter(commitment => commitment !== undefined)\n return commitments as TCommitment[]\n}\n","import { RoomBaseModel } from \"../classes/navigation\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\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\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","import { CharacterBaseModel } from \"@drincs/pixi-vn\";\nimport CommitmentBaseModel from \"../classes/Commitment\";\nimport { getFixedCommitments, getTemporaryCommitments } from \"../decorators\";\nimport { registeredCommitments } from \"../decorators/CommitmentDecorator\";\n\nexport function clearExpiredRoutine() {\n Object.entries(registeredCommitments).forEach(([_, commitment]) => {\n if (commitment.isExpired()) {\n delete registeredCommitments[commitment.id]\n }\n })\n}\n\nexport function getCurrentCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n let character_commitments: { [character: string]: TCommitment } = {}\n let oltherCommitments: TCommitment[] = []\n getTemporaryCommitments<TCommitment>().reverse().forEach(c => {\n if (!c.hidden) {\n if (c.characters.length > 1) {\n // all the characters don't already have commitments\n let allAvailable = c.characters.every(ch => !character_commitments[ch.id])\n if (allAvailable) {\n c.characters.forEach(ch => {\n character_commitments[ch.id] = c\n })\n }\n }\n else {\n oltherCommitments.push(c)\n }\n }\n })\n getFixedCommitments<TCommitment>().reverse().forEach(c => {\n if (!c.hidden) {\n if (c.characters.length > 1) {\n c.characters.forEach(ch => {\n if (!character_commitments[ch.id]) {\n character_commitments[ch.id] = c\n }\n })\n }\n else {\n oltherCommitments.push(c)\n }\n }\n })\n return Object.values(character_commitments).concat(oltherCommitments)\n}\n\nexport function getCommitmentByCharacter<TCommitment extends CommitmentBaseModel = CommitmentBaseModel, TCharacter extends CharacterBaseModel = CharacterBaseModel>(character: TCharacter): TCommitment | undefined {\n getCurrentCommitments().forEach(c => {\n if (c.characters.map(ch => ch.id).includes(character.id)) {\n return c\n }\n })\n return undefined\n}\n","import ActivityModel, { ActivityProps, ActivityStoredAbstract } from \"../Activity\";\nimport RoomBaseModel from \"./Room\";\n\nexport class ActivityRoom<TRoom extends RoomBaseModel = RoomBaseModel> extends ActivityStoredAbstract {\n constructor(id: string, room: TRoom, onRun: (activity: ActivityModel) => void, props: ActivityProps) {\n super(onRun, props)\n this._id = id\n this._room = room\n }\n setStorageProperty<T>(_: string, __: T | undefined): void {\n this._room.setActivity(this)\n }\n getStorageProperty<T>(propertyName: string): T | undefined {\n let activity = this._room.getActivityMemory(this.id)\n if (!activity || !activity.hasOwnProperty(propertyName)) {\n return undefined\n }\n return (activity as any)[propertyName]\n }\n private _id: string;\n get id(): string {\n return this._id;\n }\n private _room: TRoom;\n get room(): TRoom {\n return this._room;\n }\n\n export(): object {\n let result: any = {}\n if (this.name !== undefined) {\n result[\"name\"] = this.name\n }\n if (this.fromHour !== undefined) {\n result[\"fromHour\"] = this.fromHour\n }\n if (this.toHour !== undefined) {\n result[\"toHour\"] = this.toHour\n }\n if (this.fromDay !== undefined) {\n result[\"fromDay\"] = this.fromDay\n }\n if (this.toDay !== undefined) {\n result[\"toDay\"] = this.toDay\n }\n if (this.disabled !== undefined) {\n result[\"disabled\"] = this.disabled\n }\n return result\n }\n}\n","export interface GoalProps {\n description: string\n need?: number\n have?: number\n}\n\nexport interface IGoal {\n description: string\n need: number\n have: number\n}\n\nexport default class Goal implements IGoal {\n constructor(props: GoalProps) {\n this._description = props.description\n this.need = props.need || 1\n this.have = props.have || 0\n }\n private _description: string\n get description(): string {\n return this._description\n }\n need: number\n have: number\n get isComplete(): boolean {\n return this.have >= this.need\n }\n setComplete(): void {\n this.have = this.need\n }\n find(): void {\n this.have++\n }\n get export(): IGoal {\n return {\n description: this.description,\n need: this.need,\n have: this.have\n }\n }\n}\n","import { StoredClassModel } from \"@drincs/pixi-vn\";\nimport StageBaseModel from \"./Stage\";\n\nconst QUEST_CATEGORY = \"__nqtr-quest__\"\n\nexport interface QuestBaseModelProps {\n name?: string\n description?: string\n icon?: string\n image?: string\n isInDevelopment?: boolean\n}\n\nexport default class QuestBaseModel<TStage extends StageBaseModel = StageBaseModel> extends StoredClassModel {\n constructor(id: string, stages: TStage[], props: QuestBaseModelProps) {\n super(QUEST_CATEGORY, id)\n this._stages = stages\n this._name = props.name || \"\"\n this._description = props.description || \"\"\n this._icon = props.icon || \"\"\n this._image = props.image || \"\"\n this._isInDevelopment = props.isInDevelopment || false\n }\n private _stages: TStage[]\n get stages(): TStage[] {\n return this._stages\n }\n\n private _name: string\n get name(): string {\n return this._name\n }\n\n private _description: string\n get description(): string {\n return this._description\n }\n\n private _icon: string\n get icon(): string {\n return this._icon\n }\n\n private _image: string\n get image(): string {\n return this._image\n }\n\n private _isInDevelopment: boolean\n get isInDevelopment(): boolean {\n return this._isInDevelopment\n }\n}\n","import { StoredClassModel } from \"@drincs/pixi-vn\";\nimport { QuestsRequiredType } from \"../../types/QuestsRequired\";\nimport Goal, { IGoal } from \"./Goal\";\n\nconst STAGE_CATEGORY = \"__nqtr-stage__\"\n\nexport interface StageBaseModelProps {\n goals?: Goal[]\n name?: string\n description?: string\n adviceDescription?: string\n image?: string\n daysRequiredToStart: number\n flagsRequired: string[]\n questsRequired: QuestsRequiredType[]\n requestDescription?: string\n onStart: () => void\n onEnd: () => void\n}\n\nexport default class StageBaseModel extends StoredClassModel {\n constructor(id: string, props: StageBaseModelProps) {\n super(STAGE_CATEGORY, id)\n this._name = props.name || \"\"\n this._description = props.description || \"\"\n this._adviceDescription = props.adviceDescription || \"\"\n this._image = props.image || \"\"\n this._daysRequiredToStart = props.daysRequiredToStart\n this._flagsRequired = props.flagsRequired\n this._questsRequired = props.questsRequired\n this._requestDescription = props.requestDescription || \"\"\n this._onStart = props.onStart\n this._onEnd = props.onEnd\n }\n\n\n private _completed: boolean = false\n get completed(): boolean {\n return this._completed\n }\n\n private _active: boolean = false\n get active(): boolean {\n return this._active\n }\n\n private defaultGoals: Goal[] = []\n get goals(): Goal[] {\n let list = this.getStorageProperty<IGoal[]>('goals')\n if (!list) {\n return this.defaultGoals\n }\n return list.map(goal => new Goal(goal))\n }\n set goals(value: Goal[]) {\n let list = value.map(goal => goal.export)\n this.setStorageProperty('goals', list)\n }\n\n private _name: string\n get name(): string {\n return this._name\n }\n\n private _description: string\n get description(): string {\n return this._description\n }\n\n private _adviceDescription: string\n get adviceDescription(): string {\n return this._adviceDescription\n }\n\n private _image: string\n get image(): string {\n return this._image\n }\n\n private _daysRequiredToStart: number\n get daysRequiredToStart(): number {\n return this._daysRequiredToStart\n }\n\n private _flagsRequired: string[]\n get flagsRequired(): string[] {\n return this._flagsRequired\n }\n\n private _questsRequired: QuestsRequiredType[]\n get questsRequired(): QuestsRequiredType[] {\n return this._questsRequired\n }\n\n private _requestDescription: string\n get requestDescription(): string {\n return this._requestDescription\n }\n\n private _onStart: () => void\n get onStart(): () => void {\n return this._onStart\n }\n\n private _onEnd: () => void\n get onEnd(): () => void {\n return this._onEnd\n }\n}\n","export enum ExecutionTypeEnum {\n AUTOMATIC = \"automatic\",\n INTERACTION = \"interaction\",\n}\n","import { GameStorageManager } from \"@drincs/pixi-vn\";\nimport { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes/navigation\";\nimport { getRoomById } from \"../decorators/RoomDecorator\";\n\nconst CURRENT_ROOM_MEMORY_KEY = '___nqtr-current_room_memory___';\n\nexport function setCurrentRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom) {\n let roomRegistrated = getRoomById(room.id);\n if (!roomRegistrated) {\n console.error(`[NQTR] The room ${room.id} is not registered, so it can't be set as current room`);\n return;\n }\n localStorage.setItem(CURRENT_ROOM_MEMORY_KEY, room.id);\n}\n\nexport function getCurrentRoom<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined {\n let roomId = GameStorageManager.getVariable<string>(CURRENT_ROOM_MEMORY_KEY);\n if (!roomId) {\n console.error(`[NQTR] The current room has not yet been set`);\n return\n }\n let room = getRoomById<TRoom>(roomId);\n if (!room) {\n console.error(`[NQTR] Current room ${roomId} not found`);\n return\n }\n return room\n}\n\nexport function getCurrenrLocation<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation | undefined {\n let room = getCurrentRoom<RoomBaseModel<TLocation>>();\n if (!room) {\n return\n }\n return room.location\n}\n\nexport function getCueerntMap<TMap extends MapBaseModel = MapBaseModel>(): TMap | undefined {\n let location = getCurrenrLocation<LocationBaseModel<TMap>>();\n if (!location) {\n return\n }\n return location.map\n}\n","import { ActivityRoom } from \"../classes/navigation/ActivityRoom\"\nimport { registeredRooms } from \"../decorators/RoomDecorator\"\nimport { getCurrentRoom } from \"./NavigationFunctions\"\n\nexport function clearExpiredActivities() {\n Object.entries(registeredRooms).forEach(([_, room]) => {\n room.clearExpiredActivities()\n })\n}\n\nexport function currentActivities(): ActivityRoom[] {\n let currentRoom = getCurrentRoom()\n if (!currentRoom) {\n return []\n }\n return currentRoom.activities.filter(activity => !activity.hidden)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,kBAAwB;;;ACAxB,qBAAmC;AAEnC,IAAM,oBAAoB;AAC1B,IAAM,gBAAgB;AA0DtB,IAAqB,cAArB,MAAqB,aAAY;AAAA,EACrB,cAAc;AAAA,EAAE;AAAA,EACxB,OAAe,aAAa,UAAwB;AAChD,QAAI,OAAY,CAAC;AACjB,QAAI,OAAO,SAAS,gBAAgB,UAAU;AAC1C,WAAK,aAAa,IAAI,SAAS;AAAA,IACnC;AACA,QAAI,OAAO,SAAS,gBAAgB,UAAU;AAC1C,WAAK,aAAa,IAAI,SAAS;AAAA,IACnC;AACA,QAAI,OAAO,SAAS,gBAAgB,UAAU;AAC1C,WAAK,kBAAkB,IAAI,SAAS;AAAA,IACxC;AACA,QAAI,MAAM,QAAQ,SAAS,SAAS,GAAG;AACnC,WAAK,WAAW,IAAI,SAAS;AAAA,IACjC;AACA,QAAI,OAAO,SAAS,eAAe,UAAU;AACzC,WAAK,YAAY,IAAI,SAAS;AAAA,IAClC;AACA,QAAI,OAAO,SAAS,oBAAoB,UAAU;AAC9C,UAAI,aAAa,SAAS,cAAc,aAAY;AACpD,UAAI,SAAS,mBAAmB,YAAY;AACxC,gBAAQ,KAAK,4DAA4D,UAAU,EAAE;AAAA,MACzF;AACA,WAAK,iBAAiB,IAAI,SAAS;AAAA,IACvC;AACA,QAAI,MAAM,QAAQ,SAAS,aAAa,GAAG;AACvC,UAAI,aAAa,SAAS,cAAc,aAAY;AACpD,UAAI,SAAS,cAAc,WAAW,YAAY;AAC9C,gBAAQ,KAAK,yDAAyD,UAAU,EAAE;AAAA,MACtF;AACA,WAAK,eAAe,IAAI,SAAS;AAAA,IACrC;AACA,sCAAmB,YAAY,mBAAmB,IAAI;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,WAAyB;AAChC,QAAI,WAAW,kCAAmB,YAA0B,iBAAiB,KAAK,CAAC;AACnF,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,SAAS,OAAqB;AACrC,iBAAY,aAAa,KAAK;AAAA,EAClC;AAAA,EACA,WAAW,cAAsB;AAC7B,QAAI,SAAS;AACb,QAAI,WAAW,kCAAmB,YAA0B,iBAAiB;AAC7E,QAAI,YAAY,SAAS,eAAe,aAAa,GAAG;AACpD,eAAS,SAAS,eAAe;AAAA,IACrC;AACA,WAAO;AAAA,EACX;AAAA,EACA,WAAW,cAAsB;AAC7B,QAAI,SAAS;AACb,QAAI,WAAW,kCAAmB,YAA0B,iBAAiB;AAC7E,QAAI,YAAY,SAAS,eAAe,aAAa,GAAG;AACpD,eAAS,SAAS,eAAe;AAAA,IACrC;AACA,WAAO;AAAA,EACX;AAAA,EACA,WAAW,mBAA2B;AAClC,QAAI,SAAS;AACb,QAAI,WAAW,kCAAmB,YAA0B,iBAAiB;AAC7E,QAAI,YAAY,SAAS,eAAe,kBAAkB,GAAG;AACzD,eAAS,SAAS,oBAAoB;AAAA,IAC1C;AACA,WAAO;AAAA,EACX;AAAA,EACA,WAAW,YAA0B;AACjC,QAAI,SAAuB,CAAC;AAC5B,QAAI,WAAW,kCAAmB,YAA0B,iBAAiB;AAC7E,QAAI,YAAY,SAAS,eAAe,WAAW,GAAG;AAClD,eAAS,SAAS,aAAa,CAAC;AAAA,IACpC;AACA,WAAO;AAAA,EACX;AAAA,EACA,WAAW,aAAqB;AAC5B,QAAI,SAAS;AACb,QAAI,WAAW,kCAAmB,YAA0B,iBAAiB;AAC7E,QAAI,YAAY,SAAS,eAAe,YAAY,GAAG;AACnD,eAAS,SAAS,cAAc;AAAA,IACpC;AACA,WAAO;AAAA,EACX;AAAA,EACA,WAAW,kBAA0B;AACjC,QAAI,SAAS,aAAY,aAAa;AACtC,QAAI,WAAW,kCAAmB,YAA0B,iBAAiB;AAC7E,QAAI,YAAY,SAAS,eAAe,iBAAiB,GAAG;AACxD,eAAS,SAAS,mBAAmB,aAAY,aAAa;AAAA,IAClE;AACA,WAAO;AAAA,EACX;AAAA,EACA,WAAW,gBAA0B;AACjC,QAAI,SAAmB,CAAC;AACxB,QAAI,WAAW,kCAAmB,YAA0B,iBAAiB;AAC7E,QAAI,YAAY,SAAS,eAAe,eAAe,GAAG;AACtD,eAAS,SAAS,iBAAiB;AAAA,IACvC;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,cAAsB;AAC7B,QAAI,OAAO,kCAAmB,YAAuB,aAAa,KAAK,CAAC;AACxE,QAAI,KAAK,eAAe,aAAa,KAAK,OAAO,KAAK,gBAAgB,UAAU;AAC5E,aAAO,KAAK;AAAA,IAChB;AACA,WAAO,aAAY;AAAA,EACvB;AAAA,EACA,WAAW,YAAY,OAA2B;AAC9C,QAAI,OAAO,kCAAmB,YAAuB,aAAa,KAAK,CAAC;AACxE,QAAI,OAAO,UAAU,UAAU;AAC3B,WAAK,cAAc;AAAA,IACvB,OAAO;AACH,aAAO,KAAK;AAAA,IAChB;AACA,sCAAmB,YAAY,eAAe,IAAI;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,aAAqB;AAC5B,QAAI,OAAO,kCAAmB,YAAuB,aAAa,KAAK,CAAC;AACxE,QAAI,KAAK,eAAe,YAAY,KAAK,OAAO,KAAK,eAAe,UAAU;AAC1E,aAAO,KAAK;AAAA,IAChB;AACA,WAAO;AAAA,EACX;AAAA,EACA,WAAW,WAAW,OAA2B;AAC7C,QAAI,OAAO,kCAAmB,YAAuB,aAAa,KAAK,CAAC;AACxE,QAAI,OAAO,UAAU,UAAU;AAC3B,WAAK,aAAa;AAAA,IACtB,OACK;AACD,aAAO,KAAK;AAAA,IAChB;AACA,sCAAmB,YAAY,eAAe,IAAI;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,YAAqB;AAC5B,WAAO,aAAY,wBAAwB,aAAY;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,uBAA+B;AACtC,QAAI,SAAS,aAAY,aAAa,aAAY;AAClD,WAAO,SAAS;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,iBAAqC;AAC5C,QAAI,gBAAgB,aAAY,uBAAuB;AACvD,QAAI,iBAAiB,aAAY,cAAc,QAAQ;AACnD,cAAQ,KAAK,+CAA+C,aAAa,IAAI,aAAY,aAAa;AACtG,aAAO;AAAA,IACX;AACA,WAAO,aAAY,cAAc,aAAa;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,WAAW,mBAA2B;AAClC,QAAI,aAAY,UAAU,WAAW,GAAG;AACpC,cAAQ,KAAK,mCAAmC;AAChD,aAAO;AAAA,IACX;AACA,iBAAY,UAAU,QAAQ,CAAC,MAAM,UAAU;AAC3C,UAAI,aAAY,UAAU,SAAS,QAAQ,GAAG;AAC1C,YAAI,aAAY,aAAa,KAAK,WAAW,aAAY,UAAU,QAAQ,CAAC,EAAE,SAAS,GAAG;AACtF,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,aAAa,YAAoB,aAAY,kBAA0B;AAC1E,QAAI,UAAU,aAAY,cAAc;AACxC,QAAI,WAAW,aAAY,aAAa;AACpC,mBAAY,YAAY;AACxB,gBAAU,aAAY,eAAe,UAAU,aAAY;AAAA,IAC/D;AACA,iBAAY,cAAc;AAC1B,WAAO,aAAY;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,YAAY,aAAqB,aAAY,aAAa,OAAe,GAAW;AACvF,QAAI,SAAS,aAAY,aAAa;AACtC,iBAAY,aAAa;AACzB,iBAAY,cAAc;AAC1B,WAAO,aAAY;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,aAAa,UAAkB,QAAyB;AAC3D,QAAI,cAAc,aAAY;AAC9B,QAAI,WAAW,QAAQ;AACnB,aAAO,eAAe,YAAY,cAAc;AAAA,IACpD;AACA,WAAO,eAAe,YAAY,cAAc;AAAA,EACpD;AACJ;;;ADlQO,IAAe,yBAAf,MAAsC;AAAA,EACzC,YAAY,OAA0C,OAAsB;AACxE,SAAK,cAAc,MAAM;AACzB,SAAK,kBAAkB,MAAM;AAC7B,SAAK,gBAAgB,MAAM;AAC3B,SAAK,iBAAiB,MAAM;AAC5B,SAAK,eAAe,MAAM;AAC1B,SAAK,kBAAkB,MAAM,YAAY;AACzC,SAAK,gBAAgB,MAAM,UAAU;AACrC,SAAK,eAAe,MAAM;AAC1B,SAAK,SAAS;AAAA,EAClB;AAAA,EAOA,IAAI,OAAe;AACf,WAAO,KAAK,mBAA2B,MAAM,KAAK,KAAK,eAAe;AAAA,EAC1E;AAAA,EACA,IAAI,KAAK,OAA2B;AAChC,SAAK,mBAAmB,QAAQ,KAAK;AAAA,EACzC;AAAA,EAGA,IAAI,WAAmB;AACnB,WAAO,KAAK,mBAA2B,UAAU,KAAK,KAAK,mBAAmB,YAAY;AAAA,EAC9F;AAAA,EACA,IAAI,SAAS,OAA2B;AACpC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA,EAGA,IAAI,SAAiB;AACjB,WAAO,KAAK,mBAA2B,QAAQ,KAAK,KAAK,iBAAkB,YAAY,cAAc;AAAA,EACzG;AAAA,EACA,IAAI,OAAO,OAA2B;AAClC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AAAA,EAGA,IAAI,UAA8B;AAC9B,WAAO,KAAK,mBAA2B,SAAS,KAAK,KAAK;AAAA,EAC9D;AAAA,EACA,IAAI,QAAQ,OAA2B;AACnC,SAAK,mBAAmB,WAAW,KAAK;AAAA,EAC5C;AAAA,EAGA,IAAI,QAA4B;AAC5B,WAAO,KAAK,mBAA2B,OAAO,KAAK,KAAK;AAAA,EAC5D;AAAA,EACA,IAAI,MAAM,OAA2B;AACjC,SAAK,mBAAmB,SAAS,KAAK;AAAA,EAC1C;AAAA,EAGA,IAAI,WAAoB;AACpB,QAAI,QAAQ,KAAK,mBAA4B,UAAU,KAAK,KAAK;AACjE,QAAI,OAAO,UAAU,UAAU;AAC3B,iBAAO,yBAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS,OAAyB;AAClC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA,EAGA,IAAI,SAAkB;AAClB,QAAI,KAAK,WAAW,KAAK,UAAU,YAAY,YAAY;AACvD,aAAO;AAAA,IACX;AACA,QAAI,CAAC,YAAY,aAAa,KAAK,UAAU,KAAK,MAAM,GAAG;AACvD,aAAO;AAAA,IACX;AACA,QAAI,CAAC,KAAK,WAAW;AACjB,aAAO;AAAA,IACX;AACA,QAAI,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAC/D,QAAI,OAAO,UAAU,UAAU;AAC3B,iBAAO,yBAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,OAAyB;AAChC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AAAA,EAGA,IAAI,cAA2C;AAC3C,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,QAAQ;AACR,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,YAAqB;AACjB,QAAI,KAAK,SAAS,KAAK,SAAS,YAAY,YAAY;AACpD,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AAAA,EAEA,SAAwB;AACpB,WAAO;AAAA,MACH,MAAM,KAAK,mBAA2B,MAAM,KAAK,KAAK;AAAA,MACtD,UAAU,KAAK,mBAA2B,UAAU,KAAK,KAAK;AAAA,MAC9D,QAAQ,KAAK,mBAA2B,QAAQ,KAAK,KAAK;AAAA,MAC1D,SAAS,KAAK,mBAA2B,SAAS,KAAK,KAAK;AAAA,MAC5D,OAAO,KAAK,mBAA2B,OAAO,KAAK,KAAK;AAAA,MACxD,UAAU,KAAK,mBAA4B,UAAU,KAAK,KAAK;AAAA,MAC/D,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAAA,MAC3D,aAAa,KAAK;AAAA,IACtB;AAAA,EACJ;AACJ;AAEA,IAAqB,gBAArB,MAAmC;AAAA,EAC/B,YAAY,IAAY,OAA0C,OAAsB;AACpF,SAAK,MAAM;AACX,SAAK,QAAQ,MAAM;AACnB,SAAK,YAAY,MAAM;AACvB,SAAK,UAAU,MAAM;AACrB,SAAK,WAAW,MAAM;AACtB,SAAK,SAAS,MAAM;AACpB,SAAK,YAAY,MAAM,YAAY;AACnC,SAAK,UAAU,MAAM,UAAU;AAC/B,SAAK,eAAe,MAAM;AAC1B,SAAK,SAAS;AAAA,EAClB;AAAA,EAGA,IAAI,KAAa;AACb,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,OAA2B;AAC3B,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,WAA+B;AAC/B,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,SAA6B;AAC7B,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,UAA8B;AAC9B,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,QAA4B;AAC5B,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,WAAgC;AAChC,QAAI,OAAO,KAAK,cAAc,UAAU;AACpC,iBAAO,yBAAQ,KAAK,SAAS;AAAA,IACjC;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,SAAkB;AAClB,QAAI,KAAK,WAAW,KAAK,UAAU,YAAY,YAAY;AACvD,aAAO;AAAA,IACX;AACA,QAAI,CAAC,KAAK,YAAY;AAClB,aAAO;AAAA,IACX;AACA,QAAI,OAAO,KAAK,YAAY,UAAU;AAClC,iBAAO,yBAAQ,KAAK,OAAO;AAAA,IAC/B;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,cAA2C;AAC3C,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,QAAQ;AACR,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,aAAsB;AAClB,QAAI,KAAK,SAAS,KAAK,SAAS,YAAY,YAAY;AACpD,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AAAA,EAEA,SAAwB;AACpB,WAAO;AAAA,MACH,MAAM,KAAK;AAAA,MACX,UAAU,KAAK;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,MACZ,UAAU,KAAK;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,aAAa,KAAK;AAAA,IACtB;AAAA,EACJ;AACJ;;;AEnQA,IAAAC,kBAA0C;AAK1C,IAAM,oBAAoB;AAqB1B,IAAqB,oBAArB,cAAyF,iCAAiB;AAAA,EACtG,YAAY,IAAY,KAAW,UAAyB,OAA+B;AACvF,UAAM,mBAAmB,EAAE;AAC3B,QAAI,SAAS,SAAS,OAAO,IAAI;AAC7B,YAAM,IAAI,MAAM,wBAAwB,SAAS,EAAE,uBAAuB,EAAE,EAAE;AAAA,IAClF;AACA,SAAK,YAAY;AACjB,SAAK,cAAc,MAAM,QAAQ;AACjC,SAAK,kBAAkB,MAAM,YAAY;AACzC,SAAK,gBAAgB,MAAM,UAAU;AACrC,SAAK,eAAe,MAAM;AAC1B,SAAK,OAAO;AAAA,EAChB;AAAA,EAEA,IAAI,WAA0B;AAC1B,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,OAAe;AACf,WAAO,KAAK,mBAA2B,MAAM,KAAK,KAAK;AAAA,EAC3D;AAAA,EACA,IAAI,KAAK,OAAe;AACpB,SAAK,mBAAmB,QAAQ,KAAK;AAAA,EACzC;AAAA,EAGA,IAAI,WAAoB;AACpB,QAAI,QAAQ,KAAK,mBAA4B,UAAU,KAAK,KAAK;AACjE,QAAI,OAAO,UAAU,UAAU;AAC3B,iBAAO,yBAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS,OAAyB;AAClC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA,EAGA,IAAI,SAAkB;AAClB,QAAI,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAC/D,QAAI,OAAO,UAAU,UAAU;AAC3B,iBAAO,yBAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,OAAyB;AAChC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AAAA,EAGA,IAAI,cAA2C;AAC3C,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,MAAY;AACZ,WAAO,KAAK;AAAA,EAChB;AACJ;;;ACrFA,IAAAC,kBAA0C;AAG1C,IAAM,eAAe;AA4CrB,IAAqB,eAArB,cAA0C,iCAAiB;AAAA,EACvD,YAAY,IAAY,OAA0B;AAC9C,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,EAGA,IAAI,OAAe;AACf,WAAO,KAAK,mBAA2B,MAAM,KAAK,KAAK;AAAA,EAC3D;AAAA,EACA,IAAI,KAAK,OAAe;AACpB,SAAK,mBAAmB,QAAQ,KAAK;AAAA,EACzC;AAAA,EAGA,IAAI,QAA0E;AAC1E,WAAO,KAAK,mBAAoC,OAAO,KAAK,KAAK;AAAA,EACrE;AAAA,EACA,IAAI,MAAM,OAAyE;AAC/E,SAAK,mBAAmB,SAAS,KAAK;AAAA,EAC1C;AAAA,EAGA,IAAI,WAAoB;AACpB,QAAI,QAAQ,KAAK,mBAA4B,UAAU,KAAK,KAAK;AACjE,QAAI,OAAO,UAAU,UAAU;AAC3B,iBAAO,yBAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS,OAAyB;AAClC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA,EAGA,IAAI,SAAkB;AAClB,QAAI,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAC/D,QAAI,OAAO,UAAU,UAAU;AAC3B,iBAAO,yBAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,OAAyB;AAChC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AACJ;;;AC/FA,IAAAC,kBAA0C;;;ACEnC,IAAM,uBAAwD,CAAC;AAE/D,SAAS,aAAa,UAA2C;AACpE,MAAI,MAAM,QAAQ,QAAQ,GAAG;AACzB,aAAS,QAAQ,OAAK,aAAa,CAAC,CAAC;AACrC;AAAA,EACJ;AACA,MAAI,qBAAqB,SAAS,EAAE,GAAG;AACnC,YAAQ,KAAK,sBAAsB,SAAS,EAAE,yCAAyC;AAAA,EAC3F;AACA,uBAAqB,SAAS,EAAE,IAAI;AACxC;AAEO,SAAS,gBAAgB,IAAuC;AACnE,MAAI;AACA,QAAI,WAAW,qBAAqB,EAAE;AACtC,QAAI,CAAC,UAAU;AACX,cAAQ,MAAM,mBAAmB,EAAE,YAAY;AAC/C;AAAA,IACJ;AACA,WAAO;AAAA,EACX,SACO,GAAG;AACN,YAAQ,MAAM,uCAAuC,EAAE,IAAI,CAAC;AAC5D;AAAA,EACJ;AACJ;;;AC5BA,IAAAC,kBAAmC;AAGnC,IAAM,2CAA2C;AAC1C,IAAM,wBAA+D,CAAC;AACtE,IAAM,mBAA0D,CAAC;AAEjE,SAAS,eAA8E,YAAyC;AACnI,MAAI,MAAM,QAAQ,UAAU,GAAG;AAC3B,eAAW,QAAQ,OAAK,eAAe,CAAC,CAAC;AACzC;AAAA,EACJ;AACA,MAAI,sBAAsB,WAAW,EAAE,GAAG;AACtC,YAAQ,KAAK,wBAAwB,WAAW,EAAE,yCAAyC;AAAA,EAC/F;AACA,wBAAsB,WAAW,EAAE,IAAI;AAC3C;AAEO,SAAS,kBAAiF,IAAqC;AAClI,MAAI;AACA,QAAI,aAAa,sBAAsB,EAAE;AACzC,QAAI,CAAC,YAAY;AACb,cAAQ,MAAM,qBAAqB,EAAE,YAAY;AACjD;AAAA,IACJ;AACA,WAAO;AAAA,EACX,SACO,GAAG;AACN,YAAQ,MAAM,yCAAyC,EAAE,IAAI,CAAC;AAC9D;AAAA,EACJ;AACJ;AAEO,SAAS,oBAAmF,aAA0C;AACzI,MAAI,MAAM,QAAQ,WAAW,GAAG;AAC5B,gBAAY,QAAQ,OAAK,eAAe,CAAC,CAAC;AAC1C;AAAA,EACJ;AACA,MAAI,sBAAsB,YAAY,EAAE,GAAG;AACvC,YAAQ,KAAK,wBAAwB,YAAY,EAAE,yCAAyC;AAAA,EAChG;AACA,wBAAsB,YAAY,EAAE,IAAI;AAC5C;AAEO,SAAS,uBAAsF,YAAyC;AAC3I,MAAI,CAAC,MAAM,QAAQ,UAAU,GAAG;AAC5B,iBAAa,CAAC,UAAU;AAAA,EAC5B;AACA,MAAI,iBAAiB,WAAW,IAAI,CAAAC,gBAAc;AAC9C,QAAI,iBAAiB,kBAAkBA,YAAW,EAAE;AACpD,QAAI,CAAC,gBAAgB;AACjB,cAAQ,KAAK,qBAAqBA,YAAW,EAAE,gCAAgC;AAC/E,aAAO;AAAA,IACX;AACA,WAAOA,YAAW;AAAA,EACtB,CAAC,EAAE,OAAO,QAAM,OAAO,MAAS;AAEhC,qCAAmB,YAAY,0CAA0C,CAAC,cAAc,CAAC;AAC7F;AAEO,SAAS,sBAAoG;AAChH,SAAO,OAAO,OAAO,gBAAgB;AACzC;AAEO,SAAS,0BAAwG;AACpH,MAAI,iBAAiB,mCAAmB,YAAsB,wCAAwC;AACtG,MAAI,CAAC,gBAAgB;AACjB,WAAO,CAAC;AAAA,EACZ;AACA,MAAI,cAAc,eAAe,IAAI,QAAM,kBAA+B,EAAE,CAAC,EAAE,OAAO,gBAAc,eAAe,MAAS;AAC5H,SAAO;AACX;;;ACrEO,IAAM,kBAAmD,CAAC;AAE1D,SAAS,SAAsD,MAAuB;AACzF,MAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,SAAK,QAAQ,OAAK,SAAS,CAAC,CAAC;AAC7B;AAAA,EACJ;AACA,MAAI,gBAAgB,KAAK,EAAE,GAAG;AAC1B,YAAQ,KAAK,kBAAkB,KAAK,EAAE,yCAAyC;AAAA,EACnF;AACA,kBAAgB,KAAK,EAAE,IAAI;AAC/B;AAEO,SAAS,YAAyD,IAA+B;AACpG,MAAI;AACA,QAAI,OAAO,gBAAgB,EAAE;AAC7B,QAAI,CAAC,MAAM;AACP,cAAQ,MAAM,eAAe,EAAE,YAAY;AAC3C;AAAA,IACJ;AACA,WAAO;AAAA,EACX,SACO,GAAG;AACN,YAAQ,MAAM,mCAAmC,EAAE,IAAI,CAAC;AACxD;AAAA,EACJ;AACJ;;;ACvBO,SAAS,sBAAsB;AAClC,SAAO,QAAQ,qBAAqB,EAAE,QAAQ,CAAC,CAAC,GAAG,UAAU,MAAM;AAC/D,QAAI,WAAW,UAAU,GAAG;AACxB,aAAO,sBAAsB,WAAW,EAAE;AAAA,IAC9C;AAAA,EACJ,CAAC;AACL;AAEO,SAAS,wBAAsG;AAClH,MAAI,wBAA8D,CAAC;AACnE,MAAI,oBAAmC,CAAC;AACxC,0BAAqC,EAAE,QAAQ,EAAE,QAAQ,OAAK;AAC1D,QAAI,CAAC,EAAE,QAAQ;AACX,UAAI,EAAE,WAAW,SAAS,GAAG;AAEzB,YAAI,eAAe,EAAE,WAAW,MAAM,QAAM,CAAC,sBAAsB,GAAG,EAAE,CAAC;AACzE,YAAI,cAAc;AACd,YAAE,WAAW,QAAQ,QAAM;AACvB,kCAAsB,GAAG,EAAE,IAAI;AAAA,UACnC,CAAC;AAAA,QACL;AAAA,MACJ,OACK;AACD,0BAAkB,KAAK,CAAC;AAAA,MAC5B;AAAA,IACJ;AAAA,EACJ,CAAC;AACD,sBAAiC,EAAE,QAAQ,EAAE,QAAQ,OAAK;AACtD,QAAI,CAAC,EAAE,QAAQ;AACX,UAAI,EAAE,WAAW,SAAS,GAAG;AACzB,UAAE,WAAW,QAAQ,QAAM;AACvB,cAAI,CAAC,sBAAsB,GAAG,EAAE,GAAG;AAC/B,kCAAsB,GAAG,EAAE,IAAI;AAAA,UACnC;AAAA,QACJ,CAAC;AAAA,MACL,OACK;AACD,0BAAkB,KAAK,CAAC;AAAA,MAC5B;AAAA,IACJ;AAAA,EACJ,CAAC;AACD,SAAO,OAAO,OAAO,qBAAqB,EAAE,OAAO,iBAAiB;AACxE;AAEO,SAAS,yBAAoJ,WAAgD;AAChN,wBAAsB,EAAE,QAAQ,OAAK;AACjC,QAAI,EAAE,WAAW,IAAI,QAAM,GAAG,EAAE,EAAE,SAAS,UAAU,EAAE,GAAG;AACtD,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACD,SAAO;AACX;;;ACrDO,IAAM,eAAN,cAAwE,uBAAuB;AAAA,EAClG,YAAY,IAAY,MAAa,OAA0C,OAAsB;AACjG,UAAM,OAAO,KAAK;AAClB,SAAK,MAAM;AACX,SAAK,QAAQ;AAAA,EACjB;AAAA,EACA,mBAAsB,GAAW,IAAyB;AACtD,SAAK,MAAM,YAAY,IAAI;AAAA,EAC/B;AAAA,EACA,mBAAsB,cAAqC;AACvD,QAAI,WAAW,KAAK,MAAM,kBAAkB,KAAK,EAAE;AACnD,QAAI,CAAC,YAAY,CAAC,SAAS,eAAe,YAAY,GAAG;AACrD,aAAO;AAAA,IACX;AACA,WAAQ,SAAiB,YAAY;AAAA,EACzC;AAAA,EAEA,IAAI,KAAa;AACb,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,OAAc;AACd,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,SAAiB;AACb,QAAI,SAAc,CAAC;AACnB,QAAI,KAAK,SAAS,QAAW;AACzB,aAAO,MAAM,IAAI,KAAK;AAAA,IAC1B;AACA,QAAI,KAAK,aAAa,QAAW;AAC7B,aAAO,UAAU,IAAI,KAAK;AAAA,IAC9B;AACA,QAAI,KAAK,WAAW,QAAW;AAC3B,aAAO,QAAQ,IAAI,KAAK;AAAA,IAC5B;AACA,QAAI,KAAK,YAAY,QAAW;AAC5B,aAAO,SAAS,IAAI,KAAK;AAAA,IAC7B;AACA,QAAI,KAAK,UAAU,QAAW;AAC1B,aAAO,OAAO,IAAI,KAAK;AAAA,IAC3B;AACA,QAAI,KAAK,aAAa,QAAW;AAC7B,aAAO,UAAU,IAAI,KAAK;AAAA,IAC9B;AACA,WAAO;AAAA,EACX;AACJ;;;ALzCO,IAAM,gBAAgB;AAyC7B,IAAqB,gBAArB,cAAoG,iCAAiB;AAAA,EACjH,YAAY,IAAY,UAAqB,OAA2B;AAnD5E;AAoDQ,UAAM,eAAe,EAAE;AACvB,SAAK,YAAY;AACjB,SAAK,cAAc,MAAM,QAAQ;AACjC,SAAK,eAAe,MAAM;AAC1B,SAAK,uBAAqB,WAAM,sBAAN,mBAAyB,IAAI,cAAY,SAAS,QAAO,CAAC;AACpF,SAAK,kBAAkB,MAAM,YAAY;AACzC,SAAK,gBAAgB,MAAM,UAAU;AACrC,SAAK,eAAe,MAAM;AAAA,EAC9B;AAAA,EAGA,IAAI,WAAsB;AACtB,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,OAAe;AACf,WAAO,KAAK,mBAA2B,MAAM,KAAK,KAAK;AAAA,EAC3D;AAAA,EACA,IAAI,KAAK,OAAe;AACpB,SAAK,mBAAmB,QAAQ,KAAK;AAAA,EACzC;AAAA,EAGA,IAAI,QAA0E;AAC1E,WAAO,KAAK,mBAAoC,OAAO,KAAK,KAAK;AAAA,EACrE;AAAA,EACA,IAAI,MAAM,OAAyE;AAC/E,SAAK,mBAAmB,SAAS,KAAK;AAAA,EAC1C;AAAA,EAGA,IAAI,oBAA0C;AAC1C,QAAI,eAAe,KAAK,mBAAuC,mBAAmB,KAAK,CAAC;AACxF,QAAI,aAAa,KAAK,mBAAmB,IAAI,QAAM;AAC/C,UAAI,WAAW,gBAAgB,EAAE;AACjC,UAAI,CAAC,UAAU;AACX,gBAAQ,KAAK,2BAA2B,EAAE,oCAAoC;AAC9E,eAAO;AAAA,MACX;AACA,UAAI,SAAS,SAAS,OAAO;AAC7B,UAAI,gBAAgB,aAAa,EAAE,GAAG;AAClC,iBAAS,kCACF,SACA,aAAa,EAAE;AAAA,MAE1B;AACA,aAAO,IAAI,aAAa,IAAI,MAAM,SAAS,OAAO,MAAM;AAAA,IAC5D,CAAC,EAAE,OAAO,cAAY,aAAa,MAAS;AAC5C,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,cAAwB;AACxB,QAAI,mBAAmB,KAAK,mBAA6B,kBAAkB,KAAK,CAAC;AACjF,WAAO,KAAK,mBAAmB,OAAO,gBAAgB;AAAA,EAC1D;AAAA,EACA,IAAI,aAAmC;AACnC,QAAI,aAAa,KAAK,YAAY,IAAI,QAAM;AACxC,aAAO,KAAK,YAAY,EAAE;AAAA,IAC9B,CAAC,EAAE,OAAO,cAAY,aAAa,MAAS;AAC5C,WAAO;AAAA,EACX;AAAA,EACA,kBAAkB,IAAgC;AAC9C,QAAI,eAAe,KAAK,mBAAuC,mBAAmB,KAAK,CAAC;AACxF,QAAI,aAAa,aAAa,EAAE,KAAK,CAAC;AACtC,WAAO;AAAA,EACX;AAAA,EACA,YAAY,IAA4C;AACpD,QAAI,CAAC,KAAK,YAAY,SAAS,EAAE,GAAG;AAChC,cAAQ,MAAM,2BAA2B,EAAE,sBAAsB,KAAK,EAAE,EAAE;AAC1E,aAAO;AAAA,IACX;AACA,QAAI,WAAW,gBAAgB,EAAE;AACjC,QAAI,CAAC,UAAU;AACX,cAAQ,MAAM,2BAA2B,EAAE,YAAY;AACvD,aAAO;AAAA,IACX;AACA,QAAI,eAAe,KAAK,mBAAuC,mBAAmB,KAAK,CAAC;AACxF,QAAI,aAAa,aAAa,EAAE,KAAK,CAAC;AACtC,iBAAa,kCACN,SAAS,OAAO,IAChB;AAEP,WAAO,IAAI,aAAa,IAAI,MAAM,SAAS,OAAO,UAAU;AAAA,EAChE;AAAA,EACA,YAAY,UAAwB;AAChC,QAAI,eAAe,KAAK,mBAAuC,mBAAmB,KAAK,CAAC;AACxF,iBAAa,SAAS,EAAE,IAAI,SAAS,OAAO;AAC5C,SAAK,mBAAmB,qBAAqB,YAAY;AAAA,EAC7D;AAAA,EACA,YAAY,UAAyB;AACjC,QAAI,KAAK,YAAY,SAAS,SAAS,EAAE,GAAG;AACxC,UAAI,kBAAkB,KAAK,YAAY,SAAS,EAAE;AAClD,UAAI,mBAAmB,gBAAgB,UAAU,GAAG;AAChD,aAAK,eAAe,SAAS,EAAE;AAC/B;AAAA,MACJ,OAAO;AACH,gBAAQ,MAAM,2BAA2B,SAAS,EAAE,2BAA2B,KAAK,EAAE,0BAA0B;AAChH;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,mBAAmB,KAAK,mBAA6B,kBAAkB,KAAK,CAAC;AACjF,qBAAiB,KAAK,SAAS,EAAE;AACjC,SAAK,mBAAmB,oBAAoB,gBAAgB;AAAA,EAChE;AAAA,EACA,eAAe,UAAkC;AAC7C,QAAI,aAAa,OAAO,aAAa,WAAW,WAAW,SAAS;AACpE,QAAI,KAAK,mBAAmB,SAAS,UAAU,GAAG;AAC9C,cAAQ,KAAK,2BAA2B,UAAU,4EAA4E;AAC9H,UAAI,iBAAiB,KAAK,YAAY,UAAU;AAChD,UAAI,CAAC,gBAAgB;AACjB,gBAAQ,MAAM,2BAA2B,UAAU,oCAAoC;AACvF;AAAA,MACJ;AACA,qBAAe,SAAS;AACxB;AAAA,IACJ;AACA,QAAI,mBAAmB,KAAK,mBAA6B,kBAAkB,KAAK,CAAC;AACjF,QAAI,QAAQ,iBAAiB,QAAQ,UAAU;AAC/C,QAAI,UAAU,IAAI;AACd,cAAQ,MAAM,2BAA2B,UAAU,qCAAqC;AACxF;AAAA,IACJ;AACA,qBAAiB,OAAO,OAAO,CAAC;AAChC,SAAK,mBAAmB,oBAAoB,gBAAgB;AAC5D,QAAI,eAAe,KAAK,mBAAuC,mBAAmB,KAAK,CAAC;AACxF,WAAO,aAAa,UAAU;AAC9B,SAAK,mBAAmB,qBAAqB,YAAY;AAAA,EAC7D;AAAA,EACA,yBAAyB;AACrB,SAAK,WAAW,QAAQ,cAAY;AAChC,UAAI,SAAS,UAAU,GAAG;AACtB,aAAK,eAAe,SAAS,EAAE;AAAA,MACnC;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAGA,IAAI,WAAoB;AACpB,QAAI,QAAQ,KAAK,mBAA4B,UAAU,KAAK,KAAK;AACjE,QAAI,OAAO,UAAU,UAAU;AAC3B,iBAAO,yBAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS,OAAyB;AAClC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA,EAGA,IAAI,SAAkB;AAClB,QAAI,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAC/D,QAAI,OAAO,UAAU,UAAU;AAC3B,iBAAO,yBAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,OAAyB;AAChC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AAAA,EAGA,IAAI,cAA2C;AAC3C,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,aAA2F;AACvF,QAAI,cAAc,sBAAmC;AACrD,WAAO,YAAY,OAAO,OAAK,EAAE,KAAK,OAAO,KAAK,EAAE;AAAA,EACxD;AACJ;;;AMlNA,IAAqB,OAArB,MAA2C;AAAA,EACvC,YAAY,OAAkB;AAC1B,SAAK,eAAe,MAAM;AAC1B,SAAK,OAAO,MAAM,QAAQ;AAC1B,SAAK,OAAO,MAAM,QAAQ;AAAA,EAC9B;AAAA,EAEA,IAAI,cAAsB;AACtB,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,aAAsB;AACtB,WAAO,KAAK,QAAQ,KAAK;AAAA,EAC7B;AAAA,EACA,cAAoB;AAChB,SAAK,OAAO,KAAK;AAAA,EACrB;AAAA,EACA,OAAa;AACT,SAAK;AAAA,EACT;AAAA,EACA,IAAI,SAAgB;AAChB,WAAO;AAAA,MACH,aAAa,KAAK;AAAA,MAClB,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,IACf;AAAA,EACJ;AACJ;;;ACxCA,IAAAC,kBAAiC;AAGjC,IAAM,iBAAiB;AAUvB,IAAqB,iBAArB,cAA4F,iCAAiB;AAAA,EACzG,YAAY,IAAY,QAAkB,OAA4B;AAClE,UAAM,gBAAgB,EAAE;AACxB,SAAK,UAAU;AACf,SAAK,QAAQ,MAAM,QAAQ;AAC3B,SAAK,eAAe,MAAM,eAAe;AACzC,SAAK,QAAQ,MAAM,QAAQ;AAC3B,SAAK,SAAS,MAAM,SAAS;AAC7B,SAAK,mBAAmB,MAAM,mBAAmB;AAAA,EACrD;AAAA,EAEA,IAAI,SAAmB;AACnB,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,OAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,cAAsB;AACtB,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,OAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,QAAgB;AAChB,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,kBAA2B;AAC3B,WAAO,KAAK;AAAA,EAChB;AACJ;;;ACpDA,IAAAC,kBAAiC;AAIjC,IAAM,iBAAiB;AAgBvB,IAAqB,iBAArB,cAA4C,iCAAiB;AAAA,EACzD,YAAY,IAAY,OAA4B;AAChD,UAAM,gBAAgB,EAAE;AAc5B,SAAQ,aAAsB;AAK9B,SAAQ,UAAmB;AAK3B,SAAQ,eAAuB,CAAC;AAvB5B,SAAK,QAAQ,MAAM,QAAQ;AAC3B,SAAK,eAAe,MAAM,eAAe;AACzC,SAAK,qBAAqB,MAAM,qBAAqB;AACrD,SAAK,SAAS,MAAM,SAAS;AAC7B,SAAK,uBAAuB,MAAM;AAClC,SAAK,iBAAiB,MAAM;AAC5B,SAAK,kBAAkB,MAAM;AAC7B,SAAK,sBAAsB,MAAM,sBAAsB;AACvD,SAAK,WAAW,MAAM;AACtB,SAAK,SAAS,MAAM;AAAA,EACxB;AAAA,EAIA,IAAI,YAAqB;AACrB,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,SAAkB;AAClB,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,QAAgB;AAChB,QAAI,OAAO,KAAK,mBAA4B,OAAO;AACnD,QAAI,CAAC,MAAM;AACP,aAAO,KAAK;AAAA,IAChB;AACA,WAAO,KAAK,IAAI,UAAQ,IAAI,KAAK,IAAI,CAAC;AAAA,EAC1C;AAAA,EACA,IAAI,MAAM,OAAe;AACrB,QAAI,OAAO,MAAM,IAAI,UAAQ,KAAK,MAAM;AACxC,SAAK,mBAAmB,SAAS,IAAI;AAAA,EACzC;AAAA,EAGA,IAAI,OAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,cAAsB;AACtB,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,oBAA4B;AAC5B,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,QAAgB;AAChB,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,sBAA8B;AAC9B,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,gBAA0B;AAC1B,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,iBAAuC;AACvC,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,qBAA6B;AAC7B,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,UAAsB;AACtB,WAAO,KAAK;AAAA,EAChB;AAAA,EAGA,IAAI,QAAoB;AACpB,WAAO,KAAK;AAAA,EAChB;AACJ;;;AC5GO,IAAK,oBAAL,kBAAKC,uBAAL;AACH,EAAAA,mBAAA,eAAY;AACZ,EAAAA,mBAAA,iBAAc;AAFN,SAAAA;AAAA,GAAA;;;ACAZ,IAAAC,kBAAmC;AAInC,IAAM,0BAA0B;AAEzB,SAAS,eAA4D,MAAa;AACrF,MAAI,kBAAkB,YAAY,KAAK,EAAE;AACzC,MAAI,CAAC,iBAAiB;AAClB,YAAQ,MAAM,mBAAmB,KAAK,EAAE,wDAAwD;AAChG;AAAA,EACJ;AACA,eAAa,QAAQ,yBAAyB,KAAK,EAAE;AACzD;AAEO,SAAS,iBAAiF;AAC7F,MAAI,SAAS,mCAAmB,YAAoB,uBAAuB;AAC3E,MAAI,CAAC,QAAQ;AACT,YAAQ,MAAM,8CAA8C;AAC5D;AAAA,EACJ;AACA,MAAI,OAAO,YAAmB,MAAM;AACpC,MAAI,CAAC,MAAM;AACP,YAAQ,MAAM,uBAAuB,MAAM,YAAY;AACvD;AAAA,EACJ;AACA,SAAO;AACX;AAEO,SAAS,qBAAqG;AACjH,MAAI,OAAO,eAAyC;AACpD,MAAI,CAAC,MAAM;AACP;AAAA,EACJ;AACA,SAAO,KAAK;AAChB;AAEO,SAAS,gBAA4E;AACxF,MAAI,WAAW,mBAA4C;AAC3D,MAAI,CAAC,UAAU;AACX;AAAA,EACJ;AACA,SAAO,SAAS;AACpB;;;ACvCO,SAAS,yBAAyB;AACrC,SAAO,QAAQ,eAAe,EAAE,QAAQ,CAAC,CAAC,GAAG,IAAI,MAAM;AACnD,SAAK,uBAAuB;AAAA,EAChC,CAAC;AACL;AAEO,SAAS,oBAAoC;AAChD,MAAI,cAAc,eAAe;AACjC,MAAI,CAAC,aAAa;AACd,WAAO,CAAC;AAAA,EACZ;AACA,SAAO,YAAY,WAAW,OAAO,cAAY,CAAC,SAAS,MAAM;AACrE;","names":["import_pixi_vn","import_pixi_vn","import_pixi_vn","import_pixi_vn","import_pixi_vn","commitment","import_pixi_vn","import_pixi_vn","ExecutionTypeEnum","import_pixi_vn"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/classes/Activity.ts","../src/managers/TimeManager.ts","../src/classes/navigation/Location.ts","../src/decorators/RoomDecorator.ts","../src/classes/navigation/Map.ts","../src/classes/navigation/Room.ts","../src/decorators/ActivityDecorator.ts","../src/decorators/CommitmentDecorator.ts","../src/functions/RoutineFunctions.ts","../src/classes/navigation/ActivityRoom.ts","../src/classes/quest/Goal.ts","../src/classes/quest/Quest.ts","../src/classes/quest/Stage.ts","../src/enums/ExecutionTypeEnum.ts","../src/functions/NavigationFunctions.ts","../src/functions/ActivityFunctions.ts"],"sourcesContent":["export * from './classes';\nexport * from './classes/navigation';\nexport * from './classes/quest';\nexport * from './decorators';\nexport * from './enums';\nexport * from './functions';\nexport * from './managers';\nexport * from './types';\n\n","import { getFlag } from \"@drincs/pixi-vn\";\nimport TimeManager from \"../managers/TimeManager\";\nimport { GraphicItemType } from \"../types/GraphicItem\";\n\nexport interface ActivityProps {\n /**\n * The name\n */\n name?: string\n /**\n * The hour when the activity starts. If the activity is not started yet, it will be hidden.\n * If you set 3, the activity will be hidden into hours 1 and 2, and will be shown from hour 3.\n */\n fromHour?: number\n /**\n * The hour when the activity ends. If the activity is ended yet, it will be hidden.\n * If you set 3, the activity will be shown into hours 1 and 2 and will be hidden from hour 3.\n */\n toHour?: number\n /**\n * The day when the activity starts. If the activity is not started yet, it will be hidden.\n * If you set 3, the activity will be hidden into days 1 and 2, and will be shown from day 3.\n */\n fromDay?: number\n /**\n * The day when the activity ends. If the activity is ended yet, it will be deleted or hidden.\n * If you set 3, the activity will be shown into days 1 and 2 and will be deleted or hidden from day 3.\n */\n toDay?: number\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an HTMLElement or a Pixi'VN CanvasItem\n */\n iconElement?: GraphicItemType\n}\n\nexport abstract class ActivityStoredAbstract {\n constructor(onRun: (activity: ActivityModel) => void, props: ActivityProps) {\n this.defaultName = props.name\n this.defaultFromHour = props.fromHour\n this.defaultToHour = props.toHour\n this.defaultFromDay = props.fromDay\n this.defaultToDay = props.toDay\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._iconElement = props.iconElement\n this._onRun = onRun\n }\n\n abstract setStorageProperty<T>(propertyName: string, value: T | undefined): void;\n abstract getStorageProperty<T>(propertyName: string): T | undefined;\n abstract get id(): string\n\n private defaultName?: string\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 defaultFromHour?: number\n get fromHour(): number {\n return this.getStorageProperty<number>(\"fromHour\") || this.defaultFromHour || TimeManager.minDayHours\n }\n set fromHour(value: number | undefined) {\n this.setStorageProperty(\"fromHour\", value)\n }\n\n private defaultToHour?: number\n get toHour(): number {\n return this.getStorageProperty<number>(\"toHour\") || this.defaultToHour || (TimeManager.maxDayHours + 1)\n }\n set toHour(value: number | undefined) {\n this.setStorageProperty(\"toHour\", value)\n }\n\n private defaultFromDay?: number\n get fromDay(): number | undefined {\n return this.getStorageProperty<number>(\"fromDay\") || this.defaultFromDay\n }\n set fromDay(value: number | undefined) {\n this.setStorageProperty(\"fromDay\", value)\n }\n\n private defaultToDay?: number\n get toDay(): number | undefined {\n return this.getStorageProperty<number>(\"toDay\") || this.defaultToDay\n }\n set toDay(value: number | undefined) {\n this.setStorageProperty(\"toDay\", value)\n }\n\n private defaultDisabled: boolean | string\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 get hidden(): boolean {\n if (this.fromDay && this.fromDay > TimeManager.currentDay) {\n return true\n }\n if (!TimeManager.nowIsBetween(this.fromHour, this.toHour)) {\n return true\n }\n if (!this.isExpired) {\n return true\n }\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 _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n private _onRun: (activity: ActivityModel) => void\n get onRun() {\n return this._onRun\n }\n\n isExpired(): boolean {\n if (this.toDay && this.toDay <= TimeManager.currentDay) {\n return true\n }\n return false\n }\n\n export(): ActivityProps {\n return {\n name: this.getStorageProperty<string>(\"name\") || this.defaultName,\n fromHour: this.getStorageProperty<number>(\"fromHour\") || this.defaultFromHour,\n toHour: this.getStorageProperty<number>(\"toHour\") || this.defaultToHour,\n fromDay: this.getStorageProperty<number>(\"fromDay\") || this.defaultFromDay,\n toDay: this.getStorageProperty<number>(\"toDay\") || this.defaultToDay,\n disabled: this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled,\n hidden: this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden,\n iconElement: this._iconElement\n }\n }\n}\n\nexport default class ActivityModel {\n constructor(id: string, onRun: (activity: ActivityModel) => void, props: ActivityProps) {\n this._id = id\n this._name = props.name\n this._fromHour = props.fromHour\n this._toHour = props.toHour\n this._fromDay = props.fromDay\n this._toDay = props.toDay\n this._disabled = props.disabled || false\n this._hidden = props.hidden || false\n this._iconElement = props.iconElement\n this._onRun = onRun\n }\n\n private _id: string\n get id(): string {\n return this._id\n }\n\n private _name?: string\n get name(): string | undefined {\n return this._name\n }\n\n private _fromHour?: number\n get fromHour(): number | undefined {\n return this._fromHour\n }\n\n private _toHour?: number\n get toHour(): number | undefined {\n return this._toHour\n }\n\n private _fromDay?: number\n get fromDay(): number | undefined {\n return this._fromDay\n }\n\n private _toDay?: number\n get toDay(): number | undefined {\n return this._toDay\n }\n\n private _disabled?: boolean | string\n get disabled(): boolean | undefined {\n if (typeof this._disabled === \"string\") {\n return getFlag(this._disabled)\n }\n return this._disabled\n }\n\n private _hidden: boolean | string\n get hidden(): boolean {\n if (this.fromDay && this.fromDay > TimeManager.currentDay) {\n return true\n }\n if (!this.isDeadline) {\n return true\n }\n if (typeof this._hidden === \"string\") {\n return getFlag(this._hidden)\n }\n return this._hidden\n }\n\n private _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n private _onRun: (activity: ActivityModel) => void\n get onRun() {\n return this._onRun\n }\n\n isDeadline(): boolean {\n if (this.toDay && this.toDay <= TimeManager.currentDay) {\n return true\n }\n return false\n }\n\n export(): ActivityProps {\n return {\n name: this._name,\n fromHour: this._fromHour,\n toHour: this._toHour,\n fromDay: this._fromDay,\n toDay: this._toDay,\n disabled: this._disabled,\n hidden: this._hidden,\n iconElement: this._iconElement,\n }\n }\n}\n","import { GameStorageManager } from \"@drincs/pixi-vn\";\n\nconst TIME_SETTINGS_KEY = '___nqtr-time_manager_settings___';\nconst TIME_DATA_KEY = '___nqtr-time_manager_data___';\n\n/**\n * Time Settings, which can be set using `TimeManager.editSettings`\n */\nexport interface TimeSettings {\n /**\n * Minimum hour of the day (default: 0)\n */\n minDayHours?: number\n /**\n * Maximum hour of the day (default: 24)\n */\n maxDayHours?: number\n /**\n * Default time spent (default: 1)\n */\n defaultTimeSpent?: number\n /**\n * Time slots (default: [])\n * @example\n * ```ts\n * [\n * { name: 'Morning', startHour: 5 },\n * { name: 'Afternoon', startHour: 12 },\n * { name: 'Evening', startHour: 18 },\n * { name: 'Night', startHour: 22 }\n * ]\n */\n timeSlots?: ITimeStlot[]\n /**\n * Week length (default: 7)\n */\n weekLength?: number\n /**\n * Weekend start day. For example, if the real life weekend starts on Saturday, then the value should be 6 (default: weekLength - 1)\n */\n weekendStartDay?: number\n /**\n * Week days names (default: [])\n * @example\n * ```ts\n * ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']\n * ```\n */\n weekDaysNames?: string[]\n}\n\ninterface ITimeData {\n currentHour?: number\n currentDay?: number\n}\n\nexport interface ITimeStlot {\n name: string\n startHour: number\n}\n\nexport default class TimeManager {\n private constructor() { }\n private static editSettings(settings: TimeSettings) {\n let data: any = {}\n if (typeof settings.minDayHours === 'number') {\n data['minDayHours'] = settings.minDayHours\n }\n if (typeof settings.maxDayHours === 'number') {\n data['maxDayHours'] = settings.maxDayHours\n }\n if (typeof settings.minDayHours === 'number') {\n data['defaultTimeSpent'] = settings.defaultTimeSpent\n }\n if (Array.isArray(settings.timeSlots)) {\n data['timeSlots'] = settings.timeSlots\n }\n if (typeof settings.weekLength === 'number') {\n data['weekLength'] = settings.weekLength\n }\n if (typeof settings.weekendStartDay === 'number') {\n let weekLength = settings.weekLength || TimeManager.weekLength\n if (settings.weekendStartDay >= weekLength) {\n console.warn(`[NQTR] Weekend start day should be less than week length ${weekLength}`)\n }\n data['weekendStartDay'] = settings.weekendStartDay\n }\n if (Array.isArray(settings.weekDaysNames)) {\n let weekLength = settings.weekLength || TimeManager.weekLength\n if (settings.weekDaysNames.length !== weekLength) {\n console.warn(`[NQTR] Week days names should be equal to week length ${weekLength}`)\n }\n data['weekDaysNames'] = settings.weekDaysNames\n }\n GameStorageManager.setVariable(TIME_SETTINGS_KEY, data)\n }\n /**\n * Get time settings\n */\n static get settings(): TimeSettings {\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY) || {}\n return settings\n }\n /**\n * Set time settings, Is very important to set the settings before using the nqtr library, bacause more of the features are based on the time settings.\n */\n static set settings(value: TimeSettings) {\n TimeManager.editSettings(value)\n }\n static get minDayHours(): number {\n let result = 0\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('minDayHours')) {\n result = settings.minDayHours || 0\n }\n return result\n }\n static get maxDayHours(): number {\n let result = 24\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('maxDayHours')) {\n result = settings.maxDayHours || 24\n }\n return result\n }\n static get defaultTimeSpent(): number {\n let result = 1\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('defaultTimeSpent')) {\n result = settings.defaultTimeSpent || 1\n }\n return result\n }\n static get timeSlots(): ITimeStlot[] {\n let result: ITimeStlot[] = []\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('timeSlots')) {\n result = settings.timeSlots || []\n }\n return result\n }\n static get weekLength(): number {\n let result = 7\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('weekLength')) {\n result = settings.weekLength || 7\n }\n return result\n }\n static get weekendStartDay(): number {\n let result = TimeManager.weekLength - 1\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('weekendStartDay')) {\n result = settings.weekendStartDay || TimeManager.weekLength - 1\n }\n return result\n }\n static get weekDaysNames(): string[] {\n let result: string[] = []\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('weekDaysNames')) {\n result = settings.weekDaysNames || result\n }\n return result\n }\n\n /**\n * Get the current hour\n */\n static get currentHour(): number {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (data.hasOwnProperty('currentHour') && typeof data.currentHour === 'number') {\n return data.currentHour\n }\n return TimeManager.minDayHours\n }\n static set currentHour(value: number | undefined) {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (typeof value === 'number') {\n data.currentHour = value\n } else {\n delete data.currentHour\n }\n GameStorageManager.setVariable(TIME_DATA_KEY, data)\n }\n /**\n * Get the current day\n */\n static get currentDay(): number {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (data.hasOwnProperty('currentDay') && typeof data.currentDay === 'number') {\n return data.currentDay\n }\n return 0\n }\n static set currentDay(value: number | undefined) {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (typeof value === 'number') {\n data.currentDay = value\n }\n else {\n delete data.currentDay\n }\n GameStorageManager.setVariable(TIME_DATA_KEY, data)\n }\n /**\n * If the current day is greater than or equal to the weekend start day, then it will return true.\n */\n static get isWeekend(): boolean {\n return TimeManager.currentWeekDayNumber >= TimeManager.weekendStartDay\n }\n /**\n * Get the current week day number (1-TimeManager.weekLength).\n * For example, if the week length is 7 and the current day is 10, then the result will be 4.\n */\n static get currentWeekDayNumber(): number {\n let result = TimeManager.currentDay % TimeManager.weekLength\n return result + 1\n }\n /**\n * Get the current week day name. If the week days names are not defined, then it will return undefined.\n * For example, if the week days names are ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] and the current day is 10, then the result will be 'Thursday'.\n */\n static get currentDayName(): string | undefined {\n let weekDayNumber = TimeManager.currentWeekDayNumber - 1\n if (weekDayNumber >= TimeManager.weekDaysNames.length) {\n console.warn(`[NQTR] Week day name is not defined for day ${weekDayNumber}`, TimeManager.weekDaysNames)\n return undefined\n }\n return TimeManager.weekDaysNames[weekDayNumber]\n }\n /**\n * Get the current TimeManager.timeSlots index.\n * You can use this property to create \"Image that changes based on the time period\":\n * @example\n * ```ts\n * import { TimeManager } from '@drincs/nqtr';\n * \n * function changeBackground() {\n * return (\n * <img src={`background-${TimeManager.currentTimeSlot}.png`} />\n * )\n * }\n */\n static get currentTimeSlots(): number {\n if (TimeManager.timeSlots.length === 0) {\n console.warn('[NQTR] Time slots are not defined')\n return 0\n }\n TimeManager.timeSlots.forEach((slot, index) => {\n if (TimeManager.timeSlots.length > index + 1) {\n if (TimeManager.nowIsBetween(slot.startHour, TimeManager.timeSlots[index + 1].startHour)) {\n return index\n }\n }\n })\n return 0\n }\n\n /**\n * This function will increase the current hour by the given time spent.\n * If the new hour is greater than or equal to the max day hours, then it will increase the day and set the new hour.\n * @param timeSpent is the time spent in hours (default: TimeManager.defaultTimeSpent)\n * @returns TimeManager.currentHour\n */\n static increaseHour(timeSpent: number = TimeManager.defaultTimeSpent): number {\n let newHour = TimeManager.currentHour + timeSpent\n if (newHour >= TimeManager.maxDayHours) {\n TimeManager.increaseDay()\n newHour = TimeManager.minDayHours + (newHour - TimeManager.maxDayHours)\n }\n TimeManager.currentHour = newHour\n return TimeManager.currentHour\n }\n\n /**\n * This function will increase the current day by the given days.\n * @param newDayHour is the hour of the new day (default: TimeManager.minDayHours)\n * @param days is the number of days to increase (default: 1)\n * @returns TimeManager.currentDay\n */\n static increaseDay(newDayHour: number = TimeManager.minDayHours, days: number = 1): number {\n let newDay = TimeManager.currentDay + days\n TimeManager.currentDay = newDay\n TimeManager.currentHour = newDayHour\n return TimeManager.currentDay\n }\n\n /**\n * This function will check if the current hour is between the given hours.\n * @param fromHour the starting hour. If the TimeManager.currentHour is equal to this hour, the function will return true.\n * @param toHour the ending hour.\n * @returns true if the current hour is between the given hours, otherwise false.\n */\n static nowIsBetween(fromHour: number, toHour: number): boolean {\n let currentHour = TimeManager.currentHour\n if (fromHour < toHour) {\n return currentHour >= fromHour && currentHour < toHour\n }\n return currentHour >= fromHour || currentHour < toHour\n }\n}\n","import { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { getRoomByLocation } from \"../../decorators/RoomDecorator\";\nimport { GraphicItemType } from \"../../types/GraphicItem\";\nimport MapBaseModel from \"./Map\";\nimport RoomBaseModel from \"./Room\";\n\nconst LOCATION_CATEGORY = \"__nqtr-location__\"\n\nexport interface LocationBaseModelProps {\n /**\n * The name\n */\n name?: string\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an HTMLElement or a Pixi'VN CanvasItem\n */\n iconElement?: GraphicItemType\n}\n\nexport default class LocationBaseModel<TMap extends MapBaseModel = MapBaseModel> extends StoredClassModel {\n constructor(id: string, map: TMap, props: LocationBaseModelProps) {\n super(LOCATION_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._iconElement = props.iconElement\n this._map = map\n }\n getEntrance<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined {\n let rooms = getRoomByLocation<TRoom>(this)\n if (rooms.length === 0) {\n return\n }\n return rooms.find(room => room.isEntrance) || rooms[0]\n }\n\n private defaultName: string\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultDisabled: boolean | string\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 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 _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n private _map: TMap\n get map(): TMap {\n return this._map\n }\n}\n","import { LocationBaseModel, RoomBaseModel } from \"../classes/navigation\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\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\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\nexport function getRoomByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location === location) as TRoom[]\n}\n","import { getFlag, StoredClassModel } from \"@drincs/pixi-vn\"\nimport { GraphicItemType } from \"../../types/GraphicItem\"\n\nconst MAP_CATEGORY = \"__nqtr-map__\"\n\nexport interface MapBaseModelProps<TMap extends MapBaseModel = MapBaseModel> {\n /**\n * The name\n */\n name?: string\n /**\n * The image. It can be a string, an HTMLElement 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 */\n image?: GraphicItemType | { [key: string]: GraphicItemType }\n /**\n * The neighboring maps that are available in this map.\n * @example\n * ```ts\n * {\n * \"north\": atlantaMap,\n * \"south\": miamiMap,\n * \"east\": savannahMap,\n * \"west\": birminghamMap\n * }\n * ```\n */\n neighboringMaps?: { [key: string]: TMap }\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n}\n\nexport default class MapBaseModel extends StoredClassModel {\n constructor(id: string, props: MapBaseModelProps) {\n super(MAP_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this.defaultImage = props.image\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n }\n\n private defaultName: string\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultImage?: GraphicItemType | { [key: string]: GraphicItemType }\n get image(): GraphicItemType | { [key: string]: GraphicItemType } | undefined {\n return this.getStorageProperty<GraphicItemType>(\"image\") || this.defaultImage\n }\n set image(value: GraphicItemType | { [key: string]: GraphicItemType } | undefined) {\n this.setStorageProperty(\"image\", value)\n }\n\n private defaultDisabled: boolean | string\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 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","import { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { getActivityById } from \"../../decorators\";\nimport { getCurrentCommitments } from \"../../functions/RoutineFunctions\";\nimport { GraphicItemType } from \"../../types/GraphicItem\";\nimport ActivityModel, { ActivityProps } from \"../Activity\";\nimport CommitmentBaseModel from \"../Commitment\";\nimport { ActivityRoom } from \"./ActivityRoom\";\nimport LocationBaseModel from \"./Location\";\n\nexport const ROOM_CATEGORY = \"__nqtr-room__\"\n\ninterface RoomActivityMemory { [key: string]: ActivityProps }\n\nexport interface RoomBaseModelProps {\n /**\n * The name\n */\n name?: string\n /**\n * The image. It can be a string, an HTMLElement 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 */\n image?: GraphicItemType | { [key: string]: GraphicItemType }\n /**\n * The activities that are available in this room.\n */\n defaultActivities?: ActivityModel[],\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an HTMLElement or a Pixi'VN CanvasItem\n */\n iconElement?: GraphicItemType\n /**\n * Whether is an entrance room, so when the player enters in the location, it will be the first room to be shown.\n */\n isEntrance?: boolean\n}\n\nexport default class RoomBaseModel<TLocation extends LocationBaseModel = LocationBaseModel> extends StoredClassModel {\n constructor(id: string, location: TLocation, props: RoomBaseModelProps) {\n super(ROOM_CATEGORY, id)\n this._location = location\n this.defaultName = props.name || \"\"\n this.defaultImage = props.image\n this.defaultActivityIds = props.defaultActivities?.map(activity => activity.id) || []\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._iconElement = props.iconElement\n this._isEntrance = props.isEntrance\n }\n\n private _location: TLocation\n get location(): TLocation {\n return this._location\n }\n\n private _isEntrance?: boolean\n get isEntrance(): boolean {\n return this._isEntrance || false\n }\n\n private defaultName: string\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultImage?: GraphicItemType | { [key: string]: GraphicItemType }\n get image(): GraphicItemType | { [key: string]: GraphicItemType } | undefined {\n return this.getStorageProperty<GraphicItemType>(\"image\") || this.defaultImage\n }\n set image(value: GraphicItemType | { [key: string]: GraphicItemType } | undefined) {\n this.setStorageProperty(\"image\", value)\n }\n\n private defaultActivityIds: string[]\n get defaultActivities(): ActivityRoom<this>[] {\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n let activities = this.defaultActivityIds.map(id => {\n let activity = getActivityById(id)\n if (!activity) {\n console.warn(`[NQTR] Activity with id ${id} not found, so it will be ignored.`)\n return undefined\n }\n let memory = activity.export()\n if (roomMemories && roomMemories[id]) {\n memory = {\n ...memory,\n ...roomMemories[id]\n }\n }\n return new ActivityRoom(id, this, activity.onRun, memory)\n }).filter(activity => activity !== undefined)\n return activities as ActivityRoom<this>[]\n }\n\n get activityIds(): string[] {\n let addedActivityIds = this.getStorageProperty<string[]>(`addedActivityIds`) || []\n return this.defaultActivityIds.concat(addedActivityIds)\n }\n get activities(): ActivityRoom<this>[] {\n let activities = this.activityIds.map(id => {\n return this.getActivity(id)\n }).filter(activity => activity !== undefined)\n return activities as ActivityRoom<this>[]\n }\n getActivityMemory(id: string): object | undefined {\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n let roomMemory = roomMemories[id] || {}\n return roomMemory\n }\n getActivity(id: string): ActivityRoom<this> | undefined {\n if (!this.activityIds.includes(id)) {\n console.error(`[NQTR] Activity with id ${id} not found in room ${this.id}`)\n return undefined\n }\n let activity = getActivityById(id)\n if (!activity) {\n console.error(`[NQTR] Activity with id ${id} not found`)\n return undefined\n }\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n let roomMemory = roomMemories[id] || {}\n roomMemory = {\n ...activity.export(),\n ...roomMemory\n }\n return new ActivityRoom(id, this, activity.onRun, roomMemory)\n }\n setActivity(activity: ActivityRoom) {\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n roomMemories[activity.id] = activity.export()\n this.setStorageProperty(\"activities_memory\", roomMemories)\n }\n addActivity(activity: ActivityModel) {\n if (this.activityIds.includes(activity.id)) {\n let currentActivity = this.getActivity(activity.id)\n if (currentActivity && currentActivity.isExpired()) {\n this.removeActivity(activity.id)\n return\n } else {\n console.error(`[NQTR] Activity with id ${activity.id} already exists in room ${this.id}, so it will be ignored.`)\n return\n }\n }\n let addedActivityIds = this.getStorageProperty<string[]>(`addedActivityIds`) || []\n addedActivityIds.push(activity.id)\n this.setStorageProperty(\"addedActivityIds\", addedActivityIds)\n }\n removeActivity(activity: ActivityModel | string) {\n let activityId = typeof activity === \"string\" ? activity : activity.id\n if (this.defaultActivityIds.includes(activityId)) {\n console.warn(`[NQTR] Activity with id ${activityId} is a default activity, so it can't be removed. It will be hidden instead.`)\n let activityToEdit = this.getActivity(activityId)\n if (!activityToEdit) {\n console.error(`[NQTR] Activity with id ${activityId} not found, so it can't be hidden.`)\n return\n }\n activityToEdit.hidden = true\n return\n }\n let addedActivityIds = this.getStorageProperty<string[]>(`addedActivityIds`) || []\n let index = addedActivityIds.indexOf(activityId)\n if (index === -1) {\n console.error(`[NQTR] Activity with id ${activityId} not found, so it can't be removed.`)\n return\n }\n addedActivityIds.splice(index, 1)\n this.setStorageProperty(\"addedActivityIds\", addedActivityIds)\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n delete roomMemories[activityId]\n this.setStorageProperty(\"activities_memory\", roomMemories)\n }\n clearExpiredActivities() {\n this.activities.forEach(activity => {\n if (activity.isExpired()) {\n this.removeActivity(activity.id)\n }\n })\n }\n\n private defaultDisabled: boolean | string\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 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 _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n getRoutine<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n let commitments = getCurrentCommitments<TCommitment>()\n return commitments.filter(c => c.room.id === this.id)\n }\n}\n","import { ActivityModel } from \"../classes\"\n\nexport const registeredActivities: { [id: string]: ActivityModel } = {}\n\nexport function saveActivity(activity: ActivityModel | ActivityModel[]) {\n if (Array.isArray(activity)) {\n activity.forEach(c => saveActivity(c))\n return\n }\n if (registeredActivities[activity.id]) {\n console.warn(`[NQTR] Activity id ${activity.id} already exists, it will be overwritten`)\n }\n registeredActivities[activity.id] = activity\n}\n\nexport function getActivityById(id: string): ActivityModel | undefined {\n try {\n let activity = registeredActivities[id]\n if (!activity) {\n console.error(`[NQTR] Activity ${id} not found`)\n return\n }\n return activity as ActivityModel\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Activity ${id}`, e)\n return\n }\n}\n","import { GameStorageManager } from \"@drincs/pixi-vn\"\nimport CommitmentBaseModel from \"../classes/Commitment\"\n\nconst TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY = \"___nqtr-temporary_commitment___\"\nexport const registeredCommitments: { [id: string]: CommitmentBaseModel } = {}\nexport const fixedCommitments: { [id: string]: CommitmentBaseModel } = {}\n\nexport function saveCommitment<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(commitment: TCommitment | TCommitment[]) {\n if (Array.isArray(commitment)) {\n commitment.forEach(c => saveCommitment(c))\n return\n }\n if (registeredCommitments[commitment.id]) {\n console.warn(`[NQTR] Commitment id ${commitment.id} already exists, it will be overwritten`)\n }\n registeredCommitments[commitment.id] = commitment\n}\n\nexport function getCommitmentById<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(id: string): TCommitment | undefined {\n try {\n let commitment = registeredCommitments[id]\n if (!commitment) {\n console.error(`[NQTR] Commitment ${id} not found`)\n return\n }\n return commitment as TCommitment\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Commitment ${id}`, e)\n return\n }\n}\n\nexport function setFixedCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(commitments: TCommitment[] | TCommitment) {\n if (Array.isArray(commitments)) {\n commitments.forEach(c => saveCommitment(c))\n return\n }\n if (registeredCommitments[commitments.id]) {\n console.warn(`[NQTR] Commitment id ${commitments.id} already exists, it will be overwritten`)\n }\n registeredCommitments[commitments.id] = commitments\n}\n\nexport function addTemporaryCommitment<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(commitment: TCommitment[] | TCommitment) {\n if (!Array.isArray(commitment)) {\n commitment = [commitment]\n }\n let commitmentsIds = commitment.map(commitment => {\n let commitmentTest = getCommitmentById(commitment.id)\n if (!commitmentTest) {\n console.warn(`[NQTR] Commitment ${commitment.id} not found, it will be ignored`)\n return undefined\n }\n return commitment.id\n }).filter(id => id !== undefined)\n\n GameStorageManager.setVariable(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY, [commitmentsIds])\n}\n\nexport function getFixedCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n return Object.values(fixedCommitments) as TCommitment[]\n}\n\nexport function getTemporaryCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n let commitmentsIds = GameStorageManager.getVariable<string[]>(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY)\n if (!commitmentsIds) {\n return []\n }\n let commitments = commitmentsIds.map(id => getCommitmentById<TCommitment>(id)).filter(commitment => commitment !== undefined)\n return commitments as TCommitment[]\n}\n","import { CharacterBaseModel } from \"@drincs/pixi-vn\";\nimport CommitmentBaseModel from \"../classes/Commitment\";\nimport { getFixedCommitments, getTemporaryCommitments } from \"../decorators\";\nimport { registeredCommitments } from \"../decorators/CommitmentDecorator\";\n\nexport function clearExpiredRoutine() {\n Object.entries(registeredCommitments).forEach(([_, commitment]) => {\n if (commitment.isExpired()) {\n delete registeredCommitments[commitment.id]\n }\n })\n}\n\nexport function getCurrentCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n let character_commitments: { [character: string]: TCommitment } = {}\n let oltherCommitments: TCommitment[] = []\n getTemporaryCommitments<TCommitment>().reverse().forEach(c => {\n if (!c.hidden) {\n if (c.characters.length > 1) {\n // all the characters don't already have commitments\n let allAvailable = c.characters.every(ch => !character_commitments[ch.id])\n if (allAvailable) {\n c.characters.forEach(ch => {\n character_commitments[ch.id] = c\n })\n }\n }\n else {\n oltherCommitments.push(c)\n }\n }\n })\n getFixedCommitments<TCommitment>().reverse().forEach(c => {\n if (!c.hidden) {\n if (c.characters.length > 1) {\n c.characters.forEach(ch => {\n if (!character_commitments[ch.id]) {\n character_commitments[ch.id] = c\n }\n })\n }\n else {\n oltherCommitments.push(c)\n }\n }\n })\n return Object.values(character_commitments).concat(oltherCommitments)\n}\n\nexport function getCommitmentByCharacter<TCommitment extends CommitmentBaseModel = CommitmentBaseModel, TCharacter extends CharacterBaseModel = CharacterBaseModel>(character: TCharacter): TCommitment | undefined {\n getCurrentCommitments().forEach(c => {\n if (c.characters.map(ch => ch.id).includes(character.id)) {\n return c\n }\n })\n return undefined\n}\n","import ActivityModel, { ActivityProps, ActivityStoredAbstract } from \"../Activity\";\nimport RoomBaseModel from \"./Room\";\n\nexport class ActivityRoom<TRoom extends RoomBaseModel = RoomBaseModel> extends ActivityStoredAbstract {\n constructor(id: string, room: TRoom, onRun: (activity: ActivityModel) => void, props: ActivityProps) {\n super(onRun, props)\n this._id = id\n this._room = room\n }\n setStorageProperty<T>(_: string, __: T | undefined): void {\n this._room.setActivity(this)\n }\n getStorageProperty<T>(propertyName: string): T | undefined {\n let activity = this._room.getActivityMemory(this.id)\n if (!activity || !activity.hasOwnProperty(propertyName)) {\n return undefined\n }\n return (activity as any)[propertyName]\n }\n private _id: string;\n get id(): string {\n return this._id;\n }\n private _room: TRoom;\n get room(): TRoom {\n return this._room;\n }\n\n export(): object {\n let result: any = {}\n if (this.name !== undefined) {\n result[\"name\"] = this.name\n }\n if (this.fromHour !== undefined) {\n result[\"fromHour\"] = this.fromHour\n }\n if (this.toHour !== undefined) {\n result[\"toHour\"] = this.toHour\n }\n if (this.fromDay !== undefined) {\n result[\"fromDay\"] = this.fromDay\n }\n if (this.toDay !== undefined) {\n result[\"toDay\"] = this.toDay\n }\n if (this.disabled !== undefined) {\n result[\"disabled\"] = this.disabled\n }\n return result\n }\n}\n","export interface GoalProps {\n description: string\n need?: number\n have?: number\n}\n\nexport interface IGoal {\n description: string\n need: number\n have: number\n}\n\nexport default class Goal implements IGoal {\n constructor(props: GoalProps) {\n this._description = props.description\n this.need = props.need || 1\n this.have = props.have || 0\n }\n private _description: string\n get description(): string {\n return this._description\n }\n need: number\n have: number\n get isComplete(): boolean {\n return this.have >= this.need\n }\n setComplete(): void {\n this.have = this.need\n }\n find(): void {\n this.have++\n }\n get export(): IGoal {\n return {\n description: this.description,\n need: this.need,\n have: this.have\n }\n }\n}\n","import { StoredClassModel } from \"@drincs/pixi-vn\";\nimport StageBaseModel from \"./Stage\";\n\nconst QUEST_CATEGORY = \"__nqtr-quest__\"\n\nexport interface QuestBaseModelProps {\n name?: string\n description?: string\n icon?: string\n image?: string\n isInDevelopment?: boolean\n}\n\nexport default class QuestBaseModel<TStage extends StageBaseModel = StageBaseModel> extends StoredClassModel {\n constructor(id: string, stages: TStage[], props: QuestBaseModelProps) {\n super(QUEST_CATEGORY, id)\n this._stages = stages\n this._name = props.name || \"\"\n this._description = props.description || \"\"\n this._icon = props.icon || \"\"\n this._image = props.image || \"\"\n this._isInDevelopment = props.isInDevelopment || false\n }\n private _stages: TStage[]\n get stages(): TStage[] {\n return this._stages\n }\n\n private _name: string\n get name(): string {\n return this._name\n }\n\n private _description: string\n get description(): string {\n return this._description\n }\n\n private _icon: string\n get icon(): string {\n return this._icon\n }\n\n private _image: string\n get image(): string {\n return this._image\n }\n\n private _isInDevelopment: boolean\n get isInDevelopment(): boolean {\n return this._isInDevelopment\n }\n}\n","import { StoredClassModel } from \"@drincs/pixi-vn\";\nimport { QuestsRequiredType } from \"../../types/QuestsRequired\";\nimport Goal, { IGoal } from \"./Goal\";\n\nconst STAGE_CATEGORY = \"__nqtr-stage__\"\n\nexport interface StageBaseModelProps {\n goals?: Goal[]\n name?: string\n description?: string\n adviceDescription?: string\n image?: string\n daysRequiredToStart: number\n flagsRequired: string[]\n questsRequired: QuestsRequiredType[]\n requestDescription?: string\n onStart: () => void\n onEnd: () => void\n}\n\nexport default class StageBaseModel extends StoredClassModel {\n constructor(id: string, props: StageBaseModelProps) {\n super(STAGE_CATEGORY, id)\n this._name = props.name || \"\"\n this._description = props.description || \"\"\n this._adviceDescription = props.adviceDescription || \"\"\n this._image = props.image || \"\"\n this._daysRequiredToStart = props.daysRequiredToStart\n this._flagsRequired = props.flagsRequired\n this._questsRequired = props.questsRequired\n this._requestDescription = props.requestDescription || \"\"\n this._onStart = props.onStart\n this._onEnd = props.onEnd\n }\n\n\n private _completed: boolean = false\n get completed(): boolean {\n return this._completed\n }\n\n private _active: boolean = false\n get active(): boolean {\n return this._active\n }\n\n private defaultGoals: Goal[] = []\n get goals(): Goal[] {\n let list = this.getStorageProperty<IGoal[]>('goals')\n if (!list) {\n return this.defaultGoals\n }\n return list.map(goal => new Goal(goal))\n }\n set goals(value: Goal[]) {\n let list = value.map(goal => goal.export)\n this.setStorageProperty('goals', list)\n }\n\n private _name: string\n get name(): string {\n return this._name\n }\n\n private _description: string\n get description(): string {\n return this._description\n }\n\n private _adviceDescription: string\n get adviceDescription(): string {\n return this._adviceDescription\n }\n\n private _image: string\n get image(): string {\n return this._image\n }\n\n private _daysRequiredToStart: number\n get daysRequiredToStart(): number {\n return this._daysRequiredToStart\n }\n\n private _flagsRequired: string[]\n get flagsRequired(): string[] {\n return this._flagsRequired\n }\n\n private _questsRequired: QuestsRequiredType[]\n get questsRequired(): QuestsRequiredType[] {\n return this._questsRequired\n }\n\n private _requestDescription: string\n get requestDescription(): string {\n return this._requestDescription\n }\n\n private _onStart: () => void\n get onStart(): () => void {\n return this._onStart\n }\n\n private _onEnd: () => void\n get onEnd(): () => void {\n return this._onEnd\n }\n}\n","export enum ExecutionTypeEnum {\n AUTOMATIC = \"automatic\",\n INTERACTION = \"interaction\",\n}\n","import { GameStorageManager } from \"@drincs/pixi-vn\";\nimport { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes/navigation\";\nimport { getRoomById } from \"../decorators/RoomDecorator\";\n\nconst CURRENT_ROOM_MEMORY_KEY = '___nqtr-current_room_memory___';\n\nexport function setCurrentRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom) {\n let roomRegistrated = getRoomById(room.id);\n if (!roomRegistrated) {\n console.error(`[NQTR] The room ${room.id} is not registered, so it can't be set as current room`);\n return;\n }\n localStorage.setItem(CURRENT_ROOM_MEMORY_KEY, room.id);\n}\n\nexport function getCurrentRoom<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined {\n let roomId = GameStorageManager.getVariable<string>(CURRENT_ROOM_MEMORY_KEY);\n if (!roomId) {\n console.error(`[NQTR] The current room has not yet been set`);\n return\n }\n let room = getRoomById<TRoom>(roomId);\n if (!room) {\n console.error(`[NQTR] Current room ${roomId} not found`);\n return\n }\n return room\n}\n\nexport function getCurrenrLocation<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation | undefined {\n let room = getCurrentRoom<RoomBaseModel<TLocation>>();\n if (!room) {\n return\n }\n return room.location\n}\n\nexport function getCueerntMap<TMap extends MapBaseModel = MapBaseModel>(): TMap | undefined {\n let location = getCurrenrLocation<LocationBaseModel<TMap>>();\n if (!location) {\n return\n }\n return location.map\n}\n","import { ActivityRoom } from \"../classes/navigation/ActivityRoom\"\nimport { registeredRooms } from \"../decorators/RoomDecorator\"\nimport { getCurrentRoom } from \"./NavigationFunctions\"\n\nexport function clearExpiredActivities() {\n Object.entries(registeredRooms).forEach(([_, room]) => {\n room.clearExpiredActivities()\n })\n}\n\nexport function currentActivities(): ActivityRoom[] {\n let currentRoom = getCurrentRoom()\n if (!currentRoom) {\n return []\n }\n return currentRoom.activities.filter(activity => !activity.hidden)\n}\n"],"mappings":"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","names":["import_pixi_vn","import_pixi_vn","import_pixi_vn","import_pixi_vn","import_pixi_vn","commitment","import_pixi_vn","import_pixi_vn","ExecutionTypeEnum","import_pixi_vn"]}
package/dist/index.mjs CHANGED
@@ -434,22 +434,53 @@ var ActivityModel = class {
434
434
 
435
435
  // src/classes/navigation/Location.ts
436
436
  import { getFlag as getFlag2, StoredClassModel } from "@drincs/pixi-vn";
437
+
438
+ // src/decorators/RoomDecorator.ts
439
+ var registeredRooms = {};
440
+ function saveRoom(room) {
441
+ if (Array.isArray(room)) {
442
+ room.forEach((c) => saveRoom(c));
443
+ return;
444
+ }
445
+ if (registeredRooms[room.id]) {
446
+ console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`);
447
+ }
448
+ registeredRooms[room.id] = room;
449
+ }
450
+ function getRoomById(id) {
451
+ try {
452
+ let room = registeredRooms[id];
453
+ if (!room) {
454
+ console.error(`[NQTR] Room ${id} not found`);
455
+ return;
456
+ }
457
+ return room;
458
+ } catch (e) {
459
+ console.error(`[NQTR] Error while getting Room ${id}`, e);
460
+ return;
461
+ }
462
+ }
463
+ function getRoomByLocation(location) {
464
+ return Object.values(registeredRooms).filter((room) => room.location === location);
465
+ }
466
+
467
+ // src/classes/navigation/Location.ts
437
468
  var LOCATION_CATEGORY = "__nqtr-location__";
438
469
  var LocationBaseModel = class extends StoredClassModel {
439
- constructor(id, map, entrance, props) {
470
+ constructor(id, map, props) {
440
471
  super(LOCATION_CATEGORY, id);
441
- if (entrance.location.id !== id) {
442
- throw new Error(`[NQTR] Entrance room ${entrance.id} is not in location ${id}`);
443
- }
444
- this._entrance = entrance;
445
472
  this.defaultName = props.name || "";
446
473
  this.defaultDisabled = props.disabled || false;
447
474
  this.defaultHidden = props.hidden || false;
448
475
  this._iconElement = props.iconElement;
449
476
  this._map = map;
450
477
  }
451
- get entrance() {
452
- return this._entrance;
478
+ getEntrance() {
479
+ let rooms = getRoomByLocation(this);
480
+ if (rooms.length === 0) {
481
+ return;
482
+ }
483
+ return rooms.find((room) => room.isEntrance) || rooms[0];
453
484
  }
454
485
  get name() {
455
486
  return this.getStorageProperty("name") || this.defaultName;
@@ -623,32 +654,6 @@ function getTemporaryCommitments() {
623
654
  return commitments;
624
655
  }
625
656
 
626
- // src/decorators/RoomDecorator.ts
627
- var registeredRooms = {};
628
- function saveRoom(room) {
629
- if (Array.isArray(room)) {
630
- room.forEach((c) => saveRoom(c));
631
- return;
632
- }
633
- if (registeredRooms[room.id]) {
634
- console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`);
635
- }
636
- registeredRooms[room.id] = room;
637
- }
638
- function getRoomById(id) {
639
- try {
640
- let room = registeredRooms[id];
641
- if (!room) {
642
- console.error(`[NQTR] Room ${id} not found`);
643
- return;
644
- }
645
- return room;
646
- } catch (e) {
647
- console.error(`[NQTR] Error while getting Room ${id}`, e);
648
- return;
649
- }
650
- }
651
-
652
657
  // src/functions/RoutineFunctions.ts
653
658
  function clearExpiredRoutine() {
654
659
  Object.entries(registeredCommitments).forEach(([_, commitment]) => {
@@ -758,10 +763,14 @@ var RoomBaseModel = class extends StoredClassModel3 {
758
763
  this.defaultDisabled = props.disabled || false;
759
764
  this.defaultHidden = props.hidden || false;
760
765
  this._iconElement = props.iconElement;
766
+ this._isEntrance = props.isEntrance;
761
767
  }
762
768
  get location() {
763
769
  return this._location;
764
770
  }
771
+ get isEntrance() {
772
+ return this._isEntrance || false;
773
+ }
765
774
  get name() {
766
775
  return this.getStorageProperty("name") || this.defaultName;
767
776
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/classes/Activity.ts","../src/managers/TimeManager.ts","../src/classes/navigation/Location.ts","../src/classes/navigation/Map.ts","../src/classes/navigation/Room.ts","../src/decorators/ActivityDecorator.ts","../src/decorators/CommitmentDecorator.ts","../src/decorators/RoomDecorator.ts","../src/functions/RoutineFunctions.ts","../src/classes/navigation/ActivityRoom.ts","../src/classes/quest/Goal.ts","../src/classes/quest/Quest.ts","../src/classes/quest/Stage.ts","../src/enums/ExecutionTypeEnum.ts","../src/functions/NavigationFunctions.ts","../src/functions/ActivityFunctions.ts"],"sourcesContent":["import { getFlag } from \"@drincs/pixi-vn\";\nimport TimeManager from \"../managers/TimeManager\";\nimport { GraphicItemType } from \"../types/GraphicItem\";\n\nexport interface ActivityProps {\n /**\n * The name\n */\n name?: string\n /**\n * The hour when the activity starts. If the activity is not started yet, it will be hidden.\n * If you set 3, the activity will be hidden into hours 1 and 2, and will be shown from hour 3.\n */\n fromHour?: number\n /**\n * The hour when the activity ends. If the activity is ended yet, it will be hidden.\n * If you set 3, the activity will be shown into hours 1 and 2 and will be hidden from hour 3.\n */\n toHour?: number\n /**\n * The day when the activity starts. If the activity is not started yet, it will be hidden.\n * If you set 3, the activity will be hidden into days 1 and 2, and will be shown from day 3.\n */\n fromDay?: number\n /**\n * The day when the activity ends. If the activity is ended yet, it will be deleted or hidden.\n * If you set 3, the activity will be shown into days 1 and 2 and will be deleted or hidden from day 3.\n */\n toDay?: number\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an HTMLElement or a Pixi'VN CanvasItem\n */\n iconElement?: GraphicItemType\n}\n\nexport abstract class ActivityStoredAbstract {\n constructor(onRun: (activity: ActivityModel) => void, props: ActivityProps) {\n this.defaultName = props.name\n this.defaultFromHour = props.fromHour\n this.defaultToHour = props.toHour\n this.defaultFromDay = props.fromDay\n this.defaultToDay = props.toDay\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._iconElement = props.iconElement\n this._onRun = onRun\n }\n\n abstract setStorageProperty<T>(propertyName: string, value: T | undefined): void;\n abstract getStorageProperty<T>(propertyName: string): T | undefined;\n abstract get id(): string\n\n private defaultName?: string\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 defaultFromHour?: number\n get fromHour(): number {\n return this.getStorageProperty<number>(\"fromHour\") || this.defaultFromHour || TimeManager.minDayHours\n }\n set fromHour(value: number | undefined) {\n this.setStorageProperty(\"fromHour\", value)\n }\n\n private defaultToHour?: number\n get toHour(): number {\n return this.getStorageProperty<number>(\"toHour\") || this.defaultToHour || (TimeManager.maxDayHours + 1)\n }\n set toHour(value: number | undefined) {\n this.setStorageProperty(\"toHour\", value)\n }\n\n private defaultFromDay?: number\n get fromDay(): number | undefined {\n return this.getStorageProperty<number>(\"fromDay\") || this.defaultFromDay\n }\n set fromDay(value: number | undefined) {\n this.setStorageProperty(\"fromDay\", value)\n }\n\n private defaultToDay?: number\n get toDay(): number | undefined {\n return this.getStorageProperty<number>(\"toDay\") || this.defaultToDay\n }\n set toDay(value: number | undefined) {\n this.setStorageProperty(\"toDay\", value)\n }\n\n private defaultDisabled: boolean | string\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 get hidden(): boolean {\n if (this.fromDay && this.fromDay > TimeManager.currentDay) {\n return true\n }\n if (!TimeManager.nowIsBetween(this.fromHour, this.toHour)) {\n return true\n }\n if (!this.isExpired) {\n return true\n }\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 _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n private _onRun: (activity: ActivityModel) => void\n get onRun() {\n return this._onRun\n }\n\n isExpired(): boolean {\n if (this.toDay && this.toDay <= TimeManager.currentDay) {\n return true\n }\n return false\n }\n\n export(): ActivityProps {\n return {\n name: this.getStorageProperty<string>(\"name\") || this.defaultName,\n fromHour: this.getStorageProperty<number>(\"fromHour\") || this.defaultFromHour,\n toHour: this.getStorageProperty<number>(\"toHour\") || this.defaultToHour,\n fromDay: this.getStorageProperty<number>(\"fromDay\") || this.defaultFromDay,\n toDay: this.getStorageProperty<number>(\"toDay\") || this.defaultToDay,\n disabled: this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled,\n hidden: this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden,\n iconElement: this._iconElement\n }\n }\n}\n\nexport default class ActivityModel {\n constructor(id: string, onRun: (activity: ActivityModel) => void, props: ActivityProps) {\n this._id = id\n this._name = props.name\n this._fromHour = props.fromHour\n this._toHour = props.toHour\n this._fromDay = props.fromDay\n this._toDay = props.toDay\n this._disabled = props.disabled || false\n this._hidden = props.hidden || false\n this._iconElement = props.iconElement\n this._onRun = onRun\n }\n\n private _id: string\n get id(): string {\n return this._id\n }\n\n private _name?: string\n get name(): string | undefined {\n return this._name\n }\n\n private _fromHour?: number\n get fromHour(): number | undefined {\n return this._fromHour\n }\n\n private _toHour?: number\n get toHour(): number | undefined {\n return this._toHour\n }\n\n private _fromDay?: number\n get fromDay(): number | undefined {\n return this._fromDay\n }\n\n private _toDay?: number\n get toDay(): number | undefined {\n return this._toDay\n }\n\n private _disabled?: boolean | string\n get disabled(): boolean | undefined {\n if (typeof this._disabled === \"string\") {\n return getFlag(this._disabled)\n }\n return this._disabled\n }\n\n private _hidden: boolean | string\n get hidden(): boolean {\n if (this.fromDay && this.fromDay > TimeManager.currentDay) {\n return true\n }\n if (!this.isDeadline) {\n return true\n }\n if (typeof this._hidden === \"string\") {\n return getFlag(this._hidden)\n }\n return this._hidden\n }\n\n private _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n private _onRun: (activity: ActivityModel) => void\n get onRun() {\n return this._onRun\n }\n\n isDeadline(): boolean {\n if (this.toDay && this.toDay <= TimeManager.currentDay) {\n return true\n }\n return false\n }\n\n export(): ActivityProps {\n return {\n name: this._name,\n fromHour: this._fromHour,\n toHour: this._toHour,\n fromDay: this._fromDay,\n toDay: this._toDay,\n disabled: this._disabled,\n hidden: this._hidden,\n iconElement: this._iconElement,\n }\n }\n}\n","import { GameStorageManager } from \"@drincs/pixi-vn\";\n\nconst TIME_SETTINGS_KEY = '___nqtr-time_manager_settings___';\nconst TIME_DATA_KEY = '___nqtr-time_manager_data___';\n\n/**\n * Time Settings, which can be set using `TimeManager.editSettings`\n */\nexport interface TimeSettings {\n /**\n * Minimum hour of the day (default: 0)\n */\n minDayHours?: number\n /**\n * Maximum hour of the day (default: 24)\n */\n maxDayHours?: number\n /**\n * Default time spent (default: 1)\n */\n defaultTimeSpent?: number\n /**\n * Time slots (default: [])\n * @example\n * ```ts\n * [\n * { name: 'Morning', startHour: 5 },\n * { name: 'Afternoon', startHour: 12 },\n * { name: 'Evening', startHour: 18 },\n * { name: 'Night', startHour: 22 }\n * ]\n */\n timeSlots?: ITimeStlot[]\n /**\n * Week length (default: 7)\n */\n weekLength?: number\n /**\n * Weekend start day. For example, if the real life weekend starts on Saturday, then the value should be 6 (default: weekLength - 1)\n */\n weekendStartDay?: number\n /**\n * Week days names (default: [])\n * @example\n * ```ts\n * ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']\n * ```\n */\n weekDaysNames?: string[]\n}\n\ninterface ITimeData {\n currentHour?: number\n currentDay?: number\n}\n\nexport interface ITimeStlot {\n name: string\n startHour: number\n}\n\nexport default class TimeManager {\n private constructor() { }\n private static editSettings(settings: TimeSettings) {\n let data: any = {}\n if (typeof settings.minDayHours === 'number') {\n data['minDayHours'] = settings.minDayHours\n }\n if (typeof settings.maxDayHours === 'number') {\n data['maxDayHours'] = settings.maxDayHours\n }\n if (typeof settings.minDayHours === 'number') {\n data['defaultTimeSpent'] = settings.defaultTimeSpent\n }\n if (Array.isArray(settings.timeSlots)) {\n data['timeSlots'] = settings.timeSlots\n }\n if (typeof settings.weekLength === 'number') {\n data['weekLength'] = settings.weekLength\n }\n if (typeof settings.weekendStartDay === 'number') {\n let weekLength = settings.weekLength || TimeManager.weekLength\n if (settings.weekendStartDay >= weekLength) {\n console.warn(`[NQTR] Weekend start day should be less than week length ${weekLength}`)\n }\n data['weekendStartDay'] = settings.weekendStartDay\n }\n if (Array.isArray(settings.weekDaysNames)) {\n let weekLength = settings.weekLength || TimeManager.weekLength\n if (settings.weekDaysNames.length !== weekLength) {\n console.warn(`[NQTR] Week days names should be equal to week length ${weekLength}`)\n }\n data['weekDaysNames'] = settings.weekDaysNames\n }\n GameStorageManager.setVariable(TIME_SETTINGS_KEY, data)\n }\n /**\n * Get time settings\n */\n static get settings(): TimeSettings {\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY) || {}\n return settings\n }\n /**\n * Set time settings, Is very important to set the settings before using the nqtr library, bacause more of the features are based on the time settings.\n */\n static set settings(value: TimeSettings) {\n TimeManager.editSettings(value)\n }\n static get minDayHours(): number {\n let result = 0\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('minDayHours')) {\n result = settings.minDayHours || 0\n }\n return result\n }\n static get maxDayHours(): number {\n let result = 24\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('maxDayHours')) {\n result = settings.maxDayHours || 24\n }\n return result\n }\n static get defaultTimeSpent(): number {\n let result = 1\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('defaultTimeSpent')) {\n result = settings.defaultTimeSpent || 1\n }\n return result\n }\n static get timeSlots(): ITimeStlot[] {\n let result: ITimeStlot[] = []\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('timeSlots')) {\n result = settings.timeSlots || []\n }\n return result\n }\n static get weekLength(): number {\n let result = 7\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('weekLength')) {\n result = settings.weekLength || 7\n }\n return result\n }\n static get weekendStartDay(): number {\n let result = TimeManager.weekLength - 1\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('weekendStartDay')) {\n result = settings.weekendStartDay || TimeManager.weekLength - 1\n }\n return result\n }\n static get weekDaysNames(): string[] {\n let result: string[] = []\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('weekDaysNames')) {\n result = settings.weekDaysNames || result\n }\n return result\n }\n\n /**\n * Get the current hour\n */\n static get currentHour(): number {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (data.hasOwnProperty('currentHour') && typeof data.currentHour === 'number') {\n return data.currentHour\n }\n return TimeManager.minDayHours\n }\n static set currentHour(value: number | undefined) {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (typeof value === 'number') {\n data.currentHour = value\n } else {\n delete data.currentHour\n }\n GameStorageManager.setVariable(TIME_DATA_KEY, data)\n }\n /**\n * Get the current day\n */\n static get currentDay(): number {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (data.hasOwnProperty('currentDay') && typeof data.currentDay === 'number') {\n return data.currentDay\n }\n return 0\n }\n static set currentDay(value: number | undefined) {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (typeof value === 'number') {\n data.currentDay = value\n }\n else {\n delete data.currentDay\n }\n GameStorageManager.setVariable(TIME_DATA_KEY, data)\n }\n /**\n * If the current day is greater than or equal to the weekend start day, then it will return true.\n */\n static get isWeekend(): boolean {\n return TimeManager.currentWeekDayNumber >= TimeManager.weekendStartDay\n }\n /**\n * Get the current week day number (1-TimeManager.weekLength).\n * For example, if the week length is 7 and the current day is 10, then the result will be 4.\n */\n static get currentWeekDayNumber(): number {\n let result = TimeManager.currentDay % TimeManager.weekLength\n return result + 1\n }\n /**\n * Get the current week day name. If the week days names are not defined, then it will return undefined.\n * For example, if the week days names are ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] and the current day is 10, then the result will be 'Thursday'.\n */\n static get currentDayName(): string | undefined {\n let weekDayNumber = TimeManager.currentWeekDayNumber - 1\n if (weekDayNumber >= TimeManager.weekDaysNames.length) {\n console.warn(`[NQTR] Week day name is not defined for day ${weekDayNumber}`, TimeManager.weekDaysNames)\n return undefined\n }\n return TimeManager.weekDaysNames[weekDayNumber]\n }\n /**\n * Get the current TimeManager.timeSlots index.\n * You can use this property to create \"Image that changes based on the time period\":\n * @example\n * ```ts\n * import { TimeManager } from '@drincs/nqtr';\n * \n * function changeBackground() {\n * return (\n * <img src={`background-${TimeManager.currentTimeSlot}.png`} />\n * )\n * }\n */\n static get currentTimeSlots(): number {\n if (TimeManager.timeSlots.length === 0) {\n console.warn('[NQTR] Time slots are not defined')\n return 0\n }\n TimeManager.timeSlots.forEach((slot, index) => {\n if (TimeManager.timeSlots.length > index + 1) {\n if (TimeManager.nowIsBetween(slot.startHour, TimeManager.timeSlots[index + 1].startHour)) {\n return index\n }\n }\n })\n return 0\n }\n\n /**\n * This function will increase the current hour by the given time spent.\n * If the new hour is greater than or equal to the max day hours, then it will increase the day and set the new hour.\n * @param timeSpent is the time spent in hours (default: TimeManager.defaultTimeSpent)\n * @returns TimeManager.currentHour\n */\n static increaseHour(timeSpent: number = TimeManager.defaultTimeSpent): number {\n let newHour = TimeManager.currentHour + timeSpent\n if (newHour >= TimeManager.maxDayHours) {\n TimeManager.increaseDay()\n newHour = TimeManager.minDayHours + (newHour - TimeManager.maxDayHours)\n }\n TimeManager.currentHour = newHour\n return TimeManager.currentHour\n }\n\n /**\n * This function will increase the current day by the given days.\n * @param newDayHour is the hour of the new day (default: TimeManager.minDayHours)\n * @param days is the number of days to increase (default: 1)\n * @returns TimeManager.currentDay\n */\n static increaseDay(newDayHour: number = TimeManager.minDayHours, days: number = 1): number {\n let newDay = TimeManager.currentDay + days\n TimeManager.currentDay = newDay\n TimeManager.currentHour = newDayHour\n return TimeManager.currentDay\n }\n\n /**\n * This function will check if the current hour is between the given hours.\n * @param fromHour the starting hour. If the TimeManager.currentHour is equal to this hour, the function will return true.\n * @param toHour the ending hour.\n * @returns true if the current hour is between the given hours, otherwise false.\n */\n static nowIsBetween(fromHour: number, toHour: number): boolean {\n let currentHour = TimeManager.currentHour\n if (fromHour < toHour) {\n return currentHour >= fromHour && currentHour < toHour\n }\n return currentHour >= fromHour || currentHour < toHour\n }\n}\n","import { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { GraphicItemType } from \"../../types/GraphicItem\";\nimport MapBaseModel from \"./Map\";\nimport RoomBaseModel from \"./Room\";\n\nconst LOCATION_CATEGORY = \"__nqtr-location__\"\n\nexport interface LocationBaseModelProps {\n /**\n * The name\n */\n name?: string\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an HTMLElement or a Pixi'VN CanvasItem\n */\n iconElement?: GraphicItemType\n}\n\nexport default class LocationBaseModel<TMap extends MapBaseModel = MapBaseModel> extends StoredClassModel {\n constructor(id: string, map: TMap, entrance: RoomBaseModel, props: LocationBaseModelProps) {\n super(LOCATION_CATEGORY, id)\n if (entrance.location.id !== id) {\n throw new Error(`[NQTR] Entrance room ${entrance.id} is not in location ${id}`)\n }\n this._entrance = entrance\n this.defaultName = props.name || \"\"\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._iconElement = props.iconElement\n this._map = map\n }\n private _entrance: RoomBaseModel\n get entrance(): RoomBaseModel {\n return this._entrance\n }\n\n private defaultName: string\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultDisabled: boolean | string\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 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 _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n private _map: TMap\n get map(): TMap {\n return this._map\n }\n}\n","import { getFlag, StoredClassModel } from \"@drincs/pixi-vn\"\nimport { GraphicItemType } from \"../../types/GraphicItem\"\n\nconst MAP_CATEGORY = \"__nqtr-map__\"\n\nexport interface MapBaseModelProps<TMap extends MapBaseModel = MapBaseModel> {\n /**\n * The name\n */\n name?: string\n /**\n * The image. It can be a string, an HTMLElement 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 */\n image?: GraphicItemType | { [key: string]: GraphicItemType }\n /**\n * The neighboring maps that are available in this map.\n * @example\n * ```ts\n * {\n * \"north\": atlantaMap,\n * \"south\": miamiMap,\n * \"east\": savannahMap,\n * \"west\": birminghamMap\n * }\n * ```\n */\n neighboringMaps?: { [key: string]: TMap }\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n}\n\nexport default class MapBaseModel extends StoredClassModel {\n constructor(id: string, props: MapBaseModelProps) {\n super(MAP_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this.defaultImage = props.image\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n }\n\n private defaultName: string\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultImage?: GraphicItemType | { [key: string]: GraphicItemType }\n get image(): GraphicItemType | { [key: string]: GraphicItemType } | undefined {\n return this.getStorageProperty<GraphicItemType>(\"image\") || this.defaultImage\n }\n set image(value: GraphicItemType | { [key: string]: GraphicItemType } | undefined) {\n this.setStorageProperty(\"image\", value)\n }\n\n private defaultDisabled: boolean | string\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 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","import { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { getActivityById } from \"../../decorators\";\nimport { getCurrentCommitments } from \"../../functions/RoutineFunctions\";\nimport { GraphicItemType } from \"../../types/GraphicItem\";\nimport ActivityModel, { ActivityProps } from \"../Activity\";\nimport CommitmentBaseModel from \"../Commitment\";\nimport { ActivityRoom } from \"./ActivityRoom\";\nimport LocationBaseModel from \"./Location\";\n\nexport const ROOM_CATEGORY = \"__nqtr-room__\"\n\ninterface RoomActivityMemory { [key: string]: ActivityProps }\n\nexport interface RoomBaseModelProps {\n /**\n * The name\n */\n name?: string\n /**\n * The image. It can be a string, an HTMLElement 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 */\n image?: GraphicItemType | { [key: string]: GraphicItemType }\n /**\n * The activities that are available in this room.\n */\n defaultActivities?: ActivityModel[],\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an HTMLElement or a Pixi'VN CanvasItem\n */\n iconElement?: GraphicItemType\n}\n\nexport default class RoomBaseModel<TLocation extends LocationBaseModel = LocationBaseModel> extends StoredClassModel {\n constructor(id: string, location: TLocation, props: RoomBaseModelProps) {\n super(ROOM_CATEGORY, id)\n this._location = location\n this.defaultName = props.name || \"\"\n this.defaultImage = props.image\n this.defaultActivityIds = props.defaultActivities?.map(activity => activity.id) || []\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._iconElement = props.iconElement\n }\n\n private _location: TLocation\n get location(): TLocation {\n return this._location\n }\n\n private defaultName: string\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultImage?: GraphicItemType | { [key: string]: GraphicItemType }\n get image(): GraphicItemType | { [key: string]: GraphicItemType } | undefined {\n return this.getStorageProperty<GraphicItemType>(\"image\") || this.defaultImage\n }\n set image(value: GraphicItemType | { [key: string]: GraphicItemType } | undefined) {\n this.setStorageProperty(\"image\", value)\n }\n\n private defaultActivityIds: string[]\n get defaultActivities(): ActivityRoom<this>[] {\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n let activities = this.defaultActivityIds.map(id => {\n let activity = getActivityById(id)\n if (!activity) {\n console.warn(`[NQTR] Activity with id ${id} not found, so it will be ignored.`)\n return undefined\n }\n let memory = activity.export()\n if (roomMemories && roomMemories[id]) {\n memory = {\n ...memory,\n ...roomMemories[id]\n }\n }\n return new ActivityRoom(id, this, activity.onRun, memory)\n }).filter(activity => activity !== undefined)\n return activities as ActivityRoom<this>[]\n }\n\n get activityIds(): string[] {\n let addedActivityIds = this.getStorageProperty<string[]>(`addedActivityIds`) || []\n return this.defaultActivityIds.concat(addedActivityIds)\n }\n get activities(): ActivityRoom<this>[] {\n let activities = this.activityIds.map(id => {\n return this.getActivity(id)\n }).filter(activity => activity !== undefined)\n return activities as ActivityRoom<this>[]\n }\n getActivityMemory(id: string): object | undefined {\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n let roomMemory = roomMemories[id] || {}\n return roomMemory\n }\n getActivity(id: string): ActivityRoom<this> | undefined {\n if (!this.activityIds.includes(id)) {\n console.error(`[NQTR] Activity with id ${id} not found in room ${this.id}`)\n return undefined\n }\n let activity = getActivityById(id)\n if (!activity) {\n console.error(`[NQTR] Activity with id ${id} not found`)\n return undefined\n }\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n let roomMemory = roomMemories[id] || {}\n roomMemory = {\n ...activity.export(),\n ...roomMemory\n }\n return new ActivityRoom(id, this, activity.onRun, roomMemory)\n }\n setActivity(activity: ActivityRoom) {\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n roomMemories[activity.id] = activity.export()\n this.setStorageProperty(\"activities_memory\", roomMemories)\n }\n addActivity(activity: ActivityModel) {\n if (this.activityIds.includes(activity.id)) {\n let currentActivity = this.getActivity(activity.id)\n if (currentActivity && currentActivity.isExpired()) {\n this.removeActivity(activity.id)\n return\n } else {\n console.error(`[NQTR] Activity with id ${activity.id} already exists in room ${this.id}, so it will be ignored.`)\n return\n }\n }\n let addedActivityIds = this.getStorageProperty<string[]>(`addedActivityIds`) || []\n addedActivityIds.push(activity.id)\n this.setStorageProperty(\"addedActivityIds\", addedActivityIds)\n }\n removeActivity(activity: ActivityModel | string) {\n let activityId = typeof activity === \"string\" ? activity : activity.id\n if (this.defaultActivityIds.includes(activityId)) {\n console.warn(`[NQTR] Activity with id ${activityId} is a default activity, so it can't be removed. It will be hidden instead.`)\n let activityToEdit = this.getActivity(activityId)\n if (!activityToEdit) {\n console.error(`[NQTR] Activity with id ${activityId} not found, so it can't be hidden.`)\n return\n }\n activityToEdit.hidden = true\n return\n }\n let addedActivityIds = this.getStorageProperty<string[]>(`addedActivityIds`) || []\n let index = addedActivityIds.indexOf(activityId)\n if (index === -1) {\n console.error(`[NQTR] Activity with id ${activityId} not found, so it can't be removed.`)\n return\n }\n addedActivityIds.splice(index, 1)\n this.setStorageProperty(\"addedActivityIds\", addedActivityIds)\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n delete roomMemories[activityId]\n this.setStorageProperty(\"activities_memory\", roomMemories)\n }\n clearExpiredActivities() {\n this.activities.forEach(activity => {\n if (activity.isExpired()) {\n this.removeActivity(activity.id)\n }\n })\n }\n\n private defaultDisabled: boolean | string\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 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 _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n getRoutine<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n let commitments = getCurrentCommitments<TCommitment>()\n return commitments.filter(c => c.room.id === this.id)\n }\n}\n","import { ActivityModel } from \"../classes\"\n\nexport const registeredActivities: { [id: string]: ActivityModel } = {}\n\nexport function saveActivity(activity: ActivityModel | ActivityModel[]) {\n if (Array.isArray(activity)) {\n activity.forEach(c => saveActivity(c))\n return\n }\n if (registeredActivities[activity.id]) {\n console.warn(`[NQTR] Activity id ${activity.id} already exists, it will be overwritten`)\n }\n registeredActivities[activity.id] = activity\n}\n\nexport function getActivityById(id: string): ActivityModel | undefined {\n try {\n let activity = registeredActivities[id]\n if (!activity) {\n console.error(`[NQTR] Activity ${id} not found`)\n return\n }\n return activity as ActivityModel\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Activity ${id}`, e)\n return\n }\n}\n","import { GameStorageManager } from \"@drincs/pixi-vn\"\nimport CommitmentBaseModel from \"../classes/Commitment\"\n\nconst TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY = \"___nqtr-temporary_commitment___\"\nexport const registeredCommitments: { [id: string]: CommitmentBaseModel } = {}\nexport const fixedCommitments: { [id: string]: CommitmentBaseModel } = {}\n\nexport function saveCommitment<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(commitment: TCommitment | TCommitment[]) {\n if (Array.isArray(commitment)) {\n commitment.forEach(c => saveCommitment(c))\n return\n }\n if (registeredCommitments[commitment.id]) {\n console.warn(`[NQTR] Commitment id ${commitment.id} already exists, it will be overwritten`)\n }\n registeredCommitments[commitment.id] = commitment\n}\n\nexport function getCommitmentById<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(id: string): TCommitment | undefined {\n try {\n let commitment = registeredCommitments[id]\n if (!commitment) {\n console.error(`[NQTR] Commitment ${id} not found`)\n return\n }\n return commitment as TCommitment\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Commitment ${id}`, e)\n return\n }\n}\n\nexport function setFixedCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(commitments: TCommitment[] | TCommitment) {\n if (Array.isArray(commitments)) {\n commitments.forEach(c => saveCommitment(c))\n return\n }\n if (registeredCommitments[commitments.id]) {\n console.warn(`[NQTR] Commitment id ${commitments.id} already exists, it will be overwritten`)\n }\n registeredCommitments[commitments.id] = commitments\n}\n\nexport function addTemporaryCommitment<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(commitment: TCommitment[] | TCommitment) {\n if (!Array.isArray(commitment)) {\n commitment = [commitment]\n }\n let commitmentsIds = commitment.map(commitment => {\n let commitmentTest = getCommitmentById(commitment.id)\n if (!commitmentTest) {\n console.warn(`[NQTR] Commitment ${commitment.id} not found, it will be ignored`)\n return undefined\n }\n return commitment.id\n }).filter(id => id !== undefined)\n\n GameStorageManager.setVariable(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY, [commitmentsIds])\n}\n\nexport function getFixedCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n return Object.values(fixedCommitments) as TCommitment[]\n}\n\nexport function getTemporaryCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n let commitmentsIds = GameStorageManager.getVariable<string[]>(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY)\n if (!commitmentsIds) {\n return []\n }\n let commitments = commitmentsIds.map(id => getCommitmentById<TCommitment>(id)).filter(commitment => commitment !== undefined)\n return commitments as TCommitment[]\n}\n","import { RoomBaseModel } from \"../classes/navigation\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\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\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","import { CharacterBaseModel } from \"@drincs/pixi-vn\";\nimport CommitmentBaseModel from \"../classes/Commitment\";\nimport { getFixedCommitments, getTemporaryCommitments } from \"../decorators\";\nimport { registeredCommitments } from \"../decorators/CommitmentDecorator\";\n\nexport function clearExpiredRoutine() {\n Object.entries(registeredCommitments).forEach(([_, commitment]) => {\n if (commitment.isExpired()) {\n delete registeredCommitments[commitment.id]\n }\n })\n}\n\nexport function getCurrentCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n let character_commitments: { [character: string]: TCommitment } = {}\n let oltherCommitments: TCommitment[] = []\n getTemporaryCommitments<TCommitment>().reverse().forEach(c => {\n if (!c.hidden) {\n if (c.characters.length > 1) {\n // all the characters don't already have commitments\n let allAvailable = c.characters.every(ch => !character_commitments[ch.id])\n if (allAvailable) {\n c.characters.forEach(ch => {\n character_commitments[ch.id] = c\n })\n }\n }\n else {\n oltherCommitments.push(c)\n }\n }\n })\n getFixedCommitments<TCommitment>().reverse().forEach(c => {\n if (!c.hidden) {\n if (c.characters.length > 1) {\n c.characters.forEach(ch => {\n if (!character_commitments[ch.id]) {\n character_commitments[ch.id] = c\n }\n })\n }\n else {\n oltherCommitments.push(c)\n }\n }\n })\n return Object.values(character_commitments).concat(oltherCommitments)\n}\n\nexport function getCommitmentByCharacter<TCommitment extends CommitmentBaseModel = CommitmentBaseModel, TCharacter extends CharacterBaseModel = CharacterBaseModel>(character: TCharacter): TCommitment | undefined {\n getCurrentCommitments().forEach(c => {\n if (c.characters.map(ch => ch.id).includes(character.id)) {\n return c\n }\n })\n return undefined\n}\n","import ActivityModel, { ActivityProps, ActivityStoredAbstract } from \"../Activity\";\nimport RoomBaseModel from \"./Room\";\n\nexport class ActivityRoom<TRoom extends RoomBaseModel = RoomBaseModel> extends ActivityStoredAbstract {\n constructor(id: string, room: TRoom, onRun: (activity: ActivityModel) => void, props: ActivityProps) {\n super(onRun, props)\n this._id = id\n this._room = room\n }\n setStorageProperty<T>(_: string, __: T | undefined): void {\n this._room.setActivity(this)\n }\n getStorageProperty<T>(propertyName: string): T | undefined {\n let activity = this._room.getActivityMemory(this.id)\n if (!activity || !activity.hasOwnProperty(propertyName)) {\n return undefined\n }\n return (activity as any)[propertyName]\n }\n private _id: string;\n get id(): string {\n return this._id;\n }\n private _room: TRoom;\n get room(): TRoom {\n return this._room;\n }\n\n export(): object {\n let result: any = {}\n if (this.name !== undefined) {\n result[\"name\"] = this.name\n }\n if (this.fromHour !== undefined) {\n result[\"fromHour\"] = this.fromHour\n }\n if (this.toHour !== undefined) {\n result[\"toHour\"] = this.toHour\n }\n if (this.fromDay !== undefined) {\n result[\"fromDay\"] = this.fromDay\n }\n if (this.toDay !== undefined) {\n result[\"toDay\"] = this.toDay\n }\n if (this.disabled !== undefined) {\n result[\"disabled\"] = this.disabled\n }\n return result\n }\n}\n","export interface GoalProps {\n description: string\n need?: number\n have?: number\n}\n\nexport interface IGoal {\n description: string\n need: number\n have: number\n}\n\nexport default class Goal implements IGoal {\n constructor(props: GoalProps) {\n this._description = props.description\n this.need = props.need || 1\n this.have = props.have || 0\n }\n private _description: string\n get description(): string {\n return this._description\n }\n need: number\n have: number\n get isComplete(): boolean {\n return this.have >= this.need\n }\n setComplete(): void {\n this.have = this.need\n }\n find(): void {\n this.have++\n }\n get export(): IGoal {\n return {\n description: this.description,\n need: this.need,\n have: this.have\n }\n }\n}\n","import { StoredClassModel } from \"@drincs/pixi-vn\";\nimport StageBaseModel from \"./Stage\";\n\nconst QUEST_CATEGORY = \"__nqtr-quest__\"\n\nexport interface QuestBaseModelProps {\n name?: string\n description?: string\n icon?: string\n image?: string\n isInDevelopment?: boolean\n}\n\nexport default class QuestBaseModel<TStage extends StageBaseModel = StageBaseModel> extends StoredClassModel {\n constructor(id: string, stages: TStage[], props: QuestBaseModelProps) {\n super(QUEST_CATEGORY, id)\n this._stages = stages\n this._name = props.name || \"\"\n this._description = props.description || \"\"\n this._icon = props.icon || \"\"\n this._image = props.image || \"\"\n this._isInDevelopment = props.isInDevelopment || false\n }\n private _stages: TStage[]\n get stages(): TStage[] {\n return this._stages\n }\n\n private _name: string\n get name(): string {\n return this._name\n }\n\n private _description: string\n get description(): string {\n return this._description\n }\n\n private _icon: string\n get icon(): string {\n return this._icon\n }\n\n private _image: string\n get image(): string {\n return this._image\n }\n\n private _isInDevelopment: boolean\n get isInDevelopment(): boolean {\n return this._isInDevelopment\n }\n}\n","import { StoredClassModel } from \"@drincs/pixi-vn\";\nimport { QuestsRequiredType } from \"../../types/QuestsRequired\";\nimport Goal, { IGoal } from \"./Goal\";\n\nconst STAGE_CATEGORY = \"__nqtr-stage__\"\n\nexport interface StageBaseModelProps {\n goals?: Goal[]\n name?: string\n description?: string\n adviceDescription?: string\n image?: string\n daysRequiredToStart: number\n flagsRequired: string[]\n questsRequired: QuestsRequiredType[]\n requestDescription?: string\n onStart: () => void\n onEnd: () => void\n}\n\nexport default class StageBaseModel extends StoredClassModel {\n constructor(id: string, props: StageBaseModelProps) {\n super(STAGE_CATEGORY, id)\n this._name = props.name || \"\"\n this._description = props.description || \"\"\n this._adviceDescription = props.adviceDescription || \"\"\n this._image = props.image || \"\"\n this._daysRequiredToStart = props.daysRequiredToStart\n this._flagsRequired = props.flagsRequired\n this._questsRequired = props.questsRequired\n this._requestDescription = props.requestDescription || \"\"\n this._onStart = props.onStart\n this._onEnd = props.onEnd\n }\n\n\n private _completed: boolean = false\n get completed(): boolean {\n return this._completed\n }\n\n private _active: boolean = false\n get active(): boolean {\n return this._active\n }\n\n private defaultGoals: Goal[] = []\n get goals(): Goal[] {\n let list = this.getStorageProperty<IGoal[]>('goals')\n if (!list) {\n return this.defaultGoals\n }\n return list.map(goal => new Goal(goal))\n }\n set goals(value: Goal[]) {\n let list = value.map(goal => goal.export)\n this.setStorageProperty('goals', list)\n }\n\n private _name: string\n get name(): string {\n return this._name\n }\n\n private _description: string\n get description(): string {\n return this._description\n }\n\n private _adviceDescription: string\n get adviceDescription(): string {\n return this._adviceDescription\n }\n\n private _image: string\n get image(): string {\n return this._image\n }\n\n private _daysRequiredToStart: number\n get daysRequiredToStart(): number {\n return this._daysRequiredToStart\n }\n\n private _flagsRequired: string[]\n get flagsRequired(): string[] {\n return this._flagsRequired\n }\n\n private _questsRequired: QuestsRequiredType[]\n get questsRequired(): QuestsRequiredType[] {\n return this._questsRequired\n }\n\n private _requestDescription: string\n get requestDescription(): string {\n return this._requestDescription\n }\n\n private _onStart: () => void\n get onStart(): () => void {\n return this._onStart\n }\n\n private _onEnd: () => void\n get onEnd(): () => void {\n return this._onEnd\n }\n}\n","export enum ExecutionTypeEnum {\n AUTOMATIC = \"automatic\",\n INTERACTION = \"interaction\",\n}\n","import { GameStorageManager } from \"@drincs/pixi-vn\";\nimport { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes/navigation\";\nimport { getRoomById } from \"../decorators/RoomDecorator\";\n\nconst CURRENT_ROOM_MEMORY_KEY = '___nqtr-current_room_memory___';\n\nexport function setCurrentRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom) {\n let roomRegistrated = getRoomById(room.id);\n if (!roomRegistrated) {\n console.error(`[NQTR] The room ${room.id} is not registered, so it can't be set as current room`);\n return;\n }\n localStorage.setItem(CURRENT_ROOM_MEMORY_KEY, room.id);\n}\n\nexport function getCurrentRoom<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined {\n let roomId = GameStorageManager.getVariable<string>(CURRENT_ROOM_MEMORY_KEY);\n if (!roomId) {\n console.error(`[NQTR] The current room has not yet been set`);\n return\n }\n let room = getRoomById<TRoom>(roomId);\n if (!room) {\n console.error(`[NQTR] Current room ${roomId} not found`);\n return\n }\n return room\n}\n\nexport function getCurrenrLocation<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation | undefined {\n let room = getCurrentRoom<RoomBaseModel<TLocation>>();\n if (!room) {\n return\n }\n return room.location\n}\n\nexport function getCueerntMap<TMap extends MapBaseModel = MapBaseModel>(): TMap | undefined {\n let location = getCurrenrLocation<LocationBaseModel<TMap>>();\n if (!location) {\n return\n }\n return location.map\n}\n","import { ActivityRoom } from \"../classes/navigation/ActivityRoom\"\nimport { registeredRooms } from \"../decorators/RoomDecorator\"\nimport { getCurrentRoom } from \"./NavigationFunctions\"\n\nexport function clearExpiredActivities() {\n Object.entries(registeredRooms).forEach(([_, room]) => {\n room.clearExpiredActivities()\n })\n}\n\nexport function currentActivities(): ActivityRoom[] {\n let currentRoom = getCurrentRoom()\n if (!currentRoom) {\n return []\n }\n return currentRoom.activities.filter(activity => !activity.hidden)\n}\n"],"mappings":"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","names":["getFlag","getFlag","StoredClassModel","getFlag","StoredClassModel","GameStorageManager","commitment","StoredClassModel","getFlag","StoredClassModel","StoredClassModel","StoredClassModel","ExecutionTypeEnum","GameStorageManager","GameStorageManager"]}
1
+ {"version":3,"sources":["../src/classes/Activity.ts","../src/managers/TimeManager.ts","../src/classes/navigation/Location.ts","../src/decorators/RoomDecorator.ts","../src/classes/navigation/Map.ts","../src/classes/navigation/Room.ts","../src/decorators/ActivityDecorator.ts","../src/decorators/CommitmentDecorator.ts","../src/functions/RoutineFunctions.ts","../src/classes/navigation/ActivityRoom.ts","../src/classes/quest/Goal.ts","../src/classes/quest/Quest.ts","../src/classes/quest/Stage.ts","../src/enums/ExecutionTypeEnum.ts","../src/functions/NavigationFunctions.ts","../src/functions/ActivityFunctions.ts"],"sourcesContent":["import { getFlag } from \"@drincs/pixi-vn\";\nimport TimeManager from \"../managers/TimeManager\";\nimport { GraphicItemType } from \"../types/GraphicItem\";\n\nexport interface ActivityProps {\n /**\n * The name\n */\n name?: string\n /**\n * The hour when the activity starts. If the activity is not started yet, it will be hidden.\n * If you set 3, the activity will be hidden into hours 1 and 2, and will be shown from hour 3.\n */\n fromHour?: number\n /**\n * The hour when the activity ends. If the activity is ended yet, it will be hidden.\n * If you set 3, the activity will be shown into hours 1 and 2 and will be hidden from hour 3.\n */\n toHour?: number\n /**\n * The day when the activity starts. If the activity is not started yet, it will be hidden.\n * If you set 3, the activity will be hidden into days 1 and 2, and will be shown from day 3.\n */\n fromDay?: number\n /**\n * The day when the activity ends. If the activity is ended yet, it will be deleted or hidden.\n * If you set 3, the activity will be shown into days 1 and 2 and will be deleted or hidden from day 3.\n */\n toDay?: number\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an HTMLElement or a Pixi'VN CanvasItem\n */\n iconElement?: GraphicItemType\n}\n\nexport abstract class ActivityStoredAbstract {\n constructor(onRun: (activity: ActivityModel) => void, props: ActivityProps) {\n this.defaultName = props.name\n this.defaultFromHour = props.fromHour\n this.defaultToHour = props.toHour\n this.defaultFromDay = props.fromDay\n this.defaultToDay = props.toDay\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._iconElement = props.iconElement\n this._onRun = onRun\n }\n\n abstract setStorageProperty<T>(propertyName: string, value: T | undefined): void;\n abstract getStorageProperty<T>(propertyName: string): T | undefined;\n abstract get id(): string\n\n private defaultName?: string\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 defaultFromHour?: number\n get fromHour(): number {\n return this.getStorageProperty<number>(\"fromHour\") || this.defaultFromHour || TimeManager.minDayHours\n }\n set fromHour(value: number | undefined) {\n this.setStorageProperty(\"fromHour\", value)\n }\n\n private defaultToHour?: number\n get toHour(): number {\n return this.getStorageProperty<number>(\"toHour\") || this.defaultToHour || (TimeManager.maxDayHours + 1)\n }\n set toHour(value: number | undefined) {\n this.setStorageProperty(\"toHour\", value)\n }\n\n private defaultFromDay?: number\n get fromDay(): number | undefined {\n return this.getStorageProperty<number>(\"fromDay\") || this.defaultFromDay\n }\n set fromDay(value: number | undefined) {\n this.setStorageProperty(\"fromDay\", value)\n }\n\n private defaultToDay?: number\n get toDay(): number | undefined {\n return this.getStorageProperty<number>(\"toDay\") || this.defaultToDay\n }\n set toDay(value: number | undefined) {\n this.setStorageProperty(\"toDay\", value)\n }\n\n private defaultDisabled: boolean | string\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 get hidden(): boolean {\n if (this.fromDay && this.fromDay > TimeManager.currentDay) {\n return true\n }\n if (!TimeManager.nowIsBetween(this.fromHour, this.toHour)) {\n return true\n }\n if (!this.isExpired) {\n return true\n }\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 _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n private _onRun: (activity: ActivityModel) => void\n get onRun() {\n return this._onRun\n }\n\n isExpired(): boolean {\n if (this.toDay && this.toDay <= TimeManager.currentDay) {\n return true\n }\n return false\n }\n\n export(): ActivityProps {\n return {\n name: this.getStorageProperty<string>(\"name\") || this.defaultName,\n fromHour: this.getStorageProperty<number>(\"fromHour\") || this.defaultFromHour,\n toHour: this.getStorageProperty<number>(\"toHour\") || this.defaultToHour,\n fromDay: this.getStorageProperty<number>(\"fromDay\") || this.defaultFromDay,\n toDay: this.getStorageProperty<number>(\"toDay\") || this.defaultToDay,\n disabled: this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled,\n hidden: this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden,\n iconElement: this._iconElement\n }\n }\n}\n\nexport default class ActivityModel {\n constructor(id: string, onRun: (activity: ActivityModel) => void, props: ActivityProps) {\n this._id = id\n this._name = props.name\n this._fromHour = props.fromHour\n this._toHour = props.toHour\n this._fromDay = props.fromDay\n this._toDay = props.toDay\n this._disabled = props.disabled || false\n this._hidden = props.hidden || false\n this._iconElement = props.iconElement\n this._onRun = onRun\n }\n\n private _id: string\n get id(): string {\n return this._id\n }\n\n private _name?: string\n get name(): string | undefined {\n return this._name\n }\n\n private _fromHour?: number\n get fromHour(): number | undefined {\n return this._fromHour\n }\n\n private _toHour?: number\n get toHour(): number | undefined {\n return this._toHour\n }\n\n private _fromDay?: number\n get fromDay(): number | undefined {\n return this._fromDay\n }\n\n private _toDay?: number\n get toDay(): number | undefined {\n return this._toDay\n }\n\n private _disabled?: boolean | string\n get disabled(): boolean | undefined {\n if (typeof this._disabled === \"string\") {\n return getFlag(this._disabled)\n }\n return this._disabled\n }\n\n private _hidden: boolean | string\n get hidden(): boolean {\n if (this.fromDay && this.fromDay > TimeManager.currentDay) {\n return true\n }\n if (!this.isDeadline) {\n return true\n }\n if (typeof this._hidden === \"string\") {\n return getFlag(this._hidden)\n }\n return this._hidden\n }\n\n private _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n private _onRun: (activity: ActivityModel) => void\n get onRun() {\n return this._onRun\n }\n\n isDeadline(): boolean {\n if (this.toDay && this.toDay <= TimeManager.currentDay) {\n return true\n }\n return false\n }\n\n export(): ActivityProps {\n return {\n name: this._name,\n fromHour: this._fromHour,\n toHour: this._toHour,\n fromDay: this._fromDay,\n toDay: this._toDay,\n disabled: this._disabled,\n hidden: this._hidden,\n iconElement: this._iconElement,\n }\n }\n}\n","import { GameStorageManager } from \"@drincs/pixi-vn\";\n\nconst TIME_SETTINGS_KEY = '___nqtr-time_manager_settings___';\nconst TIME_DATA_KEY = '___nqtr-time_manager_data___';\n\n/**\n * Time Settings, which can be set using `TimeManager.editSettings`\n */\nexport interface TimeSettings {\n /**\n * Minimum hour of the day (default: 0)\n */\n minDayHours?: number\n /**\n * Maximum hour of the day (default: 24)\n */\n maxDayHours?: number\n /**\n * Default time spent (default: 1)\n */\n defaultTimeSpent?: number\n /**\n * Time slots (default: [])\n * @example\n * ```ts\n * [\n * { name: 'Morning', startHour: 5 },\n * { name: 'Afternoon', startHour: 12 },\n * { name: 'Evening', startHour: 18 },\n * { name: 'Night', startHour: 22 }\n * ]\n */\n timeSlots?: ITimeStlot[]\n /**\n * Week length (default: 7)\n */\n weekLength?: number\n /**\n * Weekend start day. For example, if the real life weekend starts on Saturday, then the value should be 6 (default: weekLength - 1)\n */\n weekendStartDay?: number\n /**\n * Week days names (default: [])\n * @example\n * ```ts\n * ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']\n * ```\n */\n weekDaysNames?: string[]\n}\n\ninterface ITimeData {\n currentHour?: number\n currentDay?: number\n}\n\nexport interface ITimeStlot {\n name: string\n startHour: number\n}\n\nexport default class TimeManager {\n private constructor() { }\n private static editSettings(settings: TimeSettings) {\n let data: any = {}\n if (typeof settings.minDayHours === 'number') {\n data['minDayHours'] = settings.minDayHours\n }\n if (typeof settings.maxDayHours === 'number') {\n data['maxDayHours'] = settings.maxDayHours\n }\n if (typeof settings.minDayHours === 'number') {\n data['defaultTimeSpent'] = settings.defaultTimeSpent\n }\n if (Array.isArray(settings.timeSlots)) {\n data['timeSlots'] = settings.timeSlots\n }\n if (typeof settings.weekLength === 'number') {\n data['weekLength'] = settings.weekLength\n }\n if (typeof settings.weekendStartDay === 'number') {\n let weekLength = settings.weekLength || TimeManager.weekLength\n if (settings.weekendStartDay >= weekLength) {\n console.warn(`[NQTR] Weekend start day should be less than week length ${weekLength}`)\n }\n data['weekendStartDay'] = settings.weekendStartDay\n }\n if (Array.isArray(settings.weekDaysNames)) {\n let weekLength = settings.weekLength || TimeManager.weekLength\n if (settings.weekDaysNames.length !== weekLength) {\n console.warn(`[NQTR] Week days names should be equal to week length ${weekLength}`)\n }\n data['weekDaysNames'] = settings.weekDaysNames\n }\n GameStorageManager.setVariable(TIME_SETTINGS_KEY, data)\n }\n /**\n * Get time settings\n */\n static get settings(): TimeSettings {\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY) || {}\n return settings\n }\n /**\n * Set time settings, Is very important to set the settings before using the nqtr library, bacause more of the features are based on the time settings.\n */\n static set settings(value: TimeSettings) {\n TimeManager.editSettings(value)\n }\n static get minDayHours(): number {\n let result = 0\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('minDayHours')) {\n result = settings.minDayHours || 0\n }\n return result\n }\n static get maxDayHours(): number {\n let result = 24\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('maxDayHours')) {\n result = settings.maxDayHours || 24\n }\n return result\n }\n static get defaultTimeSpent(): number {\n let result = 1\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('defaultTimeSpent')) {\n result = settings.defaultTimeSpent || 1\n }\n return result\n }\n static get timeSlots(): ITimeStlot[] {\n let result: ITimeStlot[] = []\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('timeSlots')) {\n result = settings.timeSlots || []\n }\n return result\n }\n static get weekLength(): number {\n let result = 7\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('weekLength')) {\n result = settings.weekLength || 7\n }\n return result\n }\n static get weekendStartDay(): number {\n let result = TimeManager.weekLength - 1\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('weekendStartDay')) {\n result = settings.weekendStartDay || TimeManager.weekLength - 1\n }\n return result\n }\n static get weekDaysNames(): string[] {\n let result: string[] = []\n let settings = GameStorageManager.getVariable<TimeSettings>(TIME_SETTINGS_KEY)\n if (settings && settings.hasOwnProperty('weekDaysNames')) {\n result = settings.weekDaysNames || result\n }\n return result\n }\n\n /**\n * Get the current hour\n */\n static get currentHour(): number {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (data.hasOwnProperty('currentHour') && typeof data.currentHour === 'number') {\n return data.currentHour\n }\n return TimeManager.minDayHours\n }\n static set currentHour(value: number | undefined) {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (typeof value === 'number') {\n data.currentHour = value\n } else {\n delete data.currentHour\n }\n GameStorageManager.setVariable(TIME_DATA_KEY, data)\n }\n /**\n * Get the current day\n */\n static get currentDay(): number {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (data.hasOwnProperty('currentDay') && typeof data.currentDay === 'number') {\n return data.currentDay\n }\n return 0\n }\n static set currentDay(value: number | undefined) {\n let data = GameStorageManager.getVariable<ITimeData>(TIME_DATA_KEY) || {}\n if (typeof value === 'number') {\n data.currentDay = value\n }\n else {\n delete data.currentDay\n }\n GameStorageManager.setVariable(TIME_DATA_KEY, data)\n }\n /**\n * If the current day is greater than or equal to the weekend start day, then it will return true.\n */\n static get isWeekend(): boolean {\n return TimeManager.currentWeekDayNumber >= TimeManager.weekendStartDay\n }\n /**\n * Get the current week day number (1-TimeManager.weekLength).\n * For example, if the week length is 7 and the current day is 10, then the result will be 4.\n */\n static get currentWeekDayNumber(): number {\n let result = TimeManager.currentDay % TimeManager.weekLength\n return result + 1\n }\n /**\n * Get the current week day name. If the week days names are not defined, then it will return undefined.\n * For example, if the week days names are ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] and the current day is 10, then the result will be 'Thursday'.\n */\n static get currentDayName(): string | undefined {\n let weekDayNumber = TimeManager.currentWeekDayNumber - 1\n if (weekDayNumber >= TimeManager.weekDaysNames.length) {\n console.warn(`[NQTR] Week day name is not defined for day ${weekDayNumber}`, TimeManager.weekDaysNames)\n return undefined\n }\n return TimeManager.weekDaysNames[weekDayNumber]\n }\n /**\n * Get the current TimeManager.timeSlots index.\n * You can use this property to create \"Image that changes based on the time period\":\n * @example\n * ```ts\n * import { TimeManager } from '@drincs/nqtr';\n * \n * function changeBackground() {\n * return (\n * <img src={`background-${TimeManager.currentTimeSlot}.png`} />\n * )\n * }\n */\n static get currentTimeSlots(): number {\n if (TimeManager.timeSlots.length === 0) {\n console.warn('[NQTR] Time slots are not defined')\n return 0\n }\n TimeManager.timeSlots.forEach((slot, index) => {\n if (TimeManager.timeSlots.length > index + 1) {\n if (TimeManager.nowIsBetween(slot.startHour, TimeManager.timeSlots[index + 1].startHour)) {\n return index\n }\n }\n })\n return 0\n }\n\n /**\n * This function will increase the current hour by the given time spent.\n * If the new hour is greater than or equal to the max day hours, then it will increase the day and set the new hour.\n * @param timeSpent is the time spent in hours (default: TimeManager.defaultTimeSpent)\n * @returns TimeManager.currentHour\n */\n static increaseHour(timeSpent: number = TimeManager.defaultTimeSpent): number {\n let newHour = TimeManager.currentHour + timeSpent\n if (newHour >= TimeManager.maxDayHours) {\n TimeManager.increaseDay()\n newHour = TimeManager.minDayHours + (newHour - TimeManager.maxDayHours)\n }\n TimeManager.currentHour = newHour\n return TimeManager.currentHour\n }\n\n /**\n * This function will increase the current day by the given days.\n * @param newDayHour is the hour of the new day (default: TimeManager.minDayHours)\n * @param days is the number of days to increase (default: 1)\n * @returns TimeManager.currentDay\n */\n static increaseDay(newDayHour: number = TimeManager.minDayHours, days: number = 1): number {\n let newDay = TimeManager.currentDay + days\n TimeManager.currentDay = newDay\n TimeManager.currentHour = newDayHour\n return TimeManager.currentDay\n }\n\n /**\n * This function will check if the current hour is between the given hours.\n * @param fromHour the starting hour. If the TimeManager.currentHour is equal to this hour, the function will return true.\n * @param toHour the ending hour.\n * @returns true if the current hour is between the given hours, otherwise false.\n */\n static nowIsBetween(fromHour: number, toHour: number): boolean {\n let currentHour = TimeManager.currentHour\n if (fromHour < toHour) {\n return currentHour >= fromHour && currentHour < toHour\n }\n return currentHour >= fromHour || currentHour < toHour\n }\n}\n","import { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { getRoomByLocation } from \"../../decorators/RoomDecorator\";\nimport { GraphicItemType } from \"../../types/GraphicItem\";\nimport MapBaseModel from \"./Map\";\nimport RoomBaseModel from \"./Room\";\n\nconst LOCATION_CATEGORY = \"__nqtr-location__\"\n\nexport interface LocationBaseModelProps {\n /**\n * The name\n */\n name?: string\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an HTMLElement or a Pixi'VN CanvasItem\n */\n iconElement?: GraphicItemType\n}\n\nexport default class LocationBaseModel<TMap extends MapBaseModel = MapBaseModel> extends StoredClassModel {\n constructor(id: string, map: TMap, props: LocationBaseModelProps) {\n super(LOCATION_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._iconElement = props.iconElement\n this._map = map\n }\n getEntrance<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined {\n let rooms = getRoomByLocation<TRoom>(this)\n if (rooms.length === 0) {\n return\n }\n return rooms.find(room => room.isEntrance) || rooms[0]\n }\n\n private defaultName: string\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultDisabled: boolean | string\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 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 _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n private _map: TMap\n get map(): TMap {\n return this._map\n }\n}\n","import { LocationBaseModel, RoomBaseModel } from \"../classes/navigation\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\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\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\nexport function getRoomByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location === location) as TRoom[]\n}\n","import { getFlag, StoredClassModel } from \"@drincs/pixi-vn\"\nimport { GraphicItemType } from \"../../types/GraphicItem\"\n\nconst MAP_CATEGORY = \"__nqtr-map__\"\n\nexport interface MapBaseModelProps<TMap extends MapBaseModel = MapBaseModel> {\n /**\n * The name\n */\n name?: string\n /**\n * The image. It can be a string, an HTMLElement 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 */\n image?: GraphicItemType | { [key: string]: GraphicItemType }\n /**\n * The neighboring maps that are available in this map.\n * @example\n * ```ts\n * {\n * \"north\": atlantaMap,\n * \"south\": miamiMap,\n * \"east\": savannahMap,\n * \"west\": birminghamMap\n * }\n * ```\n */\n neighboringMaps?: { [key: string]: TMap }\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n}\n\nexport default class MapBaseModel extends StoredClassModel {\n constructor(id: string, props: MapBaseModelProps) {\n super(MAP_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this.defaultImage = props.image\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n }\n\n private defaultName: string\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultImage?: GraphicItemType | { [key: string]: GraphicItemType }\n get image(): GraphicItemType | { [key: string]: GraphicItemType } | undefined {\n return this.getStorageProperty<GraphicItemType>(\"image\") || this.defaultImage\n }\n set image(value: GraphicItemType | { [key: string]: GraphicItemType } | undefined) {\n this.setStorageProperty(\"image\", value)\n }\n\n private defaultDisabled: boolean | string\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 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","import { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { getActivityById } from \"../../decorators\";\nimport { getCurrentCommitments } from \"../../functions/RoutineFunctions\";\nimport { GraphicItemType } from \"../../types/GraphicItem\";\nimport ActivityModel, { ActivityProps } from \"../Activity\";\nimport CommitmentBaseModel from \"../Commitment\";\nimport { ActivityRoom } from \"./ActivityRoom\";\nimport LocationBaseModel from \"./Location\";\n\nexport const ROOM_CATEGORY = \"__nqtr-room__\"\n\ninterface RoomActivityMemory { [key: string]: ActivityProps }\n\nexport interface RoomBaseModelProps {\n /**\n * The name\n */\n name?: string\n /**\n * The image. It can be a string, an HTMLElement 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 */\n image?: GraphicItemType | { [key: string]: GraphicItemType }\n /**\n * The activities that are available in this room.\n */\n defaultActivities?: ActivityModel[],\n /**\n * Whether is disabled. You can also pass a Pixi'VN flag name.\n */\n disabled?: boolean | string\n /**\n * Whether is hidden. You can also pass a Pixi'VN flag name.\n */\n hidden?: boolean | string\n /**\n * The icon element. Can be a string or an HTMLElement or a Pixi'VN CanvasItem\n */\n iconElement?: GraphicItemType\n /**\n * Whether is an entrance room, so when the player enters in the location, it will be the first room to be shown.\n */\n isEntrance?: boolean\n}\n\nexport default class RoomBaseModel<TLocation extends LocationBaseModel = LocationBaseModel> extends StoredClassModel {\n constructor(id: string, location: TLocation, props: RoomBaseModelProps) {\n super(ROOM_CATEGORY, id)\n this._location = location\n this.defaultName = props.name || \"\"\n this.defaultImage = props.image\n this.defaultActivityIds = props.defaultActivities?.map(activity => activity.id) || []\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._iconElement = props.iconElement\n this._isEntrance = props.isEntrance\n }\n\n private _location: TLocation\n get location(): TLocation {\n return this._location\n }\n\n private _isEntrance?: boolean\n get isEntrance(): boolean {\n return this._isEntrance || false\n }\n\n private defaultName: string\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultImage?: GraphicItemType | { [key: string]: GraphicItemType }\n get image(): GraphicItemType | { [key: string]: GraphicItemType } | undefined {\n return this.getStorageProperty<GraphicItemType>(\"image\") || this.defaultImage\n }\n set image(value: GraphicItemType | { [key: string]: GraphicItemType } | undefined) {\n this.setStorageProperty(\"image\", value)\n }\n\n private defaultActivityIds: string[]\n get defaultActivities(): ActivityRoom<this>[] {\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n let activities = this.defaultActivityIds.map(id => {\n let activity = getActivityById(id)\n if (!activity) {\n console.warn(`[NQTR] Activity with id ${id} not found, so it will be ignored.`)\n return undefined\n }\n let memory = activity.export()\n if (roomMemories && roomMemories[id]) {\n memory = {\n ...memory,\n ...roomMemories[id]\n }\n }\n return new ActivityRoom(id, this, activity.onRun, memory)\n }).filter(activity => activity !== undefined)\n return activities as ActivityRoom<this>[]\n }\n\n get activityIds(): string[] {\n let addedActivityIds = this.getStorageProperty<string[]>(`addedActivityIds`) || []\n return this.defaultActivityIds.concat(addedActivityIds)\n }\n get activities(): ActivityRoom<this>[] {\n let activities = this.activityIds.map(id => {\n return this.getActivity(id)\n }).filter(activity => activity !== undefined)\n return activities as ActivityRoom<this>[]\n }\n getActivityMemory(id: string): object | undefined {\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n let roomMemory = roomMemories[id] || {}\n return roomMemory\n }\n getActivity(id: string): ActivityRoom<this> | undefined {\n if (!this.activityIds.includes(id)) {\n console.error(`[NQTR] Activity with id ${id} not found in room ${this.id}`)\n return undefined\n }\n let activity = getActivityById(id)\n if (!activity) {\n console.error(`[NQTR] Activity with id ${id} not found`)\n return undefined\n }\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n let roomMemory = roomMemories[id] || {}\n roomMemory = {\n ...activity.export(),\n ...roomMemory\n }\n return new ActivityRoom(id, this, activity.onRun, roomMemory)\n }\n setActivity(activity: ActivityRoom) {\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n roomMemories[activity.id] = activity.export()\n this.setStorageProperty(\"activities_memory\", roomMemories)\n }\n addActivity(activity: ActivityModel) {\n if (this.activityIds.includes(activity.id)) {\n let currentActivity = this.getActivity(activity.id)\n if (currentActivity && currentActivity.isExpired()) {\n this.removeActivity(activity.id)\n return\n } else {\n console.error(`[NQTR] Activity with id ${activity.id} already exists in room ${this.id}, so it will be ignored.`)\n return\n }\n }\n let addedActivityIds = this.getStorageProperty<string[]>(`addedActivityIds`) || []\n addedActivityIds.push(activity.id)\n this.setStorageProperty(\"addedActivityIds\", addedActivityIds)\n }\n removeActivity(activity: ActivityModel | string) {\n let activityId = typeof activity === \"string\" ? activity : activity.id\n if (this.defaultActivityIds.includes(activityId)) {\n console.warn(`[NQTR] Activity with id ${activityId} is a default activity, so it can't be removed. It will be hidden instead.`)\n let activityToEdit = this.getActivity(activityId)\n if (!activityToEdit) {\n console.error(`[NQTR] Activity with id ${activityId} not found, so it can't be hidden.`)\n return\n }\n activityToEdit.hidden = true\n return\n }\n let addedActivityIds = this.getStorageProperty<string[]>(`addedActivityIds`) || []\n let index = addedActivityIds.indexOf(activityId)\n if (index === -1) {\n console.error(`[NQTR] Activity with id ${activityId} not found, so it can't be removed.`)\n return\n }\n addedActivityIds.splice(index, 1)\n this.setStorageProperty(\"addedActivityIds\", addedActivityIds)\n let roomMemories = this.getStorageProperty<RoomActivityMemory>(\"activities_memory\") || {}\n delete roomMemories[activityId]\n this.setStorageProperty(\"activities_memory\", roomMemories)\n }\n clearExpiredActivities() {\n this.activities.forEach(activity => {\n if (activity.isExpired()) {\n this.removeActivity(activity.id)\n }\n })\n }\n\n private defaultDisabled: boolean | string\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 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 _iconElement?: GraphicItemType\n get iconElement(): GraphicItemType | undefined {\n return this._iconElement\n }\n\n getRoutine<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n let commitments = getCurrentCommitments<TCommitment>()\n return commitments.filter(c => c.room.id === this.id)\n }\n}\n","import { ActivityModel } from \"../classes\"\n\nexport const registeredActivities: { [id: string]: ActivityModel } = {}\n\nexport function saveActivity(activity: ActivityModel | ActivityModel[]) {\n if (Array.isArray(activity)) {\n activity.forEach(c => saveActivity(c))\n return\n }\n if (registeredActivities[activity.id]) {\n console.warn(`[NQTR] Activity id ${activity.id} already exists, it will be overwritten`)\n }\n registeredActivities[activity.id] = activity\n}\n\nexport function getActivityById(id: string): ActivityModel | undefined {\n try {\n let activity = registeredActivities[id]\n if (!activity) {\n console.error(`[NQTR] Activity ${id} not found`)\n return\n }\n return activity as ActivityModel\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Activity ${id}`, e)\n return\n }\n}\n","import { GameStorageManager } from \"@drincs/pixi-vn\"\nimport CommitmentBaseModel from \"../classes/Commitment\"\n\nconst TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY = \"___nqtr-temporary_commitment___\"\nexport const registeredCommitments: { [id: string]: CommitmentBaseModel } = {}\nexport const fixedCommitments: { [id: string]: CommitmentBaseModel } = {}\n\nexport function saveCommitment<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(commitment: TCommitment | TCommitment[]) {\n if (Array.isArray(commitment)) {\n commitment.forEach(c => saveCommitment(c))\n return\n }\n if (registeredCommitments[commitment.id]) {\n console.warn(`[NQTR] Commitment id ${commitment.id} already exists, it will be overwritten`)\n }\n registeredCommitments[commitment.id] = commitment\n}\n\nexport function getCommitmentById<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(id: string): TCommitment | undefined {\n try {\n let commitment = registeredCommitments[id]\n if (!commitment) {\n console.error(`[NQTR] Commitment ${id} not found`)\n return\n }\n return commitment as TCommitment\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Commitment ${id}`, e)\n return\n }\n}\n\nexport function setFixedCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(commitments: TCommitment[] | TCommitment) {\n if (Array.isArray(commitments)) {\n commitments.forEach(c => saveCommitment(c))\n return\n }\n if (registeredCommitments[commitments.id]) {\n console.warn(`[NQTR] Commitment id ${commitments.id} already exists, it will be overwritten`)\n }\n registeredCommitments[commitments.id] = commitments\n}\n\nexport function addTemporaryCommitment<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(commitment: TCommitment[] | TCommitment) {\n if (!Array.isArray(commitment)) {\n commitment = [commitment]\n }\n let commitmentsIds = commitment.map(commitment => {\n let commitmentTest = getCommitmentById(commitment.id)\n if (!commitmentTest) {\n console.warn(`[NQTR] Commitment ${commitment.id} not found, it will be ignored`)\n return undefined\n }\n return commitment.id\n }).filter(id => id !== undefined)\n\n GameStorageManager.setVariable(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY, [commitmentsIds])\n}\n\nexport function getFixedCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n return Object.values(fixedCommitments) as TCommitment[]\n}\n\nexport function getTemporaryCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n let commitmentsIds = GameStorageManager.getVariable<string[]>(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY)\n if (!commitmentsIds) {\n return []\n }\n let commitments = commitmentsIds.map(id => getCommitmentById<TCommitment>(id)).filter(commitment => commitment !== undefined)\n return commitments as TCommitment[]\n}\n","import { CharacterBaseModel } from \"@drincs/pixi-vn\";\nimport CommitmentBaseModel from \"../classes/Commitment\";\nimport { getFixedCommitments, getTemporaryCommitments } from \"../decorators\";\nimport { registeredCommitments } from \"../decorators/CommitmentDecorator\";\n\nexport function clearExpiredRoutine() {\n Object.entries(registeredCommitments).forEach(([_, commitment]) => {\n if (commitment.isExpired()) {\n delete registeredCommitments[commitment.id]\n }\n })\n}\n\nexport function getCurrentCommitments<TCommitment extends CommitmentBaseModel = CommitmentBaseModel>(): TCommitment[] {\n let character_commitments: { [character: string]: TCommitment } = {}\n let oltherCommitments: TCommitment[] = []\n getTemporaryCommitments<TCommitment>().reverse().forEach(c => {\n if (!c.hidden) {\n if (c.characters.length > 1) {\n // all the characters don't already have commitments\n let allAvailable = c.characters.every(ch => !character_commitments[ch.id])\n if (allAvailable) {\n c.characters.forEach(ch => {\n character_commitments[ch.id] = c\n })\n }\n }\n else {\n oltherCommitments.push(c)\n }\n }\n })\n getFixedCommitments<TCommitment>().reverse().forEach(c => {\n if (!c.hidden) {\n if (c.characters.length > 1) {\n c.characters.forEach(ch => {\n if (!character_commitments[ch.id]) {\n character_commitments[ch.id] = c\n }\n })\n }\n else {\n oltherCommitments.push(c)\n }\n }\n })\n return Object.values(character_commitments).concat(oltherCommitments)\n}\n\nexport function getCommitmentByCharacter<TCommitment extends CommitmentBaseModel = CommitmentBaseModel, TCharacter extends CharacterBaseModel = CharacterBaseModel>(character: TCharacter): TCommitment | undefined {\n getCurrentCommitments().forEach(c => {\n if (c.characters.map(ch => ch.id).includes(character.id)) {\n return c\n }\n })\n return undefined\n}\n","import ActivityModel, { ActivityProps, ActivityStoredAbstract } from \"../Activity\";\nimport RoomBaseModel from \"./Room\";\n\nexport class ActivityRoom<TRoom extends RoomBaseModel = RoomBaseModel> extends ActivityStoredAbstract {\n constructor(id: string, room: TRoom, onRun: (activity: ActivityModel) => void, props: ActivityProps) {\n super(onRun, props)\n this._id = id\n this._room = room\n }\n setStorageProperty<T>(_: string, __: T | undefined): void {\n this._room.setActivity(this)\n }\n getStorageProperty<T>(propertyName: string): T | undefined {\n let activity = this._room.getActivityMemory(this.id)\n if (!activity || !activity.hasOwnProperty(propertyName)) {\n return undefined\n }\n return (activity as any)[propertyName]\n }\n private _id: string;\n get id(): string {\n return this._id;\n }\n private _room: TRoom;\n get room(): TRoom {\n return this._room;\n }\n\n export(): object {\n let result: any = {}\n if (this.name !== undefined) {\n result[\"name\"] = this.name\n }\n if (this.fromHour !== undefined) {\n result[\"fromHour\"] = this.fromHour\n }\n if (this.toHour !== undefined) {\n result[\"toHour\"] = this.toHour\n }\n if (this.fromDay !== undefined) {\n result[\"fromDay\"] = this.fromDay\n }\n if (this.toDay !== undefined) {\n result[\"toDay\"] = this.toDay\n }\n if (this.disabled !== undefined) {\n result[\"disabled\"] = this.disabled\n }\n return result\n }\n}\n","export interface GoalProps {\n description: string\n need?: number\n have?: number\n}\n\nexport interface IGoal {\n description: string\n need: number\n have: number\n}\n\nexport default class Goal implements IGoal {\n constructor(props: GoalProps) {\n this._description = props.description\n this.need = props.need || 1\n this.have = props.have || 0\n }\n private _description: string\n get description(): string {\n return this._description\n }\n need: number\n have: number\n get isComplete(): boolean {\n return this.have >= this.need\n }\n setComplete(): void {\n this.have = this.need\n }\n find(): void {\n this.have++\n }\n get export(): IGoal {\n return {\n description: this.description,\n need: this.need,\n have: this.have\n }\n }\n}\n","import { StoredClassModel } from \"@drincs/pixi-vn\";\nimport StageBaseModel from \"./Stage\";\n\nconst QUEST_CATEGORY = \"__nqtr-quest__\"\n\nexport interface QuestBaseModelProps {\n name?: string\n description?: string\n icon?: string\n image?: string\n isInDevelopment?: boolean\n}\n\nexport default class QuestBaseModel<TStage extends StageBaseModel = StageBaseModel> extends StoredClassModel {\n constructor(id: string, stages: TStage[], props: QuestBaseModelProps) {\n super(QUEST_CATEGORY, id)\n this._stages = stages\n this._name = props.name || \"\"\n this._description = props.description || \"\"\n this._icon = props.icon || \"\"\n this._image = props.image || \"\"\n this._isInDevelopment = props.isInDevelopment || false\n }\n private _stages: TStage[]\n get stages(): TStage[] {\n return this._stages\n }\n\n private _name: string\n get name(): string {\n return this._name\n }\n\n private _description: string\n get description(): string {\n return this._description\n }\n\n private _icon: string\n get icon(): string {\n return this._icon\n }\n\n private _image: string\n get image(): string {\n return this._image\n }\n\n private _isInDevelopment: boolean\n get isInDevelopment(): boolean {\n return this._isInDevelopment\n }\n}\n","import { StoredClassModel } from \"@drincs/pixi-vn\";\nimport { QuestsRequiredType } from \"../../types/QuestsRequired\";\nimport Goal, { IGoal } from \"./Goal\";\n\nconst STAGE_CATEGORY = \"__nqtr-stage__\"\n\nexport interface StageBaseModelProps {\n goals?: Goal[]\n name?: string\n description?: string\n adviceDescription?: string\n image?: string\n daysRequiredToStart: number\n flagsRequired: string[]\n questsRequired: QuestsRequiredType[]\n requestDescription?: string\n onStart: () => void\n onEnd: () => void\n}\n\nexport default class StageBaseModel extends StoredClassModel {\n constructor(id: string, props: StageBaseModelProps) {\n super(STAGE_CATEGORY, id)\n this._name = props.name || \"\"\n this._description = props.description || \"\"\n this._adviceDescription = props.adviceDescription || \"\"\n this._image = props.image || \"\"\n this._daysRequiredToStart = props.daysRequiredToStart\n this._flagsRequired = props.flagsRequired\n this._questsRequired = props.questsRequired\n this._requestDescription = props.requestDescription || \"\"\n this._onStart = props.onStart\n this._onEnd = props.onEnd\n }\n\n\n private _completed: boolean = false\n get completed(): boolean {\n return this._completed\n }\n\n private _active: boolean = false\n get active(): boolean {\n return this._active\n }\n\n private defaultGoals: Goal[] = []\n get goals(): Goal[] {\n let list = this.getStorageProperty<IGoal[]>('goals')\n if (!list) {\n return this.defaultGoals\n }\n return list.map(goal => new Goal(goal))\n }\n set goals(value: Goal[]) {\n let list = value.map(goal => goal.export)\n this.setStorageProperty('goals', list)\n }\n\n private _name: string\n get name(): string {\n return this._name\n }\n\n private _description: string\n get description(): string {\n return this._description\n }\n\n private _adviceDescription: string\n get adviceDescription(): string {\n return this._adviceDescription\n }\n\n private _image: string\n get image(): string {\n return this._image\n }\n\n private _daysRequiredToStart: number\n get daysRequiredToStart(): number {\n return this._daysRequiredToStart\n }\n\n private _flagsRequired: string[]\n get flagsRequired(): string[] {\n return this._flagsRequired\n }\n\n private _questsRequired: QuestsRequiredType[]\n get questsRequired(): QuestsRequiredType[] {\n return this._questsRequired\n }\n\n private _requestDescription: string\n get requestDescription(): string {\n return this._requestDescription\n }\n\n private _onStart: () => void\n get onStart(): () => void {\n return this._onStart\n }\n\n private _onEnd: () => void\n get onEnd(): () => void {\n return this._onEnd\n }\n}\n","export enum ExecutionTypeEnum {\n AUTOMATIC = \"automatic\",\n INTERACTION = \"interaction\",\n}\n","import { GameStorageManager } from \"@drincs/pixi-vn\";\nimport { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes/navigation\";\nimport { getRoomById } from \"../decorators/RoomDecorator\";\n\nconst CURRENT_ROOM_MEMORY_KEY = '___nqtr-current_room_memory___';\n\nexport function setCurrentRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom) {\n let roomRegistrated = getRoomById(room.id);\n if (!roomRegistrated) {\n console.error(`[NQTR] The room ${room.id} is not registered, so it can't be set as current room`);\n return;\n }\n localStorage.setItem(CURRENT_ROOM_MEMORY_KEY, room.id);\n}\n\nexport function getCurrentRoom<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined {\n let roomId = GameStorageManager.getVariable<string>(CURRENT_ROOM_MEMORY_KEY);\n if (!roomId) {\n console.error(`[NQTR] The current room has not yet been set`);\n return\n }\n let room = getRoomById<TRoom>(roomId);\n if (!room) {\n console.error(`[NQTR] Current room ${roomId} not found`);\n return\n }\n return room\n}\n\nexport function getCurrenrLocation<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation | undefined {\n let room = getCurrentRoom<RoomBaseModel<TLocation>>();\n if (!room) {\n return\n }\n return room.location\n}\n\nexport function getCueerntMap<TMap extends MapBaseModel = MapBaseModel>(): TMap | undefined {\n let location = getCurrenrLocation<LocationBaseModel<TMap>>();\n if (!location) {\n return\n }\n return location.map\n}\n","import { ActivityRoom } from \"../classes/navigation/ActivityRoom\"\nimport { registeredRooms } from \"../decorators/RoomDecorator\"\nimport { getCurrentRoom } from \"./NavigationFunctions\"\n\nexport function clearExpiredActivities() {\n Object.entries(registeredRooms).forEach(([_, room]) => {\n room.clearExpiredActivities()\n })\n}\n\nexport function currentActivities(): ActivityRoom[] {\n let currentRoom = getCurrentRoom()\n if (!currentRoom) {\n return []\n }\n return currentRoom.activities.filter(activity => !activity.hidden)\n}\n"],"mappings":"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","names":["getFlag","getFlag","getFlag","StoredClassModel","getFlag","StoredClassModel","GameStorageManager","commitment","StoredClassModel","getFlag","StoredClassModel","StoredClassModel","StoredClassModel","ExecutionTypeEnum","GameStorageManager","GameStorageManager"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drincs/nqtr",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "A complete system introducing the concepts of location, time and event, producing the framework of a not-quite-point-and-click adventure game.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",