53 lines
1.7 KiB
GDScript
53 lines
1.7 KiB
GDScript
## 存档槽位条目(挂载于 SaveSlot.tscn)。
|
|
## 展示单个存档信息;空槽位用于新建存档。
|
|
extends PanelContainer
|
|
|
|
## 槽位被点击时发出,save_id 为空表示点击了新建槽位。
|
|
## @param save_id: 存档 ID
|
|
signal slot_pressed(save_id: String)
|
|
|
|
@onready var slot_index_label: Label = %SlotIndexLabel
|
|
@onready var save_name_label: Label = %SaveNameLabel
|
|
@onready var meta_line1: Label = %MetaLine1
|
|
@onready var meta_line2: Label = %MetaLine2
|
|
@onready var delete_button: Button = %DeleteButton
|
|
@onready var arrow_button: Button = %ArrowIcon
|
|
|
|
## 本槽位对应的存档 ID。
|
|
var save_id: String = ""
|
|
## 是否已有存档数据(false 表示新建槽位)。
|
|
var has_data: bool = false
|
|
|
|
## 填充为已有存档槽位。
|
|
## @param id: 存档 ID
|
|
## @param name_text: 存档名称
|
|
## @param meta1: 第一行元数据
|
|
## @param meta2: 第二行元数据
|
|
func setup(id: String, name_text: String, meta1: String, meta2: String) -> void:
|
|
save_id = id
|
|
has_data = true
|
|
slot_index_label.text = id.get_slice("save_", 1) # "save_001" -> "001"
|
|
save_name_label.text = name_text
|
|
meta_line1.text = meta1
|
|
meta_line2.text = meta2
|
|
delete_button.visible = true
|
|
arrow_button.visible = true
|
|
|
|
## 填充为"新建存档"空槽位。
|
|
func setup_empty() -> void:
|
|
has_data = false
|
|
slot_index_label.text = "+"
|
|
save_name_label.text = "新建存档"
|
|
meta_line1.text = "点击创建新的存档"
|
|
meta_line2.text = ""
|
|
delete_button.visible = false
|
|
arrow_button.visible = false
|
|
|
|
## 槽位本体被点击。
|
|
func _on_pressed() -> void:
|
|
slot_pressed.emit(save_id)
|
|
|
|
## 点击删除按钮(TODO:接入确认弹窗)。
|
|
func _on_delete_button_button_up() -> void:
|
|
print("删除存档: ", save_id)
|