using System; using Cogwheel; using SessionZero.Cogwheel; using SessionZero.Data; using SessionZero.Data.Sztl; namespace SessionZero; public static class AppManager { public static MainWindow MainWindow { get; set; } public static ICogwheelConsole SzConsole { get; } = new SessionZeroConsole(); public static CommandsManager CommandsManager { get; } = new(); public static ConsoleControl ConsoleControl { get; } = new(); public static AppSettings Settings { get; } = new(); public static void ShowConsole() { MainWindow.ToggleConsole(true); } public static void HideConsole() { MainWindow.ToggleConsole(false); } // -- Global Commands -- // [Command(Name = "page", Description = "Change the current page to the given value, if it exists")] public static void ChangePage(string pageName) { MainWindow.ChangePage(pageName); } [Command(Name = "test")] public static void TestParseTemplate() { string toml = @" [metadata] template_type = ""data"" id = ""core_item"" uuid = ""0"" data_type = ""item"" version = ""1.0.0"" description = ""Core SessionZero item template"" [name] type = ""text"" [description] type = ""textblock"" [consumable] type = ""bool"" default_value = false [stats.value] type = ""number"" [stats.weight] type = ""number"" [stats.modifiers.base] type = ""number"" default_value = 1 "; try { // Parse template var template = SztlParser.ParseTemplate(toml); COGWHEEL.Log($"Template ID: {template.Id}"); COGWHEEL.Log("\nTop-Level Fields:"); foreach (var f in template.Fields) { COGWHEEL.Log($"- {f.Key}: Type={f.Value.Type}, Default={f.Value}, TextBlock={f.Value.IsTextBlock}"); } COGWHEEL.Log("\nGroups:"); foreach (var g in template.SubGroups) { PrintGroup(g.Value, ""); } // --- Instantiate SzDataObject --- var obj = SzObjectFactory.CreateObject(template); // Set some values obj.SetFieldValue("name", "Excalibur"); obj.SetFieldValue("consumable", true); obj.SetFieldValue("stats.value", 10); obj.SetFieldValue("stats.weight", 2); obj.SetFieldValue("stats.modifiers.base", 5); // Get and log values COGWHEEL.Log("\nInstanced Object Field Values:"); COGWHEEL.Log($"name = {obj.GetFieldValueAsString("name")}"); COGWHEEL.Log($"consumable = {obj.GetFieldValue("consumable")}"); COGWHEEL.Log($"stats.value = {obj.GetFieldValue("stats.value")}"); COGWHEEL.Log($"stats.weight = {obj.GetFieldValue("stats.weight")}"); COGWHEEL.Log($"stats.modifiers.base = {obj.GetFieldValue("stats.modifiers.base")}"); } catch (Exception ex) { COGWHEEL.Log($"Error parsing template: {ex.Message}"); } } private static void PrintGroup(SztlFieldGroup group, string indent) { COGWHEEL.Log($"{indent}Group: {group.Id}"); foreach (var f in group.Fields) { COGWHEEL.Log($"{indent} Field: {f.Key}, Type={f.Value.Type}, Default={f.Value}"); } foreach (var sg in group.SubGroups) { PrintGroup(sg.Value, indent + " "); } } }