using System.Collections.Generic; using System.IO; using Data; using Utils; namespace Managers { public class DefineManager : Singleton { private const string coreNamespace = "Data"; private static readonly string[] dataSetFilePath = { "Data", "Mod" }; public Dictionary> defines = new(); public Dictionary packs = new(); public void Init() { var packFolder = Configs.ConfigProcessor.GetSubFolders(new(dataSetFilePath)); foreach (var folder in packFolder) { var pack = new DefinePack(); if (pack.LoadPack(folder)) packs.Add(pack.packID, pack); } foreach (var pack in packs) { foreach (var define in pack.Value.defines) { var typeName=define.Key; var defList=define.Value; if (!defines.ContainsKey(typeName)) defines[typeName] = new Dictionary(); foreach (var def in defList) { defines[typeName][def.defName] = def; } } } } /// /// 查找指定定义类型的定义名对应的 Define 对象。 /// /// 定义类型 /// 定义名 /// 如果找到,返回 Define 对象;否则返回 null。 public Define FindDefine(string defineType, string defineName) { if (defines.TryGetValue(defineType, out var typeDict)) { if (typeDict.TryGetValue(defineName, out var define)) { return define; } } return null; } public override string ToString() { if (packs == null || packs.Count == 0) { return "No packs available"; // 如果集合为空或为 null,返回默认信息 } var result = new System.Text.StringBuilder(); foreach (var definePack in packs) { result.AppendLine(definePack.ToString()); // 每个元素占一行 } return result.ToString(); } } }