mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-06-28 08:50:06 +02:00
cute golf support
This commit is contained in:
parent
662ecf0949
commit
a5c0480962
7 changed files with 220 additions and 31 deletions
166
build/bundle.js
166
build/bundle.js
|
@ -4611,7 +4611,7 @@ var Sandbox = Backbone.View.extend({
|
||||||
|
|
||||||
exitLevel: function(command, deferred) {
|
exitLevel: function(command, deferred) {
|
||||||
command.addWarning(
|
command.addWarning(
|
||||||
"You aren't in a level! You are in a sandbox, start a level with `start level [id]`"
|
"You aren't in a level! You are in a sandbox, start a level with `level [id]`"
|
||||||
);
|
);
|
||||||
command.set('status', 'error');
|
command.set('status', 'error');
|
||||||
deferred.resolve();
|
deferred.resolve();
|
||||||
|
@ -4624,7 +4624,7 @@ var Sandbox = Backbone.View.extend({
|
||||||
'delay': this.delay,
|
'delay': this.delay,
|
||||||
'clear': this.clear,
|
'clear': this.clear,
|
||||||
'exit level': this.exitLevel,
|
'exit level': this.exitLevel,
|
||||||
'start level': this.startLevel
|
'level': this.startLevel
|
||||||
};
|
};
|
||||||
var method = commandMap[command.get('method')];
|
var method = commandMap[command.get('method')];
|
||||||
if (!method) { throw new Error('no method for that wut'); }
|
if (!method) { throw new Error('no method for that wut'); }
|
||||||
|
@ -6417,6 +6417,7 @@ var ModalAlert = require('../views').ModalAlert;
|
||||||
var MultiView = require('../views/multiView').MultiView;
|
var MultiView = require('../views/multiView').MultiView;
|
||||||
var CanvasTerminalHolder = require('../views').CanvasTerminalHolder;
|
var CanvasTerminalHolder = require('../views').CanvasTerminalHolder;
|
||||||
var ConfirmCancelTerminal = require('../views').ConfirmCancelTerminal;
|
var ConfirmCancelTerminal = require('../views').ConfirmCancelTerminal;
|
||||||
|
var NextLevelConfirm = require('../views').NextLevelConfirm;
|
||||||
var LevelToolbar = require('../views').LevelToolbar;
|
var LevelToolbar = require('../views').LevelToolbar;
|
||||||
|
|
||||||
var TreeCompare = require('../git/treeCompare').TreeCompare;
|
var TreeCompare = require('../git/treeCompare').TreeCompare;
|
||||||
|
@ -6652,11 +6653,43 @@ var Level = Sandbox.extend({
|
||||||
this.levelSolved(defer);
|
this.levelSolved(defer);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getNumSolutionCommands: function() {
|
||||||
|
// strip semicolons in bad places
|
||||||
|
var toAnalyze = this.level.solutionCommand.replace(/^;|;$/g, '');
|
||||||
|
return toAnalyze.split(';').length;
|
||||||
|
},
|
||||||
|
|
||||||
levelSolved: function(defer) {
|
levelSolved: function(defer) {
|
||||||
this.solved = true;
|
this.solved = true;
|
||||||
this.hideGoal();
|
this.hideGoal();
|
||||||
|
|
||||||
|
var nextLevel = Main.getLevelArbiter().getNextLevel(this.level.id);
|
||||||
|
var numCommands = this.gitCommandsIssued;
|
||||||
|
var best = this.getNumSolutionCommands();
|
||||||
|
|
||||||
this.mainVis.gitVisuals.finishAnimation()
|
this.mainVis.gitVisuals.finishAnimation()
|
||||||
.then(function() {
|
.then(function() {
|
||||||
|
// TODO if there is no future level...
|
||||||
|
|
||||||
|
// we want to ask if they will move onto the next level...
|
||||||
|
var nextDialog = new NextLevelConfirm({
|
||||||
|
nextLevelName: nextLevel.name,
|
||||||
|
numCommands: numCommands,
|
||||||
|
best: best
|
||||||
|
});
|
||||||
|
|
||||||
|
return nextDialog.getPromise();
|
||||||
|
})
|
||||||
|
.then(function() {
|
||||||
|
Main.getEventBaton().trigger(
|
||||||
|
'commandSubmitted',
|
||||||
|
'level ' + nextLevel.id
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.fail(function() {
|
||||||
|
// nothing to do, we will just close
|
||||||
|
})
|
||||||
|
.done(function() {
|
||||||
defer.resolve();
|
defer.resolve();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -6700,6 +6733,12 @@ var Level = Sandbox.extend({
|
||||||
return instants;
|
return instants;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
reset: function() {
|
||||||
|
this.gitCommandsIssued = 0;
|
||||||
|
this.solved = false;
|
||||||
|
Sandbox.prototype.reset.apply(this, arguments);
|
||||||
|
},
|
||||||
|
|
||||||
startLevel: function(command, deferred) {
|
startLevel: function(command, deferred) {
|
||||||
this.exitLevel();
|
this.exitLevel();
|
||||||
|
|
||||||
|
@ -9807,13 +9846,32 @@ var NextLevelConfirm = ConfirmCancelTerminal.extend({
|
||||||
initialize: function(options) {
|
initialize: function(options) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
this.nextLevelName = options.nextLevelName || 'The mysterious next level';
|
this.nextLevelName = options.nextLevelName || 'The mysterious next level';
|
||||||
|
|
||||||
|
var markdowns = [
|
||||||
|
'## Great Job!!',
|
||||||
|
'',
|
||||||
|
'You solved the level in **' + options.numCommands + '** command(s); ',
|
||||||
|
'our solution uses ' + options.best + '. '
|
||||||
|
];
|
||||||
|
|
||||||
|
if (options.numCommands <= options.best) {
|
||||||
|
markdowns.push(
|
||||||
|
'Awesome! You matched or exceeded our solution. '
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
markdowns.push(
|
||||||
|
'See if you can whittle it down to ' + options.best + ' command(s) :D '
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
markdowns = markdowns.concat([
|
||||||
|
'',
|
||||||
|
'Would you like to move onto "',
|
||||||
|
this.nextLevelName + '", the next level?'
|
||||||
|
]);
|
||||||
|
|
||||||
options.modalAlert = {
|
options.modalAlert = {
|
||||||
markdowns: [
|
markdowns: markdowns
|
||||||
'## Great Job!!',
|
|
||||||
'',
|
|
||||||
'You solved the level. Would you like to move onto "',
|
|
||||||
this.nextLevelName + '", the next level?'
|
|
||||||
]
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ConfirmCancelTerminal.prototype.initialize.apply(this, [options]);
|
ConfirmCancelTerminal.prototype.initialize.apply(this, [options]);
|
||||||
|
@ -12695,7 +12753,7 @@ var regexMap = {
|
||||||
'delay': /^delay (\d+)$/,
|
'delay': /^delay (\d+)$/,
|
||||||
'clear': /^clear($|\s)/,
|
'clear': /^clear($|\s)/,
|
||||||
'exit level': /^exit level($|\s)/,
|
'exit level': /^exit level($|\s)/,
|
||||||
'start level': /^start level\s?([a-zA-Z0-9]*)/
|
'level': /^level\s?([a-zA-Z0-9]*)/
|
||||||
};
|
};
|
||||||
|
|
||||||
var parse = function(str) {
|
var parse = function(str) {
|
||||||
|
@ -15133,7 +15191,12 @@ LevelArbiter.prototype.getNextLevel = function(id) {
|
||||||
if (!this.levelMap[id]) {
|
if (!this.levelMap[id]) {
|
||||||
throw new Error('that level doesnt exist!');
|
throw new Error('that level doesnt exist!');
|
||||||
}
|
}
|
||||||
return this.levelMap[id]['nextLevelID'];
|
var nextID = this.levelMap[id]['nextLevelID'];
|
||||||
|
return this.levelMap[nextID];
|
||||||
|
};
|
||||||
|
|
||||||
|
LevelArbiter.prototype.getNextLevelID = function(id) {
|
||||||
|
return this.getNextLevel(id)['id'];
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.LevelArbiter = LevelArbiter;
|
exports.LevelArbiter = LevelArbiter;
|
||||||
|
@ -18160,7 +18223,12 @@ LevelArbiter.prototype.getNextLevel = function(id) {
|
||||||
if (!this.levelMap[id]) {
|
if (!this.levelMap[id]) {
|
||||||
throw new Error('that level doesnt exist!');
|
throw new Error('that level doesnt exist!');
|
||||||
}
|
}
|
||||||
return this.levelMap[id]['nextLevelID'];
|
var nextID = this.levelMap[id]['nextLevelID'];
|
||||||
|
return this.levelMap[nextID];
|
||||||
|
};
|
||||||
|
|
||||||
|
LevelArbiter.prototype.getNextLevelID = function(id) {
|
||||||
|
return this.getNextLevel(id)['id'];
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.LevelArbiter = LevelArbiter;
|
exports.LevelArbiter = LevelArbiter;
|
||||||
|
@ -18263,6 +18331,7 @@ var ModalAlert = require('../views').ModalAlert;
|
||||||
var MultiView = require('../views/multiView').MultiView;
|
var MultiView = require('../views/multiView').MultiView;
|
||||||
var CanvasTerminalHolder = require('../views').CanvasTerminalHolder;
|
var CanvasTerminalHolder = require('../views').CanvasTerminalHolder;
|
||||||
var ConfirmCancelTerminal = require('../views').ConfirmCancelTerminal;
|
var ConfirmCancelTerminal = require('../views').ConfirmCancelTerminal;
|
||||||
|
var NextLevelConfirm = require('../views').NextLevelConfirm;
|
||||||
var LevelToolbar = require('../views').LevelToolbar;
|
var LevelToolbar = require('../views').LevelToolbar;
|
||||||
|
|
||||||
var TreeCompare = require('../git/treeCompare').TreeCompare;
|
var TreeCompare = require('../git/treeCompare').TreeCompare;
|
||||||
|
@ -18498,11 +18567,43 @@ var Level = Sandbox.extend({
|
||||||
this.levelSolved(defer);
|
this.levelSolved(defer);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getNumSolutionCommands: function() {
|
||||||
|
// strip semicolons in bad places
|
||||||
|
var toAnalyze = this.level.solutionCommand.replace(/^;|;$/g, '');
|
||||||
|
return toAnalyze.split(';').length;
|
||||||
|
},
|
||||||
|
|
||||||
levelSolved: function(defer) {
|
levelSolved: function(defer) {
|
||||||
this.solved = true;
|
this.solved = true;
|
||||||
this.hideGoal();
|
this.hideGoal();
|
||||||
|
|
||||||
|
var nextLevel = Main.getLevelArbiter().getNextLevel(this.level.id);
|
||||||
|
var numCommands = this.gitCommandsIssued;
|
||||||
|
var best = this.getNumSolutionCommands();
|
||||||
|
|
||||||
this.mainVis.gitVisuals.finishAnimation()
|
this.mainVis.gitVisuals.finishAnimation()
|
||||||
.then(function() {
|
.then(function() {
|
||||||
|
// TODO if there is no future level...
|
||||||
|
|
||||||
|
// we want to ask if they will move onto the next level...
|
||||||
|
var nextDialog = new NextLevelConfirm({
|
||||||
|
nextLevelName: nextLevel.name,
|
||||||
|
numCommands: numCommands,
|
||||||
|
best: best
|
||||||
|
});
|
||||||
|
|
||||||
|
return nextDialog.getPromise();
|
||||||
|
})
|
||||||
|
.then(function() {
|
||||||
|
Main.getEventBaton().trigger(
|
||||||
|
'commandSubmitted',
|
||||||
|
'level ' + nextLevel.id
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.fail(function() {
|
||||||
|
// nothing to do, we will just close
|
||||||
|
})
|
||||||
|
.done(function() {
|
||||||
defer.resolve();
|
defer.resolve();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -18546,6 +18647,12 @@ var Level = Sandbox.extend({
|
||||||
return instants;
|
return instants;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
reset: function() {
|
||||||
|
this.gitCommandsIssued = 0;
|
||||||
|
this.solved = false;
|
||||||
|
Sandbox.prototype.reset.apply(this, arguments);
|
||||||
|
},
|
||||||
|
|
||||||
startLevel: function(command, deferred) {
|
startLevel: function(command, deferred) {
|
||||||
this.exitLevel();
|
this.exitLevel();
|
||||||
|
|
||||||
|
@ -18838,7 +18945,7 @@ var Sandbox = Backbone.View.extend({
|
||||||
|
|
||||||
exitLevel: function(command, deferred) {
|
exitLevel: function(command, deferred) {
|
||||||
command.addWarning(
|
command.addWarning(
|
||||||
"You aren't in a level! You are in a sandbox, start a level with `start level [id]`"
|
"You aren't in a level! You are in a sandbox, start a level with `level [id]`"
|
||||||
);
|
);
|
||||||
command.set('status', 'error');
|
command.set('status', 'error');
|
||||||
deferred.resolve();
|
deferred.resolve();
|
||||||
|
@ -18851,7 +18958,7 @@ var Sandbox = Backbone.View.extend({
|
||||||
'delay': this.delay,
|
'delay': this.delay,
|
||||||
'clear': this.clear,
|
'clear': this.clear,
|
||||||
'exit level': this.exitLevel,
|
'exit level': this.exitLevel,
|
||||||
'start level': this.startLevel
|
'level': this.startLevel
|
||||||
};
|
};
|
||||||
var method = commandMap[command.get('method')];
|
var method = commandMap[command.get('method')];
|
||||||
if (!method) { throw new Error('no method for that wut'); }
|
if (!method) { throw new Error('no method for that wut'); }
|
||||||
|
@ -18954,7 +19061,7 @@ var regexMap = {
|
||||||
'delay': /^delay (\d+)$/,
|
'delay': /^delay (\d+)$/,
|
||||||
'clear': /^clear($|\s)/,
|
'clear': /^clear($|\s)/,
|
||||||
'exit level': /^exit level($|\s)/,
|
'exit level': /^exit level($|\s)/,
|
||||||
'start level': /^start level\s?([a-zA-Z0-9]*)/
|
'level': /^level\s?([a-zA-Z0-9]*)/
|
||||||
};
|
};
|
||||||
|
|
||||||
var parse = function(str) {
|
var parse = function(str) {
|
||||||
|
@ -20449,13 +20556,32 @@ var NextLevelConfirm = ConfirmCancelTerminal.extend({
|
||||||
initialize: function(options) {
|
initialize: function(options) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
this.nextLevelName = options.nextLevelName || 'The mysterious next level';
|
this.nextLevelName = options.nextLevelName || 'The mysterious next level';
|
||||||
|
|
||||||
|
var markdowns = [
|
||||||
|
'## Great Job!!',
|
||||||
|
'',
|
||||||
|
'You solved the level in **' + options.numCommands + '** command(s); ',
|
||||||
|
'our solution uses ' + options.best + '. '
|
||||||
|
];
|
||||||
|
|
||||||
|
if (options.numCommands <= options.best) {
|
||||||
|
markdowns.push(
|
||||||
|
'Awesome! You matched or exceeded our solution. '
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
markdowns.push(
|
||||||
|
'See if you can whittle it down to ' + options.best + ' command(s) :D '
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
markdowns = markdowns.concat([
|
||||||
|
'',
|
||||||
|
'Would you like to move onto "',
|
||||||
|
this.nextLevelName + '", the next level?'
|
||||||
|
]);
|
||||||
|
|
||||||
options.modalAlert = {
|
options.modalAlert = {
|
||||||
markdowns: [
|
markdowns: markdowns
|
||||||
'## Great Job!!',
|
|
||||||
'',
|
|
||||||
'You solved the level. Would you like to move onto "',
|
|
||||||
this.nextLevelName + '", the next level?'
|
|
||||||
]
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ConfirmCancelTerminal.prototype.initialize.apply(this, [options]);
|
ConfirmCancelTerminal.prototype.initialize.apply(this, [options]);
|
||||||
|
|
|
@ -72,7 +72,12 @@ LevelArbiter.prototype.getNextLevel = function(id) {
|
||||||
if (!this.levelMap[id]) {
|
if (!this.levelMap[id]) {
|
||||||
throw new Error('that level doesnt exist!');
|
throw new Error('that level doesnt exist!');
|
||||||
}
|
}
|
||||||
return this.levelMap[id]['nextLevelID'];
|
var nextID = this.levelMap[id]['nextLevelID'];
|
||||||
|
return this.levelMap[nextID];
|
||||||
|
};
|
||||||
|
|
||||||
|
LevelArbiter.prototype.getNextLevelID = function(id) {
|
||||||
|
return this.getNextLevel(id)['id'];
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.LevelArbiter = LevelArbiter;
|
exports.LevelArbiter = LevelArbiter;
|
||||||
|
|
|
@ -18,6 +18,7 @@ var ModalAlert = require('../views').ModalAlert;
|
||||||
var MultiView = require('../views/multiView').MultiView;
|
var MultiView = require('../views/multiView').MultiView;
|
||||||
var CanvasTerminalHolder = require('../views').CanvasTerminalHolder;
|
var CanvasTerminalHolder = require('../views').CanvasTerminalHolder;
|
||||||
var ConfirmCancelTerminal = require('../views').ConfirmCancelTerminal;
|
var ConfirmCancelTerminal = require('../views').ConfirmCancelTerminal;
|
||||||
|
var NextLevelConfirm = require('../views').NextLevelConfirm;
|
||||||
var LevelToolbar = require('../views').LevelToolbar;
|
var LevelToolbar = require('../views').LevelToolbar;
|
||||||
|
|
||||||
var TreeCompare = require('../git/treeCompare').TreeCompare;
|
var TreeCompare = require('../git/treeCompare').TreeCompare;
|
||||||
|
@ -253,11 +254,43 @@ var Level = Sandbox.extend({
|
||||||
this.levelSolved(defer);
|
this.levelSolved(defer);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getNumSolutionCommands: function() {
|
||||||
|
// strip semicolons in bad places
|
||||||
|
var toAnalyze = this.level.solutionCommand.replace(/^;|;$/g, '');
|
||||||
|
return toAnalyze.split(';').length;
|
||||||
|
},
|
||||||
|
|
||||||
levelSolved: function(defer) {
|
levelSolved: function(defer) {
|
||||||
this.solved = true;
|
this.solved = true;
|
||||||
this.hideGoal();
|
this.hideGoal();
|
||||||
|
|
||||||
|
var nextLevel = Main.getLevelArbiter().getNextLevel(this.level.id);
|
||||||
|
var numCommands = this.gitCommandsIssued;
|
||||||
|
var best = this.getNumSolutionCommands();
|
||||||
|
|
||||||
this.mainVis.gitVisuals.finishAnimation()
|
this.mainVis.gitVisuals.finishAnimation()
|
||||||
.then(function() {
|
.then(function() {
|
||||||
|
// TODO if there is no future level...
|
||||||
|
|
||||||
|
// we want to ask if they will move onto the next level...
|
||||||
|
var nextDialog = new NextLevelConfirm({
|
||||||
|
nextLevelName: nextLevel.name,
|
||||||
|
numCommands: numCommands,
|
||||||
|
best: best
|
||||||
|
});
|
||||||
|
|
||||||
|
return nextDialog.getPromise();
|
||||||
|
})
|
||||||
|
.then(function() {
|
||||||
|
Main.getEventBaton().trigger(
|
||||||
|
'commandSubmitted',
|
||||||
|
'level ' + nextLevel.id
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.fail(function() {
|
||||||
|
// nothing to do, we will just close
|
||||||
|
})
|
||||||
|
.done(function() {
|
||||||
defer.resolve();
|
defer.resolve();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -301,6 +334,12 @@ var Level = Sandbox.extend({
|
||||||
return instants;
|
return instants;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
reset: function() {
|
||||||
|
this.gitCommandsIssued = 0;
|
||||||
|
this.solved = false;
|
||||||
|
Sandbox.prototype.reset.apply(this, arguments);
|
||||||
|
},
|
||||||
|
|
||||||
startLevel: function(command, deferred) {
|
startLevel: function(command, deferred) {
|
||||||
this.exitLevel();
|
this.exitLevel();
|
||||||
|
|
||||||
|
|
|
@ -143,7 +143,7 @@ var Sandbox = Backbone.View.extend({
|
||||||
|
|
||||||
exitLevel: function(command, deferred) {
|
exitLevel: function(command, deferred) {
|
||||||
command.addWarning(
|
command.addWarning(
|
||||||
"You aren't in a level! You are in a sandbox, start a level with `start level [id]`"
|
"You aren't in a level! You are in a sandbox, start a level with `level [id]`"
|
||||||
);
|
);
|
||||||
command.set('status', 'error');
|
command.set('status', 'error');
|
||||||
deferred.resolve();
|
deferred.resolve();
|
||||||
|
@ -156,7 +156,7 @@ var Sandbox = Backbone.View.extend({
|
||||||
'delay': this.delay,
|
'delay': this.delay,
|
||||||
'clear': this.clear,
|
'clear': this.clear,
|
||||||
'exit level': this.exitLevel,
|
'exit level': this.exitLevel,
|
||||||
'start level': this.startLevel
|
'level': this.startLevel
|
||||||
};
|
};
|
||||||
var method = commandMap[command.get('method')];
|
var method = commandMap[command.get('method')];
|
||||||
if (!method) { throw new Error('no method for that wut'); }
|
if (!method) { throw new Error('no method for that wut'); }
|
||||||
|
|
|
@ -42,7 +42,7 @@ var regexMap = {
|
||||||
'delay': /^delay (\d+)$/,
|
'delay': /^delay (\d+)$/,
|
||||||
'clear': /^clear($|\s)/,
|
'clear': /^clear($|\s)/,
|
||||||
'exit level': /^exit level($|\s)/,
|
'exit level': /^exit level($|\s)/,
|
||||||
'start level': /^start level\s?([a-zA-Z0-9]*)/
|
'level': /^level\s?([a-zA-Z0-9]*)/
|
||||||
};
|
};
|
||||||
|
|
||||||
var parse = function(str) {
|
var parse = function(str) {
|
||||||
|
|
|
@ -358,13 +358,32 @@ var NextLevelConfirm = ConfirmCancelTerminal.extend({
|
||||||
initialize: function(options) {
|
initialize: function(options) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
this.nextLevelName = options.nextLevelName || 'The mysterious next level';
|
this.nextLevelName = options.nextLevelName || 'The mysterious next level';
|
||||||
|
|
||||||
|
var markdowns = [
|
||||||
|
'## Great Job!!',
|
||||||
|
'',
|
||||||
|
'You solved the level in **' + options.numCommands + '** command(s); ',
|
||||||
|
'our solution uses ' + options.best + '. '
|
||||||
|
];
|
||||||
|
|
||||||
|
if (options.numCommands <= options.best) {
|
||||||
|
markdowns.push(
|
||||||
|
'Awesome! You matched or exceeded our solution. '
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
markdowns.push(
|
||||||
|
'See if you can whittle it down to ' + options.best + ' command(s) :D '
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
markdowns = markdowns.concat([
|
||||||
|
'',
|
||||||
|
'Would you like to move onto "',
|
||||||
|
this.nextLevelName + '", the next level?'
|
||||||
|
]);
|
||||||
|
|
||||||
options.modalAlert = {
|
options.modalAlert = {
|
||||||
markdowns: [
|
markdowns: markdowns
|
||||||
'## Great Job!!',
|
|
||||||
'',
|
|
||||||
'You solved the level. Would you like to move onto "',
|
|
||||||
this.nextLevelName + '", the next level?'
|
|
||||||
]
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ConfirmCancelTerminal.prototype.initialize.apply(this, [options]);
|
ConfirmCancelTerminal.prototype.initialize.apply(this, [options]);
|
||||||
|
|
2
todo.txt
2
todo.txt
|
@ -12,7 +12,6 @@ Medium things:
|
||||||
Cases to handle / things to edit
|
Cases to handle / things to edit
|
||||||
=======================
|
=======================
|
||||||
[ ] "next level?" dialog after beating level
|
[ ] "next level?" dialog after beating level
|
||||||
[ ] keyboard input for confirm / cancel
|
|
||||||
[ ] what if they just type "levels" ?
|
[ ] what if they just type "levels" ?
|
||||||
[ ] show level dropdown
|
[ ] show level dropdown
|
||||||
[ ] gotoSandbox command
|
[ ] gotoSandbox command
|
||||||
|
@ -35,6 +34,7 @@ Big Bugs to fix:
|
||||||
Done things:
|
Done things:
|
||||||
(I only started this on Dec 17th 2012 to get a better sense of what was done)
|
(I only started this on Dec 17th 2012 to get a better sense of what was done)
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
[x] keyboard input for confirm / cancel
|
||||||
[x] level arbiter (has everything by ID)
|
[x] level arbiter (has everything by ID)
|
||||||
[x] flip branches on the sides!! i wonder how to determine...
|
[x] flip branches on the sides!! i wonder how to determine...
|
||||||
[x] click handlers on goal visualization for the actual canvas elements
|
[x] click handlers on goal visualization for the actual canvas elements
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue