multiview workign

This commit is contained in:
Peter Cottle 2013-01-07 00:38:43 -08:00
parent 465b25368e
commit cad801fafe
11 changed files with 157 additions and 33 deletions

View file

@ -84,6 +84,9 @@ LevelArbiter.prototype.validateLevel = function(level) {
throw new Error('I need this field for a level: ' + field);
}
});
if (this.levelMap[level.id]) {
throw new Error('woah that level already exists!');
}
};
LevelArbiter.prototype.getSequences = function() {

View file

@ -14,7 +14,6 @@ var DisabledMap = require('../level/disabledMap').DisabledMap;
var Command = require('../models/commandModel').Command;
var GitShim = require('../git/gitShim').GitShim;
var ModalAlert = require('../views').ModalAlert;
var MultiView = require('../views/multiView').MultiView;
var CanvasTerminalHolder = require('../views').CanvasTerminalHolder;
var ConfirmCancelTerminal = require('../views').ConfirmCancelTerminal;
@ -42,6 +41,28 @@ var Level = Sandbox.extend({
Level.__super__.initialize.apply(this, [options]);
this.startOffCommand();
this.handleOpen();
},
handleOpen: function() {
this.options.deferred = this.options.deferred || Q.defer();
// if there is a multiview in the beginning, open that
// and let it resolve our deferred
if (this.level.startDialog) {
new MultiView(_.extend(
{},
this.level.startDialog,
{ deferred: this.options.deferred }
));
return;
}
// otherwise, resolve after a 700 second delay
setTimeout(_.bind(function() {
this.options.deferred.resolve();
}, this), this.getAnimationTime() * 1.2);
},
initName: function(options) {

View file

@ -134,13 +134,17 @@ var Sandbox = Backbone.View.extend({
// we don't even need a reference to this,
// everything will be handled via event baton :DDDDDDDDD
var whenLevelOpen = Q.defer();
var Level = require('../level').Level;
var currentLevel = new Level({
level: levelJSON
level: levelJSON,
deferred: whenLevelOpen
});
setTimeout(function() {
whenLevelOpen.promise.then(function() {
command.finishWith(deferred);
}, this.getAnimationTime());
});
},
exitLevel: function(command, deferred) {

View file

@ -129,17 +129,17 @@ var SeriesView = BaseView.extend({
// this is a bit hacky, it really should be some nice model
// property changing but it's the 11th hour...
var toLoop = this.$('div.levelIcon').each(function(index, el) {
var id = el.id;
var id = $(el).attr('data-id');
$(el).toggleClass('solved', Main.getLevelArbiter().isLevelSolved(id));
});
},
click: function(ev) {
if (!ev || !ev.srcElement || !ev.srcElement.id) {
if (!ev || !ev.srcElement) {
console.warn('wut, no id'); return;
}
var id = ev.srcElement.id;
var id = $(ev.srcElement).attr('data-id');
this.navEvents.trigger('clickedID', id);
}
});