@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.
2 lines • 3 kB
JavaScript
import {StoredClassModel}from'@drincs/pixi-vn';var g="__nqtr-quest__",n=class extends StoredClassModel{constructor(e,t,r={}){super(g,e);this._stages=t;this._onStart=r.onStart,this._onNextStage=r.onNextStage;}get stages(){return this._stages}get currentStageIndex(){return this.getStorageProperty("currentStageIndex")}set currentStageIndex(e){this.setStorageProperty("currentStageIndex",e);}get currentStage(){let e=this.currentStageIndex;if(!(e===undefined||e>=this.stages.length))return this.stages[e]}get started(){return this.currentStageIndex!==undefined}get completed(){return this.currentStageIndex===undefined?false:this.currentStageIndex>this.stages.length-1}get failed(){return this.getStorageProperty("failed")||false}set failed(e){this.setStorageProperty("failed",e);}_onStart;get onStart(){return this._onStart}_onNextStage;get onNextStage(){return this._onNextStage}start(e){if(this.started){console.warn(`[NQTR] Quest ${this.id} is already started`);return}if(this.stages.length===0){console.error(`[NQTR] Quest ${this.id} has no stages`);return}this.currentStageIndex=0;let t=this.currentStage;if(t&&t.start)return this.onStart&&this.onStart(this,e),t.start(e);console.error(`[NQTR] Quest ${this.id} has no start stage`);}tryToGoNextStage(e){if(!this.started||this.completed)return false;let t=this.currentStage;return t?t.completed?this.goNextStage(e):false:(console.error(`[NQTR] Quest ${this.id} has no current stage`),false)}completeCurrentStageAndGoNext(e){let t=this.currentStage;return t?(t.completed=true,this.goNextStage(e)):(console.error(`[NQTR] Quest ${this.id} has no current stage`),false)}goNextStage(e){if(!this.started)return console.warn(`[NQTR] Quest ${this.id} is not started`),false;if(this.completed)return console.warn(`[NQTR] Quest ${this.id} is already completed`),false;let t=this.currentStage,r=this.currentStageIndex;if(!t||r===undefined)return console.error(`[NQTR] Quest ${this.id} has no current stage`),false;this.currentStageIndex=r+1,this.onNextStage&&this.onNextStage(this,e),t&&t.onEnd&&t.onEnd(t,e);let i=this.currentStage;return i&&(i.inizialize(),this.currentStageMustStart&&this.startCurrentStage(e)),true}get currentStageMustStart(){let e=this.currentStage;return e?!e.started&&e.canStart&&!e.completed:false}startCurrentStage(e){let t=this.currentStage;t&&this.currentStageMustStart?t.start(e):console.warn(`[NQTR] Quest ${this.id} can't start the current stage`);}};var s=class extends n{constructor(a,e,t){super(a,e,{onStart:t.onStart,onNextStage:t.onNextStage}),this._name=t.name||"",this._description=t.description||"",this._icon=t.icon,this._image=t.image,this._inDevelopment=t.inDevelopment||false;}_name;get name(){return this._name}_description;get description(){return this._description}_icon;get icon(){return this._icon}_image;get image(){return this._image}_inDevelopment;get inDevelopment(){return this._inDevelopment}};export{s as default};//# sourceMappingURL=QuestBaseModel.mjs.map
//# sourceMappingURL=QuestBaseModel.mjs.map