Added CraftingTable* components and UI

This commit is contained in:
Andrew Miner
2014-12-23 20:26:36 -08:00
parent b05fc4c5c9
commit 95c15abe10
30 changed files with 866 additions and 252 deletions
@@ -19,6 +19,7 @@ module.exports = class BaseController extends Backbone.View
@_parent = options.parent
@_children = []
Object.defineProperty this, 'rendered', get:-> return @_rendered
@_loadTemplate options.templateName
super options
@@ -0,0 +1,76 @@
###
# Crafting Guide - crafting_table_controller.coffee
#
# Copyright (c) 2014 by Redwood Labs
# All rights reserved.
###
BaseController = require './base_controller'
InventoryParser = require '../models/inventory_parser'
########################################################################################################################
module.exports = class CraftingTableController extends BaseController
constructor: (options={})->
if not options.model? then throw new Error 'options.model is required'
options.templateName = 'crafting_table'
super options
@_parser = new InventoryParser
@_name = null
@_quantity = null
@_includingTools = null
# Event Methods ################################################################################
onHaveFieldChanged: ->
return unless @rendered
@model.have.clear()
@_parser.parse @$haveField.val(), @model.have
@_recalculate()
onIncludingToolsFieldChanged: ->
return unless @rendered
@_includingTools = @$('input[name="including_tools"]:checked').length > 0
@_recalculate()
onNameFieldChanged: ->
return unless @rendered
@_name = @$nameField.val()
@_recalculate()
onQuantityFieldChanged: ->
return unless @rendered
@_quantity = parseInt @$quantityField.find(":selected").val()
@_recalculate()
# BaseController Overrides #####################################################################
onDidRender: ->
@$haveField = @$('textarea[name="have"]')
@$includingToolsField = @$('input[name="including_tools"]')
@$nameField = @$('input[name="name"]')
@$quantityField = @$('select[name="quantity"]')
super
@onHaveFieldChanged()
@onIncludingToolsFieldChanged()
@onNameFieldChanged()
@onQuantityFieldChanged()
# Backbone.View Overrides ######################################################################
events:
'input textarea[name="have"]': 'onHaveFieldChanged'
'input input[name="name"]': 'onNameFieldChanged'
'input select[name="quantity"]': 'onQuantityFieldChanged'
'change input[name="including_tools"]': 'onIncludingToolsFieldChanged'
# Private Methods ##############################################################################
_recalculate: ->
return if not @_name? or @_name.length is 0
@model.craft @_name, @_quantity
@@ -6,6 +6,7 @@
###
BaseController = require './base_controller'
CraftingTableController = require './crafting_table_controller'
LandingPage = require '../models/landing_page'
RecipeCatalogController = require './recipe_catalog_controller'
@@ -21,5 +22,6 @@ module.exports = class LandingPageController extends BaseController
# BaseController Overrides #####################################################################
onDidRender: ->
@recipeBooksController = @addChild RecipeCatalogController, '.view__recipe_catalog', model:@model.catalog
@catalogController = @addChild RecipeCatalogController, '.view__recipe_catalog', model:@model.catalog
@tableController = @addChild CraftingTableController, '.view__crafting_table', model:@model.table
super