Complete the Crafting Table view/controller

* Add output box to the crafting table view
* Add remaining crafting patterns to all MC 1.7.10 recipes
* Add all crafting patterns to Buildcraft 6.2.6
* Disable mods which don't have patterns yet
* Add the Url constants for computing urls from templates
* Add the `findItemDisplay` to ModPack (along with tests) and remove
  all replace all uses of `getPathSlugs` with it
This commit is contained in:
Andrew Miner
2015-01-09 10:08:02 -08:00
parent b8d60ac245
commit b8a0918541
19 changed files with 278 additions and 97 deletions
+3 -11
View File
@@ -6,7 +6,6 @@ All rights reserved.
###
BaseModel = require './base_model'
util = require 'util'
########################################################################################################################
@@ -23,19 +22,12 @@ module.exports = class CraftingGrid extends BaseModel
# Public Methods ###############################################################################
getItemDataAt: (index)->
getItemDisplayAt: (index)->
if index >= @slotCount then throw new Error "index (#{index}) must be less than #{@slotCount}"
return null unless @recipe?
logger.debug "recipe: #{@recipe}"
itemSlug = @recipe.getItemSlugAt index
return null unless itemSlug?
item = @modPack.findItem itemSlug
if item?
itemData = item.pathSlugs
itemData.name = item.name
return itemData
else
return modSlug:'minecraft', itemSlug:itemSlug, name:@modPack.findName(itemSlug)
itemDisplay = @modPack.findItemDisplay itemSlug
return itemDisplay
+15 -3
View File
@@ -26,6 +26,8 @@ module.exports = class CraftingTable extends BaseModel
hasNextStep: { get:@hasNextStep }
hasPrevStep: { get:@hasPrevStep }
hasSteps: { get:@hasSteps }
multiplier: { get:@getMultiplier }
output: { get:@getOutput }
step: { get:@getStep, set:@setStep }
toolNames: { get:@getToolNames }
}
@@ -46,6 +48,19 @@ module.exports = class CraftingTable extends BaseModel
hasPrevStep: ->
return @_step > 0
hasSteps: ->
return @_steps.length > 0
getMultiplier: ->
step = @_steps[@_step]
return unless step?
return step.multiplier
getOutput: ->
step = @_steps[@_step]
return unless step?
return step.recipe.output[0]
getStep: ->
return @_step
@@ -58,9 +73,6 @@ module.exports = class CraftingTable extends BaseModel
return this
hasSteps: ->
return @_steps.length > 0
getToolNames: ->
recipe = @_steps[@_step]?.recipe
return '' unless recipe?
-5
View File
@@ -25,8 +25,6 @@ module.exports = class Item extends BaseModel
Object.defineProperty @prototype, 'isCraftable', get:-> @recipes.length > 0
Object.defineProperty @prototype, 'pathSlugs', get:-> @getPathSlugs()
# Public Methods ###############################################################################
addRecipe: (recipe)->
@@ -40,9 +38,6 @@ module.exports = class Item extends BaseModel
return if this.name < that.name then -1 else +1
return 0
getPathSlugs: ->
return modSlug:@modVersion.slug, itemSlug:@slug
# Object Overrides #############################################################################
toString: ->
+18 -1
View File
@@ -9,7 +9,7 @@ BaseModel = require './base_model'
{Event} = require '../constants'
ModVersionParser = require './mod_version_parser'
{RequiredMods} = require '../constants'
util = require 'util'
{Url} = require '../constants'
########################################################################################################################
@@ -59,6 +59,22 @@ module.exports = class ModPack extends BaseModel
return slug
findItemDisplay: (slug)->
result = {}
item = @findItem slug, includeDisabled:true
if item?
result.modSlug = item.modVersion.slug
result.itemSlug = item.slug
result.itemName = item.name
else
result.modSlug = _.slugify RequiredMods[0]
result.itemSlug = slug
result.itemName = @findName slug, includeDisabled:true
result.iconUrl = Url.itemIcon result
result.itemUrl = Url.item result
return result
gatherRecipeNames: (options={})->
options.includeDisabled ?= false
@@ -110,6 +126,7 @@ module.exports = class ModPack extends BaseModel
onModVersionLoaded: (url, data, status, xhr)->
try
modVersion = @loadModVersionData data
modVersion.enabled = true
logger.info "loaded ModVersion from #{url}: #{modVersion}"
@trigger Event.load.succeeded, this, modVersion
@@ -10,7 +10,6 @@ Logger = require '../logger'
ModVersion = require './mod_version'
Recipe = require './recipe'
Stack = require './stack'
util = require 'util'
########################################################################################################################