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 49.2 kB
{"version":3,"sources":["../../../src/decorators/RoomDecorator.ts","../../../src/managers/NavigatorManager.ts","../../../src/decorators/CommitmentDecorator.ts","../../../src/managers/RoutineManager.ts","../../../src/constants.ts","../../../src/managers/TimeManagerSettings.ts","../../../src/managers/TimeManager.ts","../../../src/managers/index.ts","../../../src/decorators/ActivityDecorator.ts","../../../src/classes/navigation/NavigationAbstractClass.ts","../../../src/classes/navigation/RoomStoredClass.ts"],"names":["registeredRooms","getRoomById","id","room","CURRENT_ROOM_MEMORY_KEY","NavigatorManager","result","roomId","storage","_","registeredCommitments","fixedCommitments","getCommitmentById","commitment","TEMPORARY_COMMITMENT_CATEGORY_MEMORY_KEY","RoutineManager","commitments","c","commitmentsIds","currentCommitments","character_commitments","ch","navigator","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","timeTracker","routine","registeredActivities","getActivityById","activity","NavigationAbstractClass","StoredClassModel","categoryId","defaultActivities","activityId","activeActivityScheduling","excludedActivitiesScheduling","scheduling","options","hours","fromDay","toDay","additionalActivitiesIds","excludedActivitiesIds","res","a","ROOM_CATEGORY","RoomStoredClass","_location","activities","characters"],"mappings":"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","file":"RoomStoredClass.mjs","sourcesContent":["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 { 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 { 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","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 { 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","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 { 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 { 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"]}