39 lines
947 B
GDScript
39 lines
947 B
GDScript
class_name Recipe extends Node
|
|
|
|
enum Type {
|
|
BAKED_SWEET_POTATO,
|
|
}
|
|
|
|
@export_multiline var title:String = ""
|
|
@export var type:Type = Type.BAKED_SWEET_POTATO
|
|
@export var ingredients:Array[ItemResource] = []
|
|
@export var outputs:Array[ItemResource] = []
|
|
|
|
var learned:bool = false
|
|
var timesMade:int = 0
|
|
|
|
func hasIngredients(inventory:Inventory = null) -> bool:
|
|
if inventory == null:
|
|
inventory = ITEM.PLAYER_INVENTORY
|
|
|
|
for ingredient in ingredients:
|
|
if !inventory.hasItem(ingredient.type, ingredient.quantity):
|
|
return false
|
|
return true
|
|
|
|
func make(inventory:Inventory = null) -> void:
|
|
if inventory == null:
|
|
inventory = ITEM.PLAYER_INVENTORY
|
|
|
|
for ingredient in ingredients:
|
|
inventory.removeItem(ingredient.type, ingredient.quantity)
|
|
|
|
for output in outputs:
|
|
inventory.addItem(output.type, output.quantity)
|
|
|
|
timesMade += 1
|
|
|
|
func getTransContext() -> TransContext:
|
|
var ctx = TransContext.new()
|
|
ctx.addTrans("title", title)
|
|
return ctx |