extends Node signal playerInventoryUpdated var grapeScene = preload("res://Items/Foods/Fruits/Grape.gd") var inventories = {} func _ready(): initialize_inventory() playerInventoryUpdated.emit() func clear_all_inventories(): inventories = {} initialize_inventory() playerInventoryUpdated.emit() func empty_inventory(inventoryName:String = "normal"): inventories[inventoryName] = Inventory.new() func spend_item(item:Item, quantity:int = 1, inventoryName:String = "normal"): if !check_if_in_inventory(item, quantity, inventoryName): return false else: remove_item_from_inventory(item, quantity, inventoryName) return true func check_if_in_inventory(item:Item, quantity:int = 1, inventoryName:String = "normal"): var currentInventory = inventories[inventoryName] var itemPos = currentInventory.find_item_position(item) if itemPos < 0 or currentInventory.quantities[itemPos] < quantity: return false return true func get_inventory_weight(inventoryName = "normal"): var currentInventory = inventories[inventoryName] return currentInventory.get_inventory_weight() func get_item_count(item, inventoryName = "normal", modifiers = false): var currentInventory = inventories[inventoryName] var itemPos = currentInventory.find_item_position(item) if itemPos < 0: return 0 return currentInventory.quantities[itemPos] func get_item_count_by_name(itemName, inventoryName = "normal", modifiers = false): var currentInventory = inventories[inventoryName] for i in range(currentInventory.items.size()): var currentItemName = currentInventory.items[i].get_name(modifiers) if currentItemName == itemName: return currentInventory.quantities[i] return 0 func add_item_to_inventory(item:Item, quantity:int = 1, inventoryName:String = "normal", skipEmit:bool = false): if not inventoryName in inventories.keys(): create_inventory(inventoryName) var currentInventory = inventories[inventoryName] currentInventory.add_item(item, quantity) if !skipEmit: playerInventoryUpdated.emit() func remove_item_from_inventory(item:Item, quantity:int = 1, inventoryName:String = "normal"): var currentInventory = inventories[inventoryName] currentInventory.remove_item(item, quantity) playerInventoryUpdated.emit() func soak_player_inventory(): var currentInventory = inventories["normal"] ItemSoaking.soak_inventory(currentInventory) playerInventoryUpdated.emit() func dry_player_inventory(amount:int = 1): var currentInventory = inventories["normal"] ItemDrying.dry_inventory_items(currentInventory, amount) playerInventoryUpdated.emit() func get_grape_count(): var currentInventory = inventories["normal"] var grape = grapeScene.new() for i in range(currentInventory.items.size()): if currentInventory.items[i].equals(grape): return currentInventory.quantities[i] return 0 func alter_grape_count(amount:int): var grape = grapeScene.new() if amount > 0: add_item_to_inventory(grape, amount) elif amount < 0: remove_item_from_inventory(grape, -1*amount) func get_all_inventories(): return inventories func create_inventory(inventoryName:String): if not inventoryName in inventories.keys(): inventories[inventoryName] = Inventory.new() func initialize_inventory(): inventories["normal"] = Inventory.new() inventories["keyItems"] = Inventory.new() func get_inventory(inventoryName:String = "normal"): if not inventoryName in inventories.keys(): create_inventory(inventoryName) return inventories[inventoryName]