mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-03-31 07:12:49 -04:00
Level Editor doesn't need to load your session or its hero config (or break doing so). Fixed adding unconfigured heroes to levels busting the level.
This commit is contained in:
parent
86d167394e
commit
44008be95f
3 changed files with 8 additions and 9 deletions
app
|
@ -31,6 +31,7 @@ module.exports = class LevelLoader extends CocoClass
|
|||
@opponentSessionID = options.opponentSessionID
|
||||
@team = options.team
|
||||
@headless = options.headless
|
||||
@sessionless = options.sessionless
|
||||
@spectateMode = options.spectateMode ? false
|
||||
@observing = options.observing
|
||||
|
||||
|
@ -55,7 +56,7 @@ module.exports = class LevelLoader extends CocoClass
|
|||
@listenToOnce @level, 'sync', @onLevelLoaded
|
||||
|
||||
onLevelLoaded: ->
|
||||
@loadSession()
|
||||
@loadSession() unless @sessionless
|
||||
@populateLevel()
|
||||
|
||||
# Session Loading
|
||||
|
@ -260,8 +261,8 @@ module.exports = class LevelLoader extends CocoClass
|
|||
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 @sessionDependenciesRegistered and @opponentSession and not @sessionDependenciesRegistered[@opponentSession.id]
|
||||
return false if @sessionDependenciesRegistered and not @sessionDependenciesRegistered[@session.id] and not @sessionless
|
||||
return false if @sessionDependenciesRegistered and @opponentSession and not @sessionDependenciesRegistered[@opponentSession.id] and not @sessionless
|
||||
true
|
||||
|
||||
onWorldNecessitiesLoaded: ->
|
||||
|
@ -322,7 +323,7 @@ module.exports = class LevelLoader extends CocoClass
|
|||
resource.markLoaded() if resource.spriteSheetKeys.length is 0
|
||||
|
||||
denormalizeSession: ->
|
||||
return if @headless or @sessionDenormalized or @spectateMode
|
||||
return if @headless or @sessionDenormalized or @spectateMode or @sessionless
|
||||
patch =
|
||||
'levelName': @level.get('name')
|
||||
'levelID': @level.get('slug') or @level.id
|
||||
|
|
|
@ -58,7 +58,7 @@ module.exports = class LevelEditView extends RootView
|
|||
super options
|
||||
@supermodel.shouldSaveBackups = (model) ->
|
||||
model.constructor.className in ['Level', 'LevelComponent', 'LevelSystem', 'ThangType']
|
||||
@levelLoader = new LevelLoader supermodel: @supermodel, levelID: @levelID, headless: true
|
||||
@levelLoader = new LevelLoader supermodel: @supermodel, levelID: @levelID, headless: true, sessionless: true
|
||||
@level = @levelLoader.level
|
||||
@files = new DocumentFiles(@levelLoader.level)
|
||||
@supermodel.loadCollection(@files, 'file_names')
|
||||
|
|
|
@ -58,8 +58,7 @@ module.exports = class TomeView extends CocoView
|
|||
afterRender: ->
|
||||
super()
|
||||
@worker = @createWorker()
|
||||
#programmableThangs = _.filter @options.thangs, (t) -> t.isProgrammable and t.spriteName isnt 'Hero Placeholder'
|
||||
programmableThangs = _.filter @options.thangs, 'isProgrammable'
|
||||
programmableThangs = _.filter @options.thangs, (t) -> t.isProgrammable and t.programmableMethods
|
||||
@createSpells programmableThangs, programmableThangs[0]?.world # Do before spellList, thangList, and castButton
|
||||
@spellList = @insertSubView new SpellListView spells: @spells, supermodel: @supermodel, level: @options.level
|
||||
@castButton = @insertSubView new CastButtonView spells: @spells, level: @options.level, session: @options.session
|
||||
|
@ -73,7 +72,7 @@ module.exports = class TomeView extends CocoView
|
|||
|
||||
onNewWorld: (e) ->
|
||||
thangs = _.filter e.world.thangs, 'inThangList'
|
||||
programmableThangs = _.filter thangs, 'isProgrammable'
|
||||
programmableThangs = _.filter thangs, (t) -> t.isProgrammable and t.programmableMethods
|
||||
@createSpells programmableThangs, e.world
|
||||
@spellList.adjustSpells @spells
|
||||
|
||||
|
@ -112,7 +111,6 @@ module.exports = class TomeView extends CocoView
|
|||
for thang in programmableThangs
|
||||
continue if @thangSpells[thang.id]?
|
||||
@thangSpells[thang.id] = []
|
||||
thang.programmableMethods ?= plan: {name: 'plan', source: '// Should fill in some default source.', permissions: {readwrite: ['humans']}}
|
||||
for methodName, method of thang.programmableMethods
|
||||
pathComponents = [thang.id, methodName]
|
||||
if method.cloneOf
|
||||
|
|
Loading…
Add table
Reference in a new issue