|
- define([
-
- ], function(
-
- ) {
- return {
- type: 'quests',
- quests: [],
-
- init: function(blueprint) {
- var quests = blueprint.quests || [];
- var qLen = quests.length;
- for (var i = 0; i < qLen; i++) {
- var q = quests[i];
-
- this.obj.instance.questBuilder.obtain(this.obj, q);
- }
-
- delete blueprint.quests;
- this.blueprint = blueprint;
- },
-
- transfer: function() {
- var blueprint = { quests: this.quests };
- this.quests = [];
- this.init(blueprint);
- },
-
- obtain: function(quest, hideMessage) {
- quest.active = (this.obj.zoneName == quest.zoneName);
-
- this.quests.push(quest);
- if (!quest.init(hideMessage)) {
- this.quests.spliceWhere(q => (q == quest));
- return false;
- }
- else
- return true;
- },
-
- complete: function(id) {
- var quest = this.quests.find(q => q.id == id);
- if ((!quest) || (!quest.isReady))
- return;
-
- quest.complete();
-
- this.quests.spliceWhere(q => q == quest);
-
- this.obj.instance.questBuilder.obtain(this.obj);
- },
-
- /*update: function() {
- var quests = this.quests;
- var qLen = quests.length;
- var completed = false;
- for (var i = 0; i < qLen; i++) {
- var q = quests[i];
- if (q.isCompleted) {
- quests.splice(i, 1);
- q.ready();
- completed = true;
- qLen--;
- i--;
- }
- }
-
- if (completed)
- questBuilder.obtain(this.obj);
- },*/
-
- fireEvent: function(event, args) {
- var quests = this.quests;
- var qLen = quests.length;
- for (var i = 0; i < qLen; i++) {
- var q = quests[i];
- if (!q) {
- qLen--;
- continue;
- }
- else if (q.completed)
- continue;
-
- var events = q.events;
- if (!events)
- continue;
-
- var callback = events[event];
- if (!callback)
- continue;
-
- callback.apply(q, args);
- }
- },
-
- simplify: function(self) {
- if (!self)
- return;
-
- var result = {
- type: 'quests'
- };
-
- if (this.quests.length > 0) {
- if (this.quests[0].simplify)
- result.quests = this.quests.map(q => q.simplify(true));
- else
- result.quests = this.quests;
- }
-
- return result;
- }
- };
- });
|