Changed LevelLoader to always deeply load components and thang types, not just for hero levels.
This commit is contained in:
parent
e3bc9045d1
commit
154b91c753
2 changed files with 16 additions and 42 deletions
|
@ -155,21 +155,22 @@ module.exports = class LevelLoader extends CocoClass
|
||||||
@worldNecessities = @worldNecessities.concat worldNecessities
|
@worldNecessities = @worldNecessities.concat worldNecessities
|
||||||
|
|
||||||
loadItemThangsEquippedByLevelThang: (levelThang) ->
|
loadItemThangsEquippedByLevelThang: (levelThang) ->
|
||||||
return unless levelThang.components
|
@loadItemThangsFromComponentList levelThang.components
|
||||||
for component in levelThang.components
|
|
||||||
if component.original is LevelComponent.EquipsID and inventory = component.config?.inventory
|
loadItemThangsEquippedByThangType: (thangType) ->
|
||||||
for itemThangType in _.values(inventory)
|
@loadItemThangsFromComponentList thangType.get('components')
|
||||||
unless itemThangType
|
|
||||||
console.warn "Empty item in inventory for", levelThang
|
loadItemThangsFromComponentList: (components) ->
|
||||||
continue
|
equipsThangComponent = _.find components, (c) -> c.original is LevelComponent.EquipsID
|
||||||
|
inventory = equipsThangComponent?.config?.inventory
|
||||||
|
for itemThangType in _.values inventory
|
||||||
url = "/db/thang.type/#{itemThangType}/version?project=name,components,original"
|
url = "/db/thang.type/#{itemThangType}/version?project=name,components,original"
|
||||||
@worldNecessities.push @maybeLoadURL(url, ThangType, 'thang')
|
@worldNecessities.push @maybeLoadURL(url, ThangType, 'thang')
|
||||||
|
|
||||||
onThangNamesLoaded: (thangNames) ->
|
onThangNamesLoaded: (thangNames) ->
|
||||||
if @level.get('type') is 'hero'
|
|
||||||
for thangType in thangNames.models
|
for thangType in thangNames.models
|
||||||
@loadDefaultComponentsForThangType(thangType)
|
@loadDefaultComponentsForThangType(thangType)
|
||||||
@loadEquippedItemsInheritedFromThangType(thangType)
|
@loadItemThangsEquippedByThangType(thangType)
|
||||||
|
|
||||||
loadDefaultComponentsForThangType: (thangType) ->
|
loadDefaultComponentsForThangType: (thangType) ->
|
||||||
return unless components = thangType.get('components')
|
return unless components = thangType.get('components')
|
||||||
|
@ -177,23 +178,11 @@ module.exports = class LevelLoader extends CocoClass
|
||||||
url = "/db/level.component/#{component.original}/version/#{component.majorVersion}"
|
url = "/db/level.component/#{component.original}/version/#{component.majorVersion}"
|
||||||
@worldNecessities.push @maybeLoadURL(url, LevelComponent, 'component')
|
@worldNecessities.push @maybeLoadURL(url, LevelComponent, 'component')
|
||||||
|
|
||||||
loadEquippedItemsInheritedFromThangType: (thangType) ->
|
|
||||||
for levelThang in @level.get('thangs') or []
|
|
||||||
if levelThang.thangType is thangType.get('original')
|
|
||||||
levelThang = $.extend true, {}, levelThang
|
|
||||||
@level.denormalizeThang(levelThang, @supermodel)
|
|
||||||
equipsComponent = _.find levelThang.components, {original: LevelComponent.EquipsID}
|
|
||||||
inventory = equipsComponent?.config?.inventory
|
|
||||||
continue unless inventory
|
|
||||||
for itemThangType in _.values inventory
|
|
||||||
url = "/db/thang.type/#{itemThangType}/version?project=name,components,original"
|
|
||||||
@worldNecessities.push @maybeLoadURL(url, ThangType, 'thang')
|
|
||||||
|
|
||||||
onWorldNecessityLoaded: (resource) ->
|
onWorldNecessityLoaded: (resource) ->
|
||||||
index = @worldNecessities.indexOf(resource)
|
index = @worldNecessities.indexOf(resource)
|
||||||
if (@level?.loading or (@level?.get('type') is 'hero')) and resource.name is 'thang'
|
if resource.name is 'thang'
|
||||||
@loadDefaultComponentsForThangType(resource.model)
|
@loadDefaultComponentsForThangType(resource.model)
|
||||||
@loadEquippedItemsInheritedFromThangType(resource.model)
|
@loadItemThangsEquippedByThangType(resource.model)
|
||||||
|
|
||||||
return unless index >= 0
|
return unless index >= 0
|
||||||
@worldNecessities.splice(index, 1)
|
@worldNecessities.splice(index, 1)
|
||||||
|
|
|
@ -7,7 +7,6 @@ LevelLoader = require 'lib/LevelLoader'
|
||||||
# LEVELS
|
# LEVELS
|
||||||
|
|
||||||
levelWithOgreWithMace = {
|
levelWithOgreWithMace = {
|
||||||
type: 'hero'
|
|
||||||
thangs: [{
|
thangs: [{
|
||||||
thangType: 'ogre'
|
thangType: 'ogre'
|
||||||
components: [{
|
components: [{
|
||||||
|
@ -19,14 +18,12 @@ levelWithOgreWithMace = {
|
||||||
}
|
}
|
||||||
|
|
||||||
levelWithShaman = {
|
levelWithShaman = {
|
||||||
type: 'hero'
|
|
||||||
thangs: [{
|
thangs: [{
|
||||||
thangType: 'shaman'
|
thangType: 'shaman'
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
|
|
||||||
levelWithShamanWithSuperWand = {
|
levelWithShamanWithSuperWand = {
|
||||||
type: 'hero'
|
|
||||||
thangs: [{
|
thangs: [{
|
||||||
thangType: 'shaman'
|
thangType: 'shaman'
|
||||||
components: [{
|
components: [{
|
||||||
|
@ -180,15 +177,3 @@ describe 'LevelLoader', ->
|
||||||
requests = jasmine.Ajax.requests.all()
|
requests = jasmine.Ajax.requests.all()
|
||||||
urls = (r.url for r in requests)
|
urls = (r.url for r in requests)
|
||||||
expect('/db/level.component/poisons/version/0' in urls).toBeTruthy()
|
expect('/db/level.component/poisons/version/0' in urls).toBeTruthy()
|
||||||
|
|
||||||
it 'does not load item thang types from thang type equips component configs which are overriden by level thang equips component configs', ->
|
|
||||||
new LevelLoader({supermodel:new SuperModel(), sessionID: 'id', levelID: 'id'})
|
|
||||||
|
|
||||||
responses =
|
|
||||||
'/db/level/id': levelWithShamanWithSuperWand
|
|
||||||
'/db/thang.type/names': [thangTypeShamanWithWandEquipped]
|
|
||||||
|
|
||||||
jasmine.Ajax.requests.sendResponses(responses)
|
|
||||||
requests = jasmine.Ajax.requests.all()
|
|
||||||
urls = (r.url for r in requests)
|
|
||||||
expect('/db/thang.type/wand/version?project=name,components,original' in urls).toBeFalsy()
|
|
||||||
|
|
Reference in a new issue