|
|
@ -2,15 +2,26 @@ class_name QuickSlots |
|
|
|
extends Node |
|
|
|
|
|
|
|
|
|
|
|
var _items: Array[String] = ["001", "005", "002", "003", "004"] |
|
|
|
var _selected_item: int = 0 |
|
|
|
@export var highlight_theme: Resource |
|
|
|
|
|
|
|
@onready var slots_container: GridContainer = $GridContainer |
|
|
|
|
|
|
|
var _items: Array[String] = ["001", "005", "002", "003", "004"] |
|
|
|
var _previous_selected_item: int = 0 |
|
|
|
var _selected_item: int = 0 : |
|
|
|
set(new_item_index): |
|
|
|
_previous_selected_item = _selected_item |
|
|
|
_selected_item = new_item_index |
|
|
|
|
|
|
|
func _init() -> void: |
|
|
|
InventoryManager.next_quick_slot.connect(select_next_item.bind()) |
|
|
|
InventoryManager.previous_quick_slot.connect(select_previous_item.bind()) |
|
|
|
InventoryManager.select_quick_slot.connect(select_item_index.bind()) |
|
|
|
|
|
|
|
func _ready() -> void: |
|
|
|
var current_slot: Panel = slots_container.get_child(_selected_item) |
|
|
|
current_slot.set("theme_override_styles/panel", highlight_theme) |
|
|
|
|
|
|
|
func _unhandled_input(event: InputEvent) -> void: |
|
|
|
if event.is_action_pressed("quickslot0"): |
|
|
|
_selected_item = 0 |
|
|
@ -34,12 +45,22 @@ func get_selected_item() -> String: |
|
|
|
|
|
|
|
func select_item_index(slot_index: int) -> void: |
|
|
|
_selected_item = slot_index |
|
|
|
update_highlighted_slot() |
|
|
|
InventoryManager.quick_slot_item_changed.emit(get_selected_item()) |
|
|
|
|
|
|
|
func select_previous_item() -> void: |
|
|
|
_selected_item = clampi(_selected_item - 1, 0, _items.size() - 1) |
|
|
|
update_highlighted_slot() |
|
|
|
InventoryManager.quick_slot_item_changed.emit(get_selected_item()) |
|
|
|
|
|
|
|
func select_next_item() -> void: |
|
|
|
_selected_item = clampi(_selected_item + 1, 0, _items.size() - 1) |
|
|
|
update_highlighted_slot() |
|
|
|
InventoryManager.quick_slot_item_changed.emit(get_selected_item()) |
|
|
|
|
|
|
|
func update_highlighted_slot() -> void: |
|
|
|
var previous_slot: Panel = slots_container.get_child(_previous_selected_item) |
|
|
|
var current_slot: Panel = slots_container.get_child(_selected_item) |
|
|
|
|
|
|
|
previous_slot.set("theme_override_styles/panel", null) |
|
|
|
current_slot.set("theme_override_styles/panel", highlight_theme) |