wip
This commit is contained in:
@@ -32,45 +32,39 @@ module.exports = class CraftPageController extends PageController
|
||||
@modPack = options.modPack
|
||||
@storage = options.storage
|
||||
|
||||
@model.plan.on Event.change, => @tryRefresh()
|
||||
@model.craftsman.on Event.change, => @tryRefresh()
|
||||
|
||||
# Event Methods ################################################################################
|
||||
|
||||
onCraftTool: (itemSlug)->
|
||||
# TODO: implement this
|
||||
|
||||
onHaveInventoryChanged: ->
|
||||
@storage.store 'crafting-plan:have', @model.plan.have.unparse()
|
||||
@storage.store 'crafting-plan:have', @model.craftsman.have.unparse()
|
||||
|
||||
onMoveNeedToHave: (itemSlug)->
|
||||
quantity = @model.plan.need.quantityOf itemSlug
|
||||
@model.plan.have.add itemSlug, quantity
|
||||
quantity = @model.craftsman.need.quantityOf itemSlug
|
||||
@model.craftsman.have.add itemSlug, quantity
|
||||
@onHaveInventoryChanged()
|
||||
|
||||
onRemoveFromHaveInventory: (itemSlug)->
|
||||
@model.plan.have.remove itemSlug
|
||||
@model.craftsman.have.remove itemSlug
|
||||
@onHaveInventoryChanged()
|
||||
|
||||
onRemoveFromWant: (itemSlug)->
|
||||
@model.plan.want.remove itemSlug
|
||||
@model.craftsman.want.remove itemSlug
|
||||
@onWantInventoryChange()
|
||||
|
||||
onStopUsingTool: (itemSlug)->
|
||||
# TODO: implement this
|
||||
|
||||
onStepComplete: (stepController)->
|
||||
step = stepController.model
|
||||
for stack in step.recipe.output
|
||||
@model.plan.have.add stack.itemSlug, stack.quantity * step.multiplier
|
||||
@model.craftsman.have.add stack.itemSlug, stack.quantity * step.multiplier
|
||||
@onHaveInventoryChanged()
|
||||
|
||||
onWantInventoryChange: ->
|
||||
text = @model.plan.want.unparse()
|
||||
text = @model.craftsman.want.unparse()
|
||||
url = Url.crafting inventoryText:text
|
||||
router.navigate url
|
||||
|
||||
if @model.plan.want.isEmpty
|
||||
@model.plan.have.clear()
|
||||
if @model.craftsman.want.isEmpty
|
||||
@model.craftsman.have.clear()
|
||||
@onHaveInventoryChanged()
|
||||
|
||||
# PageController Overrides #####################################################################
|
||||
@@ -89,24 +83,15 @@ module.exports = class CraftPageController extends PageController
|
||||
@wantInventoryController = @addChild InventoryController, '.want .view__inventory',
|
||||
imageLoader: @imageLoader
|
||||
isAcceptable: (item)=> item.isCraftable
|
||||
model: @model.plan.want
|
||||
model: @model.craftsman.want
|
||||
modPack: @modPack
|
||||
firstButtonType: 'remove'
|
||||
@wantInventoryController.on Event.button.first, (c, s)=> @onRemoveFromWant(s)
|
||||
@wantInventoryController.on Event.change, (c)=> @onWantInventoryChange()
|
||||
|
||||
# @toolsInUseController = @addChild InventoryController, '.tools .view__inventory',
|
||||
# imageLoader: @imageLoader
|
||||
# model: @model.plan.toolsInUse
|
||||
# modPack: @modPack
|
||||
# firstButtonType: 'down'
|
||||
# secondButtonType: 'up'
|
||||
# @toolsInUseController.on Event.button.first, (c, s)=> @onStopUsingTool(s)
|
||||
# @toolsInUseController.of Event.button.second, (c, s)=> @onCraftTool(s)
|
||||
|
||||
@haveInventoryController = @addChild InventoryController, '.have .view__inventory',
|
||||
imageLoader: @imageLoader
|
||||
model: @model.plan.have
|
||||
model: @model.craftsman.have
|
||||
modPack: @modPack
|
||||
firstButtonType: 'down'
|
||||
@haveInventoryController.on Event.button.first, (c, s)=>
|
||||
@@ -116,7 +101,7 @@ module.exports = class CraftPageController extends PageController
|
||||
@needInventoryController = @addChild InventoryController, '.need .view__inventory',
|
||||
editable: false
|
||||
imageLoader: @imageLoader
|
||||
model: @model.plan.need
|
||||
model: null
|
||||
modPack: @modPack
|
||||
firstButtonType: 'up'
|
||||
@needInventoryController.on Event.button.first, (c, s)=> @onMoveNeedToHave(s)
|
||||
@@ -131,11 +116,12 @@ module.exports = class CraftPageController extends PageController
|
||||
super
|
||||
|
||||
onWillRender: ->
|
||||
@model.plan.have.clear()
|
||||
@model.plan.have.parse @storage.load('crafting-plan:have')
|
||||
@model.craftsman.have.clear()
|
||||
@model.craftsman.have.parse @storage.load('crafting-plan:have')
|
||||
super
|
||||
|
||||
refresh: ->
|
||||
@needInventoryController.model = @model.craftsman.plan?.need
|
||||
@_refreshSectionVisibility()
|
||||
@_refreshSteps()
|
||||
@adsenseController.fillAdPositions()
|
||||
@@ -150,10 +136,10 @@ module.exports = class CraftPageController extends PageController
|
||||
# Private Methods ################################################################################
|
||||
|
||||
_isStepCompletable: (controller)->
|
||||
return not @model.plan.want.hasAtLeast controller.model.outputItemSlug
|
||||
return not @model.craftsman.want.hasAtLeast controller.model.outputItemSlug
|
||||
|
||||
_refreshSectionVisibility: ->
|
||||
if @model.plan.want.isEmpty
|
||||
if @model.craftsman.want.isEmpty
|
||||
for $el in [@$toolsSection, @$ingredientsSection, @$stepsSection]
|
||||
@hide $el
|
||||
@show @$instructionsSection
|
||||
@@ -163,10 +149,11 @@ module.exports = class CraftPageController extends PageController
|
||||
@hide @$instructionsSection
|
||||
|
||||
_refreshSteps: ->
|
||||
steps = @model.craftsman.plan?.steps or []
|
||||
@_stepControllers ?= []
|
||||
index = 0
|
||||
|
||||
for step in @model.plan.steps
|
||||
for step in steps
|
||||
controller = @_stepControllers[index]
|
||||
if not controller?
|
||||
controller = new StepController
|
||||
|
||||
@@ -1,95 +0,0 @@
|
||||
###
|
||||
Crafting Guide - crafting_table_controller.coffee
|
||||
|
||||
Copyright (c) 2014-2015 by Redwood Labs
|
||||
All rights reserved.
|
||||
###
|
||||
|
||||
BaseController = require './base_controller'
|
||||
ImageLoader = require './image_loader'
|
||||
MinimalRecipeController = require './minimal_recipe_controller'
|
||||
_ = require 'underscore'
|
||||
{Duration} = require '../constants'
|
||||
{Event} = require '../constants'
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
module.exports = class CraftingTableController extends BaseController
|
||||
|
||||
constructor: (options={})->
|
||||
if not options.imageLoader? then throw new Error 'options.imageLoader is required'
|
||||
if not options.model? then throw new Error 'options.model is required'
|
||||
if not options.modPack? then throw new Error 'options.modPack is required'
|
||||
options.templateName = 'crafting_table'
|
||||
super options
|
||||
|
||||
@imageLoader = options.imageLoader
|
||||
@modPack = options.modPack
|
||||
|
||||
# Event Methods ################################################################################
|
||||
|
||||
onNextClicked: ->
|
||||
@model.stepIndex += 1
|
||||
|
||||
onPrevClicked: ->
|
||||
@model.stepIndex -= 1
|
||||
|
||||
onReportProblem: ->
|
||||
itemList = @model.plan.want.unparse()
|
||||
toolsMessage = if @model.plan.includingTools then '(including tools)' else ''
|
||||
message = "When I was on step #{@model.stepIndex + 1} of making:
|
||||
\n\n#{itemList}#{toolsMessage}\n\nI noticed that...\n"
|
||||
global.feedbackController.enterFeedback message
|
||||
|
||||
# BaseController Overrides #####################################################################
|
||||
|
||||
onDidRender: ->
|
||||
@recipeController = @addChild MinimalRecipeController, '.view__minimal_recipe',
|
||||
imageLoader: @imageLoader
|
||||
modPack: @modPack
|
||||
|
||||
@$next = @$('.next')
|
||||
@$prev = @$('.prev')
|
||||
@$problemControl = @$('.problem')
|
||||
@$title = @$('h2 p')
|
||||
@$tool = @$('.tool p')
|
||||
|
||||
@$multiplier = $('<p class="multiplier"></p>')
|
||||
@$('.output').append @$multiplier
|
||||
|
||||
@defaultTitle = @$title.html()
|
||||
super
|
||||
|
||||
refresh: ->
|
||||
@$prev.removeClass 'enabled'
|
||||
@$next.removeClass 'enabled'
|
||||
|
||||
if @model.hasSteps
|
||||
if @model.hasPrevStep then @$prev.addClass 'enabled'
|
||||
if @model.hasNextStep then @$next.addClass 'enabled'
|
||||
@$title.html "Step #{@model.stepIndex + 1} of #{@model.stepCount}"
|
||||
else
|
||||
@$title.html @defaultTitle
|
||||
|
||||
currentStep = @model.currentStep
|
||||
@recipeController.model = currentStep?.recipe
|
||||
|
||||
if currentStep?.multiplier > 1
|
||||
@$multiplier.html "×#{currentStep.multiplier}"
|
||||
else
|
||||
@$multiplier.html ''
|
||||
|
||||
if not (@model.hasSteps and global.feedbackController?)
|
||||
@$problemControl.addClass 'hidden'
|
||||
else
|
||||
@$problemControl.removeClass 'hidden'
|
||||
|
||||
super
|
||||
|
||||
# Backbone.View Overrides ######################################################################
|
||||
|
||||
events: ->
|
||||
return _.extend super,
|
||||
'click .next': 'onNextClicked'
|
||||
'click .prev': 'onPrevClicked'
|
||||
'click .problem a': 'onReportProblem'
|
||||
@@ -33,7 +33,6 @@ module.exports = class InventoryController extends BaseController
|
||||
|
||||
constructor: (options={})->
|
||||
if not options.imageLoader? then throw new Error 'options.imageLoader is required'
|
||||
if not options.model? then throw new Error 'options.model is required'
|
||||
if not options.modPack? then throw new Error 'options.modPack is required'
|
||||
|
||||
@imageLoader = options.imageLoader
|
||||
@@ -57,6 +56,8 @@ module.exports = class InventoryController extends BaseController
|
||||
# Event Methods ################################################################################
|
||||
|
||||
onClearButtonClicked: ->
|
||||
return unless @model?
|
||||
|
||||
@model.clear()
|
||||
@trigger Event.clear, this
|
||||
@trigger Event.change, this
|
||||
@@ -65,6 +66,8 @@ module.exports = class InventoryController extends BaseController
|
||||
@trigger Event.button.first, this, stackController?.model?.itemSlug
|
||||
|
||||
onItemChosen: (itemSlug)->
|
||||
return unless @model?
|
||||
|
||||
@model.add itemSlug, 1
|
||||
@trigger Event.add, this, itemSlug
|
||||
@trigger Event.change, this
|
||||
@@ -95,11 +98,12 @@ module.exports = class InventoryController extends BaseController
|
||||
|
||||
@$icon.attr 'src', @icon
|
||||
@$title.html @title
|
||||
@$clearButton.disabled = @model.isEmpty
|
||||
|
||||
@_refreshStacks()
|
||||
|
||||
if @model.isEmpty
|
||||
@$clearButton.disabled = @model?.isEmpty
|
||||
|
||||
if not @model or @model.isEmpty
|
||||
@show @$emptyPlaceholder
|
||||
else
|
||||
@hide @$emptyPlaceholder
|
||||
@@ -120,27 +124,28 @@ module.exports = class InventoryController extends BaseController
|
||||
@_stackControllers ?= []
|
||||
index = 0
|
||||
|
||||
@model.each (stack)=>
|
||||
controller = @_stackControllers[index]
|
||||
if not controller?
|
||||
controller = new StackController
|
||||
editable: @editable
|
||||
firstButtonType: @firstButtonType
|
||||
imageLoader: @imageLoader
|
||||
model: stack
|
||||
modPack: @modPack
|
||||
secondButtonType: @secondButtonType
|
||||
shouldEnableButton: @shouldEnableButton
|
||||
controller.on Event.change, => @trigger Event.change, this
|
||||
controller.on Event.button.first, (c)=> @onFirstButtonClicked(c)
|
||||
controller.on Event.button.second, (c)=> @onSecondButtonClicked(c)
|
||||
controller.render()
|
||||
if @model?
|
||||
@model.each (stack)=>
|
||||
controller = @_stackControllers[index]
|
||||
if not controller?
|
||||
controller = new StackController
|
||||
editable: @editable
|
||||
firstButtonType: @firstButtonType
|
||||
imageLoader: @imageLoader
|
||||
model: stack
|
||||
modPack: @modPack
|
||||
secondButtonType: @secondButtonType
|
||||
shouldEnableButton: @shouldEnableButton
|
||||
controller.on Event.change, => @trigger Event.change, this
|
||||
controller.on Event.button.first, (c)=> @onFirstButtonClicked(c)
|
||||
controller.on Event.button.second, (c)=> @onSecondButtonClicked(c)
|
||||
controller.render()
|
||||
|
||||
@_stackControllers.push controller
|
||||
@$itemContainer.append controller.$el
|
||||
else
|
||||
controller.model = stack
|
||||
index += 1
|
||||
@_stackControllers.push controller
|
||||
@$itemContainer.append controller.$el
|
||||
else
|
||||
controller.model = stack
|
||||
index += 1
|
||||
|
||||
while @_stackControllers.length > index
|
||||
@_stackControllers.pop().remove()
|
||||
|
||||
@@ -5,11 +5,11 @@ Copyright (c) 2015 by Redwood Labs
|
||||
All rights reserved.
|
||||
###
|
||||
|
||||
_ = require 'underscore'
|
||||
BaseController = require './base_controller'
|
||||
{Event} = require '../constants'
|
||||
InventoryController = require './inventory_controller'
|
||||
MinimalRecipeController = require './minimal_recipe_controller'
|
||||
_ = require 'underscore'
|
||||
{Event} = require '../constants'
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
@@ -56,7 +56,7 @@ module.exports = class StepController extends BaseController
|
||||
return super
|
||||
|
||||
refresh: ->
|
||||
itemDisplay = @modPack.findItemDisplay @model.outputItemSlug
|
||||
itemDisplay = @modPack.findItemDisplay @model.recipe.output[0].itemSlug
|
||||
@$header.html "#{@model.number}. #{itemDisplay.itemName}"
|
||||
|
||||
@inventoryController.model = @model.inventory
|
||||
|
||||
Reference in New Issue
Block a user