mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-06-29 09:20:03 +02:00
level scaffolding
This commit is contained in:
parent
903b537fda
commit
ca33b7ce1b
8 changed files with 305 additions and 76 deletions
|
@ -11,6 +11,7 @@ var events = _.clone(Backbone.Events);
|
|||
var commandUI;
|
||||
var sandbox;
|
||||
var eventBaton;
|
||||
var levelArbiter;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -27,10 +28,12 @@ var init = function() {
|
|||
var Sandbox = require('../level/sandbox').Sandbox;
|
||||
var Level = require('../level').Level;
|
||||
var EventBaton = require('../util/eventBaton').EventBaton;
|
||||
var LevelArbiter = require('../level/arbiter').LevelArbiter;
|
||||
|
||||
eventBaton = new EventBaton();
|
||||
commandUI = new CommandUI();
|
||||
sandbox = new Sandbox();
|
||||
levelArbiter = new LevelArbiter();
|
||||
|
||||
// we always want to focus the text area to collect input
|
||||
var focusTextArea = function() {
|
||||
|
@ -130,5 +133,9 @@ exports.getCommandUI = function() {
|
|||
return commandUI;
|
||||
};
|
||||
|
||||
exports.getLevelArbiter = function() {
|
||||
return levelArbiter;
|
||||
};
|
||||
|
||||
exports.init = init;
|
||||
|
||||
|
|
|
@ -3,17 +3,8 @@ var Backbone = require('backbone');
|
|||
|
||||
// Each level is part of a "sequence;" levels within
|
||||
// a sequence proceed in order.
|
||||
|
||||
var levelSequences = {
|
||||
intro: [
|
||||
require('../../levels/intro/1'),
|
||||
require('../../levels/intro/2')
|
||||
],
|
||||
rebase: [
|
||||
require('../../levels/rebase/1'),
|
||||
require('../../levels/rebase/2')
|
||||
]
|
||||
};
|
||||
var levelSequences = require('../levels').levelSequences;
|
||||
var sequenceInfo = require('../levels').sequenceInfo;
|
||||
|
||||
function LevelArbiter() {
|
||||
this.levelMap = {};
|
||||
|
@ -21,7 +12,6 @@ function LevelArbiter() {
|
|||
}
|
||||
|
||||
LevelArbiter.prototype.init = function() {
|
||||
|
||||
var previousLevelID;
|
||||
_.each(levelSequences, function(levels, levelSequenceName) {
|
||||
// for this particular sequence...
|
||||
|
@ -43,7 +33,7 @@ LevelArbiter.prototype.validateLevel = function(level) {
|
|||
var requiredFields = [
|
||||
'id',
|
||||
'name',
|
||||
'goalTree',
|
||||
'goalTreeString',
|
||||
'solutionCommand'
|
||||
];
|
||||
|
||||
|
@ -56,7 +46,33 @@ LevelArbiter.prototype.validateLevel = function(level) {
|
|||
if (level[field] === undefined) {
|
||||
throw new Error('I need this field for a level: ' + field);
|
||||
}
|
||||
})
|
||||
});
|
||||
};
|
||||
|
||||
LevelArbiter.prototype.getSequences = function() {
|
||||
return _.keys(levelSequences);
|
||||
};
|
||||
|
||||
LevelArbiter.prototype.getLevelsInSequence = function(sequenceName) {
|
||||
if (!levelSequences[sequenceName]) {
|
||||
throw new Error('that sequecne name ' + sequenceName + 'does not exist');
|
||||
}
|
||||
return levelSequences[sequenceName];
|
||||
};
|
||||
|
||||
LevelArbiter.prototype.getSequenceInfo = function(sequenceName) {
|
||||
return sequenceInfo[sequenceName];
|
||||
};
|
||||
|
||||
LevelArbiter.prototype.getLevel = function(id) {
|
||||
return this.levelMap[id];
|
||||
};
|
||||
|
||||
LevelArbiter.prototype.getNextLevel = function(id) {
|
||||
if (!this.levelMap[id]) {
|
||||
throw new Error('that level doesnt exist!');
|
||||
}
|
||||
return this.levelMap[id]['nextLevelID'];
|
||||
};
|
||||
|
||||
exports.LevelArbiter = LevelArbiter;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue