mirror of
https://github.com/project-redbud/FunGame-Core.git
synced 2025-04-20 11:09:35 +08:00
修改加载项的加载方式,以解决循环依赖问题
This commit is contained in:
parent
7d6ad5bc84
commit
05d1c7204a
@ -58,8 +58,8 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
||||
GameModuleLoader loader = new();
|
||||
if (runtime == FunGameInfo.FunGame.FunGame_Desktop)
|
||||
{
|
||||
AddonManager.LoadGameModules(loader.Modules, loader.Characters, loader.Skills, loader.Items, delegates, 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())
|
||||
{
|
||||
// 读取模组的依赖集合
|
||||
@ -70,8 +70,8 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
||||
}
|
||||
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.LoadGameModulesForServer(loader.ModuleServers, loader.Characters, loader.Skills, loader.Items, delegates, otherobjs);
|
||||
foreach (GameModuleServer server in loader.ModuleServers.Values.ToList())
|
||||
{
|
||||
server.GameModuleDepend.GetDependencies(loader);
|
||||
|
@ -33,7 +33,22 @@ namespace Milimoe.FunGame.Core.Service
|
||||
foreach (string dll in dlls)
|
||||
{
|
||||
// 加载目录下所有的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))))
|
||||
{
|
||||
@ -71,7 +86,22 @@ namespace Milimoe.FunGame.Core.Service
|
||||
foreach (string dll in dlls)
|
||||
{
|
||||
// 加载目录下所有的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))))
|
||||
{
|
||||
@ -109,7 +139,22 @@ namespace Milimoe.FunGame.Core.Service
|
||||
foreach (string dll in dlls)
|
||||
{
|
||||
// 加载目录下所有的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))))
|
||||
{
|
||||
@ -149,7 +194,22 @@ namespace Milimoe.FunGame.Core.Service
|
||||
|
||||
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)))
|
||||
{
|
||||
@ -208,7 +268,22 @@ namespace Milimoe.FunGame.Core.Service
|
||||
|
||||
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)))
|
||||
{
|
||||
@ -263,7 +338,22 @@ namespace Milimoe.FunGame.Core.Service
|
||||
|
||||
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))))
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user