2025-01-03 08:07:35 +00:00
|
|
|
class_name PropInventory extends Resource
|
|
|
|
|
2025-01-13 08:09:57 +00:00
|
|
|
signal current_item_changed(prop_key: String)
|
|
|
|
|
2025-02-04 11:50:48 +00:00
|
|
|
@export var enabled_items := []
|
2025-01-13 08:09:57 +00:00
|
|
|
@export var current_index := 0:
|
|
|
|
set(val):
|
|
|
|
if current_index != val:
|
|
|
|
val = wrapi(val, 0, enabled_items.size())
|
|
|
|
current_index = val
|
2025-02-04 04:01:28 +00:00
|
|
|
if enabled_items.size() > 0:
|
|
|
|
current_item_changed.emit(enabled_items[current_index])
|
|
|
|
else:
|
|
|
|
current_item_changed.emit("")
|
2025-03-12 07:53:12 +00:00
|
|
|
# 重要物品,不可丢弃,在背包可见
|
|
|
|
@export var important_items := []
|
|
|
|
# 未查看的重要物品,红点效果
|
|
|
|
@export var unviewed_important_items := []
|
|
|
|
|
|
|
|
func enable_important_item(prop_key: String) -> void:
|
|
|
|
if not important_items.has(prop_key):
|
|
|
|
important_items.append(prop_key)
|
|
|
|
unviewed_important_items.append(prop_key)
|
2025-01-03 08:07:35 +00:00
|
|
|
|
2025-03-11 09:16:24 +00:00
|
|
|
func current_item_key() -> String:
|
2025-01-12 06:02:00 +00:00
|
|
|
if enabled_items.size() == 0:
|
2025-03-11 09:16:24 +00:00
|
|
|
return ""
|
2025-01-12 06:02:00 +00:00
|
|
|
return enabled_items[current_index]
|
|
|
|
|
|
|
|
|
|
|
|
func enable_item(prop_key: String) -> void:
|
|
|
|
if not enabled_items.has(prop_key):
|
|
|
|
enabled_items.append(prop_key)
|
2025-01-13 08:09:57 +00:00
|
|
|
# 新增后直接选中
|
|
|
|
current_index = enabled_items.find(prop_key)
|
2025-01-03 08:07:35 +00:00
|
|
|
|
|
|
|
|
2025-01-12 11:36:41 +00:00
|
|
|
func disable_item(prop_key: String) -> void:
|
2025-01-14 00:56:51 +00:00
|
|
|
# if enabled_items.has(prop_key):
|
|
|
|
enabled_items.erase(prop_key)
|
2025-01-12 11:36:41 +00:00
|
|
|
# wrap index
|
|
|
|
current_index = wrapi(current_index, 0, enabled_items.size())
|
|
|
|
|
|
|
|
|
|
|
|
# return true if the index changed
|
|
|
|
func index_wrap_add(delta: int) -> bool:
|
2025-01-13 08:09:57 +00:00
|
|
|
# auto wrapped in setter
|
2025-01-03 08:07:35 +00:00
|
|
|
current_index += delta
|
2025-01-12 11:36:41 +00:00
|
|
|
return not enabled_items.is_empty()
|