From 54af58baeeaa3d6ef22255fe08a00d0620b46533 Mon Sep 17 00:00:00 2001 From: Scott Erickson <sderickson@gmail.com> Date: Wed, 14 May 2014 09:24:52 -0700 Subject: [PATCH] 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. --- app/lib/LevelLoader.coffee | 2 ++ app/models/SuperModel.coffee | 11 +++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/lib/LevelLoader.coffee b/app/lib/LevelLoader.coffee index 911ea698c..61e0a7918 100644 --- a/app/lib/LevelLoader.coffee +++ b/app/lib/LevelLoader.coffee @@ -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) diff --git a/app/models/SuperModel.coffee b/app/models/SuperModel.coffee index 9545d2a4e..ef68d39c9 100644 --- a/app/models/SuperModel.coffee +++ b/app/models/SuperModel.coffee @@ -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) ->