level scaffolding

This commit is contained in:
Peter Cottle 2013-01-05 22:21:00 -08:00
parent 903b537fda
commit ca33b7ce1b
8 changed files with 305 additions and 76 deletions

View file

@ -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;

View file

@ -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;