@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 • 11.8 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/classes/quest/QuestStoredClass.ts","../../../src/classes/quest/QuestBaseModel.ts"],"names":["QUEST_CATEGORY","QuestStoredClass","StoredClassModel","id","_stages","props","value","index","currentStage","prevStage","currentStageIndex","nextCurrentStage","newCurrentStage","QuestBaseModel","stages"],"mappings":"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","file":"QuestBaseModel.mjs","sourcesContent":["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"]}