Refactor ModVersion into Mod and ModVersion

* Remove V1 of the mod version parser and shift V2 up to be V1
* Add a parser for mod.cg files, and refactor the the mod-version.cg
  files to push the appropriate content up to the mod.cg
* Remove the concept of "silent" from BaseModel along with logging
  each event as they are fired (which is what really prompted the
  need for it in the first place)
* Move use of the Storage class to be completely the province of the
  controllers most closely related to models affected
* Convert the ModVersionController to the ModController and have it
  take on responsibility for choosing the mod version
* Update BaseModel to support simple accessors for the current state
* Update CraftingPlan to be able to remove uncraftable items
* Implement the Mod model
This commit is contained in:
Andrew Miner
2015-01-18 10:48:12 -08:00
parent 76dc863372
commit d1621bb9f6
39 changed files with 922 additions and 1176 deletions
@@ -5,22 +5,25 @@ Copyright (c) 2014-2015 by Redwood Labs
All rights reserved.
###
BaseController = require './base_controller'
{DefaultModVersions} = require '../constants'
{Duration} = require '../constants'
ModVersion = require '../models/mod_version'
ModVersionController = require './mod_version_controller'
BaseController = require './base_controller'
{DefaultMods} = require '../constants'
{Duration} = require '../constants'
Mod = require '../models/mod'
ModController = require './mod_controller'
########################################################################################################################
module.exports = class ModPackController extends BaseController
constructor: (options={})->
if not options.model? then throw new Error "options.model is required"
options.templateName = 'mod_pack'
if not options.model? then throw new Error 'options.model is required'
if not options.plan? then throw new Error 'options.plan is required'
options.templateName = 'mod_pack'
super options
@_controllers = []
@_plan = options.plan
@_storage = options.storage
# Event Methods ################################################################################
@@ -31,10 +34,8 @@ module.exports = class ModPackController extends BaseController
# BaseController Overrides #####################################################################
onWillRender: ->
for attributes in DefaultModVersions
modVersion = new ModVersion attributes
modVersion.fetch()
@model.addModVersion modVersion
for name in DefaultMods
@model.addMod new Mod name:name
onDidRender: ->
@$table = @$('table')
@@ -48,14 +49,14 @@ module.exports = class ModPackController extends BaseController
return
index = 0
modVersions = @model.getModVersions()
while index < Math.min @_controllers.length, modVersions.length
mods = @model.getMods()
while index < Math.min @_controllers.length, mods.length
controller = @_controllers[index]
controller.model = modVersions[index]
controller.model = mods[index]
index++
while @_controllers.length < modVersions.length
controller = new ModVersionController model:modVersions[index]
while @_controllers.length < mods.length
controller = new ModController model:mods[index], plan:@_plan, storage:@_storage
controller.render()
@_controllers.push controller
controller.$el.hide duration:0
@@ -63,7 +64,7 @@ module.exports = class ModPackController extends BaseController
controller.$el.slideDown duration:Duration.normal
index++
while @_controllers.length > modVersions.length
while @_controllers.length > mods.length
controller = @_controllers.pop()
controller.$el.slideUp duration:Duration.normal, complete:-> controller.$el.remove()