diff --git a/app/styles/play/spectate.sass b/app/styles/play/spectate.sass index dd8ee775c..0da4b10ed 100644 --- a/app/styles/play/spectate.sass +++ b/app/styles/play/spectate.sass @@ -49,8 +49,6 @@ //max-width: 1680px // guideline, but for now let's let it stretch out min-width: 1024px position: relative - #playback-view - margin: 0 auto #thang-hud margin: 0 auto display: none diff --git a/app/views/play/spectate_view.coffee b/app/views/play/spectate_view.coffee index 27cfcb1f4..0a935bead 100644 --- a/app/views/play/spectate_view.coffee +++ b/app/views/play/spectate_view.coffee @@ -65,10 +65,15 @@ module.exports = class SpectateLevelView extends View 'ctrl+s': 'onCtrlS' constructor: (options, @levelID) -> + @originalOptions = _.cloneDeep(options) console.profile?() if PROFILE_ME super options - @sessionOne = @getQueryVariable 'session-one' - @sessionTwo = @getQueryVariable 'session-two' + if options.spectateSessions? + @sessionOne = options.spectateSessions.sessionOne + @sessionTwo = options.spectateSessions.sessionTwo + else + @sessionOne = @getQueryVariable 'session-one' + @sessionTwo = @getQueryVariable 'session-two' $(window).on('resize', @onWindowResize) @supermodel.once 'error', @onLevelLoadError @@ -150,6 +155,7 @@ module.exports = class SpectateLevelView extends View @initScriptManager() @insertSubviews ladderGame: @otherSession? @initVolume() + @originalSessionState = _.cloneDeep(@session.get('state')) @register() @controlBar.setBus(@bus) @@ -165,7 +171,6 @@ module.exports = class SpectateLevelView extends View name: @otherSession.get('creatorName') team: @otherSession.get('team') - grabLevelLoaderData: -> @session = @levelLoader.session @world = @levelLoader.world @@ -247,18 +252,8 @@ module.exports = class SpectateLevelView extends View $(@wasFocusedOn).focus() if @wasFocusedOn @wasFocusedOn = null - onDonePressed: -> @showVictory() + onDonePressed: -> return - onShowVictory: (e) -> - $('#level-done-button').show() - @showVictory() if e.showModal - setTimeout(@preloadNextLevel, 3000) - - showVictory: -> - options = {level: @level, supermodel: @supermodel, session:@session} - docs = new VictoryModal(options) - @openModalView(docs) - window.tracker?.trackEvent 'Saw Victory', level: @world.name, label: @world.name onNewWorld: (e) -> @world = e.world @@ -365,7 +360,7 @@ module.exports = class SpectateLevelView extends View initSurface: -> surfaceCanvas = $('canvas#surface', @$el) - @surface = new Surface(@world, surfaceCanvas, thangTypes: @supermodel.getModels(ThangType), playJingle: not @isEditorPreview) + @surface = new Surface(@world, surfaceCanvas, thangTypes: @supermodel.getModels(ThangType), playJingle: not @isEditorPreview, spectateGame: true) worldBounds = @world.getBounds() bounds = [{x:worldBounds.left, y:worldBounds.top}, {x:worldBounds.right, y:worldBounds.bottom}] @surface.camera.setBounds(bounds) @@ -376,7 +371,14 @@ module.exports = class SpectateLevelView extends View @god.goalManager = @goalManager initScriptManager: -> - @scriptManager = new ScriptManager({scripts: @world.scripts or [], view:@, session: @session}) + if @world.scripts + nonVictoryPlaybackScripts = _.reject @world.scripts, (script) -> + script.id.indexOf("Set Camera Boundaries and Goals") == -1 + else + console.log "World scripts don't exist!" + nonVictoryPlaybackScripts = [] + console.log nonVictoryPlaybackScripts + @scriptManager = new ScriptManager({scripts: nonVictoryPlaybackScripts, view:@, session: @session}) @scriptManager.loadFromSession() initVolume: -> @@ -388,11 +390,6 @@ module.exports = class SpectateLevelView extends View return if @alreadyLoadedState @alreadyLoadedState = true state = @originalSessionState - if state.frame - Backbone.Mediator.publish 'level-set-time', { time: 0, frameOffset: state.frame } - if state.selected - # TODO: Should also restore selected spell here by saving spellName - Backbone.Mediator.publish 'level-select-sprite', { thangID: state.selected, spellName: null } if state.playing? Backbone.Mediator.publish 'level-set-playing', { playing: state.playing } @@ -428,11 +425,16 @@ module.exports = class SpectateLevelView extends View console.log "You want to see the next game!" @sessionOne = "53193c8f7a89df21c4d968e9" @sessionTwo = "531aa613026834331eac5e7e" - @destroy(true) - @load() - @afterRender() + url = "/play/spectate/dungeon-arena?session-one=#{@sessionOne}&session-two=#{@sessionTwo}" + Backbone.Mediator.publish 'router:navigate', { + route: url, + viewClass: SpectateLevelView, + viewArgs: [{spectateSessions:{sessionOne: @sessionOne, sessionTwo: @sessionTwo}}, "dungeon-arena"]} - destroy: (destroyHalfway)-> + + + + destroy: ()-> @supermodel?.off 'error', @onLevelLoadError @levelLoader?.off 'loaded-all', @onLevelLoaderLoaded @levelLoader?.destroy() @@ -440,11 +442,9 @@ module.exports = class SpectateLevelView extends View @god?.destroy() @goalManager?.destroy() @scriptManager?.destroy() - unless destroyHalfway - $(window).off('resize', @onWindowResize) + $(window).off('resize', @onWindowResize) delete window.world # not sure where this is set, but this is one way to clean it up clearInterval(@pointerInterval) - console.profileEnd?() if PROFILE_ME @session?.off 'change:multiplayer', @onMultiplayerChanged, @ @onLevelLoadError = null @@ -452,5 +452,4 @@ module.exports = class SpectateLevelView extends View @onSupermodelLoadedOne = null @preloadNextLevel = null @saveScreenshot = null - unless destroyHalfway - super() + super()