class_name Item

func _init(iDic: Dictionary = {}):
	if iDic != {}:
		self.load(iDic)

enum ItemType {
  Restoration,
  Equippable,
  Throwable,
  Bomb,
}

# only relevant for equipment
enum EquipmentType {
	NONE,
	MAINHAND,
	OFFHAND,
	HEADGEAR,
	ARMOUR,
	BOOTS,
	ACCESSORY
}

enum WeaponType {
	NONE,
	AMMUNITION,
	BOW,
	SWORD,
	AXE,
	DAGGER,
	STAFF,
	SPEAR,
	MACE,
	SPELLBOOK,
	BOMB
}

var use_function = null

var item_name: String = "Red Apple"
var description: String = "Restores 5 HP"
var spritePath: String = "res://assets/gfx/pickups/items_n_shit.png"
var equipmentPath: String = "res://assets/gfx/Puny-Characters/Layer 2 - Clothes/Basic Body/BasicRed.png"
var colorReplacements: Array = []
var spriteFrames: Vector2i = Vector2i(20, 14)
var spriteFrame: int = 0
var modifiers: Dictionary = {"hp": + 20}
var duration: float = 0

var buy_cost: int = 10
var sell_worth: int = 3
var sellable: bool = true
var item_type: ItemType = ItemType.Restoration
var equipment_type: EquipmentType = EquipmentType.NONE
var weapon_type: WeaponType = WeaponType.NONE
var two_handed: bool = false
var quantity = 1
var can_have_multiple_of: bool = false
var weight: float = 2.0 # Item weight for encumbrance system (default 2.0 for equipment)

func save():
	var json = {
		"item_name": item_name,
		"description": description,
		"spritePath": spritePath,
		"equipmentPath": equipmentPath,
		"colorReplacements": colorReplacements,
		"spriteFrame": spriteFrame,
		"modifiers": modifiers,
		"duration": duration,
		"buy_cost": buy_cost,
		"sell_worth": sell_worth,
		"item_type": item_type,
		"equipment_type": equipment_type,
		"weapon_type": weapon_type,
		"two_handed": two_handed,
		"quantity": quantity,
		"can_have_multiple_of": can_have_multiple_of,
		"weight": weight
	}
	return json
	
func from_dict(iDic: Dictionary) -> Item:
	self.load(iDic)
	return self

func load(iDic: Dictionary):
	if iDic.has("item_name"):
		item_name = iDic.get("item_name")
	if iDic.has("description"):
		description = iDic.get("description")
	if iDic.has("spritePath"):
		spritePath = iDic.get("spritePath")
	if iDic.has("equipmentPath"):
		equipmentPath = iDic.get("equipmentPath")
		
	#if iDic.has("spriteFrames"):
		#spriteFrames = iDic.get("spriteFrames")
		
	if iDic.has("spriteFrame"):
		spriteFrame = iDic.get("spriteFrame")
	if iDic.has("modifiers"):
		modifiers = iDic.get("modifiers")
		
	if iDic.has("duration"):
		duration = iDic.get("duration")
		
	if iDic.has("buy_cost"):
		buy_cost = iDic.get("buy_cost")
	if iDic.has("sell_worth"):
		sell_worth = iDic.get("sell_worth")
	if iDic.has("item_type"):
		item_type = iDic.get("item_type")
	if iDic.has("equipment_type"):
		equipment_type = iDic.get("equipment_type")
	if iDic.has("weapon_type"):
		weapon_type = iDic.get("weapon_type")
	if iDic.has("two_handed"):
		two_handed = iDic.get("two_handed")
	if iDic.has("quantity"):
		quantity = iDic.get("quantity")
	if iDic.has("can_have_multiple_of"):
		can_have_multiple_of = iDic.get("can_have_multiple_of")
	if iDic.has("weight"):
		weight = iDic.get("weight")
	if iDic.has("colorReplacements"):
		colorReplacements = iDic.get("colorReplacements", [])
	pass
