class_name PropInventory extends Resource signal current_item_changed(prop_key: String) @export var owner := "" # 在外部可读不可写,因为需要按角色更新道具 @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("") # 重要物品,不可丢弃,在背包可见 @export var important_items := [] # 未查看的重要物品,红点效果 @export var unviewed_important_items := [] @export var default_enabled_items := [] @export var xdie_enabled_items := [] @export var xxdie_enabled_items := [] @export var xxxdie_enabled_items := [] var enabled_items := [] func checkout(character: String): # @export_enum("吕萍", "吕萍爬行", "吕萍带小猫", "吕萍推柜子", "小小蝶", "盒子猫", "小小小蝶") var character := "吕萍": if character == "小小蝶": enabled_items = xxdie_enabled_items elif character == "小小小蝶": enabled_items = xxxdie_enabled_items elif character.substr(0, 2) == "吕萍": enabled_items = xdie_enabled_items else: enabled_items = default_enabled_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) func has_prop(prop_key: String) -> bool: return enabled_items.has(prop_key) func current_item_key() -> String: if enabled_items.size() == 0: return "" return enabled_items[current_index] func enable_item(prop_key: String) -> void: # 重复 enable 无负面影响 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()