sugary-panda (#1)
Reviewed-on: #1 Co-authored-by: Bryce <bryce@brycecovertoperations.com> Co-committed-by: Bryce <bryce@brycecovertoperations.com>
This commit was merged in pull request #1.
This commit is contained in:
57
inventory/inventory_overlay/InventorySlot.gd
Normal file
57
inventory/inventory_overlay/InventorySlot.gd
Normal file
@@ -0,0 +1,57 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user