From d17a4579d53766b3d7f69e2b71d397cd7d93addc Mon Sep 17 00:00:00 2001 From: Joywayer Date: Wed, 22 Jul 2026 11:12:51 +0800 Subject: [PATCH] =?UTF-8?q?feat(designer):=20=E5=85=B1=E9=B8=A3=E9=85=8D?= =?UTF-8?q?=E6=96=B9=E5=85=83=E7=B4=A0=20A/B=20=E6=94=B9=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=20+=20=E5=8C=B9=E9=85=8D=E6=96=B9=E5=BC=8F=E5=8F=8C=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- addons/game_designer/resonance_tab.gd | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/addons/game_designer/resonance_tab.gd b/addons/game_designer/resonance_tab.gd index d280f7e..d5a23e6 100644 --- a/addons/game_designer/resonance_tab.gd +++ b/addons/game_designer/resonance_tab.gd @@ -4,13 +4,14 @@ extends VBoxContainer const UI = preload("res://addons/game_designer/designer_ui.gd") const PATH = "res://data/resonance.json" -const MATCH = ["adjacent", "anywhere_in_deck"] +const MATCH = ["adjacent", "anywhere_in_deck"] # 存储 key +const MATCH_LABELS = ["相邻 adjacent", "卡组内任意 anywhere_in_deck"] var _data: Array = [] var _cur: int = -1 var _id: LineEdit -var _p0: LineEdit -var _p1: LineEdit +var _p0: OptionButton +var _p1: OptionButton var _match: OptionButton var _result: LineEdit var _consume: CheckBox @@ -29,9 +30,9 @@ func _ready() -> void: brow.add_child(UI.btn("🗑删除", _on_delete)) add_child(HSeparator.new()) _id = _row("配方 ID", UI.line("")) - _p0 = _row("元素 A", UI.line("", "tag:water")) - _p1 = _row("元素 B", UI.line("", "tag:lightning")) - _match = _row("匹配方式", UI.opt(MATCH, 0)) + _p0 = _row("元素 A", UI.opt(UI.ELEM_LABELS, 0)) + _p1 = _row("元素 B", UI.opt(UI.ELEM_LABELS, 0)) + _match = _row("匹配方式", UI.opt(MATCH_LABELS, 0)) _result = _row("产物法术 ID", UI.line("", "action_plasma_storm")) _consume = CheckBox.new(); _consume.text = "消耗输入法术(合成后移除原法术)" add_child(_consume) @@ -61,8 +62,8 @@ func _on_select(idx: int) -> void: var d: Dictionary = _data[idx] var p: Array = d.get("pattern", ["", ""]) _id.text = String(d.get("id", "")) - _p0.text = String(p[0]) if p.size() > 0 else "" - _p1.text = String(p[1]) if p.size() > 1 else "" + _p0.selected = max(0, UI.ELEM_TAGS.find(String(p[0])) if p.size() > 0 else 0) + _p1.selected = max(0, UI.ELEM_TAGS.find(String(p[1])) if p.size() > 1 else 0) _match.selected = max(0, MATCH.find(String(d.get("match", "adjacent")))) _result.text = String(d.get("result_spell_id", "")) _consume.button_pressed = bool(d.get("consume_inputs", false)) @@ -70,7 +71,7 @@ func _on_select(idx: int) -> void: func _on_apply() -> void: var r := { "id": _id.text.strip_edges(), - "pattern": [_p0.text.strip_edges(), _p1.text.strip_edges()], + "pattern": [UI.ELEM_TAGS[_p0.selected], UI.ELEM_TAGS[_p1.selected]], "match": MATCH[_match.selected], "result_spell_id": _result.text.strip_edges(), "consume_inputs": _consume.button_pressed, @@ -83,7 +84,7 @@ func _on_apply() -> void: UI.set_status(_status, "✓ 已应用(记得保存)") func _on_new() -> void: - _data.append({"id": "new_recipe", "pattern": ["tag:a", "tag:b"], + _data.append({"id": "new_recipe", "pattern": ["tag:water", "tag:lightning"], "match": "adjacent", "result_spell_id": "", "consume_inputs": true}) _cur = _data.size() - 1 _refresh()