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