RobotNet/RobotNet.MapShares/MapManagerExtensions.cs
2025-10-15 15:15:53 +07:00

44 lines
1.5 KiB
C#

using RobotNet.MapShares.Property;
using RobotNet.Script.Expressions;
namespace RobotNet.MapShares;
public static class MapManagerExtensions
{
public static Script.Expressions.ElementProperties GetElementProperties(bool isOpen, string content)
{
var dbool = new Dictionary<string, bool>();
var ddouble = new Dictionary<string, double>();
var dint = new Dictionary<string, int>();
var dstr = new Dictionary<string, string>();
var elementProperties = System.Text.Json.JsonSerializer.Deserialize<ElementProperty[]>(content, JsonOptionExtends.Read) ?? [];
foreach (var ep in elementProperties)
{
if(ep.Type == "System.Boolean" || ep.Type == "Boolean")
{
dbool.Add(ep.Name, bool.Parse(ep.DefaultValue));
}
else if(ep.Type == "System.Double" || ep.Type == "Double")
{
ddouble.Add(ep.Name, double.Parse(ep.DefaultValue));
}
else if(ep.Type == "System.Int" || ep.Type == "Int")
{
dint.Add(ep.Name, int.Parse(ep.DefaultValue));
}
else if(ep.Type == "System.String" || ep.Type == "String")
{
dstr.Add(ep.Name, ep.DefaultValue);
}
else
{
throw new InvalidOperationException($"Unsupported property type: {ep.Type}");
}
}
return new ElementProperties(isOpen, dbool, ddouble, dint, dstr);
}
}