Moved the test command to a seperate "TestingCommands" class
This commit is contained in:
119
SessionZero/TestingCommands.cs
Normal file
119
SessionZero/TestingCommands.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json;
|
||||
using Cogwheel;
|
||||
using SessionZero.Data;
|
||||
using SessionZero.Data.Sztl;
|
||||
|
||||
namespace SessionZero;
|
||||
|
||||
public static class TestingCommands
|
||||
{
|
||||
// TODO: Remove this after testing
|
||||
[Command(Name = "test")]
|
||||
private 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
|
||||
{
|
||||
var template = SztlParser.ParseTemplate(toml);
|
||||
|
||||
var obj = SzObjectFactory.CreateObject(template) as SzDataObject;
|
||||
|
||||
obj.SetFieldValue("name", "Excalibur");
|
||||
obj.SetFieldValue("consumable", true);
|
||||
obj.SetFieldValue("stats.value", 10);
|
||||
obj.SetFieldValue("stats.weight", 2);
|
||||
obj.SetFieldValue("stats.modifiers.base", 5);
|
||||
|
||||
COGWHEEL.Log($"Template ID: {template.Id}");
|
||||
|
||||
COGWHEEL.Log("\nInstanced Object Field Values:");
|
||||
foreach (var fieldPath in new[]
|
||||
{ "name", "consumable", "stats.value", "stats.weight", "stats.modifiers.base" })
|
||||
{
|
||||
COGWHEEL.Log($"> {fieldPath} = {obj.GetFieldValue(fieldPath)}");
|
||||
}
|
||||
|
||||
var jsonOptions = new JsonSerializerOptions
|
||||
{
|
||||
WriteIndented = true
|
||||
};
|
||||
string json = JsonSerializer.Serialize(new
|
||||
{
|
||||
obj.Id,
|
||||
obj.Uuid,
|
||||
template_id = obj.TemplateId,
|
||||
fields = obj.FieldsToDictionary()
|
||||
}, jsonOptions);
|
||||
|
||||
COGWHEEL.Log("\nJSON Output:");
|
||||
COGWHEEL.Log(json);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
COGWHEEL.Log($"Error parsing template: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private static Dictionary<string, object> FieldsToDictionary(this SzObject obj)
|
||||
{
|
||||
var result = new Dictionary<string, object>();
|
||||
foreach (var kvp in obj.Fields)
|
||||
{
|
||||
result[kvp.Key] = kvp.Value.Value;
|
||||
}
|
||||
|
||||
foreach (var group in obj.FieldGroups)
|
||||
{
|
||||
result[group.Key] = GroupToDict(group.Value);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static Dictionary<string, object> GroupToDict(SzFieldGroup group)
|
||||
{
|
||||
var dict = new Dictionary<string, object>();
|
||||
foreach (var kvp in group.Fields)
|
||||
{
|
||||
dict[kvp.Key] = kvp.Value.Value;
|
||||
}
|
||||
|
||||
foreach (var subGroup in group.SubGroups)
|
||||
{
|
||||
dict[subGroup.Key] = GroupToDict(subGroup.Value);
|
||||
}
|
||||
|
||||
return dict;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user