@drincs/nqtr 0.0.2 → 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.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 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 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\n static get isWeekend(): boolean {\n return TimeManager.weekDayNumber >= TimeManager.weekendStartDay\n }\n static get weekDayNumber(): number {\n let result = TimeManager.currentDay % TimeManager.weekLength\n return result + 1\n }\n static get weekDayName(): string | undefined {\n let weekDayNumber = TimeManager.weekDayNumber - 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\n static newHour(timeSpent: number = TimeManager.defaultTimeSpent): number {\n let newHour = TimeManager.currentHour + timeSpent\n if (newHour >= TimeManager.maxDayHours) {\n TimeManager.newDay()\n newHour = TimeManager.minDayHours + (newHour - TimeManager.maxDayHours)\n }\n TimeManager.currentHour = newHour\n return newHour\n }\n\n static newDay(days: number = 1): number {\n let newDay = TimeManager.currentDay + days\n TimeManager.currentDay = newDay\n return newDay\n }\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":["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
@@ -127,6 +127,9 @@ var TimeManager = class _TimeManager {
127
127
  }
128
128
  return result;
129
129
  }
130
+ /**
131
+ * Get the current hour
132
+ */
130
133
  static get currentHour() {
131
134
  let data = GameStorageManager.getVariable(TIME_DATA_KEY) || {};
132
135
  if (data.hasOwnProperty("currentHour") && typeof data.currentHour === "number") {
@@ -143,6 +146,9 @@ var TimeManager = class _TimeManager {
143
146
  }
144
147
  GameStorageManager.setVariable(TIME_DATA_KEY, data);
145
148
  }
149
+ /**
150
+ * Get the current day
151
+ */
146
152
  static get currentDay() {
147
153
  let data = GameStorageManager.getVariable(TIME_DATA_KEY) || {};
148
154
  if (data.hasOwnProperty("currentDay") && typeof data.currentDay === "number") {
@@ -159,35 +165,92 @@ var TimeManager = class _TimeManager {
159
165
  }
160
166
  GameStorageManager.setVariable(TIME_DATA_KEY, data);
161
167
  }
168
+ /**
169
+ * If the current day is greater than or equal to the weekend start day, then it will return true.
170
+ */
162
171
  static get isWeekend() {
163
- return _TimeManager.weekDayNumber >= _TimeManager.weekendStartDay;
172
+ return _TimeManager.currentWeekDayNumber >= _TimeManager.weekendStartDay;
164
173
  }
165
- static get weekDayNumber() {
174
+ /**
175
+ * Get the current week day number (1-TimeManager.weekLength).
176
+ * For example, if the week length is 7 and the current day is 10, then the result will be 4.
177
+ */
178
+ static get currentWeekDayNumber() {
166
179
  let result = _TimeManager.currentDay % _TimeManager.weekLength;
167
180
  return result + 1;
168
181
  }
169
- static get weekDayName() {
170
- let weekDayNumber = _TimeManager.weekDayNumber - 1;
182
+ /**
183
+ * Get the current week day name. If the week days names are not defined, then it will return undefined.
184
+ * 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'.
185
+ */
186
+ static get currentDayName() {
187
+ let weekDayNumber = _TimeManager.currentWeekDayNumber - 1;
171
188
  if (weekDayNumber >= _TimeManager.weekDaysNames.length) {
172
189
  console.warn(`[NQTR] Week day name is not defined for day ${weekDayNumber}`, _TimeManager.weekDaysNames);
173
190
  return void 0;
174
191
  }
175
192
  return _TimeManager.weekDaysNames[weekDayNumber];
176
193
  }
177
- static newHour(timeSpent = _TimeManager.defaultTimeSpent) {
194
+ /**
195
+ * Get the current TimeManager.timeSlots index.
196
+ * You can use this property to create "Image that changes based on the time period":
197
+ * @example
198
+ * ```ts
199
+ * import { TimeManager } from '@drincs/nqtr';
200
+ *
201
+ * function changeBackground() {
202
+ * return (
203
+ * <img src={`background-${TimeManager.currentTimeSlot}.png`} />
204
+ * )
205
+ * }
206
+ */
207
+ static get currentTimeSlots() {
208
+ if (_TimeManager.timeSlots.length === 0) {
209
+ console.warn("[NQTR] Time slots are not defined");
210
+ return 0;
211
+ }
212
+ _TimeManager.timeSlots.forEach((slot, index) => {
213
+ if (_TimeManager.timeSlots.length > index + 1) {
214
+ if (_TimeManager.nowIsBetween(slot.startHour, _TimeManager.timeSlots[index + 1].startHour)) {
215
+ return index;
216
+ }
217
+ }
218
+ });
219
+ return 0;
220
+ }
221
+ /**
222
+ * This function will increase the current hour by the given time spent.
223
+ * 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.
224
+ * @param timeSpent is the time spent in hours (default: TimeManager.defaultTimeSpent)
225
+ * @returns TimeManager.currentHour
226
+ */
227
+ static increaseHour(timeSpent = _TimeManager.defaultTimeSpent) {
178
228
  let newHour = _TimeManager.currentHour + timeSpent;
179
229
  if (newHour >= _TimeManager.maxDayHours) {
180
- _TimeManager.newDay();
230
+ _TimeManager.increaseDay();
181
231
  newHour = _TimeManager.minDayHours + (newHour - _TimeManager.maxDayHours);
182
232
  }
183
233
  _TimeManager.currentHour = newHour;
184
- return newHour;
234
+ return _TimeManager.currentHour;
185
235
  }
186
- static newDay(days = 1) {
236
+ /**
237
+ * This function will increase the current day by the given days.
238
+ * @param newDayHour is the hour of the new day (default: TimeManager.minDayHours)
239
+ * @param days is the number of days to increase (default: 1)
240
+ * @returns TimeManager.currentDay
241
+ */
242
+ static increaseDay(newDayHour = _TimeManager.minDayHours, days = 1) {
187
243
  let newDay = _TimeManager.currentDay + days;
188
244
  _TimeManager.currentDay = newDay;
189
- return newDay;
245
+ _TimeManager.currentHour = newDayHour;
246
+ return _TimeManager.currentDay;
190
247
  }
248
+ /**
249
+ * This function will check if the current hour is between the given hours.
250
+ * @param fromHour the starting hour. If the TimeManager.currentHour is equal to this hour, the function will return true.
251
+ * @param toHour the ending hour.
252
+ * @returns true if the current hour is between the given hours, otherwise false.
253
+ */
191
254
  static nowIsBetween(fromHour, toHour) {
192
255
  let currentHour = _TimeManager.currentHour;
193
256
  if (fromHour < toHour) {
@@ -371,22 +434,53 @@ var ActivityModel = class {
371
434
 
372
435
  // src/classes/navigation/Location.ts
373
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
374
468
  var LOCATION_CATEGORY = "__nqtr-location__";
375
469
  var LocationBaseModel = class extends StoredClassModel {
376
- constructor(id, map, entrance, props) {
470
+ constructor(id, map, props) {
377
471
  super(LOCATION_CATEGORY, id);
378
- if (entrance.location.id !== id) {
379
- throw new Error(`[NQTR] Entrance room ${entrance.id} is not in location ${id}`);
380
- }
381
- this._entrance = entrance;
382
472
  this.defaultName = props.name || "";
383
473
  this.defaultDisabled = props.disabled || false;
384
474
  this.defaultHidden = props.hidden || false;
385
475
  this._iconElement = props.iconElement;
386
476
  this._map = map;
387
477
  }
388
- get entrance() {
389
- 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];
390
484
  }
391
485
  get name() {
392
486
  return this.getStorageProperty("name") || this.defaultName;
@@ -560,32 +654,6 @@ function getTemporaryCommitments() {
560
654
  return commitments;
561
655
  }
562
656
 
563
- // src/decorators/RoomDecorator.ts
564
- var registeredRooms = {};
565
- function saveRoom(room) {
566
- if (Array.isArray(room)) {
567
- room.forEach((c) => saveRoom(c));
568
- return;
569
- }
570
- if (registeredRooms[room.id]) {
571
- console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`);
572
- }
573
- registeredRooms[room.id] = room;
574
- }
575
- function getRoomById(id) {
576
- try {
577
- let room = registeredRooms[id];
578
- if (!room) {
579
- console.error(`[NQTR] Room ${id} not found`);
580
- return;
581
- }
582
- return room;
583
- } catch (e) {
584
- console.error(`[NQTR] Error while getting Room ${id}`, e);
585
- return;
586
- }
587
- }
588
-
589
657
  // src/functions/RoutineFunctions.ts
590
658
  function clearExpiredRoutine() {
591
659
  Object.entries(registeredCommitments).forEach(([_, commitment]) => {
@@ -695,10 +763,14 @@ var RoomBaseModel = class extends StoredClassModel3 {
695
763
  this.defaultDisabled = props.disabled || false;
696
764
  this.defaultHidden = props.hidden || false;
697
765
  this._iconElement = props.iconElement;
766
+ this._isEntrance = props.isEntrance;
698
767
  }
699
768
  get location() {
700
769
  return this._location;
701
770
  }
771
+ get isEntrance() {
772
+ return this._isEntrance || false;
773
+ }
702
774
  get name() {
703
775
  return this.getStorageProperty("name") || this.defaultName;
704
776
  }