mirror of
https://github.com/project-redbud/FunGame-Core.git
synced 2025-04-23 04:29:36 +08:00
修改加载项的加载方式,以解决循环依赖问题
This commit is contained in:
parent
7d6ad5bc84
commit
05d1c7204a
@ -58,8 +58,8 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
GameModuleLoader loader = new();
|
GameModuleLoader loader = new();
|
||||||
if (runtime == FunGameInfo.FunGame.FunGame_Desktop)
|
if (runtime == FunGameInfo.FunGame.FunGame_Desktop)
|
||||||
{
|
{
|
||||||
AddonManager.LoadGameModules(loader.Modules, loader.Characters, loader.Skills, loader.Items, delegates, otherobjs);
|
|
||||||
AddonManager.LoadGameMaps(loader.Maps, otherobjs);
|
AddonManager.LoadGameMaps(loader.Maps, otherobjs);
|
||||||
|
AddonManager.LoadGameModules(loader.Modules, loader.Characters, loader.Skills, loader.Items, delegates, otherobjs);
|
||||||
foreach (GameModule module in loader.Modules.Values.ToList())
|
foreach (GameModule module in loader.Modules.Values.ToList())
|
||||||
{
|
{
|
||||||
// 读取模组的依赖集合
|
// 读取模组的依赖集合
|
||||||
@ -70,8 +70,8 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
}
|
}
|
||||||
else if (runtime == FunGameInfo.FunGame.FunGame_Server)
|
else if (runtime == FunGameInfo.FunGame.FunGame_Server)
|
||||||
{
|
{
|
||||||
AddonManager.LoadGameModulesForServer(loader.ModuleServers, loader.Characters, loader.Skills, loader.Items, delegates, otherobjs);
|
|
||||||
AddonManager.LoadGameMaps(loader.Maps, otherobjs);
|
AddonManager.LoadGameMaps(loader.Maps, otherobjs);
|
||||||
|
AddonManager.LoadGameModulesForServer(loader.ModuleServers, loader.Characters, loader.Skills, loader.Items, delegates, otherobjs);
|
||||||
foreach (GameModuleServer server in loader.ModuleServers.Values.ToList())
|
foreach (GameModuleServer server in loader.ModuleServers.Values.ToList())
|
||||||
{
|
{
|
||||||
server.GameModuleDepend.GetDependencies(loader);
|
server.GameModuleDepend.GetDependencies(loader);
|
||||||
|
@ -33,7 +33,22 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
foreach (string dll in dlls)
|
foreach (string dll in dlls)
|
||||||
{
|
{
|
||||||
// 加载目录下所有的DLL
|
// 加载目录下所有的DLL
|
||||||
Assembly assembly = Assembly.LoadFrom(dll);
|
Assembly? assembly = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
assembly = Assembly.LoadFrom(dll);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
assembly = Assembly.Load(Path.GetFileName(dll));
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(Plugin))))
|
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(Plugin))))
|
||||||
{
|
{
|
||||||
@ -71,7 +86,22 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
foreach (string dll in dlls)
|
foreach (string dll in dlls)
|
||||||
{
|
{
|
||||||
// 加载目录下所有的DLL
|
// 加载目录下所有的DLL
|
||||||
Assembly assembly = Assembly.LoadFrom(dll);
|
Assembly? assembly = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
assembly = Assembly.LoadFrom(dll);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
assembly = Assembly.Load(Path.GetFileName(dll));
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(ServerPlugin))))
|
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(ServerPlugin))))
|
||||||
{
|
{
|
||||||
@ -109,7 +139,22 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
foreach (string dll in dlls)
|
foreach (string dll in dlls)
|
||||||
{
|
{
|
||||||
// 加载目录下所有的DLL
|
// 加载目录下所有的DLL
|
||||||
Assembly assembly = Assembly.LoadFrom(dll);
|
Assembly? assembly = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
assembly = Assembly.LoadFrom(dll);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
assembly = Assembly.Load(Path.GetFileName(dll));
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(WebAPIPlugin))))
|
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(WebAPIPlugin))))
|
||||||
{
|
{
|
||||||
@ -149,7 +194,22 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
|
|
||||||
foreach (string dll in dlls)
|
foreach (string dll in dlls)
|
||||||
{
|
{
|
||||||
Assembly assembly = Assembly.LoadFrom(dll);
|
Assembly? assembly = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
assembly = Assembly.LoadFrom(dll);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
assembly = Assembly.Load(Path.GetFileName(dll));
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => typeof(IAddon).IsAssignableFrom(type)))
|
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => typeof(IAddon).IsAssignableFrom(type)))
|
||||||
{
|
{
|
||||||
@ -208,7 +268,22 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
|
|
||||||
foreach (string dll in dlls)
|
foreach (string dll in dlls)
|
||||||
{
|
{
|
||||||
Assembly assembly = Assembly.LoadFrom(dll);
|
Assembly? assembly = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
assembly = Assembly.LoadFrom(dll);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
assembly = Assembly.Load(Path.GetFileName(dll));
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => typeof(IAddon).IsAssignableFrom(type)))
|
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => typeof(IAddon).IsAssignableFrom(type)))
|
||||||
{
|
{
|
||||||
@ -263,7 +338,22 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
|
|
||||||
foreach (string dll in dlls)
|
foreach (string dll in dlls)
|
||||||
{
|
{
|
||||||
Assembly assembly = Assembly.LoadFrom(dll);
|
Assembly? assembly = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
assembly = Assembly.LoadFrom(dll);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
assembly = Assembly.Load(Path.GetFileName(dll));
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(GameMap))))
|
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(GameMap))))
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user