More memory fixes.
This commit is contained in:
parent
2a19da5ba2
commit
ac49e5eec1
8 changed files with 31 additions and 10 deletions
app
lib
views
|
@ -32,7 +32,7 @@ module.exports = class LevelBus extends Bus
|
|||
@fireScriptsRef = @fireRef?.child('scripts')
|
||||
|
||||
setSession: (@session) ->
|
||||
@session.on('change:multiplayer', @onMultiplayerChanged)
|
||||
@session.on 'change:multiplayer', @onMultiplayerChanged, @
|
||||
|
||||
onPoint: ->
|
||||
return true unless @session?.get('multiplayer')
|
||||
|
@ -198,7 +198,7 @@ module.exports = class LevelBus extends Bus
|
|||
@changedSessionProperties.chat = true
|
||||
@saveSession()
|
||||
|
||||
onMultiplayerChanged: =>
|
||||
onMultiplayerChanged: ->
|
||||
@changedSessionProperties.multiplayer = true
|
||||
@session.updatePermissions()
|
||||
@changedSessionProperties.permissions = true
|
||||
|
@ -217,3 +217,7 @@ module.exports = class LevelBus extends Bus
|
|||
# don't let what the server returns overwrite changes since the save began
|
||||
tempSession = new LevelSession _id:@session.id
|
||||
tempSession.save(patch, {patch: true})
|
||||
|
||||
destroy: ->
|
||||
super()
|
||||
@session.off 'change:multiplayer', @onMultiplayerChanged, @
|
|
@ -55,12 +55,13 @@ module.exports = class LevelLoader extends CocoClass
|
|||
@supermodel.on 'loaded-one', @onSupermodelLoadedOne
|
||||
@supermodel.once 'error', @onSupermodelError
|
||||
@level = @supermodel.getModel(Level, @levelID) or new Level _id: @levelID
|
||||
levelID = @levelID
|
||||
|
||||
@supermodel.shouldPopulate = (model) =>
|
||||
@supermodel.shouldPopulate = (model) ->
|
||||
# if left unchecked, the supermodel would load this level
|
||||
# and every level next on the chain. This limits the population
|
||||
handles = [model.id, model.get 'slug']
|
||||
return model.constructor.className isnt "Level" or @levelID in handles
|
||||
return model.constructor.className isnt "Level" or levelID in handles
|
||||
|
||||
@supermodel.populateModel @level
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@ module.exports = class Mark extends CocoClass
|
|||
destroy: ->
|
||||
@mark?.parent?.removeChild @mark
|
||||
super()
|
||||
@markSprite?.destroy()
|
||||
@sprite = null
|
||||
|
||||
toString: -> "<Mark #{@name}: Sprite #{@sprite?.thang?.id ? 'None'}>"
|
||||
|
||||
|
@ -119,6 +121,7 @@ module.exports = class Mark extends CocoClass
|
|||
markSprite = new CocoSprite @thangType, @thangType.spriteOptions
|
||||
markSprite.queueAction 'idle'
|
||||
@mark = markSprite.displayObject
|
||||
@markSprite = markSprite
|
||||
|
||||
update: (pos=null) ->
|
||||
return false unless @on
|
||||
|
|
|
@ -94,3 +94,7 @@ module.exports = class HomeView extends View
|
|||
didReappear: ->
|
||||
super()
|
||||
@turnOnStageUpdates()
|
||||
|
||||
destroy: ->
|
||||
super()
|
||||
@wizardSprite?.destroy()
|
|
@ -13,7 +13,7 @@ module.exports = class MultiplayerModal extends View
|
|||
constructor: (options) ->
|
||||
super(options)
|
||||
@session = options.session
|
||||
@session.on 'change:multiplayer', @updateLinkSection
|
||||
@session.on 'change:multiplayer', @updateLinkSection, @
|
||||
@playableTeams = options.playableTeams
|
||||
|
||||
getRenderData: ->
|
||||
|
@ -32,7 +32,7 @@ module.exports = class MultiplayerModal extends View
|
|||
onClickLink: (e) ->
|
||||
e.target.select()
|
||||
|
||||
updateLinkSection: =>
|
||||
updateLinkSection: ->
|
||||
multiplayer = @$el.find('#multiplayer').prop('checked')
|
||||
la = @$el.find('#link-area')
|
||||
if multiplayer then la.show() else la.hide()
|
||||
|
@ -41,3 +41,7 @@ module.exports = class MultiplayerModal extends View
|
|||
onHidden: ->
|
||||
multiplayer = Boolean(@$el.find('#multiplayer').prop('checked'))
|
||||
@session.set('multiplayer', multiplayer)
|
||||
|
||||
destroy: ->
|
||||
super()
|
||||
@session.off 'change:multiplayer', @updateLinkSection, @
|
|
@ -30,6 +30,7 @@ module.exports = class Spell
|
|||
destroy: ->
|
||||
@view.destroy()
|
||||
@tabView.destroy()
|
||||
@thangs = null
|
||||
|
||||
addThang: (thang) ->
|
||||
if @thangs[thang.id]
|
||||
|
|
|
@ -35,7 +35,7 @@ module.exports = class SpellView extends View
|
|||
constructor: (options) ->
|
||||
super options
|
||||
@session = options.session
|
||||
@session.on 'change:multiplayer', @onMultiplayerChanged
|
||||
@session.on 'change:multiplayer', @onMultiplayerChanged, @
|
||||
@spell = options.spell
|
||||
@problems = {}
|
||||
@writable = false unless me.team in @spell.permissions.readwrite # TODO: make this do anything
|
||||
|
@ -123,7 +123,7 @@ module.exports = class SpellView extends View
|
|||
@ace.setValue @spell.source
|
||||
@ace.clearSelection()
|
||||
|
||||
onMultiplayerChanged: =>
|
||||
onMultiplayerChanged: ->
|
||||
if @session.get 'multiplayer'
|
||||
@createFirepad()
|
||||
else
|
||||
|
@ -502,4 +502,7 @@ module.exports = class SpellView extends View
|
|||
super()
|
||||
@firepad?.dispose()
|
||||
@ace.destroy()
|
||||
@ace = null
|
||||
@debugView?.destroy()
|
||||
@spell = null
|
||||
@session.off 'change:multiplayer', @onMultiplayerChanged, @
|
||||
|
|
|
@ -134,7 +134,7 @@ module.exports = class PlayLevelView extends View
|
|||
@initScriptManager()
|
||||
@insertSubviews()
|
||||
@initVolume()
|
||||
@session.on 'change:multiplayer', @onMultiplayerChanged
|
||||
@session.on 'change:multiplayer', @onMultiplayerChanged, @
|
||||
@originalSessionState = _.cloneDeep(@session.get('state'))
|
||||
@register()
|
||||
@controlBar.setBus(@bus)
|
||||
|
@ -302,7 +302,7 @@ module.exports = class PlayLevelView extends View
|
|||
$('#pointer').css('opacity', 0.0)
|
||||
clearInterval(@pointerInterval)
|
||||
|
||||
onMultiplayerChanged: (e) =>
|
||||
onMultiplayerChanged: (e) ->
|
||||
if @session.get('multiplayer')
|
||||
@bus.connect()
|
||||
else
|
||||
|
@ -391,3 +391,4 @@ module.exports = class PlayLevelView extends View
|
|||
@bus?.destroy()
|
||||
#@instance.save() unless @instance.loading
|
||||
console.profileEnd?() if PROFILE_ME
|
||||
@session.off 'change:multiplayer', @onMultiplayerChanged, @
|
Reference in a new issue