57 lines
1.9 KiB
CoffeeScript
57 lines
1.9 KiB
CoffeeScript
###
|
|
Crafting Guide - crafting_plan_node.coffee
|
|
|
|
Copyright (c) 2015 by Redwood Labs
|
|
All rights reserved.
|
|
###
|
|
|
|
CraftingNode = require './crafting_node'
|
|
ItemNode = require './item_node'
|
|
|
|
########################################################################################################################
|
|
|
|
module.exports = class InventoryNode extends CraftingNode
|
|
|
|
@::ENTER_METHOD = 'onEnterInventoryNode'
|
|
@::LEAVE_METHOD = 'onLeaveInventoryNode'
|
|
@::TYPE = CraftingNode::TYPES.INVENTORY
|
|
|
|
constructor: (options={})->
|
|
if not options.inventory? then throw new Error 'options.inventory is required'
|
|
super options
|
|
|
|
@inventory = options.inventory
|
|
|
|
# CraftingNode Overrides #######################################################################
|
|
|
|
_createChildren: (result=[])->
|
|
@inventory.each (stack)=>
|
|
item = @modPack.findItem stack.itemSlug
|
|
if not item? then throw new Error "Could not find an item for slug: #{stack.itemSlug}"
|
|
result.push new ItemNode modPack:@modPack, item:item
|
|
return result
|
|
|
|
_checkCompleteness: ->
|
|
for child in @children
|
|
return false unless child.isComplete
|
|
return true
|
|
|
|
_checkValidity: ->
|
|
for child in @children
|
|
return false unless child.isValid
|
|
return true
|
|
|
|
# Object Overrides #############################################################################
|
|
|
|
toString: (options={})->
|
|
options.indent ?= ''
|
|
options.recursive ?= true
|
|
|
|
completeText = if @complete then 'complete' else 'incomplete'
|
|
parts = ["#{options.indent}#{@completeText} InventoryNode for #{@inventory}"]
|
|
nextIndent = options.indent + ' '
|
|
if options.recursive
|
|
for child in @children
|
|
parts.push child.toString indent:nextIndent
|
|
return parts.join '\n'
|