using Milimoe.FunGame.Core.Api.Utility; using Milimoe.FunGame.Core.Entity; namespace Milimoe.FunGame.Core.Library.Common.Addon { /// /// 模组的依赖集合 /// (地图名称()的数组) /// (角色模组名称()的数组) /// (技能模组名称()的数组) /// (物品模组名称()的数组) /// public readonly struct GameModuleDepend(string[] maps, string[] characters, string[] skills, string[] items) { /// /// 模组所使用的地图组 /// public string[] MapsDepend { get; } = maps; /// /// 模组所使用的角色组 /// public string[] CharactersDepend { get; } = characters; /// /// 模组所使用的技能组 /// public string[] SkillsDepend { get; } = skills; /// /// 模组所使用的物品组 /// public string[] ItemsDepend { get; } = items; /// /// 实际使用的地图组对象 /// 请使用 自动填充,不要自己添加 /// public List Maps { get; } = []; /// /// 实际使用的角色组对象 /// 请使用 自动填充,不要自己添加 /// public List Characters { get; } = []; /// /// 实际使用的技能组对象 /// 请使用 自动填充,不要自己添加 /// public List Skills { get; } = []; /// /// 实际使用的物品组对象 /// 请使用 自动填充,不要自己添加 /// public List Items { get; } = []; /// /// 获得所有的依赖项 /// 此方法会自动填充 /// public void GetDependencies(GameModuleLoader loader) { Maps.Clear(); Characters.Clear(); Skills.Clear(); Items.Clear(); Maps.AddRange(loader.Maps.Keys.Where(MapsDepend.Contains).Select(str => loader.Maps[str])); foreach (CharacterModule modules in loader.Characters.Keys.Where(CharactersDepend.Contains).Select(str => loader.Characters[str])) { Characters.AddRange(modules.Characters); } foreach (SkillModule modules in loader.Skills.Keys.Where(SkillsDepend.Contains).Select(str => loader.Skills[str])) { Skills.AddRange(modules.Skills); } foreach (ItemModule modules in loader.Items.Keys.Where(ItemsDepend.Contains).Select(str => loader.Items[str])) { Items.AddRange(modules.Items); } } } }