feat(designer): Core 电路边改行编辑器(去 JSON)
This commit is contained in:
@@ -22,7 +22,7 @@ var _mana_leech: SpinBox
|
||||
var _feat: OptionButton
|
||||
var _rows: SpinBox
|
||||
var _cols: SpinBox
|
||||
var _edges: TextEdit
|
||||
var _edges
|
||||
var _status: Label
|
||||
|
||||
func _ready() -> void:
|
||||
@@ -49,9 +49,11 @@ func _ready() -> void:
|
||||
_rows = _row("矩阵行(MATRIX)", UI.spin(1, 8, 1, 1))
|
||||
_cols = _row("矩阵列(MATRIX)", UI.spin(1, 16, 1, 5))
|
||||
add_child(Label.new())
|
||||
var el := Label.new(); el.text = "电路边(CIRCUIT,JSON)"; add_child(el)
|
||||
_edges = TextEdit.new(); _edges.custom_minimum_size = Vector2(0, 50)
|
||||
_edges.placeholder_text = '[{"from":0,"to":1},{"from":0,"to":2}]'
|
||||
var el := Label.new(); el.text = "电路边(CIRCUIT,from → to)"; add_child(el)
|
||||
_edges = preload("res://addons/game_designer/tuple_list_editor.gd").new()
|
||||
_edges.setup([
|
||||
{"label": "from", "min": 0, "max": 63, "step": 1, "int": true},
|
||||
{"label": "→ to", "min": 0, "max": 63, "step": 1, "int": true}], "➕ 加边")
|
||||
add_child(_edges)
|
||||
add_child(HSeparator.new())
|
||||
var srow := HBoxContainer.new(); add_child(srow)
|
||||
@@ -93,15 +95,18 @@ func _on_select(idx: int) -> void:
|
||||
_feat.selected = int(d.get("feature_tags", 0))
|
||||
_rows.value = float(d.get("grid_rows", 1))
|
||||
_cols.value = float(d.get("grid_cols", 5))
|
||||
_edges.text = JSON.stringify(d.get("edges", []))
|
||||
var erows := []
|
||||
for e in d.get("edges", []):
|
||||
erows.append([int(e.get("from", 0)), int(e.get("to", 0))])
|
||||
_edges.set_values(erows)
|
||||
|
||||
func _on_apply() -> void:
|
||||
var cid: String = _id.text.strip_edges()
|
||||
if cid == "":
|
||||
UI.set_status(_status, "✗ ID 不能为空", true); return
|
||||
var edges = JSON.parse_string(_edges.text) if _edges.text.strip_edges() != "" else []
|
||||
if not (edges is Array):
|
||||
edges = []
|
||||
var edges := []
|
||||
for r in _edges.get_values():
|
||||
edges.append({"from": r[0], "to": r[1]})
|
||||
if _cur != "" and _cur != cid and _data.has(_cur):
|
||||
_data.erase(_cur)
|
||||
_data[cid] = {
|
||||
|
||||
Reference in New Issue
Block a user