class_name ItemSystem extends Node const Inventory = preload("res://scripts/Item/Inventory.gd") static var PLAYER_INVENTORY = Inventory.new(); static var ITEM_MAP:Dictionary[Item.Type,Item] func _addItemRecursively(node:Node) -> void: if node is Item: if ITEM_MAP.has(node.type): assert(false, "Duplicate item type found: " + str(node.type)) ITEM_MAP[node.type] = node for childIndex in node.get_child_count(): _addItemRecursively(node.get_child(childIndex)) func _enter_tree() -> void: # Add all items ITEM_MAP = {} _addItemRecursively(self) # Check if we are missing any item types. for itemType in Item.Type.values(): if !ITEM_MAP.has(itemType): assert(false, "Missing item type: " + Item.Type.find_key(itemType)) static func isStackable(itemType:Item.Type) -> bool: if not ITEM_MAP.has(itemType): return false var item:Item = ITEM_MAP[itemType] return item.stackable static func getItemName(itemType:Item.Type, count:int = 1) -> String: if not ITEM_MAP.has(itemType): return "" var item:Item = ITEM_MAP[itemType] if count > 1: return str(count) + "x " + item.title else: return item.title static func getItemDescription(itemType:Item.Type) -> String: if not ITEM_MAP.has(itemType): return "" var item:Item = ITEM_MAP[itemType] return item.description_text static func getItemCategory(itemType:Item.Type) -> Item.Category: if not ITEM_MAP.has(itemType): return Item.Category.INGREDIENT var item:Item = ITEM_MAP[itemType] return item.category