From 9c12f6c957637a0ad1e8bb2a83023747c428c416 Mon Sep 17 00:00:00 2001 From: Imperadeiro98 Date: Wed, 24 Feb 2016 19:32:28 +0000 Subject: [PATCH] Revert changes to LevelLoader and SuperModel --- app/lib/LevelLoader.coffee | 28 ++++++++++++++-------------- app/models/SuperModel.coffee | 16 ++++++++++------ 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/app/lib/LevelLoader.coffee b/app/lib/LevelLoader.coffee index f7c43ad24..b5fb0ccb6 100644 --- a/app/lib/LevelLoader.coffee +++ b/app/lib/LevelLoader.coffee @@ -54,7 +54,7 @@ module.exports = class LevelLoader extends CocoClass if @level.loaded @onLevelLoaded() else - @level = @supermodel.loadModel(@level).model + @level = @supermodel.loadModel(@level, 'level').model @listenToOnce @level, 'sync', @onLevelLoaded onLevelLoaded: -> @@ -86,12 +86,12 @@ module.exports = class LevelLoader extends CocoClass session = new LevelSession().setURL url session.project = ['creator', 'team', 'heroConfig', 'codeLanguage', 'submittedCodeLanguage', 'state'] if @headless - @sessionResource = @supermodel.loadModel(session, {cache: false}) + @sessionResource = @supermodel.loadModel(session, 'level_session', {cache: false}) @session = @sessionResource.model if @opponentSessionID opponentSession = new LevelSession().setURL "/db/level.session/#{@opponentSessionID}" opponentSession.project = session.project if @headless - @opponentSessionResource = @supermodel.loadModel(opponentSession, {cache: false}) + @opponentSessionResource = @supermodel.loadModel(opponentSession, 'opponent_session', {cache: false}) @opponentSession = @opponentSessionResource.model if @session.loaded @@ -130,7 +130,7 @@ module.exports = class LevelLoader extends CocoClass heroConfig.thangType ?= '529ffbf1cf1818f2be000001' # If all else fails, assign Tharin as the hero. session.set 'heroConfig', heroConfig unless _.isEqual heroConfig, session.get('heroConfig') url = "/db/thang.type/#{heroConfig.thangType}/version" - if heroResource = @maybeLoadURL(url, ThangType) + if heroResource = @maybeLoadURL(url, ThangType, 'thang') @worldNecessities.push heroResource else heroThangType = @supermodel.getModel url @@ -139,7 +139,7 @@ module.exports = class LevelLoader extends CocoClass for itemThangType in _.values(heroConfig.inventory) url = "/db/thang.type/#{itemThangType}/version?project=name,components,original,rasterIcon,kind" - if itemResource = @maybeLoadURL(url, ThangType) + if itemResource = @maybeLoadURL(url, ThangType, 'thang') @worldNecessities.push itemResource else itemThangType = @supermodel.getModel url @@ -218,16 +218,16 @@ module.exports = class LevelLoader extends CocoClass for obj in objUniq componentVersions url = "/db/level.component/#{obj.original}/version/#{obj.majorVersion}" - worldNecessities.push @maybeLoadURL(url, LevelComponent) + worldNecessities.push @maybeLoadURL(url, LevelComponent, 'component') for obj in objUniq systemVersions url = "/db/level.system/#{obj.original}/version/#{obj.majorVersion}" - worldNecessities.push @maybeLoadURL(url, LevelSystem) + worldNecessities.push @maybeLoadURL(url, LevelSystem, 'system') for obj in objUniq articleVersions url = "/db/article/#{obj.original}/version/#{obj.majorVersion}" - @maybeLoadURL url, Article + @maybeLoadURL url, Article, 'article' if obj = @level.get 'nextLevel' # TODO: update to get next level from campaigns, not this old property url = "/db/level/#{obj.original}/version/#{obj.majorVersion}" - @maybeLoadURL url, Level + @maybeLoadURL url, Level, 'level' @worldNecessities = @worldNecessities.concat worldNecessities @@ -250,7 +250,7 @@ module.exports = class LevelLoader extends CocoClass console.error "Some Thang had a blank required ThangType in components list:", components for thangType in extantRequiredThangTypes url = "/db/thang.type/#{thangType}/version?project=name,components,original,rasterIcon,kind,prerenderedSpriteSheetData" - @worldNecessities.push @maybeLoadURL(url, ThangType) + @worldNecessities.push @maybeLoadURL(url, ThangType, 'thang') onThangNamesLoaded: (thangNames) -> for thangType in thangNames.models @@ -263,7 +263,7 @@ module.exports = class LevelLoader extends CocoClass return unless components = thangType.get('components') for component in components url = "/db/level.component/#{component.original}/version/#{component.majorVersion}" - @worldNecessities.push @maybeLoadURL(url, LevelComponent) + @worldNecessities.push @maybeLoadURL(url, LevelComponent, 'component') onWorldNecessityLoaded: (resource) -> index = @worldNecessities.indexOf(resource) @@ -297,7 +297,7 @@ module.exports = class LevelLoader extends CocoClass # thangType = nameModelMap[thangTypeName] # continue if not thangType or thangType.isFullyLoaded() # thangType.fetch() -# thangType = @supermodel.loadModel(thangType).model +# thangType = @supermodel.loadModel(thangType, 'thang').model # res = @supermodel.addSomethingResource 'sprite_sheet', 5 # res.thangType = thangType # res.markLoading() @@ -305,10 +305,10 @@ module.exports = class LevelLoader extends CocoClass @buildLoopInterval = setInterval @buildLoop, 5 if @spriteSheetsToBuild.length - maybeLoadURL: (url, Model) -> + maybeLoadURL: (url, Model, resourceName) -> return if @supermodel.getModel(url) model = new Model().setURL url - @supermodel.loadModel(model) + @supermodel.loadModel(model, resourceName) onSupermodelLoaded: -> return if @destroyed diff --git a/app/models/SuperModel.coffee b/app/models/SuperModel.coffee index ea06641ec..18ccd0ad6 100644 --- a/app/models/SuperModel.coffee +++ b/app/models/SuperModel.coffee @@ -27,7 +27,11 @@ module.exports = class SuperModel extends Backbone.Model unfinished.push resource unless resource.isLoaded unfinished - loadModel: (model, fetchOptions, value=1) -> + loadModel: (model, name, fetchOptions, value=1) -> + # Deprecating name. Handle if name is not included + value = fetchOptions if _.isNumber(fetchOptions) + fetchOptions = name if _.isObject(name) + # hero-ladder levels need remote opponent_session for latest session data (e.g. code) # Can't apply to everything since other features rely on cached models being more recent (E.g. level_session) # E.g.#2 heroConfig isn't necessarily saved to db in world map inventory modal, so we need to load the cached session on level start @@ -51,7 +55,7 @@ module.exports = class SuperModel extends Backbone.Model # Deprecating name. Handle if name is not included value = fetchOptions if _.isNumber(fetchOptions) fetchOptions = name if _.isObject(name) - + url = collection.getURL() if cachedCollection = @collections[url] console.debug 'Collection cache hit', url, 'already loaded', cachedCollection.loaded @@ -76,7 +80,7 @@ module.exports = class SuperModel extends Backbone.Model res = @addModelResource(collection, name, fetchOptions, value) res.load() if not (res.isLoading or res.isLoaded) return res - + # replace or overwrite shouldSaveBackups: (model) -> false @@ -136,13 +140,13 @@ module.exports = class SuperModel extends Backbone.Model # Tracking resources being loaded for this supermodel finished: -> - return (@progress is 1.0) or (not @denom) or @failed + return (@progress is 1.0) or (not @denom) or @failed addModelResource: (modelOrCollection, name, fetchOptions, value=1) -> # Deprecating name. Handle if name is not included value = fetchOptions if _.isNumber(fetchOptions) fetchOptions = name if _.isObject(name) - + modelOrCollection.saveBackups = modelOrCollection.saveBackups or @shouldSaveBackups(modelOrCollection) @checkName(name) res = new ModelResource(modelOrCollection, name, fetchOptions, value) @@ -156,7 +160,7 @@ module.exports = class SuperModel extends Backbone.Model # Deprecating name. Handle if name is not included value = jqxhrOptions if _.isNumber(jqxhrOptions) jqxhrOptions = name if _.isObject(name) - + @checkName(name) res = new RequestResource(name, jqxhrOptions, value) @storeResource(res, value)