xiandie/scene/prop/prop_inventory_resource.gd

43 lines
1.1 KiB
GDScript

class_name PropInventory extends Resource
signal current_item_changed(prop_key: String)
# prop_空手 默认就存在,并且不可删除
@export var enabled_items := ["prop_空手"]
@export var current_index := 0:
set(val):
if current_index != val:
val = wrapi(val, 0, enabled_items.size())
current_index = val
if enabled_items.size() > 0:
current_item_changed.emit(enabled_items[current_index])
else:
current_item_changed.emit("")
func current_item_key():
if enabled_items.size() == 0:
return null
return enabled_items[current_index]
func enable_item(prop_key: String) -> void:
if not enabled_items.has(prop_key):
enabled_items.append(prop_key)
# 新增后直接选中
current_index = enabled_items.find(prop_key)
func disable_item(prop_key: String) -> void:
# if enabled_items.has(prop_key):
enabled_items.erase(prop_key)
# wrap index
current_index = wrapi(current_index, 0, enabled_items.size())
# return true if the index changed
func index_wrap_add(delta: int) -> bool:
# auto wrapped in setter
current_index += delta
return not enabled_items.is_empty()