extends Area2D

class_name Upgrade

@export var inventory : Control

@onready var sprite = $CanvasLayer/Sprite2D

var dragging = false

var last_position

var layer = 0

var cost = 100

enum UpgradeTypes{PLUS,MINUS}
var upgrade : UpgradeTypes = UpgradeTypes.PLUS

func _ready():
	
	sprite.global_position = global_position
	last_position = sprite.position

func _process(delta):
	if not dragging: return
	sprite.global_position = get_global_mouse_position()
	
	
func _input(event):
	if event is InputEventMouseButton:
		if event.button_index == MOUSE_BUTTON_LEFT and not event.pressed:
			inventory.call_deferred("update_calculations")
			dragging = false
			Globals.mouse_dragging = false
			var inventory_position = inventory.global_to_inventory_coords(sprite.global_position)
			if inventory_position != null:
				inventory.player.money -= cost
				match upgrade:
					UpgradeTypes.PLUS:
						add_value(inventory_position)
				
				inventory.update_stats()
				queue_free()
			else:
				sprite.position = last_position
			

func add_value(inventory_position : Vector2i):
	inventory.items[0][inventory_position.y][inventory_position.x].set_value(inventory.items[0][inventory_position.y][inventory_position.x]._value+1)


func _on_input_event(viewport: Node, event: InputEvent, shape_idx: int) -> void:
	if event is InputEventMouseButton:
		if event.button_index == MOUSE_BUTTON_LEFT and event.pressed and inventory.player.money >= cost:
			dragging = true
			Globals.mouse_dragging = true