Add the findRecipes method to Mod/Pack/Version

This commit is contained in:
Andrew Miner
2015-01-28 10:26:19 -08:00
parent 7ee0b55411
commit ae66f52678
6 changed files with 55 additions and 11 deletions
+4
View File
@@ -74,6 +74,10 @@ module.exports = class Mod extends BaseModel
return unless @_activeModVersion? return unless @_activeModVersion?
@_activeModVersion.findName slug @_activeModVersion.findName slug
findRecipes: (slug, result=[])->
return result unless @_activeModVersion?
@_activeModVersion.findRecipes slug, result
# Property Methods ############################################################################# # Property Methods #############################################################################
addModVersion: (modVersion)-> addModVersion: (modVersion)->
+21 -8
View File
@@ -40,14 +40,6 @@ module.exports = class ModPack extends BaseModel
return null return null
findName: (slug)->
for mod in @_mods
continue unless mod.enabled
name = mod.findName slug
return name if name
return null
findItemDisplay: (slug)-> findItemDisplay: (slug)->
result = {} result = {}
item = @findItem slug item = @findItem slug
@@ -66,6 +58,27 @@ module.exports = class ModPack extends BaseModel
result.itemUrl = Url.item result result.itemUrl = Url.item result
return result return result
findName: (slug)->
for mod in @_mods
continue unless mod.enabled
name = mod.findName slug
return name if name
return null
findRecipes: (slug, result=[])->
for mod in @_mods
continue unless mod.enabled
mod.findRecipes slug, result
return result
isGatherable: (slug)->
item = @findItem slug
return true if not item?
return true if item.isGatherable
return false if item.isCraftable
return true
isValidName: (name)-> isValidName: (name)->
slug = _.slugify name slug = _.slugify name
for mod in @_mods for mod in @_mods
+9
View File
@@ -65,6 +65,15 @@ module.exports = class ModVersion extends BaseModel
findName: (slug)-> findName: (slug)->
return @_names[slug] return @_names[slug]
findRecipes: (itemSlug, result=[])->
for slug in @_slugs
item = @_items[slug]
continue unless item?
item.eachRecipe (recipe)->
result.push recipe if recipe.doesProduce itemSlug
return result
registerSlug: (slug, name)-> registerSlug: (slug, name)->
hasSlug = @_names[slug]? hasSlug = @_names[slug]?
@_names[slug] = name @_names[slug] = name
+1 -1
View File
@@ -13,7 +13,7 @@ mod = null
######################################################################################################################## ########################################################################################################################
describe 'Mod', -> describe 'mod.coffee', ->
beforeEach -> mod = new Mod name:'Test', slug:'test' beforeEach -> mod = new Mod name:'Test', slug:'test'
+1 -1
View File
@@ -16,7 +16,7 @@ buildcraft = industrialCraft = minecraft = modPack = null
######################################################################################################################## ########################################################################################################################
describe 'ModPack', -> describe 'mod_pack.coffee', ->
beforeEach -> beforeEach ->
minecraft = new Mod slug:'minecraft' minecraft = new Mod slug:'minecraft'
+19 -1
View File
@@ -14,7 +14,7 @@ modVersion = null
######################################################################################################################## ########################################################################################################################
describe 'ModVersion', -> describe 'mod_version.coffee', ->
beforeEach -> modVersion = new ModVersion modSlug:'test', version:'0.0' beforeEach -> modVersion = new ModVersion modSlug:'test', version:'0.0'
@@ -45,3 +45,21 @@ describe 'ModVersion', ->
it 'locates items by slugified name', -> it 'locates items by slugified name', ->
modVersion.addItem new Item name:'Crafting Table' modVersion.addItem new Item name:'Crafting Table'
modVersion.findItemByName('Crafting Table').slug.should.equal 'crafting_table' modVersion.findItemByName('Crafting Table').slug.should.equal 'crafting_table'
describe 'findRecipes', ->
beforeEach ->
modVersion = new ModVersion modSlug:'test', version:'1.0'
modVersion.parse """
schema:1
item: Cake
recipe:; input: Milk, Sugar, Egg, Wheat; pattern: 000 121 333; extras: 3 Bucket
recipe:; input: Milk, Cocoa Beans, Egg, Wheat; pattern: 000 121 333; extras: 3 Bucket
item: Bucket
recipe:; input: Iron Ingot; pattern: ... 0.0 .0.
"""
it 'finds all recipes which list item as output', ->
recipes = modVersion.findRecipes 'bucket'
(r.output[0].slug for r in recipes).sort().should.eql ['bucket', 'cake', 'cake']