Files
andors-trail/AndorsTrailEdit/js/controllers/dialogue.js

67 lines
2.0 KiB
JavaScript

var ATEditor = (function(ATEditor, model, defaults, importExport) {
function DialogueController($scope, $routeParams) {
$scope.datasource = model.dialogue;
$scope.rootPhrase = $scope.datasource.findById($routeParams.id);
$scope.phrase = $scope.rootPhrase;
$scope.reply = null;
$scope.removeReward = function(phrase, reward) {
var idx = phrase.rewards.indexOf(reward);
phrase.rewards.splice(idx, 1);
};
$scope.addReward = function(phrase) {
phrase.rewards.push({});
};
$scope.removeRequirement = function(reply, requirement) {
var idx = reply.requires.indexOf(requirement);
reply.requires.splice(idx, 1);
};
$scope.addRequirement = function(reply) {
reply.requires.push({});
};
$scope.proceedToPhrase = function(obj, prop) {
var phraseId = obj[prop];
if (phraseId) {
var nextPhrase = model.dialogue.findById(phraseId);
if (nextPhrase) {
ATEditor.navigationFunctions.editObjId(model.dialogue, phraseId);
return;
}
} else {
phraseId = $scope.phrase.id;
}
var newPhrase = model.dialogue.addNew(phraseId);
importExport.prepareObjectsForEditor(model.dialogue, [ newPhrase ]);
newPhrase.hasOnlyNextReply = true;
phraseId = newPhrase.id;
obj[prop] = phraseId;
ATEditor.navigationFunctions.editObjId(model.dialogue, phraseId);
};
$scope.selectReply = function(reply) {
$scope.reply = reply;
};
$scope.removeReply = function(phrase, reply) {
var idx = phrase.replies.indexOf(reply);
phrase.replies.splice(idx, 1);
if ($scope.reply === reply) { $scope.reply = null; }
};
$scope.addReply = function(phrase) {
var reply = {};
defaults.addDefaults('reply', reply);
phrase.replies.push(reply);
$scope.reply = reply;
};
$scope.showPhraseTree = function(phrase) {
window.location = "#/" + model.dialogue.id + "/tree/" + phrase.id;
};
};
ATEditor.controllers = ATEditor.controllers || {};
ATEditor.controllers.DialogueController = DialogueController;
return ATEditor;
})(ATEditor, ATEditor.model, ATEditor.defaults, ATEditor.importExport);