{"version":3,"sources":["../src/classes/index.ts","../src/managers/index.ts","../src/managers/NavigatorManager.ts","../src/decorators/RoomDecorator.ts","../src/decorators/QuestDecorator.ts","../src/managers/QuestManager.ts","../src/decorators/CommitmentDecorator.ts","../src/managers/RoutineManager.ts","../src/managers/TimeManager.ts","../src/constants.ts","../src/managers/TimeManagerSettings.ts","../src/classes/ActivityStoredClass.ts","../src/classes/ActivityBaseModel.ts","../src/classes/CommitmentStoredClass.ts","../src/classes/CommitmentBaseModel.ts","../src/decorators/index.ts","../src/decorators/ActivityDecorator.ts","../src/classes/navigation/NavigationAbstractClass.ts","../src/classes/navigation/LocationStoredClass.ts","../src/classes/navigation/LocationBaseModel.ts","../src/classes/navigation/MapStoredClass.ts","../src/classes/navigation/MapBaseModel.ts","../src/classes/navigation/RoomStoredClass.ts","../src/classes/navigation/RoomBaseModel.ts","../src/classes/quest/QuestStoredClass.ts","../src/classes/quest/QuestBaseModel.ts","../src/classes/quest/StageStoredClass.ts","../src/classes/quest/StageBaseModel.ts","../src/interface/index.ts","../src/types/index.ts","../src/index.ts"],"names":["classes_exports","__export","ActivityBaseModel","ActivityStoredClass","CommitmentBaseModel","CommitmentStoredClass","LocationBaseModel","LocationStoredClass","MapBaseModel","MapStoredClass","QuestBaseModel","QuestStoredClass","RoomBaseModel","RoomStoredClass","StageBaseModel","StageStoredClass","managers_exports","navigator","questsNotebook","routine","timeTracker","registeredRooms","saveRoom","room","c","getRoomById","id","CURRENT_ROOM_MEMORY_KEY","NavigatorManager","result","roomId","storage","_","registeredQuests","saveQuest","quest","getQuestById","QuestManager","props","registeredCommitments","fixedCommitments","saveCommitment","commitment","getCommitmentById","TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY","RoutineManager","commitments","commitmentsIds","currentCommitments","character_commitments","ch","character","TIME_DATA_KEY","TimeManagerSettings","TimeManager","settings","minDayHours","maxDayHours","defaultTimeSpent","timeSlots","weekLength","weekendStartDay","weekDaysNames","data","value","weekDayNumber","index","slot","timeSpent","newHour","newDayHour","days","newDay","fromHour","toHour","currentHour","ACTIVITY_CATEGORY","StoredClassModel","_onRun","category","onRun","getFlag","COMMITMENT_CATEGORY","_characters","_room","decorators_exports","getActivityById","saveActivity","registeredActivities","activities","activity","NavigationAbstractClass","categoryId","defaultActivities","activityId","activeActivityScheduling","excludedActivitiesScheduling","scheduling","options","hours","fromDay","toDay","additionalActivitiesIds","excludedActivitiesIds","res","a","LOCATION_CATEGORY","_map","map","MAP_CATEGORY","location","ROOM_CATEGORY","_location","characters","QUEST_CATEGORY","_stages","currentStage","prevStage","currentStageIndex","nextCurrentStage","newCurrentStage","stages","STAGE_CATEGORY","prevStageEndDay","daysRequired","q","flag","interface_exports","types_exports","nqtr","index_default"],"mappings":"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","file":"index.mjs","sourcesContent":["export { default as ActivityBaseModel } from \"./ActivityBaseModel\";\nexport { default as ActivityStoredClass } from \"./ActivityStoredClass\";\nexport { default as CommitmentBaseModel } from \"./CommitmentBaseModel\";\nexport { default as CommitmentStoredClass } from \"./CommitmentStoredClass\";\nexport { default as LocationBaseModel } from \"./navigation/LocationBaseModel\";\nexport { default as LocationStoredClass } from \"./navigation/LocationStoredClass\";\nexport { default as MapBaseModel } from \"./navigation/MapBaseModel\";\nexport { default as MapStoredClass } from \"./navigation/MapStoredClass\";\nexport { default as RoomBaseModel } from \"./navigation/RoomBaseModel\";\nexport { default as RoomStoredClass } from \"./navigation/RoomStoredClass\";\nexport { default as QuestBaseModel } from \"./quest/QuestBaseModel\";\nexport { default as QuestStoredClass } from \"./quest/QuestStoredClass\";\nexport { default as StageBaseModel } from \"./quest/StageBaseModel\";\nexport { default as StageStoredClass } from \"./quest/StageStoredClass\";\n","import NavigatorManager from \"./NavigatorManager\";\nimport QuestManager from \"./QuestManager\";\nimport RoutineManager from \"./RoutineManager\";\nimport { default as TimeManager } from \"./TimeManager\";\n\nconst timeTracker = new TimeManager();\nconst navigator = new NavigatorManager();\nconst routine = new RoutineManager();\nconst questsNotebook = new QuestManager();\n\nexport { navigator, questsNotebook, routine, timeTracker };\n","import { storage } from \"@drincs/pixi-vn\";\nimport { getRoomById, registeredRooms } from \"../decorators/RoomDecorator\";\nimport { LocationInterface, MapInterface, RoomInterface } from \"../interface\";\n\nconst CURRENT_ROOM_MEMORY_KEY = \"___nqtr-current_room_memory___\";\nexport default class NavigatorManager {\n    get rooms() {\n        return Object.values(registeredRooms);\n    }\n    get locations() {\n        let result: { [id: string]: LocationInterface } = {};\n        Object.values(registeredRooms).forEach((room) => {\n            result[room.location.id] = room.location;\n        });\n        return Object.values(result);\n    }\n    get maps() {\n        let result: { [id: string]: MapInterface } = {};\n        Object.values(registeredRooms).forEach((room) => {\n            result[room.location.map.id] = room.location.map;\n        });\n        return Object.values(result);\n    }\n    get currentRoom(): RoomInterface | undefined {\n        let roomId = storage.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(roomId);\n        if (!room) {\n            console.error(`[NQTR] Current room ${roomId} not found`);\n            return;\n        }\n        return room;\n    }\n    set currentRoom(room: RoomInterface | string) {\n        if (typeof room !== \"string\") {\n            room = room.id;\n        }\n        let roomRegistrated = getRoomById(room);\n        if (!roomRegistrated) {\n            console.error(`[NQTR] The room ${room} is not registered, so it can't be set as current room`);\n            return;\n        }\n        storage.setVariable(CURRENT_ROOM_MEMORY_KEY, room);\n    }\n    get currentLocation(): LocationInterface | undefined {\n        return this.currentRoom?.location;\n    }\n    get currentMap(): MapInterface | undefined {\n        return this.currentRoom?.location.map;\n    }\n    /**\n     * Clear all the expired activities.\n     */\n    clearExpiredActivities() {\n        Object.entries(registeredRooms).forEach(([_, room]) => {\n            room.clearExpiredActivities();\n        });\n    }\n}\n","import { RoomInterface } from \"../interface\";\n\nexport const registeredRooms: { [id: string]: RoomInterface } = {};\n\n/**\n * Save a room in the registered rooms. If the room already exists, it will be overwritten.\n * @param room The room to save.\n * @returns\n * @example\n * ```ts\n * saveRoom([mcRoom, aliceRoom, annRoom, bathroom, lounge, terrace, gymRoom]);\n * ```\n */\nexport function saveRoom(room: RoomInterface | RoomInterface[]) {\n\tif (Array.isArray(room)) {\n\t\troom.forEach((c) => saveRoom(c));\n\t\treturn;\n\t}\n\tif (registeredRooms[room.id]) {\n\t\tconsole.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`);\n\t}\n\tregisteredRooms[room.id] = room;\n}\n\n/**\n * Get a room by its id.\n * @param id The id of the room.\n * @returns The room or undefined if not found.\n */\nexport function getRoomById(id: string): RoomInterface | undefined {\n\ttry {\n\t\tlet room = registeredRooms[id];\n\t\tif (!room) {\n\t\t\tconsole.error(`[NQTR] Room ${id} not found`);\n\t\t\treturn;\n\t\t}\n\t\treturn room;\n\t} catch (e) {\n\t\tconsole.error(`[NQTR] Error while getting Room ${id}`, e);\n\t\treturn;\n\t}\n}\n","import { QuestInterface } from \"../interface\";\n\nexport const registeredQuests: { [id: string]: QuestInterface } = {};\n\n/**\n * Save a quest in the registered quests. If the quest already exists, it will be overwritten.\n * @param id The id of the quest, it must be unique\n * @param stages The stages of the quest\n * @param props The quest properties\n * @returns The created quest\n */\nexport function saveQuest(quest: QuestInterface | QuestInterface[]) {\n\tif (Array.isArray(quest)) {\n\t\tquest.forEach((c) => saveQuest(c));\n\t\treturn;\n\t}\n\tif (registeredQuests[quest.id]) {\n\t\tconsole.warn(`[NQTR] Quest id ${quest.id} already exists, it will be overwritten`);\n\t}\n\tregisteredQuests[quest.id] = quest;\n}\n\n/**\n * Get a quest by its id.\n * @param id The id of the quest.\n * @returns The quest or undefined if not found.\n */\nexport function getQuestById(id: string): QuestInterface | undefined {\n\ttry {\n\t\tlet quest = registeredQuests[id];\n\t\tif (!quest) {\n\t\t\tconsole.error(`[NQTR] Quest ${id} not found`);\n\t\t\treturn;\n\t\t}\n\t\treturn quest;\n\t} catch (e) {\n\t\tconsole.error(`[NQTR] Error while getting Quest ${id}`, e);\n\t\treturn;\n\t}\n}\n","import { OnRunProps } from \"@drincs/nqtr\";\nimport { getQuestById, registeredQuests } from \"../decorators/QuestDecorator\";\nimport { QuestInterface } from \"../interface\";\n\nexport default class QuestManager {\n    get quests(): QuestInterface[] {\n        return Object.values(registeredQuests);\n    }\n    get startedQuests(): QuestInterface[] {\n        return this.quests.filter((quest) => quest.started);\n    }\n    get completedQuests(): QuestInterface[] {\n        return this.quests.filter((quest) => quest.completed);\n    }\n    get failedQuests(): QuestInterface[] {\n        return this.quests.filter((quest) => quest.failed);\n    }\n    get notStartedQuests(): QuestInterface[] {\n        return this.quests.filter((quest) => !quest.started);\n    }\n\n    find(id: string): QuestInterface | undefined {\n        return getQuestById(id);\n    }\n\n    /**\n     * Start the quests that must start on the current stage.\n     */\n    startsStageMustBeStarted(props: OnRunProps) {\n        Object.values(registeredQuests).forEach((quest) => {\n            if (quest.currentStageMustStart) {\n                quest.startCurrentStage(props);\n            }\n        });\n    }\n}\n","import { CommitmentInterface } from \"../interface\";\n\nexport const registeredCommitments: { [id: string]: CommitmentInterface } = {};\nexport const fixedCommitments: { [id: string]: CommitmentInterface } = {};\n\n/**\n * Save a commitment in the registered commitments. If the commitment already exists, it will be overwritten.\n * @param commitment The commitment or commitments to save.\n * @returns\n */\nexport function saveCommitment(commitment: CommitmentInterface | CommitmentInterface[]) {\n\tif (Array.isArray(commitment)) {\n\t\tcommitment.forEach((c) => saveCommitment(c));\n\t\treturn;\n\t}\n\tif (registeredCommitments[commitment.id]) {\n\t\tconsole.warn(`[NQTR] Commitment id ${commitment.id} already exists, it will be overwritten`);\n\t}\n\tregisteredCommitments[commitment.id] = commitment;\n}\n\n/**\n * Get a commitment by its id.\n * @param id The id of the commitment.\n * @returns The commitment or undefined if not found.\n */\nexport function getCommitmentById(id: string): CommitmentInterface | undefined {\n\ttry {\n\t\tlet commitment = registeredCommitments[id];\n\t\tif (!commitment) {\n\t\t\tconsole.error(`[NQTR] Commitment ${id} not found`);\n\t\t\treturn;\n\t\t}\n\t\treturn commitment;\n\t} catch (e) {\n\t\tconsole.error(`[NQTR] Error while getting Commitment ${id}`, e);\n\t\treturn;\n\t}\n}\n","import { CharacterInterface, storage } from \"@drincs/pixi-vn\";\nimport { navigator } from \".\";\nimport { fixedCommitments, getCommitmentById, registeredCommitments } from \"../decorators/CommitmentDecorator\";\nimport { CommitmentInterface } from \"../interface\";\n\nconst TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY = \"___nqtr-temporary_commitment___\";\nexport default class RoutineManager {\n\tget fixedRoutine(): CommitmentInterface[] {\n\t\treturn Object.values(fixedCommitments);\n\t}\n\t/**\n\t * Set a commitment as fixed, it will be always available. They cannot be deleted or edit during the game session.\n\t */\n\tset fixedRoutine(commitments: CommitmentInterface[]) {\n\t\tcommitments.forEach((c) => {\n\t\t\tif (fixedCommitments[c.id]) {\n\t\t\t\tconsole.warn(`[NQTR] Commitment id ${c.id} already exists, it will be overwritten`);\n\t\t\t}\n\t\t\tfixedCommitments[c.id] = c;\n\t\t});\n\t}\n\n\t/**\n\t * Get the temporary commitments by its id.\n\t * @returns The temporary commitments.\n\t */\n\tget temporaryRoutine(): CommitmentInterface[] {\n\t\tlet commitmentsIds = storage.getVariable<string[]>(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY);\n\t\tif (!commitmentsIds) {\n\t\t\treturn [];\n\t\t}\n\t\tlet commitments = commitmentsIds\n\t\t\t.map((id) => getCommitmentById(id))\n\t\t\t.filter((commitment) => commitment !== undefined);\n\t\treturn commitments;\n\t}\n\n\tget allRoutine(): CommitmentInterface[] {\n\t\treturn [...this.fixedRoutine, ...this.temporaryRoutine];\n\t}\n\n\t/**\n\t * This feature adds the commitments during the game session.\n\t * @param commitment The commitment or commitments to add.\n\t */\n\tadd(commitment: CommitmentInterface[] | CommitmentInterface) {\n\t\tif (!Array.isArray(commitment)) {\n\t\t\tcommitment = [commitment];\n\t\t}\n\t\tlet commitmentsIds = commitment\n\t\t\t.map((commitment) => {\n\t\t\t\tlet commitmentTest = getCommitmentById(commitment.id);\n\t\t\t\tif (!commitmentTest) {\n\t\t\t\t\tconsole.warn(`[NQTR] Commitment ${commitment.id} not found, it will be ignored`);\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\treturn commitment.id;\n\t\t\t})\n\t\t\t.filter((id) => id !== undefined);\n\n\t\tstorage.setVariable(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY, commitmentsIds);\n\t}\n\n\t/**\n\t * Get the commitments added during the game session.\n\t * @param id The id of the commitment.\n\t * @returns The commitment or undefined if not found.\n\t */\n\tfind(id: string): CommitmentInterface | undefined {\n\t\treturn getCommitmentById(id);\n\t}\n\n\t/**\n\t * Remove the commitments added during the game session.\n\t * @param commitment The commitment or commitments to remove.\n\t */\n\tremove(commitment: CommitmentInterface[] | CommitmentInterface) {\n\t\tif (!Array.isArray(commitment)) {\n\t\t\tcommitment = [commitment];\n\t\t}\n\t\tlet commitmentsIds = commitment.map((commitment) => {\n\t\t\treturn commitment.id;\n\t\t});\n\n\t\tlet currentCommitments = storage.getVariable<string[]>(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY);\n\t\tif (!currentCommitments) {\n\t\t\treturn;\n\t\t}\n\t\tcurrentCommitments = currentCommitments.filter((id) => !commitmentsIds.includes(id));\n\t\tstorage.setVariable(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY, currentCommitments);\n\t}\n\n\t/**\n\t * Clear all the expired commitments.\n\t */\n\tclearExpiredRoutine() {\n\t\tObject.values(registeredCommitments).forEach((commitment) => {\n\t\t\tif (commitment.expired) {\n\t\t\t\tdelete registeredCommitments[commitment.id];\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Get the current commitments. The hidden commitments are not included.\n\t * In case there is a character who has two or more commitments at the same time, will be selected the commitment with the highest priority.\n\t * Higher priority commitments are calculated using the following steps:\n\t * 1. The commitments that have Commitments BaseModel.priority set to a higher value will be selected first.\n\t * 2. If there are commitments with the same priority, the commitments that are not fixed will be selected first.\n\t * 3. If there are commitments with the same priority and the same fixed status, priority will be given to the commitment with a lower index.\n\t * @returns The current commitments.\n\t */\n\tget currentRoutine(): CommitmentInterface[] {\n\t\tlet character_commitments: { [character: string]: CommitmentInterface } = {};\n\t\t[...this.temporaryRoutine, ...this.fixedRoutine].reverse().forEach((c) => {\n\t\t\tif (c.isActive) {\n\t\t\t\tif (c.characters.length > 0) {\n\t\t\t\t\t// all the characters don't already have commitments or the commitment has a higher priority\n\t\t\t\t\tlet allAvailable = c.characters.every(\n\t\t\t\t\t\t(ch) => !character_commitments[ch.id] || c.priority > character_commitments[ch.id].priority\n\t\t\t\t\t);\n\t\t\t\t\tif (allAvailable) {\n\t\t\t\t\t\tc.characters.forEach((ch) => {\n\t\t\t\t\t\t\tcharacter_commitments[ch.id] = c;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(`[NQTR] The commitment ${c.id} has no characters assigned`);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn Object.values(character_commitments);\n\t}\n\n\tget currentRoomRoutine(): CommitmentInterface[] {\n\t\treturn navigator.currentRoom?.routine || [];\n\t}\n\n\t/**\n\t * Get the character commitment.\n\t * @param character The character.\n\t * @returns The commitment or undefined if not found.\n\t */\n\tgetCommitmentByCharacter(character: CharacterInterface): CommitmentInterface | undefined {\n\t\tthis.currentRoutine.forEach((c) => {\n\t\t\tif (c.characters.map((ch) => ch.id).includes(character.id)) {\n\t\t\t\treturn c;\n\t\t\t}\n\t\t});\n\t\treturn undefined;\n\t}\n}\n","import { storage } from \"@drincs/pixi-vn\";\nimport { TIME_DATA_KEY } from \"../constants\";\nimport TimeDataType from \"../types/TimeDataType\";\nimport { ITimeStlot, TimeSettings } from \"../types/TimeSettings\";\nimport TimeManagerSettings from \"./TimeManagerSettings\";\n\nexport default class TimeManager {\n    initialize(settings: TimeSettings) {\n        const {\n            minDayHours = 0,\n            maxDayHours = 24,\n            defaultTimeSpent = 1,\n            timeSlots = [],\n            weekLength = 7,\n            weekendStartDay = weekLength - 1,\n            weekDaysNames = [],\n        } = settings;\n        TimeManagerSettings.minDayHours = minDayHours;\n        TimeManagerSettings.maxDayHours = maxDayHours;\n        TimeManagerSettings.defaultTimeSpent = defaultTimeSpent;\n        TimeManagerSettings.timeSlots = timeSlots;\n        TimeManagerSettings.weekLength = weekLength;\n        if (weekendStartDay >= TimeManagerSettings.weekLength) {\n            console.warn(`[NQTR] Weekend start day should be less than week length ${weekLength}, so will be ignored`);\n        } else {\n            TimeManagerSettings.weekendStartDay = weekendStartDay;\n        }\n        if (weekDaysNames.length !== weekLength) {\n            console.warn(`[NQTR] Week days names should be equal to week length ${weekLength}, so will be ignored`);\n        } else {\n            TimeManagerSettings.weekDaysNames = weekDaysNames;\n        }\n    }\n    get minDayHours(): number {\n        return TimeManagerSettings.minDayHours;\n    }\n    get maxDayHours(): number {\n        return TimeManagerSettings.maxDayHours;\n    }\n    get defaultTimeSpent(): number {\n        return TimeManagerSettings.defaultTimeSpent;\n    }\n    get timeSlots(): ITimeStlot[] {\n        return TimeManagerSettings.timeSlots;\n    }\n    get weekLength(): number {\n        return TimeManagerSettings.weekLength;\n    }\n    get weekendStartDay(): number {\n        return TimeManagerSettings.weekendStartDay;\n    }\n    get weekDaysNames(): string[] {\n        return TimeManagerSettings.weekDaysNames;\n    }\n\n    /**\n     * Get the current hour\n     */\n    get currentHour(): number {\n        let data = storage.getVariable<TimeDataType>(TIME_DATA_KEY) || {};\n        if (data.hasOwnProperty(\"currentHour\") && typeof data.currentHour === \"number\") {\n            return data.currentHour;\n        }\n        return this.minDayHours;\n    }\n    set currentHour(value: number | undefined) {\n        let data = storage.getVariable<TimeDataType>(TIME_DATA_KEY) || {};\n        if (typeof value === \"number\") {\n            data.currentHour = value;\n        } else {\n            delete data.currentHour;\n        }\n        storage.setVariable(TIME_DATA_KEY, data);\n    }\n    /**\n     * Get the current day\n     */\n    get currentDay(): number {\n        let data = storage.getVariable<TimeDataType>(TIME_DATA_KEY) || {};\n        if (data.hasOwnProperty(\"currentDay\") && typeof data.currentDay === \"number\") {\n            return data.currentDay;\n        }\n        return 0;\n    }\n    set currentDay(value: number | undefined) {\n        let data = storage.getVariable<TimeDataType>(TIME_DATA_KEY) || {};\n        if (typeof value === \"number\") {\n            data.currentDay = value;\n        } else {\n            delete data.currentDay;\n        }\n        storage.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    get isWeekend(): boolean {\n        return this.currentWeekDayNumber >= this.weekendStartDay;\n    }\n    /**\n     * Get the current week day number (1 - {@link weekLength}).\n     * For example, if the week length is 7 and the current day is 10, then the result will be 4.\n     */\n    get currentWeekDayNumber(): number {\n        let result = this.currentDay % this.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     * @default \"\"\n     */\n    get currentDayName(): string {\n        let weekDayNumber = this.currentWeekDayNumber - 1;\n        if (weekDayNumber >= this.weekDaysNames.length) {\n            console.warn(`[NQTR] Week day name is not defined for day ${weekDayNumber}`, this.weekDaysNames);\n            return \"\";\n        }\n        return this.weekDaysNames[weekDayNumber];\n    }\n    /**\n     * Get the current {@link timeSlots} index.\n     * You can use this property to create \"Image that changes based on the time period\":\n     * @example\n     * ```tsx\n     * import { weekLength } from '@drincs/nqtr';\n     *\n     * function changeBackground() {\n     *     return (\n     *         <img src={`background-currentTimeSlot.currentTimeSlot.png`} />\n     *     )\n     * }\n     */\n    get currentTimeSlot(): number {\n        if (this.timeSlots.length === 0) {\n            console.warn(\"[NQTR] Time slots are not defined\");\n            return 0;\n        }\n        for (let index = 0; index < this.timeSlots.length; index++) {\n            let slot = this.timeSlots[index];\n            if (this.timeSlots.length > index + 1) {\n                if (this.nowIsBetween(slot.startHour, this.timeSlots[index + 1].startHour)) {\n                    return index;\n                }\n            }\n        }\n        return this.timeSlots.length - 1;\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: {@link defaultTimeSpent})\n     * @returns currentTimeSlot.currentHour\n     */\n    increaseHour(timeSpent: number = this.defaultTimeSpent): number {\n        let newHour = this.currentHour + timeSpent;\n        if (newHour >= this.maxDayHours) {\n            this.increaseDay();\n            newHour = this.minDayHours + (newHour - this.maxDayHours);\n        }\n        this.currentHour = newHour;\n        return this.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: {@link minDayHours})\n     * @param days is the number of days to increase (default: 1)\n     * @returns timeTracker.currentDay\n     */\n    increaseDay(newDayHour: number = this.minDayHours, days: number = 1): number {\n        let newDay = this.currentDay + days;\n        this.currentDay = newDay;\n        this.currentHour = newDayHour;\n        return this.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 {@link 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    nowIsBetween(fromHour: number | undefined, toHour: number | undefined): boolean {\n        if (fromHour === undefined) {\n            fromHour = this.minDayHours - 1;\n        }\n        if (toHour === undefined) {\n            toHour = this.maxDayHours + 1;\n        }\n        let currentHour = this.currentHour;\n        if (fromHour < toHour) {\n            return currentHour >= fromHour && currentHour < toHour;\n        }\n        return currentHour >= fromHour || currentHour < toHour;\n    }\n}\n","export const TIME_SETTINGS_KEY = '___nqtr-time_manager_settings___';\nexport const TIME_DATA_KEY = '___nqtr-time_manager_data___';\n\n","import { ITimeStlot, TimeSettings } from \"../types/TimeSettings\";\n\nexport default class TimeManagerSettings implements TimeSettings {\n    static minDayHours: number = 0\n    static maxDayHours: number = 24\n    static defaultTimeSpent: number = 1\n    static timeSlots: ITimeStlot[] = []\n    static weekLength: number = 7\n    static weekendStartDay: number = this.weekLength - 1\n    static weekDaysNames: string[] = []\n}\n","import { StoredClassModel } from \"@drincs/pixi-vn\";\nimport { ActivityInterface } from \"../interface\";\nimport { ActivityBaseInternalInterface } from \"../interface/ActivityInterface\";\nimport { timeTracker } from \"../managers\";\nimport { OnRunEvent, OnRunProps } from \"../types/OnRunEvent\";\n\nconst ACTIVITY_CATEGORY = \"__nqtr-activity__\";\nexport default class ActivityStoredClass<OnRunEventType = ActivityInterface>\n    extends StoredClassModel\n    implements ActivityBaseInternalInterface\n{\n    constructor(\n        id: string,\n        private readonly _onRun: OnRunEvent<OnRunEventType>,\n        props: {\n            fromHour?: number;\n            toHour?: number;\n            fromDay?: number;\n            toDay?: number;\n        },\n        category: string = ACTIVITY_CATEGORY\n    ) {\n        super(category, id);\n        this._fromHour = props.fromHour;\n        this._toHour = props.toHour;\n        this._fromDay = props.fromDay;\n        this._toDay = props.toDay;\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    get run(): (props: OnRunProps) => void {\n        return (props) => this._onRun(this as any, props);\n    }\n\n    get expired(): boolean {\n        if (this.toDay && this.toDay <= timeTracker.currentDay) {\n            return true;\n        }\n        return false;\n    }\n\n    get isActive(): boolean {\n        if (this.fromDay && this.fromDay > timeTracker.currentDay) {\n            return false;\n        }\n        if (this.toDay && this.toDay < timeTracker.currentDay) {\n            return false;\n        }\n        if (!timeTracker.nowIsBetween(this.fromHour, this.toHour)) {\n            return false;\n        }\n        return true;\n    }\n}\n","import { getFlag } from \"@drincs/pixi-vn\";\nimport { ActivityInterface, ActivityProps } from '../interface';\nimport { OnRunEvent } from '../types/OnRunEvent';\nimport ActivityStoredClass from './ActivityStoredClass';\n\n/**\n * The activity model. It is used to create an activity.\n * @example\n * ```tsx\n * export const nap = new ActivityModel(\"nap\",\n *     (_, event) => {\n *         if (event) {\n *             event.navigate(\"/game\")\n *             callLabelWithGoNavigationCallBack(napLabel, event)\n *         }\n *         else {\n *             console.error(\"Event is undefined\")\n *         }\n *     },\n *     {\n *         name: \"Nap\",\n *         fromHour: 5,\n *         toHour: 23,\n *         icon: \"https://icon.jpg\",\n *     }\n * )\n * ```\n */\nexport default class ActivityBaseModel extends ActivityStoredClass<ActivityInterface> {\n    /**\n     * @param id The activity id, that must be unique.\n     * @param onRun The function that is called when the activity is runned. Have 2 parameters: the runned activity and the yourParams object, that is an object with the parameters that you want to pass to the onRun function.\n     * @param props The activity properties.\n     */\n    constructor(id: string, onRun: OnRunEvent<ActivityInterface>, props: ActivityProps) {\n        super(id, onRun, {\n            fromHour: props.fromHour,\n            toHour: props.toHour,\n            fromDay: props.fromDay,\n            toDay: props.toDay,\n        })\n        this.defaultName = props.name || \"\"\n        this.defaultDisabled = props.disabled || false\n        this.defaultHidden = props.hidden || false\n        this._icon = props.renderIcon\n    }\n\n    private defaultName: string\n    /**\n     * The name of the activity.\n     */\n    get name(): string {\n        return this.getStorageProperty<string>(\"name\") || this.defaultName\n    }\n    set name(value: string | undefined) {\n        this.setStorageProperty(\"name\", value)\n    }\n\n    private defaultDisabled: boolean | string\n    /**\n     * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n     */\n    get disabled(): boolean {\n        let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled\n        if (typeof value === \"string\") {\n            return getFlag(value)\n        }\n        return value\n    }\n    set disabled(value: boolean | string) {\n        this.setStorageProperty(\"disabled\", value)\n    }\n\n    private defaultHidden: boolean | string\n    /**\n     * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n     */\n    get hidden(): boolean {\n        let value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden\n        if (typeof value === \"string\") {\n            return getFlag(value)\n        }\n        return value\n    }\n    set hidden(value: boolean | string) {\n        this.setStorageProperty(\"hidden\", value)\n    }\n\n    private _icon?: string\n    /**\n     * The icon of the activity.\n     */\n    get icon(): string | undefined {\n        return this._icon\n    }\n}\n","import { CharacterInterface } from \"@drincs/pixi-vn\";\nimport { CommitmentInterface, RoomInterface } from \"../interface\";\nimport { CommitmentBaseInternalInterface } from \"../interface/CommitmentInterface\";\nimport { ExecutionType } from \"../types\";\nimport { OnRunEvent } from \"../types/OnRunEvent\";\nimport ActivityStoredClass from \"./ActivityStoredClass\";\n\nconst COMMITMENT_CATEGORY = \"__nqtr-commitment__\";\nexport default class CommitmentStoredClass\n    extends ActivityStoredClass<CommitmentInterface>\n    implements CommitmentBaseInternalInterface\n{\n    constructor(\n        id: string,\n        private readonly _characters: CharacterInterface[],\n        private readonly _room: RoomInterface,\n        onRun: OnRunEvent<CommitmentInterface> | undefined,\n        props: {\n            executionType?: ExecutionType;\n            priority?: number;\n            fromHour?: number;\n            toHour?: number;\n            fromDay?: number;\n            toDay?: number;\n        }\n    ) {\n        onRun = onRun || (() => {});\n        super(id, onRun, props, COMMITMENT_CATEGORY);\n        this.defaultExecutionType = props.executionType || \"interaction\";\n        this.defaultPriority = props.priority;\n    }\n    private readonly defaultExecutionType: ExecutionType;\n    private readonly defaultPriority?: number;\n\n    get characters(): CharacterInterface[] {\n        return this._characters;\n    }\n\n    get room(): RoomInterface {\n        return this._room;\n    }\n\n    get executionType(): ExecutionType {\n        return this.getStorageProperty<ExecutionType>(\"executionType\") || this.defaultExecutionType;\n    }\n    set executionType(value: ExecutionType) {\n        this.setStorageProperty(\"executionType\", value);\n    }\n\n    get priority(): number {\n        return this.getStorageProperty<number>(\"priority\") || this.defaultPriority || 0;\n    }\n    set priority(value: number) {\n        this.setStorageProperty(\"priority\", value);\n    }\n}\n","import { CharacterInterface, getFlag } from \"@drincs/pixi-vn\";\nimport { CommitmentProps, RoomInterface } from \"../interface\";\nimport { timeTracker } from \"../managers\";\nimport CommitmentStoredClass from \"./CommitmentStoredClass\";\n\n/**\n * The base model of a commitment. I suggest you extend this class to create your own commitment model.\n * You must use the saveRoom function to save the commitment in the registered commitments.\n * @example\n * ```ts\n * export const mcRoom = new CommitmentBaseModel(\"test\", character, room, {\n *     name: \"Test\",\n *     image: \"https://image.jpg\",\n *     executionType: ExecutionTypeEnum.INTERACTION,\n *     onRun: (commitment) => {\n *         // Do something\n *     }\n * })\n * saveCommitment(mcRoom)\n * ```\n */\nexport default class CommitmentBaseModel extends CommitmentStoredClass {\n    /**\n     * @param id The id of the commitment, it must be unique.\n     * @param character The character or characters that are in the commitment and so in the room.\n     * @param room The room where the commitment is.\n     * @param props The properties of the commitment.\n     */\n    constructor(\n        id: string,\n        character: CharacterInterface | CharacterInterface[] | undefined,\n        room: RoomInterface,\n        props: CommitmentProps\n    ) {\n        super(id, character ? (Array.isArray(character) ? character : [character]) : [], room, props.onRun, {\n            executionType: props.executionType,\n            priority: props.priority,\n            fromHour: props.fromHour,\n            toHour: props.toHour,\n            fromDay: props.fromDay,\n            toDay: props.toDay,\n        });\n        this._name = props.name || \"\";\n        this._image = props.image;\n        this.defaultDisabled = props.disabled || false;\n        this.defaultHidden = props.hidden || false;\n        this._icon = props.icon;\n    }\n\n    private _name: string;\n    /**\n     * The name of the commitment.\n     */\n    get name(): string {\n        return this._name;\n    }\n\n    private _image?: string;\n    /**\n     * The image of the commitment.\n     */\n    get image(): string | undefined {\n        return this._image;\n    }\n\n    private _icon?: string;\n    /**\n     * The icon of the commitment.\n     */\n    get icon(): string | undefined {\n        return this._icon;\n    }\n\n    private defaultDisabled: boolean | string;\n    /**\n     * Whether is disabled. You can also pass a Pixi'VN flag name.\n     */\n    get disabled(): boolean {\n        let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled;\n        if (typeof value === \"string\") {\n            return getFlag(value);\n        }\n        return value;\n    }\n    set disabled(value: boolean | string) {\n        this.setStorageProperty(\"disabled\", value);\n    }\n\n    private defaultHidden: boolean | string;\n    /**\n     * Whether is hidden. You can also pass a Pixi'VN flag name.\n     */\n    get hidden(): boolean {\n        if (this.fromDay && this.fromDay > timeTracker.currentDay) {\n            return true;\n        }\n        if (!timeTracker.nowIsBetween(this.fromHour, this.toHour)) {\n            return true;\n        }\n        if (!this.expired) {\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","export { getActivityById, saveActivity } from \"./ActivityDecorator\";\nexport { saveCommitment } from \"./CommitmentDecorator\";\nexport { saveQuest } from \"./QuestDecorator\";\nexport { saveRoom } from \"./RoomDecorator\";\n","import { ActivityInterface } from \"../interface\"\n\nexport const registeredActivities: { [id: string]: ActivityInterface } = {}\n\nexport function saveActivity(activities: ActivityInterface | ActivityInterface[]) {\n    if (Array.isArray(activities)) {\n        activities.forEach(activity => {\n            registeredActivities[activity.id] = activity\n        })\n        return\n    }\n    registeredActivities[activities.id] = activities\n}\n\n/**\n * Get an activity by its id.\n * @param id The id of the activity.\n * @returns The activity or undefined if not found.\n */\nexport function getActivityById(id: string): ActivityInterface | 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\n    }\n    catch (e) {\n        console.error(`[NQTR] Error while getting Activity ${id}`, e)\n        return\n    }\n}\n","import { StoredClassModel } from \"@drincs/pixi-vn\";\nimport { getActivityById } from \"../../decorators\";\nimport { ActivityInterface } from \"../../interface\";\nimport NavigationAbstractInterface from \"../../interface/navigation/NavigationAbstractClass\";\nimport { timeTracker } from \"../../managers\";\n\ntype ActiveScheduling = {\n    fromHour?: number;\n    toHour?: number;\n    fromDay?: number;\n    toDay?: number;\n};\ntype ExcludedScheduling = {\n    toDay?: number;\n};\n\nexport default abstract class NavigationAbstractClass extends StoredClassModel implements NavigationAbstractInterface {\n    constructor(categoryId: string, id: string, private defaultActivities: ActivityInterface[] = []) {\n        super(categoryId, id);\n    }\n    private get defaultActivitiesIds(): string[] {\n        return this.defaultActivities.map((activity) => activity.id);\n    }\n    private get activeActivityScheduling(): { [activityId: string]: ActiveScheduling } {\n        return this.getStorageProperty<{ [activityId: string]: ActiveScheduling }>(`activeActivityScheduling`) || {};\n    }\n    private get excludedActivitiesScheduling(): { [activityId: string]: ExcludedScheduling } {\n        return (\n            this.getStorageProperty<{ [activityId: string]: ExcludedScheduling }>(`excludedActivitiesScheduling`) || {}\n        );\n    }\n    private removeActivityScheduling(activityId: string) {\n        let activeActivityScheduling = this.activeActivityScheduling;\n        delete activeActivityScheduling[activityId];\n        this.setStorageProperty(`activeActivityScheduling`, activeActivityScheduling);\n        let excludedActivitiesScheduling = this.excludedActivitiesScheduling;\n        delete excludedActivitiesScheduling[activityId];\n        this.setStorageProperty(`excludedActivitiesScheduling`, excludedActivitiesScheduling);\n    }\n    private editActivityScheduling(activityId: string, scheduling: ActiveScheduling) {\n        this.removeActivityScheduling(activityId);\n        let activeActivityScheduling = this.activeActivityScheduling;\n        activeActivityScheduling[activityId] = scheduling;\n        this.setStorageProperty(`activeActivityScheduling`, activeActivityScheduling);\n    }\n    private editExcludedActivityScheduling(activityId: string, scheduling: ExcludedScheduling) {\n        this.removeActivityScheduling(activityId);\n        let excludedActivitiesScheduling = this.excludedActivitiesScheduling;\n        excludedActivitiesScheduling[activityId] = scheduling;\n        this.setStorageProperty(`excludedActivitiesScheduling`, excludedActivitiesScheduling);\n    }\n    private get additionalActivitiesIds(): string[] {\n        return this.getStorageProperty<string[]>(`additionalActivitiesIds`) || [];\n    }\n    private get excludedActivitiesIds(): string[] {\n        return this.getStorageProperty<string[]>(`excludedActivitiesIds`) || [];\n    }\n    addActivity(\n        activity: ActivityInterface,\n        options: {\n            /**\n             * the activity will be associated with this class only for the specified hours.\n             * If you set from 3 and to 5, the activity will be associated with this class only for hours 3, 4 and 5. soSo at 2 or 6 it will not be associated with this class.\n             */\n            hours?: {\n                from: number;\n                to: number;\n            };\n            /**\n             * the activity will be associated with this class from the specified day.\n             * If you set 3, the activity will be associated with this class from day 3. So at day 2 it will not be associated with this class.\n             */\n            fromDay?: number;\n            /**\n             * the activity will be associated with this class to the specified day.\n             * If you set 3, the activity will be associated with this class until day 3. So at day 4 it will not be associated with this class.\n             */\n            toDay?: number;\n        } = {}\n    ) {\n        const { hours, fromDay, toDay } = options;\n        let scheduling: ActiveScheduling = {};\n        if (hours) {\n            if (hours.from >= hours.to) {\n                throw new Error(`[NQTR] The from hour must be less than the to hour.`);\n            }\n            scheduling.fromHour = hours.from;\n        }\n        if (fromDay === 0) {\n            console.warn(`[NQTR] The from day must be greater than 0, so it will be ignored.`);\n        }\n        if (toDay === 0) {\n            console.warn(`[NQTR] The to day must be greater than 0, so it will be ignored.`);\n        }\n        if (fromDay && toDay && fromDay >= toDay) {\n            throw new Error(`[NQTR] The from day must be less than the to day.`);\n        }\n        if (fromDay) {\n            scheduling.fromDay = fromDay;\n        }\n        if (toDay) {\n            scheduling.toDay = toDay;\n        }\n\n        if (this.defaultActivitiesIds.includes(activity.id)) {\n            console.warn(`[NQTR] Activity with id ${activity.id} already exists, so it will be ignored.`);\n            return;\n        }\n        let additionalActivitiesIds = this.additionalActivitiesIds;\n        if (additionalActivitiesIds.includes(activity.id)) {\n            if (Object.keys(scheduling).length) {\n                this.editActivityScheduling(activity.id, scheduling);\n                return;\n            } else if (this.excludedActivitiesIds.includes(activity.id)) {\n                this.removeActivityScheduling(activity.id);\n                console.log(\n                    `[NQTR] Activity with id ${activity.id} was excluded, so it will be associated with this class again.`\n                );\n                return;\n            }\n            console.warn(`[NQTR] Activity with id ${activity.id} already exists, so it will be ignored.`);\n            return;\n        }\n        additionalActivitiesIds.push(activity.id);\n        this.setStorageProperty(`additionalActivitiesIds`, additionalActivitiesIds);\n        if (Object.keys(scheduling).length) {\n            this.editActivityScheduling(activity.id, scheduling);\n        }\n    }\n    removeActivity(\n        activity: ActivityInterface,\n        options: {\n            /**\n             * The activity will be excluded from this class only for the specified days.\n             * If to 3, the activity will be excluded from this class only for days 1, 2 and 3. So at day 4 it will be associated with this class.\n             */\n            toDay?: number;\n        } = {}\n    ) {\n        const { toDay } = options;\n        let scheduling: ExcludedScheduling = {};\n        if (toDay === 0) {\n            console.warn(`[NQTR] The to day must be greater than 0, so it will be ignored.`);\n        }\n        if (toDay) {\n            scheduling.toDay = toDay;\n        }\n\n        let additionalActivitiesIds = this.additionalActivitiesIds;\n        if (additionalActivitiesIds.includes(activity.id)) {\n            if (Object.keys(scheduling).length) {\n                this.editExcludedActivityScheduling(activity.id, scheduling);\n                return;\n            }\n            additionalActivitiesIds = additionalActivitiesIds.filter((id) => id !== activity.id);\n            this.setStorageProperty(`additionalActivitiesIds`, additionalActivitiesIds);\n        } else if (this.defaultActivitiesIds.includes(activity.id)) {\n            if (Object.keys(scheduling).length) {\n                this.editExcludedActivityScheduling(activity.id, scheduling);\n                return;\n            }\n            let excludedActivitiesIds = this.excludedActivitiesIds;\n            excludedActivitiesIds.push(activity.id);\n            this.setStorageProperty(`excludedActivitiesIds`, excludedActivitiesIds);\n        } else {\n            console.warn(`[NQTR] Activity with id ${activity.id} not found, so it will be ignored.`);\n        }\n    }\n    clearExpiredActivities() {\n        let activeActivityScheduling = this.activeActivityScheduling;\n        let excludedActivitiesScheduling = this.excludedActivitiesScheduling;\n        let additionalActivitiesIds = this.additionalActivitiesIds;\n        let excludedActivitiesIds = this.excludedActivitiesIds;\n\n        additionalActivitiesIds.forEach((activityId) => {\n            if (activityId in activeActivityScheduling) {\n                let { toDay } = activeActivityScheduling[activityId];\n                if (toDay && toDay < timeTracker.currentDay) {\n                    this.removeActivityScheduling(activityId);\n                    additionalActivitiesIds = additionalActivitiesIds.filter((id) => id !== activityId);\n                }\n            }\n        });\n        excludedActivitiesIds.forEach((activityId) => {\n            if (activityId in excludedActivitiesScheduling) {\n                let { toDay } = excludedActivitiesScheduling[activityId];\n                if (toDay && toDay < timeTracker.currentDay) {\n                    this.removeActivityScheduling(activityId);\n                    excludedActivitiesIds = excludedActivitiesIds.filter((id) => id !== activityId);\n                }\n            }\n        });\n    }\n\n    get activities(): ActivityInterface[] {\n        let res: ActivityInterface[] = [];\n        Object.entries(this.activeActivityScheduling).forEach(([activityId, scheduling]) => {\n            let activity = getActivityById(activityId);\n            const {\n                fromDay = activity?.fromDay,\n                fromHour = activity?.fromHour,\n                toDay = activity?.toDay,\n                toHour = activity?.toHour,\n            } = scheduling;\n            if (\n                activity &&\n                timeTracker.nowIsBetween(fromHour, toHour) &&\n                !(fromDay && fromDay > timeTracker.currentDay) &&\n                !(toDay && toDay < timeTracker.currentDay)\n            ) {\n                res.push(activity);\n            }\n        });\n        Object.entries(this.excludedActivitiesScheduling).forEach(([activityId, scheduling]) => {\n            let activity = getActivityById(activityId);\n            if (activity && activity.isActive && !(scheduling.toDay && scheduling.toDay >= timeTracker.currentDay)) {\n                res.push(activity);\n            }\n        });\n        this.defaultActivities.forEach((activity) => {\n            if (activity.isActive && !res.find((a) => a.id === activity.id)) {\n                res.push(activity);\n            }\n        });\n        return res;\n    }\n}\n","import { ActivityInterface, MapInterface, RoomInterface } from \"../../interface\";\nimport { LocationInternalInterface } from \"../../interface/navigation/LocationInterface\";\nimport { navigator } from \"../../managers\";\nimport NavigationAbstractClass from \"./NavigationAbstractClass\";\n\nconst LOCATION_CATEGORY = \"__nqtr-location__\";\nexport default class LocationStoredClass extends NavigationAbstractClass implements LocationInternalInterface {\n\tconstructor(\n\t\tid: string,\n\t\t/**\n\t\t * The map where the location is.\n\t\t */\n\t\tprivate readonly _map: MapInterface,\n\t\tactivities: ActivityInterface[] = []\n\t) {\n\t\tsuper(LOCATION_CATEGORY, id, activities);\n\t}\n\n\tget map(): MapInterface {\n\t\treturn this._map;\n\t}\n\n\tget rooms(): RoomInterface[] {\n\t\treturn navigator.rooms.filter((room) => room.location.id === this.id);\n\t}\n}\n","import { getFlag } from \"@drincs/pixi-vn\";\nimport { LocationBaseModelProps, MapInterface } from \"../../interface\";\nimport { LocationInternalInterface } from \"../../interface/navigation/LocationInterface\";\nimport LocationStoredClass from \"./LocationStoredClass\";\n\n/**\n * The base model of a location. I suggest you extend this class to create your own location model.\n * @example\n * ```typescript\n * export const mcHome = new LocationBaseModel('mc_home', mainMap, {\n *     name: 'MC Home',\n *     icon: \"https://icon.jpg\",\n * });\n * ```\n */\nexport default class LocationBaseModel extends LocationStoredClass implements LocationInternalInterface {\n\t/**\n\t * @param id The id of the location, it must be unique.\n\t * @param map The map where the location is.\n\t * @param props The properties of the location.\n\t */\n\tconstructor(id: string, map: MapInterface, props: LocationBaseModelProps = {}) {\n\t\tsuper(id, map, props.activities || []);\n\t\tthis.defaultName = props.name || \"\";\n\t\tthis.defaultDisabled = props.disabled || false;\n\t\tthis.defaultHidden = props.hidden || false;\n\t\tthis._icon = props.icon;\n\t}\n\n\tprivate defaultName: string;\n\t/**\n\t * The name of the location.\n\t * If you set undefined, it will return the initial value of name.\n\t */\n\tget name(): string {\n\t\treturn this.getStorageProperty<string>(\"name\") || this.defaultName;\n\t}\n\tset name(value: string | undefined) {\n\t\tthis.setStorageProperty(\"name\", value);\n\t}\n\n\tprivate defaultDisabled: boolean | string;\n\t/**\n\t * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n\t */\n\tget disabled(): boolean {\n\t\tlet value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled;\n\t\tif (typeof value === \"string\") {\n\t\t\treturn getFlag(value);\n\t\t}\n\t\treturn value;\n\t}\n\tset disabled(value: boolean | string) {\n\t\tthis.setStorageProperty(\"disabled\", value);\n\t}\n\n\tprivate defaultHidden: boolean | string;\n\t/**\n\t * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n\t */\n\tget hidden(): boolean {\n\t\tlet value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden;\n\t\tif (typeof value === \"string\") {\n\t\t\treturn getFlag(value);\n\t\t}\n\t\treturn value;\n\t}\n\tset hidden(value: boolean | string) {\n\t\tthis.setStorageProperty(\"hidden\", value);\n\t}\n\n\tprivate _icon?: string;\n\t/**\n\t * The icon of the location.\n\t */\n\tget icon(): string | undefined {\n\t\treturn this._icon;\n\t}\n}\n","import { ActivityInterface, LocationInterface } from \"../../interface\";\nimport { MapBaseInternalInterface } from \"../../interface/navigation/MapInterface\";\nimport { navigator } from \"../../managers\";\nimport NavigationAbstractClass from \"./NavigationAbstractClass\";\n\nconst MAP_CATEGORY = \"__nqtr-map__\";\nexport default class MapStoredClass extends NavigationAbstractClass implements MapBaseInternalInterface {\n\tconstructor(id: string, activities: ActivityInterface[] = []) {\n\t\tsuper(MAP_CATEGORY, id, activities);\n\t}\n\n\tget locations(): LocationInterface[] {\n\t\treturn navigator.locations.filter((location) => location.map.id === this.id);\n\t}\n}\n","import { MapBaseModelProps } from \"../../interface\"\nimport { MapBaseInternalInterface } from \"../../interface/navigation/MapInterface\"\nimport MapStoredClass from \"./MapStoredClass\"\n\n/**\n * The base model of a map. I suggest you extend this class to create your own map model.\n * @example\n * ```typescript\n * export const mainMap = new MapBaseModel('main_map', {\n *     name: 'Main Map',\n *     image: \"https://image.jpg\",\n * });\n * ```\n */\nexport default class MapBaseModel extends MapStoredClass implements MapBaseInternalInterface {\n    /**\n     * @param id The id of the map, it must be unique.\n     * @param props The properties of the map. \n     */\n    constructor(id: string, props: MapBaseModelProps = {}) {\n        super(id, props.activities || [])\n        this.defaultName = props.name || \"\"\n        this._image = props.image\n    }\n\n    private defaultName: string\n    /**\n     * The name of the map.\n     * If you set undefined, it will return the initial value of name.\n     */\n    get name(): string {\n        return this.getStorageProperty<string>(\"name\") || this.defaultName\n    }\n    set name(value: string | undefined) {\n        this.setStorageProperty(\"name\", value)\n    }\n\n    private _image?: string\n    /**\n     * The image of the map.\n     */\n    get image(): string | undefined {\n        return this._image\n    }\n}\n","import { CharacterInterface } from \"@drincs/pixi-vn\";\nimport { ActivityInterface, CommitmentInterface, LocationInterface } from \"../../interface\";\nimport { RoomBaseInternalInterface } from \"../../interface/navigation/RoomInterface\";\nimport { routine } from \"../../managers\";\nimport NavigationAbstractClass from \"./NavigationAbstractClass\";\n\nconst ROOM_CATEGORY = \"__nqtr-room__\";\nexport default class RoomStoredClass extends NavigationAbstractClass implements RoomBaseInternalInterface {\n    constructor(\n        id: string,\n        /**\n         * The location where the room is.\n         */\n        private readonly _location: LocationInterface,\n        activities: ActivityInterface[] = []\n    ) {\n        super(ROOM_CATEGORY, id, activities);\n    }\n    get routine(): CommitmentInterface[] {\n        return routine.currentRoutine.filter((c) => c.room.id === this.id);\n    }\n\n    get location(): LocationInterface {\n        return this._location;\n    }\n\n    get characters(): CharacterInterface[] {\n        let characters: CharacterInterface[] = [];\n        this.routine.forEach((commitment) => {\n            characters.push(...commitment.characters);\n        });\n        return characters;\n    }\n}\n","import { getFlag } from \"@drincs/pixi-vn\";\nimport { saveRoom } from \"../../decorators\";\nimport { CommitmentInterface, LocationInterface, RoomBaseModelProps } from \"../../interface\";\nimport { routine } from \"../../managers\";\nimport RoomStoredClass from \"./RoomStoredClass\";\n\n/**\n * The base model of a room. I suggest you extend this class to create your own room model.\n * **You must use the {@link saveRoom} function to save the room in the registered rooms.**\n * @example\n * ```ts\n * export const mcRoom = new RoomBaseModel('mc_room', mcHome, {\n *     name: \"MC Room\",\n *     icon: \"https://icon.jpg\",\n *     image: \"https://image.jpg\",\n * })\n * saveRoom(mcRoom)\n * ```\n */\nexport default class RoomBaseModel extends RoomStoredClass {\n\t/**\n\t * @param id The id of the room, it must be unique.\n\t * @param location The location where the room is.\n\t * @param props The properties of the room.\n\t */\n\tconstructor(id: string, location: LocationInterface, props: RoomBaseModelProps = {}) {\n\t\tsuper(id, location, props.activities || []);\n\t\tthis.defaultName = props.name || \"\";\n\t\tthis._image = props.image;\n\t\tthis.defaultDisabled = props.disabled || false;\n\t\tthis.defaultHidden = props.hidden || false;\n\t\tthis._icon = props.icon;\n\t}\n\n\tprivate defaultName: string;\n\t/**\n\t * The name.\n\t * If you set undefined, it will return the initial value of name.\n\t */\n\tget name(): string {\n\t\treturn this.getStorageProperty<string>(\"name\") || this.defaultName;\n\t}\n\tset name(value: string | undefined) {\n\t\tthis.setStorageProperty(\"name\", value);\n\t}\n\n\tprivate _image?: string;\n\t/**\n\t * The image of the room.\n\t */\n\tget image(): string | undefined {\n\t\treturn this._image;\n\t}\n\n\tprivate defaultDisabled: boolean | string;\n\t/**\n\t * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n\t */\n\tget disabled(): boolean {\n\t\tlet value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled;\n\t\tif (typeof value === \"string\") {\n\t\t\treturn getFlag(value);\n\t\t}\n\t\treturn value;\n\t}\n\tset disabled(value: boolean | string) {\n\t\tthis.setStorageProperty(\"disabled\", value);\n\t}\n\n\tprivate defaultHidden: boolean | string;\n\t/**\n\t * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n\t */\n\tget hidden(): boolean {\n\t\tlet value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden;\n\t\tif (typeof value === \"string\") {\n\t\t\treturn getFlag(value);\n\t\t}\n\t\treturn value;\n\t}\n\tset hidden(value: boolean | string) {\n\t\tthis.setStorageProperty(\"hidden\", value);\n\t}\n\n\tprivate _icon?: string;\n\t/**\n\t * The function for rendering the icon of the room.\n\t */\n\tget icon(): string | undefined {\n\t\treturn this._icon;\n\t}\n\n\t/**\n\t * Get the character commitments of the room.\n\t * @returns The character commitments of the room.\n\t */\n\tget routine(): CommitmentInterface[] {\n\t\treturn routine.currentRoutine.filter((c) => c.room.id === this.id);\n\t}\n}\n","import { OnRunProps } from \"@drincs/nqtr\";\nimport { StoredClassModel } from \"@drincs/pixi-vn\";\nimport { QuestInterface, StageInterface } from \"../../interface\";\nimport { QuestBaseInternalInterface } from \"../../interface/quest/QuestInterface\";\nimport StageStoredClass from \"./StageStoredClass\";\n\nconst QUEST_CATEGORY = \"__nqtr-quest__\";\nexport default class QuestStoredClass extends StoredClassModel implements QuestBaseInternalInterface {\n    constructor(\n        id: string,\n        private readonly _stages: StageInterface[],\n        props: {\n            /**\n             * The function that will be executed when the quest starts.\n             */\n            onStart?: (stage: QuestInterface, props: OnRunProps) => void;\n            /**\n             * The function that will be executed when a stage end in the quest.\n             */\n            onNextStage?: (stage: QuestInterface, props: OnRunProps) => void;\n        } = {}\n    ) {\n        super(QUEST_CATEGORY, id);\n        this._onStart = props.onStart;\n        this._onNextStage = props.onNextStage;\n    }\n\n    get stages(): StageInterface[] {\n        return this._stages;\n    }\n\n    get currentStageIndex(): number | undefined {\n        return this.getStorageProperty<number>(\"currentStageIndex\");\n    }\n    private set currentStageIndex(value: number | undefined) {\n        this.setStorageProperty(\"currentStageIndex\", value);\n    }\n\n    get currentStage(): StageInterface | undefined {\n        let index = this.currentStageIndex;\n        if (index === undefined || index >= this.stages.length) {\n            return undefined;\n        }\n        return this.stages[index];\n    }\n\n    get started(): boolean {\n        return this.currentStageIndex !== undefined;\n    }\n\n    get completed(): boolean {\n        if (this.currentStageIndex === undefined) {\n            return false;\n        }\n        return this.currentStageIndex > this.stages.length - 1;\n    }\n\n    get failed(): boolean {\n        return this.getStorageProperty<boolean>(\"failed\") || false;\n    }\n    set failed(value: boolean) {\n        this.setStorageProperty(\"failed\", value);\n    }\n\n    private _onStart?: (stage: QuestInterface, props: OnRunProps) => void;\n    get onStart(): undefined | ((stage: QuestInterface, props: OnRunProps) => void) {\n        return this._onStart;\n    }\n\n    private _onNextStage?: (stage: QuestInterface, props: OnRunProps) => void;\n    get onNextStage(): undefined | ((stage: QuestInterface, props: OnRunProps) => void) {\n        return this._onNextStage;\n    }\n\n    start(props: OnRunProps): void {\n        if (this.started) {\n            console.warn(`[NQTR] Quest ${this.id} is already started`);\n            return;\n        }\n        if (this.stages.length === 0) {\n            console.error(`[NQTR] Quest ${this.id} has no stages`);\n            return;\n        }\n        this.currentStageIndex = 0;\n        let currentStage = this.currentStage;\n        if (currentStage && currentStage.start) {\n            this.onStart && this.onStart(this as any as QuestInterface, props);\n            return currentStage.start(props);\n        } else {\n            console.error(`[NQTR] Quest ${this.id} has no start stage`);\n        }\n    }\n\n    tryToGoNextStage(props: OnRunProps): boolean {\n        if (!this.started) {\n            return false;\n        }\n        if (this.completed) {\n            return false;\n        }\n        let currentStage = this.currentStage;\n        if (!currentStage) {\n            console.error(`[NQTR] Quest ${this.id} has no current stage`);\n            return false;\n        }\n        if (currentStage.completed) {\n            return this.goNextStage(props);\n        }\n        return false;\n    }\n\n    completeCurrentStageAndGoNext(props: OnRunProps): boolean {\n        let currentStage = this.currentStage;\n        if (!currentStage) {\n            console.error(`[NQTR] Quest ${this.id} has no current stage`);\n            return false;\n        }\n        currentStage.completed = true;\n        return this.goNextStage(props);\n    }\n\n    goNextStage(props: OnRunProps): boolean {\n        if (!this.started) {\n            console.warn(`[NQTR] Quest ${this.id} is not started`);\n            return false;\n        }\n        if (this.completed) {\n            console.warn(`[NQTR] Quest ${this.id} is already completed`);\n            return false;\n        }\n        let prevStage = this.currentStage;\n        let currentStageIndex = this.currentStageIndex;\n        if (!prevStage || currentStageIndex === undefined) {\n            console.error(`[NQTR] Quest ${this.id} has no current stage`);\n            return false;\n        }\n        this.currentStageIndex = currentStageIndex + 1;\n        this.onNextStage && this.onNextStage(this as any as QuestInterface, props);\n        if (prevStage && prevStage.onEnd) {\n            prevStage.onEnd(prevStage, props);\n        }\n        let nextCurrentStage = this.currentStage;\n        if (nextCurrentStage) {\n            (nextCurrentStage as any as StageStoredClass).inizialize();\n            if (this.currentStageMustStart) {\n                this.startCurrentStage(props);\n            }\n        }\n\n        return true;\n    }\n\n    get currentStageMustStart(): boolean {\n        let currentStage = this.currentStage;\n        if (!currentStage) {\n            return false;\n        }\n        return !currentStage.started && currentStage.canStart && !currentStage.completed;\n    }\n\n    startCurrentStage(props: OnRunProps): void {\n        let newCurrentStage = this.currentStage;\n        if (newCurrentStage && this.currentStageMustStart) {\n            newCurrentStage.start(props);\n        } else {\n            console.warn(`[NQTR] Quest ${this.id} can't start the current stage`);\n        }\n    }\n}\n","import { QuestProps, StageInterface } from \"../../interface\";\r\nimport QuestStoredClass from \"./QuestStoredClass\";\r\n\r\nexport default class QuestBaseModel extends QuestStoredClass {\r\n\tconstructor(id: string, stages: StageInterface[], props: QuestProps) {\r\n\t\tsuper(id, stages, { onStart: props.onStart, onNextStage: props.onNextStage });\r\n\t\tthis._name = props.name || \"\";\r\n\t\tthis._description = props.description || \"\";\r\n\t\tthis._icon = props.icon;\r\n\t\tthis._image = props.image;\r\n\t\tthis._inDevelopment = props.inDevelopment || false;\r\n\t}\r\n\r\n\tprivate _name: string;\r\n\t/**\r\n\t * The name of the quest.\r\n\t */\r\n\tget name(): string {\r\n\t\treturn this._name;\r\n\t}\r\n\r\n\tprivate _description: string;\r\n\t/**\r\n\t * The description of the quest.\r\n\t */\r\n\tget description(): string {\r\n\t\treturn this._description;\r\n\t}\r\n\r\n\tprivate _icon?: string;\r\n\t/**\r\n\t * Icon of the quest.\r\n\t */\r\n\tget icon(): string | undefined {\r\n\t\treturn this._icon;\r\n\t}\r\n\r\n\tprivate _image?: string;\r\n\t/**\r\n\t * Image of the quest.\r\n\t */\r\n\tget image(): string | undefined {\r\n\t\treturn this._image;\r\n\t}\r\n\r\n\tprivate _inDevelopment: boolean;\r\n\t/**\r\n\t * If the quest is in development.\r\n\t */\r\n\tget inDevelopment(): boolean {\r\n\t\treturn this._inDevelopment;\r\n\t}\r\n}\r\n","import { OnRunProps } from \"@drincs/nqtr\";\nimport { StoredClassModel } from \"@drincs/pixi-vn\";\nimport { StageInterface } from \"../../interface\";\nimport { StageBaseInternalInterface } from \"../../interface/quest/StageInterface\";\nimport { timeTracker } from \"../../managers\";\nimport { QuestsRequiredType } from \"../../types\";\n\nconst STAGE_CATEGORY = \"__nqtr-stage__\";\nexport default class StageStoredClass extends StoredClassModel implements StageBaseInternalInterface {\n    constructor(\n        id: string,\n        options: {\n            /**\n             * The function that will be executed when the stage starts.\n             */\n            onStart?: (stage: StageInterface, props: OnRunProps) => void;\n            /**\n             * The function that will be executed when the stage ends.\n             */\n            onEnd?: (stage: StageInterface, props: OnRunProps) => void;\n            /**\n             * The day required to start the stage.\n             * @example If the value is 3, and the previous stage ends on day 1, the stage will start on day 4.\n             */\n            daysRequiredToStart?: number;\n            /**\n             * The quests required to start the stage.\n             * @default []\n             */\n            questsRequiredToStart?: QuestsRequiredType[];\n        } = {}\n    ) {\n        super(STAGE_CATEGORY, id);\n        this._onStart = options.onStart;\n        this._onEnd = options.onEnd;\n        this._daysRequiredToStart = options.daysRequiredToStart;\n        this._questsRequiredToStart = options.questsRequiredToStart || [];\n    }\n\n    private _onStart?: (stage: StageInterface, props: OnRunProps) => void;\n    get onStart(): undefined | ((stage: StageInterface, props: OnRunProps) => void) {\n        return this._onStart;\n    }\n\n    private _onEnd?: (stage: StageInterface, props: OnRunProps) => void;\n    get onEnd(): undefined | ((stage: StageInterface, props: OnRunProps) => void) {\n        return this._onEnd;\n    }\n\n    get completed(): boolean {\n        return this.getStorageProperty<boolean>(\"completed\") || false;\n    }\n    set completed(value: boolean) {\n        this.setStorageProperty(\"completed\", value);\n    }\n\n    get started(): boolean {\n        return this.getStorageProperty<boolean>(\"started\") || false;\n    }\n    set started(value: boolean) {\n        this.setStorageProperty(\"started\", value);\n    }\n\n    private get prevStageEndDay(): number | undefined {\n        return this.getStorageProperty<number>(\"prevStageEndDay\");\n    }\n    private set prevStageEndDay(value: number | undefined) {\n        this.setStorageProperty(\"prevStageEndDay\", value);\n    }\n\n    get startDay(): number | undefined {\n        let prevStageEndDay = this.prevStageEndDay;\n        if (prevStageEndDay === undefined) {\n            return undefined;\n        }\n        return prevStageEndDay + this.daysRequiredToStart;\n    }\n\n    get canStart(): boolean {\n        let daysRequired = this.daysRequiredToStart;\n        if (daysRequired > 0) {\n            let prevStageEndDay = this.prevStageEndDay;\n            if (prevStageEndDay === undefined) {\n                return false;\n            }\n            if (prevStageEndDay + daysRequired > timeTracker.currentDay) {\n                return false;\n            }\n        }\n        if (\n            this.questsRequiredToStart.length > 0 &&\n            !this.questsRequiredToStart.every(\n                (q) => q.quest.currentStageIndex && q.quest.currentStageIndex >= q.stageNumber\n            )\n        ) {\n            return false;\n        }\n        return true;\n    }\n\n    inizialize() {\n        if (this.daysRequiredToStart > 0) {\n            this.prevStageEndDay = timeTracker.currentDay;\n            console.log(`[NQTR] Stage ${this.id} will start on day ${this.startDay}`);\n        }\n    }\n\n    start(props: OnRunProps) {\n        if (this.canStart) {\n            this.started = true;\n            if (this.onStart) {\n                this.onStart(this as any as StageInterface, props);\n            }\n        } else {\n            console.warn(`[NQTR] Stage ${this.id} can't start`);\n        }\n    }\n\n    private _daysRequiredToStart?: number;\n    get daysRequiredToStart(): number {\n        return this._daysRequiredToStart || 0;\n    }\n\n    private _questsRequiredToStart: QuestsRequiredType[];\n    get questsRequiredToStart(): QuestsRequiredType[] {\n        return this._questsRequiredToStart || [];\n    }\n}\n","import { getFlag } from \"@drincs/pixi-vn\";\nimport { StageProps } from \"../../interface\";\nimport StageFlags from \"../../interface/quest/StageFlags\";\nimport StageStoredClass from \"./StageStoredClass\";\n\nexport default class StageBaseModel extends StageStoredClass {\n\tconstructor(id: string, props: StageProps) {\n\t\tsuper(id, {\n\t\t\tonStart: props.onStart,\n\t\t\tonEnd: props.onEnd,\n\t\t\tdaysRequiredToStart: props.daysRequiredToStart,\n\t\t\tquestsRequiredToStart: props.questsRequiredToStart,\n\t\t});\n\t\tthis._name = props.name || \"\";\n\t\tthis._flags = props.flags || [];\n\t\tthis._description = props.description || \"\";\n\t\tthis._adviceDescription = props.adviceDescription || \"\";\n\t\tthis._image = props.image;\n\t\tthis._flagsRequiredToStart = props.flagsRequiredToStart || [];\n\t\tthis._requestDescriptionToStart = props.requestDescriptionToStart || \"\";\n\t}\n\n\tprivate _name: string;\n\t/**\n\t * The name of the stage.\n\t */\n\tget name(): string {\n\t\treturn this._name;\n\t}\n\n\tprivate _description: string;\n\t/**\n\t * The description of the stage.\n\t */\n\tget description(): string {\n\t\treturn this._description;\n\t}\n\n\tprivate _adviceDescription: string;\n\t/**\n\t * The advice description of the stage.\n\t */\n\tget adviceDescription(): string {\n\t\treturn this._adviceDescription;\n\t}\n\n\tprivate _image?: string;\n\t/**\n\t * The image of the stage.\n\t */\n\tget image(): string | undefined {\n\t\treturn this._image;\n\t}\n\n\tprivate _flags: StageFlags[];\n\t/**\n\t * The list of flags that the player must complete to finish the stage.\n\t */\n\tget flags(): StageFlags[] {\n\t\treturn this._flags;\n\t}\n\n\tprivate _flagsRequiredToStart: StageFlags[];\n\t/**\n\t * The list of flags required to start the stage.\n\t */\n\tget flagsRequiredToStart(): StageFlags[] {\n\t\treturn this._flagsRequiredToStart;\n\t}\n\n\tprivate _requestDescriptionToStart: string;\n\t/**\n\t * The description of the request to start the stage.\n\t */\n\tget requestDescriptionToStart(): string {\n\t\treturn this._requestDescriptionToStart;\n\t}\n\n\toverride get completed(): boolean {\n\t\tif (super.completed) {\n\t\t\treturn true;\n\t\t}\n\t\tif (this.flags.length > 0) {\n\t\t\tif (!this.flags.every((flag) => getFlag(flag.flag))) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\toverride set completed(value: boolean) {\n\t\tsuper.completed = value;\n\t}\n\toverride get canStart(): boolean {\n\t\tif (this.flagsRequiredToStart.length > 0 && !this.flagsRequiredToStart.every((flag) => getFlag(flag.flag))) {\n\t\t\treturn false;\n\t\t}\n\t\treturn super.canStart;\n\t}\n}\n","export type { default as ActivityInterface } from \"./ActivityInterface\";\nexport type { default as ActivityProps } from \"./ActivityProps\";\nexport type { default as CommitmentInterface } from \"./CommitmentInterface\";\nexport type { default as CommitmentProps } from \"./CommitmentProps\";\nexport type { default as LocationBaseModelProps } from \"./navigation/LocationBaseModelProps\";\nexport type { default as LocationInterface } from \"./navigation/LocationInterface\";\nexport type { default as MapBaseModelProps } from \"./navigation/MapBaseModelProps\";\nexport type { default as MapInterface } from \"./navigation/MapInterface\";\nexport type { default as RoomBaseModelProps } from \"./navigation/RoomBaseModelProps\";\nexport type { default as RoomInterface } from \"./navigation/RoomInterface\";\nexport type { default as QuestInterface } from \"./quest/QuestInterface\";\nexport type { default as QuestProps } from \"./quest/QuestProps\";\nexport type { default as StageInterface } from \"./quest/StageInterface\";\nexport type { default as StageProps } from \"./quest/StageProps\";\n","export type { default as ExecutionType } from \"./ExecutionType\";\nexport type { OnRunEvent, OnRunProps } from \"./OnRunEvent\";\nexport type { QuestsRequiredType } from \"./QuestsRequired\";\nexport type { ITimeStlot, TimeSettings } from \"./TimeSettings\";\n","export * from \"./classes\";\nexport * from \"./decorators\";\n// export * from './functions';\nexport * from \"./interface\";\nexport * from \"./managers\";\nexport * from \"./types\";\n\nimport * as classes from \"./classes\";\nimport * as decorators from \"./decorators\";\n// import * as functions from './functions';\nimport * as interfaceNqtr from \"./interface\";\nimport * as managers from \"./managers\";\nimport * as types from \"./types\";\n\nconst nqtr = {\n\t...classes,\n\t...decorators,\n\t// ...functions,\n\t...interfaceNqtr,\n\t...managers,\n\t...types,\n};\nexport default nqtr;\n"]}