awesome hooking everything up

This commit is contained in:
Peter Cottle 2013-01-06 23:50:52 -08:00
parent 378fcc0377
commit 0735eb3d64
11 changed files with 266 additions and 139 deletions

View file

@ -12,6 +12,7 @@ var commandUI;
var sandbox;
var eventBaton;
var levelArbiter;
var levelDropdown;
///////////////////////////////////////////////////////////////////////
@ -29,11 +30,15 @@ var init = function() {
var Level = require('../level').Level;
var EventBaton = require('../util/eventBaton').EventBaton;
var LevelArbiter = require('../level/arbiter').LevelArbiter;
var LevelDropdownView = require('../views/levelDropdownView').LevelDropdownView;
eventBaton = new EventBaton();
commandUI = new CommandUI();
sandbox = new Sandbox();
levelArbiter = new LevelArbiter();
levelDropdown = new LevelDropdownView({
wait: true
});
// we always want to focus the text area to collect input
var focusTextArea = function() {
@ -147,5 +152,9 @@ exports.getLevelArbiter = function() {
return levelArbiter;
};
exports.getLevelDropdown = function() {
return levelDropdown;
};
exports.init = init;

View file

@ -6,11 +6,15 @@ var Backbone = require('backbone');
var levelSequences = require('../levels').levelSequences;
var sequenceInfo = require('../levels').sequenceInfo;
var Main = require('../app');
function LevelArbiter() {
this.levelMap = {};
this.init();
// TODO -- local storage sync
this.solvedMap = {};
Main.getEvents().on('levelSolved', this.levelSolved, this);
}
LevelArbiter.prototype.init = function() {
@ -42,10 +46,13 @@ LevelArbiter.prototype.isLevelSolved = function(id) {
if (!this.levelMap[id]) {
throw new Error('that level doesnt exist!');
}
console.log('is it solved', id);
return Boolean(this.solvedMap[id]);
};
LevelArbiter.prototype.levelSolved = function(id) {
this.solvedMap[id] = true;
};
LevelArbiter.prototype.validateLevel = function(level) {
level = level || {};
var requiredFields = [

View file

@ -258,6 +258,7 @@ var Level = Sandbox.extend({
levelSolved: function(defer) {
this.solved = true;
Main.getEvents().trigger('levelSolved', this.level.id);
this.hideGoal();
var nextLevel = Main.getLevelArbiter().getNextLevel(this.level.id);

View file

@ -149,6 +149,14 @@ var Sandbox = Backbone.View.extend({
deferred.resolve();
},
showLevels: function(command, deferred) {
var whenClosed = Q.defer();
Main.getLevelDropdown().show(whenClosed);
whenClosed.promise.done(function() {
command.finishWith(deferred);
});
},
processSandboxCommand: function(command, deferred) {
var commandMap = {
'help': this.helpDialog,
@ -157,7 +165,8 @@ var Sandbox = Backbone.View.extend({
'clear': this.clear,
'exit level': this.exitLevel,
'level': this.startLevel,
'sandbox': this.exitLevel
'sandbox': this.exitLevel,
'levels': this.showLevels
};
var method = commandMap[command.get('method')];
if (!method) { throw new Error('no method for that wut'); }

View file

@ -43,7 +43,8 @@ var regexMap = {
'clear': /^clear($|\s)/,
'exit level': /^exit level($|\s)/,
'sandbox': /^sandbox($|\s)/,
'level': /^level\s?([a-zA-Z0-9]*)/
'level': /^level\s?([a-zA-Z0-9]*)/,
'levels': /^levels($|\s)/
};
var parse = function(str) {

View file

@ -34,5 +34,6 @@ $(document).ready(function() {
window.eventBaton = toGlobalize.Main.getEventBaton();
window.sandbox = toGlobalize.Main.getSandbox();
window.modules = toGlobalize;
window.levelDropdown = toGlobalize.Main.getLevelDropdown();
});

View file

@ -20,6 +20,8 @@ var LevelDropdownView = ContainedBase.extend({
options = options || {};
this.JSON = {};
Main.getEvents().on('levelSolved', this.updateSolvedStatus, this);
this.navEvents = _.clone(Backbone.Events);
this.navEvents.on('clickedID', _.debounce(
_.bind(this.loadLevelID, this),
@ -39,6 +41,20 @@ var LevelDropdownView = ContainedBase.extend({
}
},
show: function(deferred) {
this.showDeferred = deferred;
LevelDropdownView.__super__.show.apply(this);
},
hide: function() {
if (this.showDeferred) {
this.showDeferred.resolve();
}
this.showDeferred = undefined;
LevelDropdownView.__super__.hide.apply(this);
},
loadLevelID: function(id) {
Main.getEventBaton().trigger(
'commandSubmitted',
@ -105,8 +121,6 @@ var SeriesView = BaseView.extend({
},
click: function(ev) {
console.log(ev.srcElement);
console.log(ev.srcElement.id);
if (!ev || !ev.srcElement || !ev.srcElement.id) {
console.warn('wut, no id'); return;
}