64 lines
1.5 KiB
GDScript
64 lines
1.5 KiB
GDScript
@tool
|
|
extends Node
|
|
|
|
@export var property_name := "text"
|
|
# 优先使用 inspect_title
|
|
@export var inspect_title := "":
|
|
set(val):
|
|
inspect_title = val
|
|
if is_node_ready():
|
|
refresh()
|
|
@export var translation_key := "":
|
|
set(val):
|
|
translation_key = val
|
|
if is_node_ready():
|
|
refresh()
|
|
@export var vertical := false
|
|
|
|
@warning_ignore("unused_private_class_variable")
|
|
@export_tool_button("刷新") var _refresh = refresh
|
|
|
|
|
|
func _ready() -> void:
|
|
refresh()
|
|
|
|
|
|
# res://asset/dialogue/item_description.zh_CN.translation
|
|
var items_translation = preload("uid://c1x5bqwulamey") as Translation
|
|
|
|
|
|
func refresh():
|
|
if property_name:
|
|
if inspect_title:
|
|
set(property_name, _get_tr_content())
|
|
elif translation_key:
|
|
var msg = tr(translation_key)
|
|
if Engine.is_editor_hint():
|
|
msg = items_translation.get_message(translation_key)
|
|
msg = msg.replace("{br}", "\n")
|
|
if vertical:
|
|
var new_text = ""
|
|
for c in msg:
|
|
new_text += c + "\n"
|
|
msg = new_text
|
|
set(property_name, msg)
|
|
|
|
|
|
func _notification(what: int) -> void:
|
|
if what == NOTIFICATION_TRANSLATION_CHANGED:
|
|
refresh()
|
|
|
|
|
|
func _get_tr_content():
|
|
if inspect_title == "":
|
|
return ""
|
|
var inspection_note = ""
|
|
# get note content
|
|
var line_id = GlobalConfig.DIALOG_INSPECT.titles.get(inspect_title)
|
|
while line_id and line_id != "end":
|
|
var line = GlobalConfig.DIALOG_INSPECT.lines[line_id]
|
|
if line.has("text"):
|
|
inspection_note += tr(line.get("translation_key")) + "\n"
|
|
line_id = line.get("next_id")
|
|
return inspection_note
|