饭太稀
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
using Fantasy.Exporter;
|
||||
using Fantasy.Helper;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
|
||||
#pragma warning disable CS8601 // Possible null reference assignment.
|
||||
#pragma warning disable CS8604 // Possible null reference argument.
|
||||
|
||||
namespace Fantasy.Tools.ProtocalExporter;
|
||||
|
||||
public class ExporterSettingsHelper
|
||||
{
|
||||
public static string? NetworkProtocolDirectory { get; private set; }
|
||||
public static string NetworkProtocolServerDirectory { get; private set; }
|
||||
public static string NetworkProtocolClientDirectory { get; private set; }
|
||||
public static Dictionary<string, CustomSerialize> CustomSerializes { get; private set; }
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
const string settingsName = "ExporterSettings.json";
|
||||
var currentDirectory = ExporterAges.Instance.Folder;
|
||||
if (string.IsNullOrEmpty(currentDirectory))
|
||||
{
|
||||
currentDirectory = Directory.GetCurrentDirectory();
|
||||
}
|
||||
|
||||
if (!File.Exists(Path.Combine(currentDirectory, settingsName)))
|
||||
{
|
||||
throw new FileNotFoundException($"not found {settingsName} in OutputDirectory");
|
||||
}
|
||||
|
||||
var root = new ConfigurationBuilder().SetBasePath(currentDirectory).AddJsonFile(settingsName).Build();
|
||||
|
||||
NetworkProtocolDirectory = FileHelper.GetFullPath(root["Export:NetworkProtocolDirectory:Value"], currentDirectory);
|
||||
NetworkProtocolServerDirectory = FileHelper.GetFullPath(root["Export:NetworkProtocolServerDirectory:Value"], currentDirectory);
|
||||
NetworkProtocolClientDirectory = FileHelper.GetFullPath(root["Export:NetworkProtocolClientDirectory:Value"], currentDirectory);
|
||||
|
||||
CustomSerializes = [];
|
||||
var sort = new SortedList<long, CustomSerialize>();
|
||||
var arrayOfValuesSection = root.GetSection("Export:Serializes:Value");
|
||||
|
||||
foreach (var item in arrayOfValuesSection.GetChildren())
|
||||
{
|
||||
var serializeItem = new CustomSerialize
|
||||
{
|
||||
KeyIndex = Convert.ToInt32(item.GetSection("KeyIndex").Value),
|
||||
NameSpace = item.GetSection("NameSpace").Value,
|
||||
SerializeName = item.GetSection("SerializeName").Value,
|
||||
Attribute = item.GetSection("Attribute").Value,
|
||||
Ignore = item.GetSection("Ignore").Value,
|
||||
Member = item.GetSection("Member").Value
|
||||
};
|
||||
|
||||
sort.Add(HashCodeHelper.ComputeHash64(serializeItem.SerializeName), serializeItem);
|
||||
}
|
||||
|
||||
for (var i = 0; i < sort.Count; i++)
|
||||
{
|
||||
var customSerialize = sort.GetValueAtIndex(i);
|
||||
customSerialize.OpCodeType = (uint)(i + 2);
|
||||
CustomSerializes.Add(customSerialize.SerializeName, customSerialize);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user