mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-30 19:06:59 -05:00
Merge branch 'migrateBBevents' of https://github.com/Shrihari/codecombat into Shrihari-migrateBBevents
This commit is contained in:
commit
f55cef5ced
33 changed files with 82 additions and 96 deletions
|
@ -32,7 +32,7 @@ module.exports = class LevelBus extends Bus
|
|||
@fireScriptsRef = @fireRef?.child('scripts')
|
||||
|
||||
setSession: (@session) ->
|
||||
@session.on 'change:multiplayer', @onMultiplayerChanged, @
|
||||
@listenTo(@session, 'change:multiplayer', @onMultiplayerChanged)
|
||||
|
||||
onPoint: ->
|
||||
return true unless @session?.get('multiplayer')
|
||||
|
@ -226,5 +226,4 @@ module.exports = class LevelBus extends Bus
|
|||
tempSession.save(patch, {patch: true})
|
||||
|
||||
destroy: ->
|
||||
@session.off 'change:multiplayer', @onMultiplayerChanged, @
|
||||
super()
|
||||
|
|
|
@ -60,13 +60,13 @@ module.exports = class LevelLoader extends CocoClass
|
|||
# Unless you specify cache:false, sometimes the browser will use a cached session
|
||||
# and players will 'lose' code
|
||||
@session.fetch({cache:false})
|
||||
@session.once 'sync', @onSessionLoaded, @
|
||||
@listenToOnce(@session, 'sync', @onSessionLoaded)
|
||||
|
||||
if @opponentSessionID
|
||||
@opponentSession = new LevelSession()
|
||||
@opponentSession.url = "/db/level_session/#{@opponentSessionID}"
|
||||
@opponentSession.fetch()
|
||||
@opponentSession.once 'sync', @onSessionLoaded, @
|
||||
@listenToOnce(@opponentSession, 'sync', @onSessionLoaded)
|
||||
|
||||
sessionsLoaded: ->
|
||||
return true if @headless
|
||||
|
@ -82,8 +82,8 @@ module.exports = class LevelLoader extends CocoClass
|
|||
# Supermodel (Level) Loading
|
||||
|
||||
loadLevelModels: ->
|
||||
@supermodel.on 'loaded-one', @onSupermodelLoadedOne, @
|
||||
@supermodel.once 'error', @onSupermodelError, @
|
||||
@listenTo(@supermodel, 'loaded-one', @onSupermodelLoadedOne)
|
||||
@listenToOnce(@supermodel, 'error', @onSupermodelError)
|
||||
@level = @supermodel.getModel(Level, @levelID) or new Level _id: @levelID
|
||||
levelID = @levelID
|
||||
headless = @headless
|
||||
|
@ -235,7 +235,6 @@ module.exports = class LevelLoader extends CocoClass
|
|||
@trigger 'loaded-all' if @progress() is 1
|
||||
|
||||
destroy: ->
|
||||
@supermodel.off 'loaded-one', @onSupermodelLoadedOne
|
||||
@world = null # don't hold onto garbage
|
||||
@update = null
|
||||
super()
|
||||
|
|
|
@ -58,7 +58,7 @@ init = ->
|
|||
storage.save(CURRENT_USER_KEY, me.attributes)
|
||||
|
||||
me.loadGravatarProfile() if me.get('email')
|
||||
me.on('sync', userSynced)
|
||||
Backbone.listenTo(me, 'sync', userSynced)
|
||||
|
||||
userSynced = (user) ->
|
||||
Backbone.Mediator.publish('me:synced', {me:user})
|
||||
|
|
|
@ -48,9 +48,9 @@ module.exports = class Simulator extends CocoClass
|
|||
@god = new God maxWorkerPoolSize: 1, maxAngels: 1 # Start loading worker.
|
||||
|
||||
@levelLoader = new LevelLoader supermodel: @supermodel, levelID: @task.getLevelName(), sessionID: @task.getFirstSessionID(), headless: true
|
||||
@levelLoader.once 'loaded-all', @simulateGame
|
||||
@listenToOnce(@levelLoader, 'loaded-all', @simulateGame)
|
||||
|
||||
simulateGame: =>
|
||||
simulateGame: ->
|
||||
return if @destroyed
|
||||
@trigger 'statusUpdate', 'All resources loaded, simulating!', @task.getSessions()
|
||||
@assignWorldAndLevelFromLevelLoaderAndDestroyIt()
|
||||
|
|
|
@ -75,7 +75,7 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass
|
|||
else
|
||||
@stillLoading = true
|
||||
@thangType.fetch()
|
||||
@thangType.once 'sync', @setupSprite, @
|
||||
@listenToOnce(@thangType, 'sync', @setupSprite)
|
||||
|
||||
setupSprite: ->
|
||||
@stillLoading = false
|
||||
|
|
|
@ -22,7 +22,6 @@ module.exports = class Mark extends CocoClass
|
|||
destroy: ->
|
||||
@mark?.parent?.removeChild @mark
|
||||
@markSprite?.destroy()
|
||||
@thangType?.off 'sync', @onLoadedThangType, @
|
||||
@sprite = null
|
||||
super()
|
||||
|
||||
|
@ -177,7 +176,7 @@ module.exports = class Mark extends CocoClass
|
|||
return @loadThangType() if not thangType
|
||||
@thangType = thangType
|
||||
|
||||
return @thangType.once 'sync', @onLoadedThangType, @ if not @thangType.loaded
|
||||
return @listenToOnce(@thangType, 'sync', @onLoadedThangType) if not @thangType.loaded
|
||||
CocoSprite = require './CocoSprite'
|
||||
markSprite = new CocoSprite @thangType, @thangType.spriteOptions
|
||||
markSprite.queueAction 'idle'
|
||||
|
@ -188,7 +187,7 @@ module.exports = class Mark extends CocoClass
|
|||
name = @thangType
|
||||
@thangType = new ThangType()
|
||||
@thangType.url = -> "/db/thang.type/#{name}"
|
||||
@thangType.once 'sync', @onLoadedThangType, @
|
||||
@listenToOnce(@thangType, 'sync', @onLoadedThangType)
|
||||
@thangType.fetch()
|
||||
markThangTypes[name] = @thangType
|
||||
window.mtt = markThangTypes
|
||||
|
|
|
@ -9,8 +9,8 @@ class SuperModel
|
|||
@mustPopulate = model
|
||||
model.saveBackups = @shouldSaveBackups(model)
|
||||
model.fetch() unless model.loaded or model.loading
|
||||
model.once('sync', @modelLoaded, @) unless model.loaded
|
||||
model.once('error', @modelErrored, @) unless model.loaded
|
||||
@listenToOnce(model, 'sync', @modelLoaded) unless model.loaded
|
||||
@listenToOnce(model, 'error', @modelErrored) unless model.loaded
|
||||
url = model.url()
|
||||
@models[url] = model unless @models[url]?
|
||||
@modelLoaded(model) if model.loaded
|
||||
|
@ -40,7 +40,7 @@ class SuperModel
|
|||
continue if @models[refURL]
|
||||
@models[refURL] = ref
|
||||
ref.fetch()
|
||||
ref.once 'sync', @modelLoaded, @
|
||||
@listenToOnce(ref, 'sync', @modelLoaded)
|
||||
|
||||
@trigger 'loaded-one', model: model
|
||||
@trigger 'loaded-all' if @finished()
|
||||
|
|
|
@ -20,7 +20,7 @@ class LiveEditingMarkup extends TreemaNode.nodeMap.ace
|
|||
|
||||
buildValueForEditing: (valEl) ->
|
||||
super(valEl)
|
||||
@editor.on 'change', @onEditorChange
|
||||
@editor.on('change', @onEditorChange)
|
||||
@addImageUpload(valEl)
|
||||
|
||||
addImageUpload: (valEl) ->
|
||||
|
@ -203,7 +203,7 @@ class CoffeeTreema extends TreemaNode.nodeMap.ace
|
|||
|
||||
buildValueForEditing: (valEl) ->
|
||||
super(valEl)
|
||||
@editor.on 'change', @onEditorChange
|
||||
@editor.on('change', @onEditorChange)
|
||||
valEl
|
||||
|
||||
onEditorChange: =>
|
||||
|
@ -297,9 +297,9 @@ class LatestVersionReferenceNode extends TreemaNode
|
|||
@collection.url = "#{@url}?term=#{''}&project=true"
|
||||
|
||||
@collection.fetch()
|
||||
@collection.on 'sync', @searchCallback
|
||||
@listenTo(@collection, 'sync', @searchCallback)
|
||||
|
||||
searchCallback: =>
|
||||
searchCallback: ->
|
||||
container = @getSearchResultsEl().detach().empty()
|
||||
first = true
|
||||
for model in @collection.models
|
||||
|
|
|
@ -11,14 +11,14 @@ module.exports = class ProfileView extends View
|
|||
super options
|
||||
@user = User.getByID(@userID)
|
||||
@loading = false if 'gravatarProfile' of @user
|
||||
@user.on('change', @userChanged)
|
||||
@user.on('error', @userError)
|
||||
@listenTo(@user, 'change', @userChanged)
|
||||
@listenTo(@user, 'error', @userError)
|
||||
|
||||
userChanged: (user) =>
|
||||
userChanged: (user) ->
|
||||
@loading = false if 'gravatarProfile' of user
|
||||
@render()
|
||||
|
||||
userError: (user) =>
|
||||
userError: (user) ->
|
||||
@loading = false
|
||||
@render()
|
||||
|
||||
|
|
|
@ -19,11 +19,11 @@ module.exports = class SettingsView extends View
|
|||
@save = _.debounce(@save, 200)
|
||||
super options
|
||||
return unless me
|
||||
me.on('change', @refreshPicturePane) # depends on gravatar load
|
||||
me.on('invalid', (errors) -> forms.applyErrorsToForm(@$el, me.validationError))
|
||||
@listenTo(me, 'change', @refreshPicturePane) # depends on gravatar load
|
||||
@listenTo(me, 'invalid', (errors) -> forms.applyErrorsToForm(@$el, me.validationError))
|
||||
window.f = @getSubscriptions
|
||||
|
||||
refreshPicturePane: =>
|
||||
refreshPicturePane: ->
|
||||
h = $(@template(@getRenderData()))
|
||||
newPane = $('#picture-pane', h)
|
||||
oldPane = $('#picture-pane')
|
||||
|
@ -46,7 +46,7 @@ module.exports = class SettingsView extends View
|
|||
|
||||
@chooseTab(location.hash.replace('#',''))
|
||||
WizardSettingsView = new WizardSettingsView()
|
||||
WizardSettingsView.on 'change', @save, @
|
||||
@listenTo(WizardSettingsView, 'change', @save)
|
||||
@insertSubView WizardSettingsView
|
||||
|
||||
chooseTab: (category) ->
|
||||
|
@ -81,7 +81,7 @@ module.exports = class SettingsView extends View
|
|||
$('#email-pane input[type="checkbox"]', @$el).prop('checked', not Boolean(subs.length))
|
||||
@save()
|
||||
|
||||
save: =>
|
||||
save: ->
|
||||
forms.clearFormAlerts(@$el)
|
||||
@grabData()
|
||||
res = me.validate()
|
||||
|
|
|
@ -16,7 +16,7 @@ module.exports = class CLAsView extends View
|
|||
})
|
||||
@clas = new CLACollection()
|
||||
@clas.fetch()
|
||||
@clas.on 'sync', @onCLAsLoaded, @
|
||||
@listenTo(@clas, 'sync', @onCLAsLoaded)
|
||||
|
||||
onCLAsLoaded: ->
|
||||
@startsLoading = false
|
||||
|
|
|
@ -18,7 +18,7 @@ module.exports = class LevelSessionsView extends View
|
|||
getLevelSessions: ->
|
||||
@sessions = new LevelSessionCollection
|
||||
@sessions.fetch()
|
||||
@sessions.on('all', @render)
|
||||
@listenTo(@sessions, 'all', @render)
|
||||
|
||||
getRenderData: =>
|
||||
c = super()
|
||||
|
|
|
@ -36,7 +36,7 @@ module.exports = class UsersView extends View
|
|||
})
|
||||
@users = new UserCollection()
|
||||
@users.fetch()
|
||||
@users.on('all', @render)
|
||||
@listenTo(@users, 'all', @render)
|
||||
|
||||
getRenderData: =>
|
||||
c = super()
|
||||
|
|
|
@ -20,15 +20,15 @@ module.exports = class ArticleEditView extends View
|
|||
@article = new Article(_id: @articleID)
|
||||
@article.saveBackups = true
|
||||
@article.fetch()
|
||||
@article.once('sync', @onArticleSync)
|
||||
@article.on('schema-loaded', @buildTreema)
|
||||
@listenToOnce(@article, 'sync', @onArticleSync)
|
||||
@listenTo(@article, 'schema-loaded', @buildTreema)
|
||||
@pushChangesToPreview = _.throttle(@pushChangesToPreview, 500)
|
||||
|
||||
onArticleSync: =>
|
||||
onArticleSync: ->
|
||||
@article.loaded = true
|
||||
@buildTreema()
|
||||
|
||||
buildTreema: =>
|
||||
buildTreema: ->
|
||||
return if @treema? or (not @article.loaded) or (not Article.hasSchema())
|
||||
unless @article.attributes.body
|
||||
@article.set('body', '')
|
||||
|
|
|
@ -24,7 +24,7 @@ module.exports = class ThangComponentEditView extends CocoView
|
|||
if not @componentCollection
|
||||
@componentCollection = @supermodel.getCollection new ComponentsCollection()
|
||||
unless @componentCollection.loaded
|
||||
@componentCollection.once 'sync', @onComponentsSync
|
||||
@listenToOnce(@componentCollection, 'sync', @onComponentsSync)
|
||||
@componentCollection.fetch()
|
||||
super() # do afterRender at the end
|
||||
|
||||
|
@ -35,7 +35,7 @@ module.exports = class ThangComponentEditView extends CocoView
|
|||
@buildExtantComponentTreema()
|
||||
@buildAddComponentTreema()
|
||||
|
||||
onComponentsSync: =>
|
||||
onComponentsSync: ->
|
||||
return if @destroyed
|
||||
@supermodel.addCollection @componentCollection
|
||||
@render()
|
||||
|
|
|
@ -23,10 +23,10 @@ module.exports = class AddThangsView extends View
|
|||
super options
|
||||
@world = options.world
|
||||
@thangTypes = @supermodel.getCollection new ThangTypeSearchCollection() # should load depended-on Components, too
|
||||
@thangTypes.once 'sync', @onThangTypesLoaded
|
||||
@listenToOnce(@thangTypes, 'sync', @onThangTypesLoaded)
|
||||
@thangTypes.fetch()
|
||||
|
||||
onThangTypesLoaded: =>
|
||||
onThangTypesLoaded: ->
|
||||
return if @destroyed
|
||||
@render() # do it again but without the loading screen
|
||||
|
||||
|
|
|
@ -79,7 +79,7 @@ module.exports = class LevelComponentEditView extends View
|
|||
session.setTabSize 2
|
||||
session.setNewLineMode = 'unix'
|
||||
session.setUseSoftTabs true
|
||||
@editor.on 'change', @onEditorChange
|
||||
@editor.on('change', @onEditorChange)
|
||||
|
||||
onEditorChange: =>
|
||||
@levelComponent.set 'code', @editor.getValue()
|
||||
|
|
|
@ -28,7 +28,7 @@ module.exports = class EditorLevelView extends View
|
|||
|
||||
constructor: (options, @levelID) ->
|
||||
super options
|
||||
@supermodel.once 'loaded-all', @onAllLoaded
|
||||
@listenToOnce(@supermodel, 'loaded-all', @onAllLoaded)
|
||||
|
||||
# load only the level itself and the one it points to, but no others
|
||||
# TODO: this is duplicated in views/play/level_view.coffee; need cleaner method
|
||||
|
@ -42,18 +42,18 @@ module.exports = class EditorLevelView extends View
|
|||
model.constructor.className in ['Level', 'LevelComponent', 'LevelSystem']
|
||||
|
||||
@level = new Level _id: @levelID
|
||||
@level.once 'sync', @onLevelLoaded
|
||||
@listenToOnce(@level, 'sync', @onLevelLoaded)
|
||||
@supermodel.populateModel @level
|
||||
|
||||
showLoading: ($el) ->
|
||||
$el ?= @$el.find('.tab-content')
|
||||
super($el)
|
||||
|
||||
onLevelLoaded: =>
|
||||
onLevelLoaded: ->
|
||||
@files = new DocumentFiles(@level)
|
||||
@files.fetch()
|
||||
|
||||
onAllLoaded: =>
|
||||
onAllLoaded: ->
|
||||
@level.unset('nextLevel') if _.isString(@level.get('nextLevel'))
|
||||
@initWorld()
|
||||
@startsLoading = false
|
||||
|
|
|
@ -24,7 +24,7 @@ module.exports = class LevelSystemAddView extends View
|
|||
if not @systems
|
||||
@systems = @supermodel.getCollection new LevelSystemSearchCollection()
|
||||
unless @systems.loaded
|
||||
@systems.once 'sync', @onSystemsSync
|
||||
@listenToOnce(@systems, 'sync', @onSystemsSync)
|
||||
@systems.fetch()
|
||||
super() # do afterRender at the end
|
||||
|
||||
|
@ -44,7 +44,7 @@ module.exports = class LevelSystemAddView extends View
|
|||
for system in systems
|
||||
ul.append $(availableSystemTemplate(system: system))
|
||||
|
||||
onSystemsSync: =>
|
||||
onSystemsSync: ->
|
||||
@supermodel.addCollection @systems
|
||||
@render()
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ module.exports = class LevelSystemEditView extends View
|
|||
session.setTabSize 2
|
||||
session.setNewLineMode = 'unix'
|
||||
session.setUseSoftTabs true
|
||||
@editor.on 'change', @onEditorChange
|
||||
@editor.on('change', @onEditorChange)
|
||||
|
||||
onEditorChange: =>
|
||||
@levelSystem.set 'code', @editor.getValue()
|
||||
|
|
|
@ -34,11 +34,11 @@ module.exports = class SystemsTabView extends View
|
|||
do (url) -> ls.url = -> url
|
||||
continue if @supermodel.getModelByURL ls.url
|
||||
ls.fetch()
|
||||
ls.on 'sync', @onSystemLoaded
|
||||
@listenTo(ls, 'sync', @onSystemLoaded)
|
||||
++@toLoad
|
||||
@onDefaultSystemsLoaded() unless @toLoad
|
||||
|
||||
onSystemLoaded: (ls) =>
|
||||
onSystemLoaded: (ls) ->
|
||||
@supermodel.addModel ls
|
||||
--@toLoad
|
||||
@onDefaultSystemsLoaded() unless @toLoad
|
||||
|
|
|
@ -59,15 +59,15 @@ module.exports = class ThangsTabView extends View
|
|||
super options
|
||||
@world = options.world
|
||||
@thangTypes = @supermodel.getCollection new ThangTypeSearchCollection() # should load depended-on Components, too
|
||||
@thangTypes.once 'sync', @onThangTypesLoaded
|
||||
@listenToOnce(@thangTypes, 'sync', @onThangTypesLoaded)
|
||||
@thangTypes.fetch()
|
||||
|
||||
# just loading all Components for now: https://github.com/codecombat/codecombat/issues/405
|
||||
@componentCollection = @supermodel.getCollection new ComponentsCollection()
|
||||
@componentCollection.once 'sync', @onComponentsLoaded
|
||||
@listenToOnce(@componentCollection, 'sync', @onComponentsLoaded)
|
||||
@componentCollection.fetch()
|
||||
|
||||
onThangTypesLoaded: =>
|
||||
onThangTypesLoaded: ->
|
||||
return if @destroyed
|
||||
@supermodel.addCollection @thangTypes
|
||||
@supermodel.populateModel model for model in @thangTypes.models
|
||||
|
@ -75,7 +75,7 @@ module.exports = class ThangsTabView extends View
|
|||
@render() # do it again but without the loading screen
|
||||
@onLevelLoaded level: @level if @level and not @startsLoading
|
||||
|
||||
onComponentsLoaded: =>
|
||||
onComponentsLoaded: ->
|
||||
return if @destroyed
|
||||
@supermodel.addCollection @componentCollection
|
||||
@startsLoading = not @thangTypes.loaded
|
||||
|
|
|
@ -64,7 +64,7 @@ module.exports = class ThangTypeHomeView extends View
|
|||
|
||||
@collection = new SearchCollection(@modelURL, @model, term)
|
||||
@collection.term = term # needed?
|
||||
@collection.on('sync', @onSearchChange)
|
||||
@listenTo(@collection, 'sync', @onSearchChange)
|
||||
@showLoading(@$el.find('.results'))
|
||||
|
||||
@updateHash(term)
|
||||
|
@ -79,7 +79,7 @@ module.exports = class ThangTypeHomeView extends View
|
|||
return false unless @collection
|
||||
return term is @collection.term
|
||||
|
||||
onSearchChange: =>
|
||||
onSearchChange: ->
|
||||
@hideLoading()
|
||||
documents = @collection.models
|
||||
table = $(@tableTemplate(documents:documents))
|
||||
|
|
|
@ -23,14 +23,14 @@ module.exports = class VersionsModalView extends ModalView
|
|||
super options
|
||||
@view = new model(_id: @ID)
|
||||
@view.fetch()
|
||||
@view.once('sync', @onViewSync)
|
||||
@listenToOnce(@view, 'sync', @onViewSync)
|
||||
|
||||
onViewSync: =>
|
||||
onViewSync: ->
|
||||
@collection = new VersionsViewCollection(@url, @view.attributes.original, @model)
|
||||
@collection.fetch()
|
||||
@collection.on('sync', @onVersionFetched)
|
||||
@listenTo(@collection, 'sync', @onVersionFetched)
|
||||
|
||||
onVersionFetched: =>
|
||||
onVersionFetched: ->
|
||||
@startsLoading = false
|
||||
@render()
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ module.exports = class LadderPlayModal extends View
|
|||
|
||||
loadChallengers: ->
|
||||
@challengersCollection = new ChallengersData(@level, @team, @otherTeam, @session)
|
||||
@challengersCollection.on 'sync', @loadNames, @
|
||||
@listenTo(@challengersCollection, 'sync', @loadNames)
|
||||
|
||||
# PART 2: Loading the names of the other users
|
||||
|
||||
|
@ -53,7 +53,7 @@ module.exports = class LadderPlayModal extends View
|
|||
# PART 3: Make sure wizard is loaded
|
||||
|
||||
checkWizardLoaded: ->
|
||||
if @wizardType.loaded then @finishRendering() else @wizardType.once 'sync', @finishRendering, @
|
||||
if @wizardType.loaded then @finishRendering() else @listenToOnce(@wizardType, 'sync', @finishRendering)
|
||||
|
||||
# PART 4: Render
|
||||
|
||||
|
@ -158,13 +158,13 @@ class ChallengersData
|
|||
score = @session?.get('totalScore') or 25
|
||||
@easyPlayer = new LeaderboardCollection(@level, {order:1, scoreOffset: score - 5, limit: 1, team: @otherTeam})
|
||||
@easyPlayer.fetch()
|
||||
@easyPlayer.once 'sync', @challengerLoaded, @
|
||||
@listenToOnce(@easyPlayer, 'sync', @challengerLoaded)
|
||||
@mediumPlayer = new LeaderboardCollection(@level, {order:1, scoreOffset: score, limit: 1, team: @otherTeam})
|
||||
@mediumPlayer.fetch()
|
||||
@mediumPlayer.once 'sync', @challengerLoaded, @
|
||||
@listenToOnce(@mediumPlayer, 'sync', @challengerLoaded)
|
||||
@hardPlayer = new LeaderboardCollection(@level, {order:-1, scoreOffset: score + 5, limit: 1, team: @otherTeam})
|
||||
@hardPlayer.fetch()
|
||||
@hardPlayer.once 'sync', @challengerLoaded, @
|
||||
@listenToOnce(@hardPlayer, 'sync', @challengerLoaded)
|
||||
|
||||
challengerLoaded: ->
|
||||
if @allLoaded()
|
||||
|
|
|
@ -42,7 +42,7 @@ module.exports = class LadderView extends RootView
|
|||
@sessions = new LevelSessionsCollection(levelID)
|
||||
p2 = @sessions.fetch({})
|
||||
@simulator = new Simulator()
|
||||
@simulator.on 'statusUpdate', @updateSimulationStatus, @
|
||||
@listenTo(@simulator, 'statusUpdate', @updateSimulationStatus)
|
||||
@teams = []
|
||||
$.when(p1, p2).then @onLoaded
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ module.exports = class LevelChatView extends View
|
|||
constructor: (options) ->
|
||||
@levelID = options.levelID
|
||||
@session = options.session
|
||||
@session.on 'change:multiplayer', @updateMultiplayerVisibility, @
|
||||
@listenTo(@session, 'change:multiplayer', @updateMultiplayerVisibility)
|
||||
@sessionID = options.sessionID
|
||||
@bus = LevelBus.get(@levelID, @sessionID)
|
||||
super()
|
||||
|
@ -122,7 +122,6 @@ module.exports = class LevelChatView extends View
|
|||
|
||||
destroy: ->
|
||||
key.deleteScope('level')
|
||||
@session.off 'change:multiplayer', @updateMultiplayerVisibility, @
|
||||
clearInterval @clearOldMessagesInterval if @clearOldMessagesInterval
|
||||
@clearOldMessages = null
|
||||
super()
|
||||
|
|
|
@ -15,7 +15,7 @@ module.exports = class MultiplayerModal extends View
|
|||
super(options)
|
||||
@session = options.session
|
||||
@level = options.level
|
||||
@session.on 'change:multiplayer', @updateLinkSection, @
|
||||
@listenTo(@session, 'change:multiplayer', @updateLinkSection)
|
||||
@playableTeams = options.playableTeams
|
||||
@ladderGame = options.ladderGame
|
||||
console.log 'ladder game is', @ladderGame
|
||||
|
@ -51,5 +51,4 @@ module.exports = class MultiplayerModal extends View
|
|||
@session.set('multiplayer', multiplayer)
|
||||
|
||||
destroy: ->
|
||||
@session.off 'change:multiplayer', @updateLinkSection, @
|
||||
super()
|
||||
|
|
|
@ -43,7 +43,7 @@ module.exports = class PlaybackView extends View
|
|||
|
||||
constructor: ->
|
||||
super(arguments...)
|
||||
me.on('change:music', @updateMusicButton, @)
|
||||
@listenTo(me, 'change:music', @updateMusicButton)
|
||||
|
||||
afterRender: ->
|
||||
super()
|
||||
|
@ -223,7 +223,5 @@ module.exports = class PlaybackView extends View
|
|||
$(document.activeElement).blur()
|
||||
|
||||
destroy: ->
|
||||
me.off('change:music', @updateMusicButton, @)
|
||||
$(window).off('resize', @onWindowResize)
|
||||
@onWindowResize = null
|
||||
super()
|
||||
|
|
|
@ -6,6 +6,10 @@ module.exports = class CastButtonView extends View
|
|||
id: 'cast-button-view'
|
||||
template: template
|
||||
|
||||
events:
|
||||
'click .cast-button': 'onCastButtonClick'
|
||||
'click .autocast-delays a': 'onCastOptionsClick'
|
||||
|
||||
subscriptions:
|
||||
'tome:spell-changed': "onSpellChanged"
|
||||
'tome:cast-spells': 'onCastSpells'
|
||||
|
@ -30,8 +34,6 @@ module.exports = class CastButtonView extends View
|
|||
@castButton = $('.cast-button', @$el)
|
||||
@castButtonGroup = $('.cast-button-group', @$el)
|
||||
@castOptions = $('.autocast-delays', @$el)
|
||||
@castButton.on 'click', @onCastButtonClick
|
||||
@castOptions.find('a').on 'click', @onCastOptionsClick
|
||||
delay = me.get('autocastDelay')
|
||||
delay ?= 5000
|
||||
if @levelID in ['brawlwood', 'brawlwood-tutorial', 'dungeon-arena', 'dungeon-arena-tutorial']
|
||||
|
|
|
@ -43,7 +43,7 @@ module.exports = class SpellView extends View
|
|||
constructor: (options) ->
|
||||
super options
|
||||
@session = options.session
|
||||
@session.on 'change:multiplayer', @onMultiplayerChanged, @
|
||||
@listenTo(@session, 'change:multiplayer', @onMultiplayerChanged)
|
||||
@spell = options.spell
|
||||
@problems = {}
|
||||
@writable = false unless me.team in @spell.permissions.readwrite # TODO: make this do anything
|
||||
|
@ -582,7 +582,6 @@ module.exports = class SpellView extends View
|
|||
@aceSession = null
|
||||
@debugView?.destroy()
|
||||
@spell = null
|
||||
@session.off 'change:multiplayer', @onMultiplayerChanged, @
|
||||
for fat in ['notifySpellChanged', 'notifyEditingEnded', 'notifyEditingBegan', 'onFirepadLoaded', 'onLoaded', 'toggleBackground', 'setRecompileNeeded', 'onCursorActivity', 'highlightCurrentLine', 'updateAether', 'onCodeChangeMetaHandler', 'recompileIfNeeded', 'currentAutocastHandler']
|
||||
@[fat] = null
|
||||
super()
|
||||
|
|
|
@ -83,7 +83,7 @@ module.exports = class PlayLevelView extends View
|
|||
@sessionID = @getQueryVariable 'session'
|
||||
|
||||
$(window).on('resize', @onWindowResize)
|
||||
@supermodel.once 'error', @onLevelLoadError
|
||||
@listenToOnce(@supermodel, 'error', @onLevelLoadError)
|
||||
@saveScreenshot = _.throttle @saveScreenshot, 30000
|
||||
|
||||
if @isEditorPreview
|
||||
|
@ -95,7 +95,7 @@ module.exports = class PlayLevelView extends View
|
|||
else
|
||||
@load()
|
||||
|
||||
onLevelLoadError: (e) =>
|
||||
onLevelLoadError: (e) ->
|
||||
application.router.navigate "/play?not_found=#{@levelID}", {trigger: true}
|
||||
|
||||
setLevel: (@level, @supermodel) ->
|
||||
|
@ -108,8 +108,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.on 'progress', @onLevelLoaderProgressChanged, @
|
||||
@listenToOnce(@levelLoader, 'loaded-all', @onLevelLoaderLoaded)
|
||||
@listenTo(@levelLoader, 'progress', @onLevelLoaderProgressChanged)
|
||||
@god = new God()
|
||||
|
||||
getRenderData: ->
|
||||
|
@ -168,7 +168,7 @@ module.exports = class PlayLevelView extends View
|
|||
@initScriptManager()
|
||||
@insertSubviews ladderGame: (@level.get('type') is "ladder")
|
||||
@initVolume()
|
||||
@session.on 'change:multiplayer', @onMultiplayerChanged, @
|
||||
@listenTo(@session, 'change:multiplayer', @onMultiplayerChanged)
|
||||
@originalSessionState = $.extend(true, {}, @session.get('state'))
|
||||
@register()
|
||||
@controlBar.setBus(@bus)
|
||||
|
@ -462,20 +462,16 @@ module.exports = class PlayLevelView extends View
|
|||
AudioPlayer.preloadSoundReference sound
|
||||
|
||||
destroy: ->
|
||||
@supermodel?.off 'error', @onLevelLoadError
|
||||
@levelLoader?.off 'loaded-all', @onLevelLoaderLoaded
|
||||
@levelLoader?.destroy()
|
||||
@surface?.destroy()
|
||||
@god?.destroy()
|
||||
@goalManager?.destroy()
|
||||
@scriptManager?.destroy()
|
||||
$(window).off('resize', @onWindowResize)
|
||||
delete window.world # not sure where this is set, but this is one way to clean it up
|
||||
clearInterval(@pointerInterval)
|
||||
@bus?.destroy()
|
||||
#@instance.save() unless @instance.loading
|
||||
console.profileEnd?() if PROFILE_ME
|
||||
@session?.off 'change:multiplayer', @onMultiplayerChanged, @
|
||||
@onLevelLoadError = null
|
||||
@onLevelLoaderLoaded = null
|
||||
@onSupermodelLoadedOne = null
|
||||
|
|
|
@ -68,8 +68,8 @@ module.exports = class SpectateLevelView extends View
|
|||
constructor: (options, @levelID) ->
|
||||
console.profile?() if PROFILE_ME
|
||||
super options
|
||||
$(window).on('resize', @onWindowResize)
|
||||
@supermodel.once 'error', @onLevelLoadError
|
||||
@listenTo($(window), 'resize', @onWindowResize)
|
||||
@listenToOnce(@supermodel, 'error', @onLevelLoadError)
|
||||
|
||||
@sessionOne = @getQueryVariable 'session-one'
|
||||
@sessionTwo = @getQueryVariable 'session-two'
|
||||
|
@ -105,8 +105,8 @@ module.exports = class SpectateLevelView extends View
|
|||
opponentSessionID: @sessionTwo
|
||||
spectateMode: true
|
||||
team: @getQueryVariable("team")
|
||||
@levelLoader.once 'loaded-all', @onLevelLoaderLoaded, @
|
||||
@levelLoader.on 'progress', @onLevelLoaderProgressChanged, @
|
||||
@listenToOnce(@levelLoader, 'loaded-all', @onLevelLoaderLoaded)
|
||||
@listenTo(@levelLoader, 'progress', @onLevelLoaderProgressChanged)
|
||||
@god = new God maxWorkerPoolSize: 1, maxAngels: 1
|
||||
|
||||
getRenderData: ->
|
||||
|
@ -467,18 +467,14 @@ module.exports = class SpectateLevelView extends View
|
|||
cb(null, $.parseJSON(jqxhr.responseText))
|
||||
|
||||
destroy: ()->
|
||||
@supermodel?.off 'error', @onLevelLoadError
|
||||
@levelLoader?.off 'loaded-all', @onLevelLoaderLoaded
|
||||
@levelLoader?.destroy()
|
||||
@surface?.destroy()
|
||||
@god?.destroy()
|
||||
@goalManager?.destroy()
|
||||
@scriptManager?.destroy()
|
||||
$(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
|
||||
@onLevelLoaderLoaded = null
|
||||
@onSupermodelLoadedOne = null
|
||||
|
|
Loading…
Reference in a new issue