58 lines
1.5 KiB
GDScript
58 lines
1.5 KiB
GDScript
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
|