mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-02-17 08:50:58 -05:00
Set up the level play view to show the guide on startup based on the showGuide property.
This commit is contained in:
parent
13b9a9cb58
commit
8fa9c9c410
3 changed files with 29 additions and 4 deletions
|
@ -229,6 +229,7 @@ module.exports = class LevelLoader extends CocoClass
|
|||
notifyProgress: ->
|
||||
Backbone.Mediator.publish 'level-loader:progress-changed', progress: @progress()
|
||||
@initWorld() if @allDone()
|
||||
@trigger 'progress'
|
||||
@trigger 'loaded-all' if @progress() is 1
|
||||
|
||||
destroy: ->
|
||||
|
|
|
@ -99,10 +99,11 @@ module.exports = class CocoView extends Backbone.View
|
|||
view = application.router.getView(target, '_modal') # could set up a system for loading cached modals, if told to
|
||||
@openModalView(view)
|
||||
|
||||
openModalView: (modalView) ->
|
||||
return if @waitingModal # can only have one waiting at once
|
||||
openModalView: (modalView, softly=false) ->
|
||||
return if waitingModal # can only have one waiting at once
|
||||
if visibleModal
|
||||
waitingModal = modalView
|
||||
return if softly
|
||||
return visibleModal.hide() if visibleModal.$el.is(':visible') # close, then this will get called again
|
||||
return @modalClosed(visibleModal) # was closed, but modalClosed was not called somehow
|
||||
modalView.render()
|
||||
|
|
|
@ -16,6 +16,7 @@ LevelLoader = require 'lib/LevelLoader'
|
|||
LevelSession = require 'models/LevelSession'
|
||||
Level = require 'models/Level'
|
||||
LevelComponent = require 'models/LevelComponent'
|
||||
Article = require 'models/Article'
|
||||
Camera = require 'lib/surface/Camera'
|
||||
AudioPlayer = require 'lib/AudioPlayer'
|
||||
|
||||
|
@ -105,7 +106,8 @@ module.exports = class PlayLevelView extends View
|
|||
|
||||
load: ->
|
||||
@levelLoader = new LevelLoader supermodel: @supermodel, levelID: @levelID, sessionID: @sessionID, opponentSessionID: @getQueryVariable('opponent'), team: @getQueryVariable("team")
|
||||
@levelLoader.once 'loaded-all', @onLevelLoaderLoaded
|
||||
@levelLoader.once 'loaded-all', @onLevelLoaderLoaded, @
|
||||
@levelLoader.on 'progress', @onLevelLoaderProgressChanged, @
|
||||
@god = new God()
|
||||
|
||||
getRenderData: ->
|
||||
|
@ -124,7 +126,28 @@ module.exports = class PlayLevelView extends View
|
|||
@$el.find('#level-done-button').hide()
|
||||
super()
|
||||
|
||||
onLevelLoaderLoaded: =>
|
||||
onLevelLoaderProgressChanged: ->
|
||||
return if @seenDocs
|
||||
return unless showFrequency = @levelLoader.level.get('showGuide')
|
||||
session = @levelLoader.session
|
||||
diff = new Date().getTime() - new Date(session.get('created')).getTime()
|
||||
return if showFrequency is 'first-time' and diff > (5 * 60 * 1000)
|
||||
return unless @levelLoader.level.loaded
|
||||
articles = @levelLoader.supermodel.getModels Article
|
||||
for article in articles
|
||||
return unless article.loaded
|
||||
@showGuide()
|
||||
|
||||
showGuide: ->
|
||||
@seenDocs = true
|
||||
DocsModal = require './level/modal/docs_modal'
|
||||
options = {docs: @levelLoader.level.get('documentation'), supermodel: @supermodel}
|
||||
@openModalView(new DocsModal(options), true)
|
||||
Backbone.Mediator.subscribeOnce 'modal-closed', @onLevelLoaderLoaded, @
|
||||
return true
|
||||
|
||||
onLevelLoaderLoaded: ->
|
||||
return unless @levelLoader.progress() is 1 # double check, since closing the guide may trigger this early
|
||||
# Save latest level played in local storage
|
||||
if window.currentModal and not window.currentModal.destroyed
|
||||
@loadingScreen.showReady()
|
||||
|
|
Loading…
Reference in a new issue