mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-27 06:23:41 -04:00
Got projection and backups set back up, partially fixed the level editor.
This commit is contained in:
parent
9a2311e792
commit
14d62915f4
4 changed files with 18 additions and 35 deletions
app
|
@ -102,6 +102,7 @@ module.exports = class LevelLoader extends CocoClass
|
|||
|
||||
for thangID in _.uniq thangIDs
|
||||
url = "/db/thang.type/#{thangID}/version"
|
||||
url += "?project=true" if @headless
|
||||
res = @maybeLoadURL url, ThangType, 'thang'
|
||||
@listenToOnce res.model, 'sync', @buildSpriteSheetsForThangType if res
|
||||
for obj in objUniq componentVersions
|
||||
|
|
|
@ -8,6 +8,9 @@ module.exports = class SuperModel extends Backbone.Model
|
|||
|
||||
@models = {}
|
||||
@collections = {}
|
||||
|
||||
# replace or overwrite
|
||||
shouldSaveBackups: (model) -> false
|
||||
|
||||
# Caching logic
|
||||
|
||||
|
@ -61,6 +64,7 @@ module.exports = class SuperModel extends Backbone.Model
|
|||
return @progress is 1.0 or Object.keys(@resources).length is 0
|
||||
|
||||
addModelResource: (modelOrCollection, name, fetchOptions, value=1) ->
|
||||
modelOrCollection.saveBackups = @shouldSaveBackups()
|
||||
@checkName(name)
|
||||
@registerModel(modelOrCollection)
|
||||
res = new ModelResource(modelOrCollection, name, fetchOptions, value)
|
||||
|
|
|
@ -4,6 +4,7 @@ Level = require 'models/Level'
|
|||
LevelSystem = require 'models/LevelSystem'
|
||||
World = require 'lib/world/world'
|
||||
DocumentFiles = require 'collections/DocumentFiles'
|
||||
LevelLoader = require 'lib/LevelLoader'
|
||||
|
||||
ThangsTabView = require './thangs_tab_view'
|
||||
SettingsTabView = require './settings_tab_view'
|
||||
|
@ -35,40 +36,15 @@ module.exports = class EditorLevelView extends View
|
|||
|
||||
constructor: (options, @levelID) ->
|
||||
super options
|
||||
@listenToOnce(@supermodel, 'loaded-all', @onAllLoaded)
|
||||
|
||||
# load only the level itself and the one it points to, but no others
|
||||
# TODO: this is duplicated in views/play/level_view.coffee; need cleaner method
|
||||
@supermodel.shouldPopulate = (model) ->
|
||||
@levelsLoaded ?= 0
|
||||
@levelsLoaded += 1 if model.constructor.className is "Level"
|
||||
return false if @levelsLoaded > 1
|
||||
return true
|
||||
|
||||
@levelLoader = new LevelLoader supermodel: @supermodel, levelID: @levelID, headless: true
|
||||
@level = @levelLoader.level
|
||||
@supermodel.shouldSaveBackups = (model) ->
|
||||
model.constructor.className in ['Level', 'LevelComponent', 'LevelSystem']
|
||||
|
||||
@worldRes = @supermodel.addSomethingResource('world')
|
||||
|
||||
@level = new Level _id: @levelID
|
||||
#@listenToOnce(@level, 'sync', @onLevelLoaded)
|
||||
@listenToOnce(@supermodel, 'error', =>
|
||||
@hideLoading()
|
||||
@insertSubView(new ErrorView())
|
||||
)
|
||||
|
||||
@levelRes = @supermodel.addModelResource(@level, 'level')
|
||||
@listenToOnce(@levelRes, 'loaded', ->
|
||||
@world = new World @level.name
|
||||
@worldRes.markLoaded()
|
||||
)
|
||||
@levelRes.load()
|
||||
|
||||
@files = new DocumentFiles(@level)
|
||||
@supermodel.addModelResource(@files, 'level_document').load()
|
||||
@files = new DocumentFiles(@levelLoader.level)
|
||||
@supermodel.addModelResource(@files, 'file_names').load()
|
||||
|
||||
showLoading: ($el) ->
|
||||
$el ?= @$el.find('.tab-content')
|
||||
$el ?= @$el.find('.outer-content')
|
||||
super($el)
|
||||
|
||||
getRenderData: (context={}) ->
|
||||
|
@ -78,15 +54,18 @@ module.exports = class EditorLevelView extends View
|
|||
context.anonymous = me.get('anonymous')
|
||||
context
|
||||
|
||||
onLoaded: -> @render()
|
||||
onLoaded: ->
|
||||
_.defer =>
|
||||
@world = @levelLoader.world
|
||||
@render()
|
||||
|
||||
afterRender: ->
|
||||
super()
|
||||
return unless @world and @level
|
||||
# console.debug 'gintau', 'edit-afterRender'
|
||||
return unless @supermodel.finished()
|
||||
@$el.find('a[data-toggle="tab"]').on 'shown.bs.tab', (e) =>
|
||||
Backbone.Mediator.publish 'level:view-switched', e
|
||||
@thangsTab = @insertSubView new ThangsTabView world: @world, supermodel: @supermodel
|
||||
@settingsTab = @insertSubView new SettingsTabView world: @world, supermodel: @supermodel
|
||||
@settingsTab = @insertSubView new SettingsTabView supermodel: @supermodel
|
||||
@scriptsTab = @insertSubView new ScriptsTabView world: @world, supermodel: @supermodel, files: @files
|
||||
@componentsTab = @insertSubView new ComponentsTabView supermodel: @supermodel
|
||||
@systemsTab = @insertSubView new SystemsTabView supermodel: @supermodel
|
||||
|
|
|
@ -20,7 +20,6 @@ module.exports = class SettingsTabView extends View
|
|||
|
||||
constructor: (options) ->
|
||||
super options
|
||||
@world = options.world
|
||||
|
||||
onLoaded: ->
|
||||
onLevelLoaded: (e) ->
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue