Editing levels in the builder :D Resolves #187

This commit is contained in:
Peter Cottle 2014-11-29 18:13:53 -08:00
parent 7fc33541cc
commit 0aba56ef15
3 changed files with 30 additions and 14 deletions

View file

@ -42,19 +42,31 @@ var parse = util.genParseCommand(regexMap, 'processLevelBuilderCommand');
var LevelBuilder = Level.extend({
initialize: function(options) {
options = options || {};
options.level = options.level || {};
options.level = {};
var locale = intl.getLocale();
options.level.startDialog = {};
options.level.startDialog[locale] = {
childViews: intl.getDialog(require('../dialogs/levelBuilder'))
};
LevelBuilder.__super__.initialize.apply(this, [options]);
// if we are editing a level our behavior is a bit different
var editLevelJSON;
if (options.editLevel) {
editLevelJSON = Main.getLevelArbiter().getLevel(options.editLevel);
options.level = editLevelJSON;
}
LevelBuilder.__super__.initialize.apply(this, [options]);
if (!options.editLevel) {
this.startDialogObj = undefined;
this.definedGoal = false;
} else {
this.startDialogObj = editLevelJSON.startDialog[locale];
this.definedGoal = true;
}
// we wont be using this stuff, and its to delete to ensure we overwrite all functions that
// we wont be using this stuff, and it is deleted to ensure we overwrite all functions that
// include that functionality
delete this.treeCompare;
delete this.solved;
@ -68,9 +80,11 @@ var LevelBuilder = Level.extend({
},
initGoalData: function() {
// add some default behavior in the beginning
// add some default behavior in the beginning if we are not editing
if (!this.options.editLevel) {
this.level.goalTreeString = '{"branches":{"master":{"target":"C1","id":"master"},"makeLevel":{"target":"C2","id":"makeLevel"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"},"C2":{"parents":["C1"],"id":"C2"}},"HEAD":{"target":"makeLevel","id":"HEAD"}}';
this.level.solutionCommand = 'git checkout -b makeLevel; git commit';
}
LevelBuilder.__super__.initGoalData.apply(this, arguments);
},
@ -272,7 +286,7 @@ var LevelBuilder = Level.extend({
},
finish: function(command, deferred) {
if (!this.gitCommandsIssued.length || !this.definedGoal) {
if (!this.options.editLevel && (!this.gitCommandsIssued.length || !this.definedGoal)) {
command.set('error', new Errors.GitError({
msg: intl.str('solution-empty')
}));

View file

@ -117,7 +117,7 @@ var regexMap = {
'level': /^level\s?([a-zA-Z0-9]*)/,
'levels': /^levels($|\s)/,
'mobileAlert': /^mobile alert($|\s)/,
'build level': /^build +level($|\s)/,
'build level': /^build +level\s?([a-zA-Z0-9]*)$/,
'export tree': /^export +tree$/,
'importTreeNow': /^importTreeNow($|\s)/,
'importLevelNow': /^importLevelNow($|\s)/,

View file

@ -194,12 +194,14 @@ var Sandbox = Backbone.View.extend({
this.clear();
var whenBuilderOpen = Q.defer();
var LevelBuilder = require('../level/builder').LevelBuilder;
this.levelBuilder = new LevelBuilder({
deferred: whenBuilderOpen
});
var regexResults = command.get('regexResults') || [];
var toEdit = regexResults[1] || false;
this.levelBuilder = new LevelBuilder({
deferred: whenBuilderOpen,
editLevel: toEdit
});
whenBuilderOpen.promise.then(function() {
command.finishWith(deferred);
});