From 8f82072af34268275cac6b20d38775f37f3ddca8 Mon Sep 17 00:00:00 2001 From: Andrew Miner Date: Mon, 23 Feb 2015 19:25:35 -0800 Subject: [PATCH] Add links to tool names under crafting grids --- src/css/templates/full_recipe.scss | 14 +++++++- src/css/templates/minimal_recipe.scss | 13 +++++++- .../controllers/full_recipe_controller.coffee | 23 +++++++------ .../minimal_recipe_controller.coffee | 33 ++++++++++--------- src/templates/full_recipe.jade | 2 +- src/templates/minimal_recipe.jade | 2 +- 6 files changed, 58 insertions(+), 29 deletions(-) diff --git a/src/css/templates/full_recipe.scss b/src/css/templates/full_recipe.scss index 1a0f523f5..9e0352c67 100644 --- a/src/css/templates/full_recipe.scss +++ b/src/css/templates/full_recipe.scss @@ -36,6 +36,18 @@ All rights reserved. } } - .output { + .tool { + a { + color: $color-text; + font-family: $font-family-normal; + font-size: $font-size-normal; + font-weight: bold; + text-decoration: none; + + &:hover { + color: $color-link; + text-decoration: underline; + } + } } } diff --git a/src/css/templates/minimal_recipe.scss b/src/css/templates/minimal_recipe.scss index 7a31dac6d..a783e60c6 100644 --- a/src/css/templates/minimal_recipe.scss +++ b/src/css/templates/minimal_recipe.scss @@ -16,7 +16,18 @@ All rights reserved. position: absolute; right: 0; bottom: -2em; left: 0; height: 1.5em; text-align: center; - p { font-weight: bold; } + a { + color: $color-text; + font-family: $font-family-normal; + font-size: $font-size-normal; + font-weight: bold; + text-decoration: none; + + &:hover { + color: $color-link; + text-decoration: underline; + } + } } } diff --git a/src/scripts/controllers/full_recipe_controller.coffee b/src/scripts/controllers/full_recipe_controller.coffee index 4d387a7ff..1dae94800 100644 --- a/src/scripts/controllers/full_recipe_controller.coffee +++ b/src/scripts/controllers/full_recipe_controller.coffee @@ -11,6 +11,7 @@ CraftingGridController = require './crafting_grid_controller' ImageLoader = require './image_loader' Inventory = require '../models/inventory' InventoryTableController = require './inventory_table_controller' +StringBuilder = require '../models/string_builder' ######################################################################################################################## @@ -44,17 +45,17 @@ module.exports = class FullRecipeController extends BaseController model: new Inventory modPack: @modPack - @$tool = @$('.tool p') + @$toolContainer = @$('.tool') super refresh: -> @gridController.model = @model - @$tool.html @_findToolNames().join ', ' @$el.tooltip show:{delay:Duration.normal, duration:Duration.normal} @_refreshInputs() @_refreshOutputs() + @_refreshTools() super @@ -66,14 +67,6 @@ module.exports = class FullRecipeController extends BaseController # Private Methods ############################################################################## - _findToolNames: -> - result = [] - if @model? - for stack in @model.tools - item = @modPack.findItem stack.itemSlug - result.push item.name if item? - return result - _refreshInputs: -> inputs = @inputController.model inputs.clear() @@ -90,3 +83,13 @@ module.exports = class FullRecipeController extends BaseController if @model? for stack in @model.output outputs.add stack.itemSlug, stack.quantity + + _refreshTools: -> + @$toolContainer.empty() + return unless @model? + + builder = new StringBuilder + builder.loop @model.tools, delimiter:', ', onEach:(b, stack)=> + display = @modPack.findItemDisplay stack.itemSlug + b.push "#{display.itemName}" + @$toolContainer.html builder.toString() diff --git a/src/scripts/controllers/minimal_recipe_controller.coffee b/src/scripts/controllers/minimal_recipe_controller.coffee index 5f99e157f..6bf2d5d4e 100644 --- a/src/scripts/controllers/minimal_recipe_controller.coffee +++ b/src/scripts/controllers/minimal_recipe_controller.coffee @@ -9,6 +9,7 @@ BaseController = require './base_controller' CraftingGridController = require './crafting_grid_controller' {Duration} = require '../constants' ImageLoader = require './image_loader' +StringBuilder = require '../models/string_builder' ######################################################################################################################## @@ -20,25 +21,24 @@ module.exports = class MinimalRecipeController extends BaseController options.templateName = 'minimal_recipe' super options - @_imageLoader = options.imageLoader - @_modPack = options.modPack + @imageLoader = options.imageLoader + @modPack = options.modPack # BaseController Overrides ##################################################################### onDidRender: -> @gridController = @addChild CraftingGridController, '.view__crafting_grid', - modPack: @_modPack - imageLoader: @_imageLoader + modPack: @modPack + imageLoader: @imageLoader @$outputImg = @$('.output img') @$outputLink = @$('.output a') @$outputQuantity = @$('.quantity') - @$tool = @$('.tool p') + @$toolContainer = @$('.tool') super refresh: -> @gridController.model = @model - @$tool.html @_findToolNames().join ', ' @$outputImg.attr 'src', '/images/empty.png' @$outputImg.removeAttr 'alt' @@ -48,16 +48,17 @@ module.exports = class MinimalRecipeController extends BaseController if @model? outputStack = @model.output[0] if outputStack? - display = @_modPack.findItemDisplay outputStack.itemSlug + display = @modPack.findItemDisplay outputStack.itemSlug @$outputLink.attr 'href', display.itemUrl @$outputLink.attr 'title', display.itemName @$outputImg.attr 'alt', display.itemName @$outputQuantity.html outputStack.quantity if outputStack.quantity > 1 - @_imageLoader.load display.iconUrl, @$outputImg + @imageLoader.load display.iconUrl, @$outputImg @$el.tooltip show:{delay:Duration.snap, duration:Duration.fast} + @_refreshTools() super # Backbone.View Methods ######################################################################## @@ -68,10 +69,12 @@ module.exports = class MinimalRecipeController extends BaseController # Private Methods ############################################################################## - _findToolNames: -> - result = [] - if @model? - for stack in @model.tools - item = @_modPack.findItem stack.itemSlug - result.push item.name if item? - return result + _refreshTools: -> + @$toolContainer.empty() + return unless @model? + + builder = new StringBuilder + builder.loop @model.tools, delimiter:', ', onEach:(b, stack)=> + display = @modPack.findItemDisplay stack.itemSlug + b.push "#{display.itemName}" + @$toolContainer.html builder.toString() diff --git a/src/templates/full_recipe.jade b/src/templates/full_recipe.jade index 780c4c2fa..c55ff417e 100644 --- a/src/templates/full_recipe.jade +++ b/src/templates/full_recipe.jade @@ -13,7 +13,7 @@ .pattern table.view__crafting_grid - .tool: p + .tool: a .output h3: p Produces diff --git a/src/templates/minimal_recipe.jade b/src/templates/minimal_recipe.jade index 751191308..077a9425c 100644 --- a/src/templates/minimal_recipe.jade +++ b/src/templates/minimal_recipe.jade @@ -8,7 +8,7 @@ .view__minimal_recipe .input table.view__crafting_grid - .tool: p + .tool .output a: img p.quantity