UNPKG

@drincs/nqtr

Version:

A complete system introducing the concepts of location, time and event, producing the framework of a not-quite-point-and-click adventure game.

1 lines 51.8 kB
{"version":3,"sources":["../../src/constants.ts","../../src/utils/log-utility.ts","../../src/decorators/RegisteredActivities.ts","../../src/decorators/RegisteredCommitments.ts","../../src/decorators/RegisteredLocations.ts","../../src/decorators/RegisteredMaps.ts","../../src/decorators/RegisteredQuests.ts","../../src/decorators/RegisteredRooms.ts","../../src/functions/tracking-changes.ts","../../src/managers/NavigatorManager.ts","../../src/managers/QuestManager.ts","../../src/managers/RoutineManager.ts","../../src/managers/TimeManagerSettings.ts","../../src/managers/TimeManager.ts","../../src/managers/index.ts"],"names":["TIME_DATA_KEY","CURRENT_ROOM_MEMORY_KEY","LATEST_EVENT_MEMORY_KEY","logger","message","optionalParams","registeredActivities","CachedMap","RegisteredActivities","add","activities","activity","get","id","e","values","has","registeredCommitments","fixedCommitments","RegisteredCommitments","commitments","commitment","RegisteredCommitments_default","registeredLocations","RegisteredLocations","location","c","RegisteredLocations_default","registeredMaps","RegisteredMaps","map","RegisteredMaps_default","registeredQuests","RegisteredQuest","quests","quest","RegisteredQuests_default","registeredRooms","RegisteredRooms","room","RegisteredRooms_default","setLastEvent","event","storage","NavigatorManager","roomId","prevRoom","QuestManager","props","promises","TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY","RoutineManager","commitmentsIds","currentCommitments","character_commitments","ch","character","TimeManagerSettings","TimeManager","settings","dayStartTime","dayEndTime","defaultTimeSpent","timeSlots","weekLength","weekendStartDay","getDayName","data","value","prev","index","slot","delta","newTime","time","newDate","fromTime","toTime","currentTime","timeTracker","navigator","routine","questsNotebook"],"mappings":"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","file":"index.mjs","sourcesContent":["export const TIME_SETTINGS_KEY = \"___nqtr-time_manager_settings___\";\nexport const TIME_DATA_KEY = \"___nqtr-time_manager_data___\";\n\nexport const CURRENT_ROOM_MEMORY_KEY = \"___nqtr-current_room_memory___\";\nexport const LATEST_EVENT_MEMORY_KEY = \"___nqtr-last_event_memory___\";\n","export namespace logger {\n export const log = (message?: any, ...optionalParams: any[]) => console.log(`[NQTR] ${message}`, ...optionalParams);\n export const warn = (message?: any, ...optionalParams: any[]) =>\n console.warn(`[NQTR] ${message}`, ...optionalParams);\n export const error = (message?: any, ...optionalParams: any[]) =>\n console.error(`[NQTR] ${message}`, ...optionalParams);\n export const info = (message?: any, ...optionalParams: any[]) =>\n console.info(`[NQTR] ${message}`, ...optionalParams);\n}\n","import { CachedMap } from \"@drincs/pixi-vn\";\nimport { ActivityInterface } from \"../interface\";\nimport { logger } from \"../utils/log-utility\";\n\n/**\n * A Map that contains all activities registered and available to be used.\n * The key is the id of the activity and the value is the activity itself.\n */\nconst registeredActivities = new CachedMap<string, ActivityInterface>({ cacheSize: 20 });\n\nnamespace RegisteredActivities {\n /**\n * Save an activity in the registered activities. If the activity already exists, it will be overwritten.\n * @param activity The activity to save.\n * @returns\n */\n export function add(activities: ActivityInterface | ActivityInterface[]) {\n if (Array.isArray(activities)) {\n activities.forEach((activity) => RegisteredActivities.add(activity));\n return;\n }\n registeredActivities.set(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 */\n export function get(id: string): ActivityInterface | undefined {\n try {\n let activity = registeredActivities.get(id);\n if (!activity) {\n console.warn(`[NQTR] Activity ${id} not found, you should register it first`);\n return;\n }\n return activity;\n } catch (e) {\n logger.error(`Error while getting Activity ${id}`, e);\n return;\n }\n }\n\n /**\n * Get a list of all activities registered.\n * @returns An array of activities.\n */\n export function values(): ActivityInterface[] {\n return Array.from(registeredActivities.values());\n }\n\n /**\n * Check if an activity is registered.\n * @param id The id of the activity.\n * @returns True if the activity is registered, false otherwise.\n */\n export function has(id: string): boolean {\n return registeredActivities.has(id);\n }\n}\nexport default RegisteredActivities;\n","import { CachedMap } from \"@drincs/pixi-vn\";\nimport { CommitmentInterface } from \"../interface\";\nimport { logger } from \"../utils/log-utility\";\n\n/**\n * A Map that contains all commitments registered and available to be used.\n * The key is the id of the commitment and the value is the commitment itself.\n */\nexport const registeredCommitments = new CachedMap<string, CommitmentInterface>({ cacheSize: 20 });\nexport const fixedCommitments = new CachedMap<string, CommitmentInterface>({ cacheSize: 20 });\n\nnamespace RegisteredCommitments {\n /**\n * Save a commitment in the registered commitments. If the commitment already exists, it will be overwritten.\n * @param commitment The commitment to save.\n * @returns\n */\n export function add(commitments: CommitmentInterface | CommitmentInterface[]) {\n if (Array.isArray(commitments)) {\n commitments.forEach((commitment) => RegisteredCommitments.add(commitment));\n return;\n }\n registeredCommitments.set(commitments.id, commitments);\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 */\n export function get(id: string): CommitmentInterface | undefined {\n try {\n let commitment = registeredCommitments.get(id);\n if (!commitment) {\n console.warn(`[NQTR] Commitment ${id} not found, you should register it first`);\n return;\n }\n return commitment;\n } catch (e) {\n logger.error(`Error while getting Commitment ${id}`, e);\n return;\n }\n }\n /**\n * Get a list of all commitments registered.\n * @returns An array of commitments.\n */\n export function values(): CommitmentInterface[] {\n return Array.from(registeredCommitments.values());\n }\n /**\n * Check if a commitment is registered.\n * @param id The id of the commitment.\n * @returns True if the commitment is registered, false otherwise.\n */\n export function has(id: string): boolean {\n return registeredCommitments.has(id);\n }\n}\nexport default RegisteredCommitments;\n","import { CachedMap } from \"@drincs/pixi-vn\";\nimport { LocationInterface } from \"../interface\";\nimport { logger } from \"../utils/log-utility\";\n\n/**\n * A Map that contains all locations registered and available to be used.\n * The key is the id of the location and the value is the location itself.\n */\nconst registeredLocations = new CachedMap<string, LocationInterface>({ cacheSize: 20 });\n\nnamespace RegisteredLocations {\n /**\n * Save a location in the registered locations. If the location already exists, it will be overwritten.\n * @param location The location to save.\n * @returns\n */\n export function add(location: LocationInterface | LocationInterface[]) {\n if (Array.isArray(location)) {\n location.forEach((c) => add(c));\n return;\n }\n // if (registeredLocations.has(location.id)) {\n // console.warn(`[NQTR] Location id ${location.id} already exists, it will be overwritten`);\n // }\n registeredLocations.set(location.id, location);\n }\n\n /**\n * Get a location by its id.\n * @param id The id of the location.\n * @returns The location or undefined if not found.\n */\n export function get(id: string): LocationInterface | undefined {\n try {\n let location = registeredLocations.get(id);\n if (!location) {\n console.warn(`[NQTR] Location ${id} not found, you should register it first`);\n return;\n }\n return location;\n } catch (e) {\n logger.error(`Error while getting Location ${id}`, e);\n return;\n }\n }\n\n /**\n * Get a list of all locations registered.\n * @returns An array of locations.\n */\n export function values(): LocationInterface[] {\n return Array.from(registeredLocations.values());\n }\n\n /**\n * Check if a location is registered.\n * @param id The id of the location.\n * @returns True if the location is registered, false otherwise.\n */\n export function has(id: string): boolean {\n return registeredLocations.has(id);\n }\n}\nexport default RegisteredLocations;\n","import { CachedMap } from \"@drincs/pixi-vn\";\nimport { MapInterface } from \"../interface\";\nimport { logger } from \"../utils/log-utility\";\n\n/**\n * A Map that contains all maps registered and available to be used.\n * The key is the id of the map and the value is the map itself.\n */\nconst registeredMaps = new CachedMap<string, MapInterface>({ cacheSize: 20 });\n\nnamespace RegisteredMaps {\n /**\n * Save a map in the registered maps. If the map already exists, it will be overwritten.\n * @param map The map to save.\n * @returns\n */\n export function add(map: MapInterface | MapInterface[]) {\n if (Array.isArray(map)) {\n map.forEach((c) => add(c));\n return;\n }\n // if (registeredMaps.has(map.id)) {\n // console.warn(`[NQTR] Map id ${map.id} already exists, it will be overwritten`);\n // }\n registeredMaps.set(map.id, map);\n }\n\n /**\n * Get a map by its id.\n * @param id The id of the map.\n * @returns The map or undefined if not found.\n */\n export function get(id: string): MapInterface | undefined {\n try {\n let map = registeredMaps.get(id);\n if (!map) {\n console.warn(`[NQTR] Map ${id} not found, you should register it first`);\n return;\n }\n return map;\n } catch (e) {\n logger.error(`Error while getting Map ${id}`, e);\n return;\n }\n }\n\n /**\n * Get a list of all maps registered.\n * @returns An array of maps.\n */\n export function values(): MapInterface[] {\n return Array.from(registeredMaps.values());\n }\n\n /**\n * Check if a map is registered.\n * @param id The id of the map.\n * @returns True if the map is registered, false otherwise.\n */\n export function has(id: string): boolean {\n return registeredMaps.has(id);\n }\n}\nexport default RegisteredMaps;\n","import { CachedMap } from \"@drincs/pixi-vn\";\nimport { QuestInterface } from \"../interface\";\nimport { logger } from \"../utils/log-utility\";\n\n/**\n * A Map that contains all quests registered and available to be used.\n * The key is the id of the quest and the value is the quest itself.\n */\nconst registeredQuests = new CachedMap<string, QuestInterface>({ cacheSize: 5 });\n\nnamespace RegisteredQuest {\n /**\n * Save a quest in the registered quests. If the quest already exists, it will be overwritten.\n * @param quest The quest to save.\n * @returns\n */\n export function add(quests: QuestInterface | QuestInterface[]) {\n if (Array.isArray(quests)) {\n quests.forEach((quest) => RegisteredQuest.add(quest));\n return;\n }\n registeredQuests.set(quests.id, quests);\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 */\n export function get(id: string): QuestInterface | undefined {\n try {\n let quest = registeredQuests.get(id);\n if (!quest) {\n console.warn(`[NQTR] Quest ${id} not found, you should register it first`);\n return;\n }\n return quest;\n } catch (e) {\n logger.error(`Error while getting Quest ${id}`, e);\n return;\n }\n }\n /**\n * Get a list of all quests registered.\n * @returns An array of quests.\n */\n export function values(): QuestInterface[] {\n return Array.from(registeredQuests.values());\n }\n /**\n * Check if a quest is registered.\n * @param id The id of the quest.\n * @returns True if the quest is registered, false otherwise.\n */\n export function has(id: string): boolean {\n return registeredQuests.has(id);\n }\n}\nexport default RegisteredQuest;\n","import { CachedMap } from \"@drincs/pixi-vn\";\nimport { RoomInterface } from \"../interface\";\nimport { logger } from \"../utils/log-utility\";\nimport RegisteredLocations from \"./RegisteredLocations\";\nimport RegisteredMaps from \"./RegisteredMaps\";\n\n/**\n * A Map that contains all rooms registered and available to be used.\n * The key is the id of the room and the value is the room itself.\n */\nconst registeredRooms = new CachedMap<string, RoomInterface>({ cacheSize: 20 });\n\nnamespace RegisteredRooms {\n /**\n * Save a room in the registered rooms, and their location and map if they are not already registered.\n * If the room already exists, it will be overwritten.\n * @param room The room to save.\n * @returns\n */\n export function add(room: RoomInterface | RoomInterface[]) {\n if (Array.isArray(room)) {\n room.forEach((c) => add(c));\n return;\n }\n registeredRooms.set(room.id, room);\n let location = room.location;\n RegisteredLocations.add(location);\n let map = location?.map;\n if (map) {\n RegisteredMaps.add(map);\n }\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 */\n export function get(id: string): RoomInterface | undefined {\n try {\n let room = registeredRooms.get(id);\n if (!room) {\n console.warn(`[NQTR] Room ${id} not found, you should register it first`);\n return;\n }\n return room;\n } catch (e) {\n logger.error(`Error while getting Room ${id}`, e);\n return;\n }\n }\n\n /**\n * Get a list of all rooms registered.\n * @returns An array of rooms.\n */\n export function values(): RoomInterface[] {\n return Array.from(registeredRooms.values());\n }\n\n /**\n * Check if a room is registered.\n * @param id The id of the room.\n * @returns True if the room is registered, false otherwise.\n */\n export function has(id: string): boolean {\n return registeredRooms.has(id);\n }\n}\nexport default RegisteredRooms;\n","import { storage } from \"@drincs/pixi-vn\";\nimport { LATEST_EVENT_MEMORY_KEY } from \"../constants\";\nimport LastEventType from \"../types/LastEventType\";\n\nexport function setLastEvent(event: LastEventType) {\n storage.setVariable(LATEST_EVENT_MEMORY_KEY, event);\n}\nexport function getLastEvent() {\n return storage.getVariable<LastEventType>(LATEST_EVENT_MEMORY_KEY);\n}\n","import { storage } from \"@drincs/pixi-vn\";\nimport { CURRENT_ROOM_MEMORY_KEY } from \"../constants\";\nimport { RegisteredLocations, RegisteredMaps, RegisteredRooms } from \"../decorators\";\nimport { setLastEvent } from \"../functions/tracking-changes\";\nimport { LocationInterface, MapInterface, RoomInterface } from \"../interface\";\nimport { logger } from \"../utils/log-utility\";\n\nexport default class NavigatorManager {\n get rooms() {\n return RegisteredRooms.values();\n }\n get locations() {\n return RegisteredLocations.values();\n }\n get maps() {\n return RegisteredMaps.values();\n }\n get currentRoomId(): string | undefined {\n return storage.getVariable<string>(CURRENT_ROOM_MEMORY_KEY);\n }\n get currentRoom(): RoomInterface | undefined {\n let roomId = this.currentRoomId;\n if (!roomId) {\n logger.error(`The current room has not yet been set`);\n return;\n }\n let room = RegisteredRooms.get(roomId);\n if (!room) {\n logger.error(`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 = RegisteredRooms.get(room);\n if (!roomRegistrated) {\n logger.error(`The room ${room} is not registered, so it can't be set as current room`);\n return;\n }\n let prevRoom = storage.getVariable<string>(CURRENT_ROOM_MEMORY_KEY);\n if (prevRoom === room) {\n return;\n }\n\n setLastEvent({\n type: \"editroom\",\n prev: prevRoom,\n value: room,\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 RegisteredRooms.values().forEach((room) => {\n room.clearExpiredActivities();\n });\n }\n}\n","import { OnRunProps } from \"@drincs/nqtr\";\nimport RegisteredQuest from \"../decorators/RegisteredQuests\";\nimport { QuestInterface } from \"../interface\";\n\nexport default class QuestManager {\n /**\n * The quests registered in the game.\n */\n get quests(): QuestInterface[] {\n return RegisteredQuest.values();\n }\n /**\n * The quests that are started, so they are in progress or completed or failed.\n */\n get startedQuests(): QuestInterface[] {\n return this.quests.filter((quest) => quest.started);\n }\n /**\n * The quests that are in progress.\n */\n get inProgressQuests(): QuestInterface[] {\n return this.quests.filter((quest) => quest.inProgress);\n }\n /**\n * The quests that are completed.\n */\n get completedQuests(): QuestInterface[] {\n return this.quests.filter((quest) => quest.completed);\n }\n /**\n * The quests that are failed.\n */\n get failedQuests(): QuestInterface[] {\n return this.quests.filter((quest) => quest.failed);\n }\n /**\n * The quests that are not started.\n */\n get notStartedQuests(): QuestInterface[] {\n return this.quests.filter((quest) => !quest.started);\n }\n /**\n * Get the quest by the id.\n * @param id The id of the quest.\n * @returns The quest with the id.\n */\n find(id: string): QuestInterface | undefined {\n return RegisteredQuest.get(id);\n }\n\n /**\n * Start the quests that must start on the current stage.\n */\n async startsStageMustBeStarted(props: OnRunProps) {\n let promises: Promise<void>[] = this.quests.map((quest) => {\n if (quest.currentStageMustStart) {\n return quest.startCurrentStage(props);\n }\n return Promise.resolve();\n });\n await Promise.all(promises);\n }\n}\n","import { CharacterInterface, storage } from \"@drincs/pixi-vn\";\nimport RegisteredCommitments, { fixedCommitments, registeredCommitments } from \"../decorators/RegisteredCommitments\";\nimport { CommitmentInterface } from \"../interface\";\nimport { logger } from \"../utils/log-utility\";\n\nconst TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY = \"___nqtr-temporary_commitment___\";\nexport default class RoutineManager {\n get fixedRoutine(): CommitmentInterface[] {\n return [...fixedCommitments.values()];\n }\n /**\n * Set a commitment as fixed, it will be always available. They cannot be deleted or edit during the game session.\n */\n set fixedRoutine(commitments: CommitmentInterface[]) {\n commitments.forEach((c) => {\n if (fixedCommitments.has(c.id)) {\n console.warn(`[NQTR] Commitment id ${c.id} already exists, it will be overwritten`);\n }\n fixedCommitments.set(c.id, c);\n });\n }\n\n /**\n * Get the temporary commitments by its id.\n * @returns The temporary commitments.\n */\n get temporaryRoutine(): CommitmentInterface[] {\n let commitmentsIds = storage.getVariable<string[]>(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY);\n if (!commitmentsIds) {\n return [];\n }\n let commitments = commitmentsIds\n .map((id) => RegisteredCommitments.get(id))\n .filter((commitment) => commitment !== undefined);\n return commitments;\n }\n\n get allRoutine(): CommitmentInterface[] {\n return [...this.fixedRoutine, ...this.temporaryRoutine];\n }\n\n /**\n * This feature adds the commitments during the game session.\n * @param commitment The commitment or commitments to add.\n */\n add(commitment: CommitmentInterface[] | CommitmentInterface) {\n if (!Array.isArray(commitment)) {\n commitment = [commitment];\n }\n let commitmentsIds = commitment\n .map((commitment) => {\n let commitmentTest = RegisteredCommitments.get(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 })\n .filter((id) => id !== undefined);\n\n storage.setVariable(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY, commitmentsIds);\n }\n\n /**\n * Get the commitments added during the game session.\n * @param id The id of the commitment.\n * @returns The commitment or undefined if not found.\n */\n find(id: string): CommitmentInterface | undefined {\n return RegisteredCommitments.get(id);\n }\n\n /**\n * Remove the commitments added during the game session.\n * @param commitment The commitment or commitments to remove.\n */\n remove(commitment: CommitmentInterface[] | CommitmentInterface) {\n if (!Array.isArray(commitment)) {\n commitment = [commitment];\n }\n let commitmentsIds = commitment.map((commitment) => {\n return commitment.id;\n });\n\n let currentCommitments = storage.getVariable<string[]>(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY);\n if (!currentCommitments) {\n return;\n }\n currentCommitments = currentCommitments.filter((id) => !commitmentsIds.includes(id));\n storage.setVariable(TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY, currentCommitments);\n }\n\n /**\n * Clear all the expired commitments.\n */\n clearExpiredRoutine() {\n RegisteredCommitments.values().forEach((commitment) => {\n if (commitment.expired) {\n registeredCommitments.delete(commitment.id);\n }\n });\n }\n\n /**\n * Get the current commitments. The hidden commitments are not included.\n * 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 * Higher priority commitments are calculated using the following steps:\n * 1. The commitments that have Commitments BaseModel.priority set to a higher value will be selected first.\n * 2. If there are commitments with the same priority, the commitments that are not fixed will be selected first.\n * 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 * @returns The current commitments.\n */\n get currentRoutine(): CommitmentInterface[] {\n let character_commitments: { [character: string]: CommitmentInterface } = {};\n [...this.fixedRoutine, ...this.temporaryRoutine].forEach((c) => {\n if (c.isActive) {\n if (c.characters.length > 0) {\n // all the characters don't already have commitments or the commitment has a higher priority\n let allAvailable = c.characters.every(\n (ch) => !character_commitments[ch.id] || c.priority > character_commitments[ch.id].priority\n );\n if (allAvailable) {\n c.characters.forEach((ch) => {\n character_commitments[ch.id] = c;\n });\n }\n } else {\n logger.error(`The commitment ${c.id} has no characters assigned`);\n }\n }\n });\n return Object.values(character_commitments);\n }\n\n /**\n * Get the character commitment.\n * @param character The character.\n * @returns The commitment or undefined if not found.\n */\n getCommitmentByCharacter(character: CharacterInterface): CommitmentInterface | undefined {\n this.currentRoutine.forEach((c) => {\n if (c.characters.map((ch) => ch.id).includes(character.id)) {\n return c;\n }\n });\n return undefined;\n }\n}\n","import { TimeSettings, TimeSlotInterface } from \"../types/TimeSettings\";\n\nexport default class TimeManagerSettings implements TimeSettings {\n static dayStartTime: number = 0;\n static dayEndTime: number = 24;\n static defaultTimeSpent: number = 1;\n static timeSlots: TimeSlotInterface[] = [];\n static weekLength: number = 7;\n static weekendStartDay: number = this.weekLength - 1;\n static getDayName?: (weekDayNumber: number) => string;\n}\n","import { storage } from \"@drincs/pixi-vn\";\nimport { TIME_DATA_KEY } from \"../constants\";\nimport { setLastEvent } from \"../functions/tracking-changes\";\nimport TimeDataType from \"../types/TimeDataType\";\nimport { TimeSettings, TimeSlotInterface } from \"../types/TimeSettings\";\nimport TimeManagerSettings from \"./TimeManagerSettings\";\n\nexport default class TimeManager {\n initialize(settings: TimeSettings) {\n const {\n dayStartTime = 0,\n dayEndTime = 24,\n defaultTimeSpent = 1,\n timeSlots = [],\n weekLength = 7,\n weekendStartDay = weekLength - 1,\n getDayName,\n } = settings;\n TimeManagerSettings.dayStartTime = dayStartTime;\n TimeManagerSettings.dayEndTime = dayEndTime;\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 TimeManagerSettings.getDayName = getDayName;\n }\n get dayStartTime(): number {\n return TimeManagerSettings.dayStartTime;\n }\n get dayEndTime(): number {\n return TimeManagerSettings.dayEndTime;\n }\n get defaultTimeSpent(): number {\n return TimeManagerSettings.defaultTimeSpent;\n }\n get timeSlots(): TimeSlotInterface[] {\n return TimeManagerSettings.timeSlots;\n }\n get weekLength(): number {\n return TimeManagerSettings.weekLength;\n }\n get weekendStartDay(): number {\n return TimeManagerSettings.weekendStartDay;\n }\n /**\n * Week days name\n * @param weekDayNumber The current week day number (from: 0 - to: {@link weekLength} - 1).\n * @returns The name of the week day.\n * @example\n * ```ts\n * (weekDayNumber: number) => {\n * const weekDaysNames = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];\n * return weekDaysNames[weekDayNumber];\n * }\n * ```\n */\n get getDayName() {\n return TimeManagerSettings.getDayName;\n }\n\n /**\n * Get the current time. Time is a numeric variable used to determine and manage time during a day/date.\n * It's recommended to use currentTime as if it were the current time. If you also want to manage minutes, you can use a float value.\n */\n get currentTime(): number {\n let data = storage.getVariable<TimeDataType>(TIME_DATA_KEY) || {};\n if (data.hasOwnProperty(\"currentTime\") && typeof data.currentTime === \"number\") {\n return data.currentTime;\n }\n return this.dayStartTime;\n }\n set currentTime(value: number | undefined) {\n let prev = storage.getVariable<TimeDataType>(TIME_DATA_KEY) || {};\n let data = { ...prev };\n if (typeof value === \"number\") {\n data.currentTime = value;\n } else {\n delete data.currentTime;\n }\n setLastEvent({\n type: \"edittime\",\n prev: prev,\n value: data,\n });\n storage.setVariable(TIME_DATA_KEY, data);\n }\n /**\n * Get the current date. Date is a numeric variable used to determine and manage the number of days passed.\n * It's recommended to use currentDate as if it were the current day.\n */\n get currentDate(): number {\n let data = storage.getVariable<TimeDataType>(TIME_DATA_KEY) || {};\n if (data.hasOwnProperty(\"currentDate\") && typeof data.currentDate === \"number\") {\n return data.currentDate;\n }\n return 0;\n }\n set currentDate(value: number | undefined) {\n let prev = storage.getVariable<TimeDataType>(TIME_DATA_KEY) || {};\n let data = { ...prev };\n if (typeof value === \"number\") {\n data.currentDate = value;\n } else {\n delete data.currentDate;\n }\n setLastEvent({\n type: \"edittime\",\n prev: prev,\n value: data,\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 (from: 1 - to: {@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.currentDate % 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 if (!this.getDayName) {\n console.warn(`[NQTR] Week days names are not defined, so currentDayName will be empty`);\n return \"\";\n }\n return this.getDayName(this.currentWeekDayNumber - 1);\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.startTime, this.timeSlots[index + 1].startTime)) {\n return index;\n }\n }\n }\n return this.timeSlots.length - 1;\n }\n\n /**\n * This function will increase the current time by the given time spent.\n * If the new time is greater than or equal to the max day times, then it will increase the day and set the new time.\n * @param delta is the time spent in times (default: {@link defaultTimeSpent})\n * @returns currentTimeSlot.currentTime\n */\n increaseTime(delta: number = this.defaultTimeSpent): number {\n let newTime = this.currentTime + delta;\n if (newTime >= this.dayEndTime) {\n this.increaseDate();\n newTime = this.dayStartTime + (newTime - this.dayEndTime);\n }\n this.currentTime = newTime;\n return this.currentTime;\n }\n\n /**\n * This function will increase the current date by