RustHacker/inv_system/item_slot.gd

60 lines
1.1 KiB
GDScript3
Raw Normal View History

2026-01-10 18:05:09 +11:00
extends Panel
2026-01-10 23:17:55 +11:00
class_name ItemSlot
2026-01-10 18:05:09 +11:00
@export var icon : TextureRect
@export var item: ItemData
@export var label : Label
2026-01-10 18:05:09 +11:00
func _ready() -> void:
update_ui()
func update_ui():
if not item:
icon.texture = null
label.text = ""
2026-01-10 18:05:09 +11:00
return
icon.texture = item.icon
2026-01-11 16:05:12 +11:00
#tooltip_text = item.item_name
label.text = item.value
2026-01-10 18:05:09 +11:00
func _get_drag_data(at_position: Vector2) -> Variant:
if not item:
return
var preview = duplicate()
var c = Control.new()
c.add_child(preview)
preview.position -= Vector2(32,32)
preview.self_modulate = Color.TRANSPARENT
2026-01-11 16:05:12 +11:00
c.z_index = 3
c.modulate = Color(c.modulate,0.6)
2026-01-10 18:05:09 +11:00
set_drag_preview(c)
icon.hide()
return self
func _can_drop_data(at_position: Vector2, data: Variant) -> bool:
return true
func _drop_data(at_position: Vector2, data: Variant) -> void:
var temp = item
item = data.item
data.item = temp
icon.show()
data.icon.show()
update_ui()
data.update_ui()
func _on_mouse_entered() -> void:
2026-01-11 16:05:12 +11:00
#print("im real?")
if item:
Tooltip.show_tip(item.item_name)
pass # Replace with function body.
func _on_mouse_exited() -> void:
Tooltip.hide_tip()
pass # Replace with function body.