SuperModel no longer emits progress going backward ever, and added a way to prevent it from getting to high in the middle of a chain of loading.

This commit is contained in:
Scott Erickson 2014-05-14 09:24:52 -07:00
parent 4b404ae124
commit 54af58baee
2 changed files with 11 additions and 2 deletions

View file

@ -25,6 +25,7 @@ module.exports = class LevelLoader extends CocoClass
@t0 = new Date().getTime()
super()
@supermodel = options.supermodel
@supermodel.setMaxProgress 0.2
@levelID = options.levelID
@sessionID = options.sessionID
@opponentSessionID = options.opponentSessionID
@ -133,6 +134,7 @@ module.exports = class LevelLoader extends CocoClass
onWorldNecessitiesLoaded: =>
@initWorld()
@supermodel.clearMaxProgress()
return if @headless and not @editorMode
thangsToLoad = _.uniq( (t.spriteName for t in @world.thangs) )
nameModelTuples = ([thangType.get('name'), thangType] for thangType in @thangNames.models)

View file

@ -5,6 +5,7 @@ module.exports = class SuperModel extends Backbone.Model
@progress = 0
@resources = {}
@rid = 0
@maxProgress = 1
@models = {}
@collections = {}
@ -154,11 +155,17 @@ module.exports = class SuperModel extends Backbone.Model
# a bunch of things load all at once.
# So make sure we only emit events if @progress has changed.
newProg = if @denom then @num / @denom else 1
return if @progress is newProg
newProg = Math.min @maxProgress, newProg
return if @progress >= newProg
@progress = newProg
@trigger('update-progress', @progress)
@trigger('loaded-all') if @finished()
setMaxProgress: (@maxProgress) ->
clearMaxProgress: ->
@maxProgress = 1
_.defer @updateProgress
getProgress: -> return @progress
getResource: (rid) ->