Fixed with a brilliant LevelLoader refactoring.

This commit is contained in:
Nick Winter 2014-11-10 14:48:39 -08:00
parent b33fee406b
commit 3d8f16cd7f

View file

@ -117,7 +117,7 @@ module.exports = class LevelLoader extends CocoClass
@loadDefaultComponentsForThangType itemThangType @loadDefaultComponentsForThangType itemThangType
@loadThangsRequiredByThangType itemThangType @loadThangsRequiredByThangType itemThangType
@sessionDependenciesRegistered[session.id] = true @sessionDependenciesRegistered[session.id] = true
if _.size(@sessionDependenciesRegistered) is 2 and not (r for r in @worldNecessities when r?).length if _.size(@sessionDependenciesRegistered) is 2 and @checkAllWorldNecessitiesRegisteredAndLoaded()
@onWorldNecessitiesLoaded() @onWorldNecessitiesLoaded()
consolidateFlagHistory: -> consolidateFlagHistory: ->
@ -204,6 +204,8 @@ module.exports = class LevelLoader extends CocoClass
for thangType in thangNames.models for thangType in thangNames.models
@loadDefaultComponentsForThangType(thangType) @loadDefaultComponentsForThangType(thangType)
@loadThangsRequiredByThangType(thangType) @loadThangsRequiredByThangType(thangType)
@thangNamesLoaded = true
@onWorldNecessitiesLoaded() if @checkAllWorldNecessitiesRegisteredAndLoaded()
loadDefaultComponentsForThangType: (thangType) -> loadDefaultComponentsForThangType: (thangType) ->
return unless components = thangType.get('components') return unless components = thangType.get('components')
@ -220,8 +222,14 @@ module.exports = class LevelLoader extends CocoClass
return unless index >= 0 return unless index >= 0
@worldNecessities.splice(index, 1) @worldNecessities.splice(index, 1)
@worldNecessities = (r for r in @worldNecessities when r?) @worldNecessities = (r for r in @worldNecessities when r?)
if @worldNecessities.length is 0 and (not @sessionDependenciesRegistered or @sessionDependenciesRegistered[@session.id] and (not @opponentSession or @sessionDependenciesRegistered[@opponentSession.id])) @onWorldNecessitiesLoaded() if @checkAllWorldNecessitiesRegisteredAndLoaded()
@onWorldNecessitiesLoaded()
checkAllWorldNecessitiesRegisteredAndLoaded: ->
return false unless _.filter(@worldNecessities).length is 0
return false unless @thangNamesLoaded
return false if @sessionDependenciesRegistered and not @sessionDependenciesRegistered[@session.id]
return false if @opponentSession and not @sessionDependenciesRegistered[@opponentSession.id]
true
onWorldNecessitiesLoaded: -> onWorldNecessitiesLoaded: ->
@initWorld() @initWorld()