91 lines
2.8 KiB
CoffeeScript
91 lines
2.8 KiB
CoffeeScript
###
|
|
Crafting Guide - full_recipe_controller.coffee
|
|
|
|
Copyright (c) 2015 by Redwood Labs
|
|
All rights reserved.
|
|
###
|
|
|
|
BaseController = require './base_controller'
|
|
CraftingGridController = require './crafting_grid_controller'
|
|
{Duration} = require '../constants'
|
|
ImageLoader = require './image_loader'
|
|
Inventory = require '../models/inventory'
|
|
InventoryTableController = require './inventory_table_controller'
|
|
|
|
########################################################################################################################
|
|
|
|
module.exports = class FullRecipeController extends BaseController
|
|
|
|
constructor: (options={})->
|
|
if not options.modPack? then throw new Error 'options.modPack is required'
|
|
options.imageLoader ?= new ImageLoader defaultUrl:'/images/unknown.png'
|
|
options.templateName = 'full_recipe'
|
|
super options
|
|
|
|
@_imageLoader = options.imageLoader
|
|
@modPack = options.modPack
|
|
|
|
# BaseController Overrides #####################################################################
|
|
|
|
onDidRender: ->
|
|
@gridController = @addChild CraftingGridController, '.view__crafting_grid',
|
|
modPack: @modPack
|
|
imageLoader: @_imageLoader
|
|
|
|
@inputController = @addChild InventoryTableController, '.input .view__inventory_table',
|
|
editable: false
|
|
model: new Inventory
|
|
modPack: @modPack
|
|
|
|
@outputController = @addChild InventoryTableController, '.output .view__inventory_table',
|
|
editable: false
|
|
model: new Inventory
|
|
modPack: @modPack
|
|
|
|
@$tool = @$('.tool p')
|
|
super
|
|
|
|
refresh: ->
|
|
@gridController.model = @model
|
|
@$tool.html @_findToolNames().join ', '
|
|
|
|
@$el.tooltip show:{delay:Duration.normal, duration:Duration.normal}
|
|
|
|
@_refreshInputs()
|
|
@_refreshOutputs()
|
|
|
|
super
|
|
|
|
# Backbone.View Methods ########################################################################
|
|
|
|
events: ->
|
|
return _.extend super,
|
|
'click a': 'routeLinkClick'
|
|
|
|
# Private Methods ##############################################################################
|
|
|
|
_findToolNames: ->
|
|
result = []
|
|
if @model?
|
|
for stack in @model.tools
|
|
name = @modPack.findName stack.slug
|
|
result.push name if name?
|
|
return result
|
|
|
|
_refreshInputs: ->
|
|
inputs = @inputController.model
|
|
inputs.clear()
|
|
|
|
if @model?
|
|
for stack in @model.input
|
|
inputs.add stack.slug, stack.quantity
|
|
|
|
|
|
_refreshOutputs: ->
|
|
outputs = @outputController.model
|
|
outputs.clear()
|
|
|
|
if @model?
|
|
for stack in @model.output
|
|
outputs.add stack.slug, stack.quantity
|