using Godot; using System; using System.Collections.Generic; using BITKit; namespace BITFactory; public partial class IDIS_RegisterService : Node { [Export] private IDIS_Service service; [Export] private IDIS_TemplateService templateService; [Export] private ItemList templateList; [Export] private LineEdit handleEdit; [Export] private Button generateHandleButton; [Export] private Control container; [Export] private Button registerButton; [Export] private Label hints; private readonly Dictionary> _currentValues = new(); public override void _Ready() { templateList.Clear(); foreach (var x in templateService.templates) { templateList.AddItem(x.TemplateName); } var lineEdit = new LineEdit(); lineEdit.PlaceholderText = "请输入标识名称"; templateList.ItemClicked += OnItemClicked; registerButton.Pressed += Register; generateHandleButton.Pressed += () => { handleEdit.Text = $"88.123.99/{Mathf.Abs(Guid.NewGuid().GetHashCode())}"; }; } private void OnItemClicked(long index, Vector2 atPosition, long mouseButtonIndex) { MathNode.RemoveAllChild(container); var template = templateService.templates[(int) index]; var grid = new GridContainer(); grid.Columns = 2; grid.AddThemeConstantOverride("h_separation", 64); container.AddChild(grid); _currentValues.Clear(); var _dirIndex = 0; foreach (var x in template.Formats) { var label = new Label(); var lineEdit = new LineEdit(); var myIndex = _dirIndex++; label.Text = x.format; lineEdit.PlaceholderText = x.hint; lineEdit.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill; _currentValues.Add(myIndex,new KeyValuePair(x.format,x.hint)); lineEdit.TextChanged += (s) => { _currentValues[myIndex] = new KeyValuePair(x.format, s); }; grid.AddChild(label); grid.AddChild(lineEdit); } } private void Register() { var handle = handleEdit.Text; var json = JsonHelper.Get(_currentValues); BIT4Log.Log($"注册标识:{handle}"); BIT4Log.Log($"\n{json}"); foreach (var x in _currentValues) { service.Register(handle, x.Value.Key, x.Value.Value); } } }