codecombat/app/models/LevelComponent.coffee

42 lines
1.3 KiB
CoffeeScript

CocoModel = require './CocoModel'
module.exports = class LevelComponent extends CocoModel
@className: 'LevelComponent'
@schema: require 'schemas/models/level_component'
@EquipsID: '53e217d253457600003e3ebb'
@ItemID: '53e12043b82921000051cdf9'
@AttacksID: '524b7ba57fc0f6d519000016'
urlRoot: '/db/level.component'
set: (key, val, options) ->
if _.isObject key
[attrs, options] = [key, val]
else
(attrs = {})[key] = val
if 'code' of attrs and not ('js' of attrs)
attrs.js = @compile attrs.code
super attrs, options
onLoaded: ->
super()
@set 'js', @compile(@get 'code') unless @get 'js'
compile: (code) ->
if @get('codeLanguage') and @get('codeLanguage') isnt 'coffeescript'
return console.error('Can\'t compile', @get('codeLanguage'), '-- only CoffeeScript.', @)
try
js = CoffeeScript.compile(code, bare: true)
catch e
#console.log 'couldn\'t compile', code, 'for', @get('name'), 'because', e
js = @get 'js'
js
getDependencies: (allComponents) ->
results = []
for dep in @get('dependencies') or []
comp = _.find allComponents, (c) ->
c.get('original') is dep.original and c.get('version').major is dep.majorVersion
for result in comp.getDependencies(allComponents).concat [comp]
results.push result unless result in results
results