Files
ai-game-2/inventory/inventory_overlay/InventorySlot.gd
Bryce 639060fa7f sugary-panda (#1)
Reviewed-on: #1
Co-authored-by: Bryce <bryce@brycecovertoperations.com>
Co-committed-by: Bryce <bryce@brycecovertoperations.com>
2026-04-28 22:05:11 -07:00

58 lines
1.5 KiB
GDScript

extends Control
class_name InventorySlot
signal clicked(item_id: String)
signal right_clicked(item_id: String)
signal hovered(item_id: String)
signal unhovered(item_id: String)
var item_id: String = ""
var is_hovered: bool = false
@onready var item_box: ColorRect = $ItemBox
@onready var hover_highlight: ColorRect = $HoverHighlight
func _ready() -> void:
hover_highlight.visible = false
func set_item(item_def: ItemDefinition) -> void:
item_id = item_def.id
item_box.color = Color(1, 0.6, 0.2, 1)
func set_item_color(color: Color) -> void:
item_box.color = color
func set_hover(hovered: bool) -> void:
is_hovered = hovered
hover_highlight.visible = hovered
if hovered:
item_box.color = item_box.color.lightened(0.2)
else:
var def = InventoryManager.get_item_definition(item_id)
if def:
item_box.color = Color(1, 0.6, 0.2, 1)
else:
item_box.color = Color(0.8, 0.8, 0.8, 1)
func _gui_input(event: InputEvent) -> void:
print("[SLOT:%s] _gui_input: %s" % [item_id, event])
if event is InputEventMouseButton:
if event.button_index == 1 and event.pressed:
print("[SLOT:%s] emitting clicked" % item_id)
clicked.emit(item_id)
elif event.button_index == 2:
right_clicked.emit(item_id)
func _input(event: InputEvent) -> void:
if event is InputEventMouseMotion:
var rect = get_global_rect()
var mouse_pos = get_global_mouse_position()
var was_hovered = is_hovered
is_hovered = rect.has_point(mouse_pos)
if is_hovered != was_hovered:
set_hover(is_hovered)
if is_hovered:
hovered.emit(item_id)
else:
unhovered.emit(item_id)