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 3.7 kB
{"version":3,"sources":["../../src/decorators/QuestDecorator.ts","../../src/managers/QuestManager.ts"],"names":["registeredQuests","getQuestById","id","quest","QuestManager","props"],"mappings":"AAEO,IAAMA,CAAqD,CAAA,EAyB3D,CAAA,SAASC,CAAaC,CAAAA,CAAAA,CAAwC,CACpE,GAAI,CACH,IAAIC,CAAQH,CAAAA,CAAAA,CAAiBE,CAAE,CAAA,CAC/B,GAAI,CAACC,CAAO,CAAA,CACX,OAAQ,CAAA,KAAA,CAAM,CAAgBD,aAAAA,EAAAA,CAAE,CAAY,UAAA,CAAA,CAAA,CAC5C,MACD,CACA,OAAOC,CACR,OAAS,CAAG,CAAA,CACX,OAAQ,CAAA,KAAA,CAAM,CAAoCD,iCAAAA,EAAAA,CAAE,CAAI,CAAA,CAAA,CAAC,CACzD,CAAA,MACD,CACD,CCnCqBE,IAAAA,CAAAA,CAArB,KAAkC,CAC9B,IAAI,MAAA,EAA2B,CAC3B,OAAO,MAAO,CAAA,MAAA,CAAOJ,CAAgB,CACzC,CACA,IAAI,aAAkC,EAAA,CAClC,OAAO,IAAA,CAAK,MAAO,CAAA,MAAA,CAAQG,GAAUA,CAAM,CAAA,OAAO,CACtD,CACA,IAAI,eAAA,EAAoC,CACpC,OAAO,IAAK,CAAA,MAAA,CAAO,MAAQA,CAAAA,CAAAA,EAAUA,CAAM,CAAA,SAAS,CACxD,CACA,IAAI,YAAA,EAAiC,CACjC,OAAO,IAAK,CAAA,MAAA,CAAO,MAAQA,CAAAA,CAAAA,EAAUA,CAAM,CAAA,MAAM,CACrD,CACA,IAAI,gBAAA,EAAqC,CACrC,OAAO,KAAK,MAAO,CAAA,MAAA,CAAQA,CAAU,EAAA,CAACA,CAAM,CAAA,OAAO,CACvD,CAEA,IAAKD,CAAAA,CAAAA,CAAwC,CACzC,OAAOD,CAAaC,CAAAA,CAAE,CAC1B,CAKA,yBAAyBG,CAAmB,CAAA,CACxC,MAAO,CAAA,MAAA,CAAOL,CAAgB,CAAA,CAAE,OAASG,CAAAA,CAAAA,EAAU,CAC3CA,CAAAA,CAAM,qBACNA,EAAAA,CAAAA,CAAM,iBAAkBE,CAAAA,CAAK,EAErC,CAAC,EACL,CACJ","file":"QuestManager.mjs","sourcesContent":["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"]}