Files
sessionzero-cs/SzGui/Windows/SzTemplateCreatorWindow.cs
2026-02-25 00:08:27 -06:00

66 lines
1.8 KiB
C#

using ImGuiNET;
using SzCore;
using SzCore.DataObjects;
namespace SzGui.Windows;
public class SzTemplateCreatorWindow : SzGuiWindowBase
{
private string _name = "";
private string _type = "";
private List<SzTemplateField> _fields = new();
private string _newFieldId = "";
private int _selectedTypeIndex = 0;
public SzTemplateCreatorWindow() => WindowName = "Template Creator";
protected override void RenderContent()
{
ImGui.InputText("Template Name", ref _name, 64);
ImGui.InputText("Object Type", ref _type, 64);
ImGui.SeparatorText("Fields");
for (int i = 0; i < _fields.Count; i++)
{
ImGui.BulletText($"{_fields[i].Id} ({_fields[i].FieldType})");
ImGui.SameLine();
if (ImGui.Button($"Remove##{i}")) _fields.RemoveAt(i);
}
ImGui.Separator();
ImGui.InputText("Field ID", ref _newFieldId, 64);
string[] typeNames = Enum.GetNames<SzFieldType>();
ImGui.Combo("Type", ref _selectedTypeIndex, typeNames, typeNames.Length);
if (ImGui.Button("Add Field"))
{
var result = SZ.DataHandler.CreateTemplateField(_newFieldId, (SzFieldType)_selectedTypeIndex);
if (result.IsSuccess)
{
_fields.Add(result.Value!);
_newFieldId = ""; // Reset
}
}
ImGui.Separator();
if (ImGui.Button("Save Template", new System.Numerics.Vector2(0, 30)))
{
Save();
}
}
private async void Save()
{
var result = SZ.DataHandler.CreateDataObjectTemplate(_name, _type, fields: _fields);
if (result.IsSuccess)
{
await SZ.DataHandler.SaveTemplateAsync(result.Value!);
IsOpen = false;
}
}
}