Skip to content

Commit 82d91eb

Browse files
committed
Merge branch 'beta' of https://github.com/swiftly-solution/swiftlys2 into beta
2 parents 19cac0e + 51de6ff commit 82d91eb

File tree

5 files changed

+41
-33
lines changed

5 files changed

+41
-33
lines changed

managed/src/SwiftlyS2.Core/Hosting/PluginManagerInjection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ public static IServiceCollection AddPluginManager( this IServiceCollection self
1313

1414
public static void UsePluginManager( this IServiceProvider self )
1515
{
16-
_ = self.GetRequiredService<PluginManager>();
16+
self.GetRequiredService<PluginManager>().Initialize();
1717
}
1818
}

managed/src/SwiftlyS2.Core/Modules/Plugins/PluginManager.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,13 @@ static async Task WaitForFileAccess( CancellationToken token, string filePath, i
150150
? Assembly.GetExecutingAssembly()
151151
: AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(a => loadingAssemblyName == a.GetName().Name);
152152
};
153+
}
153154

155+
/// <summary>
156+
/// Must be called after DI container is fully built to avoid circular dependency.
157+
/// </summary>
158+
internal void Initialize()
159+
{
154160
LoadExports();
155161
LoadPlugins();
156162
}

managed/src/SwiftlyS2.Core/Modules/Plugins/SwiftlyCore.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ internal class SwiftlyCore : ISwiftlyCore, IDisposable
8181
public string ContextBasePath { get; init; }
8282
public string PluginDataDirectory { get; init; }
8383
public GameFileSystem GameFileSystem { get; init; }
84-
// public PluginManager PluginManager { get; set; }
84+
public PluginManager PluginManager { get; set; }
8585
public SwiftlyCore( string contextId, string contextBaseDirectory, PluginMetadata? pluginManifest, Type contextType, IServiceProvider coreProvider, string pluginDataDirectory )
8686
{
8787

@@ -94,7 +94,7 @@ public SwiftlyCore( string contextId, string contextBaseDirectory, PluginMetadat
9494
.AddSingleton(this)
9595
.AddSingleton<ISwiftlyCore>(this)
9696
.AddSingleton(coreProvider.GetRequiredService<ProfileService>())
97-
// .AddSingleton(coreProvider.GetRequiredService<PluginManager>())
97+
.AddSingleton(coreProvider.GetRequiredService<PluginManager>())
9898
.AddSingleton(coreProvider.GetRequiredService<ConfigurationService>())
9999
.AddSingleton(coreProvider.GetRequiredService<HookManager>())
100100
.AddSingleton(coreProvider.GetRequiredService<PlayerManagerService>())
@@ -141,7 +141,7 @@ public SwiftlyCore( string contextId, string contextBaseDirectory, PluginMetadat
141141
.AddSingleton<IContextedProfilerService>(provider => provider.GetRequiredService<ContextedProfilerService>())
142142
.AddSingleton<ISchedulerService>(provider => provider.GetRequiredService<SchedulerService>())
143143
.AddSingleton<IEngineService>(provider => provider.GetRequiredService<EngineService>())
144-
// .AddSingleton<IPluginManager>(provider => provider.GetRequiredService<PluginManager>())
144+
.AddSingleton<IPluginManager>(provider => provider.GetRequiredService<PluginManager>())
145145
.AddSingleton<ITraceManager>(provider => provider.GetRequiredService<TraceManager>())
146146
.AddSingleton<IDatabaseService>(provider => provider.GetRequiredService<DatabaseService>())
147147
.AddSingleton<ITranslationService>(provider => provider.GetRequiredService<TranslationService>())
@@ -185,7 +185,7 @@ public SwiftlyCore( string contextId, string contextBaseDirectory, PluginMetadat
185185
GameService = serviceProvider.GetRequiredService<GameService>();
186186
Logger = LoggerFactory.CreateLogger(contextType);
187187
GameFileSystem = serviceProvider.GetRequiredService<GameFileSystem>();
188-
// PluginManager = serviceProvider.GetRequiredService<PluginManager>();
188+
PluginManager = serviceProvider.GetRequiredService<PluginManager>();
189189
}
190190

191191
public void InitializeType( Type type )
@@ -232,7 +232,7 @@ public void Dispose()
232232
IHelpers ISwiftlyCore.Helpers => Helpers;
233233
IGameService ISwiftlyCore.Game => GameService;
234234
IGameFileSystem ISwiftlyCore.GameFileSystem => GameFileSystem;
235-
// IPluginManager ISwiftlyCore.PluginManager => PluginManager;
235+
IPluginManager ISwiftlyCore.PluginManager => PluginManager;
236236
string ISwiftlyCore.PluginPath => ContextBasePath;
237237
string ISwiftlyCore.PluginDataDirectory => PluginDataDirectory;
238238
string ISwiftlyCore.CSGODirectory => NativeEngineHelpers.GetCSGODirectoryPath();

managed/src/SwiftlyS2.Shared/ISwiftlyCore.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,11 @@ public interface ISwiftlyCore
167167
/// Game file system interface.
168168
/// </summary>
169169
public IGameFileSystem GameFileSystem { get; }
170+
170171
/// <summary>
171172
/// Plugin manager.
172173
/// </summary>
173-
// public IPluginManager PluginManager { get; }
174+
public IPluginManager PluginManager { get; }
174175

175176
/// <summary>
176177
/// Gets the file path to the plugin directory.

managed/src/SwiftlyS2.Shared/SwiftlyCoreInjection.cs

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -9,41 +9,42 @@ public static class SwiftlyCoreInjection
99
public static IServiceCollection AddSwiftly( this IServiceCollection self, ISwiftlyCore core, bool addLogger = true, bool addConfiguration = true )
1010
{
1111
_ = self
12-
.AddSingleton(core)
13-
.AddSingleton(core.ConVar)
14-
.AddSingleton(core.Command)
15-
.AddSingleton(core.Database)
16-
.AddSingleton(core.Engine)
17-
.AddSingleton(core.EntitySystem)
18-
.AddSingleton(core.Event)
19-
.AddSingleton(core.GameData)
20-
.AddSingleton(core.GameEvent)
21-
.AddSingleton(core.Localizer)
22-
.AddSingleton(core.Memory)
23-
.AddSingleton(core.NetMessage)
24-
.AddSingleton(core.Permission)
25-
.AddSingleton(core.PlayerManager)
26-
.AddSingleton(core.Profiler)
27-
.AddSingleton(core.Scheduler)
28-
.AddSingleton(core.Trace)
29-
.AddSingleton(core.MenusAPI)
30-
.AddSingleton(core.CommandLine)
31-
.AddSingleton(core.GameFileSystem)
32-
.AddSingleton(core.Translation);
12+
.AddSingleton(core)
13+
.AddSingleton(core.ConVar)
14+
.AddSingleton(core.Command)
15+
.AddSingleton(core.Database)
16+
.AddSingleton(core.Engine)
17+
.AddSingleton(core.EntitySystem)
18+
.AddSingleton(core.Event)
19+
.AddSingleton(core.GameData)
20+
.AddSingleton(core.GameEvent)
21+
.AddSingleton(core.Localizer)
22+
.AddSingleton(core.Memory)
23+
.AddSingleton(core.NetMessage)
24+
.AddSingleton(core.Permission)
25+
.AddSingleton(core.PlayerManager)
26+
.AddSingleton(core.Profiler)
27+
.AddSingleton(core.Scheduler)
28+
.AddSingleton(core.Trace)
29+
.AddSingleton(core.MenusAPI)
30+
.AddSingleton(core.CommandLine)
31+
.AddSingleton(core.GameFileSystem)
32+
.AddSingleton(core.Translation)
33+
.AddSingleton(core.PluginManager);
3334

3435
if (addLogger)
3536
{
3637
_ = self
37-
.AddSingleton(core.LoggerFactory)
38-
.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
38+
.AddSingleton(core.LoggerFactory)
39+
.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
3940
}
4041

4142
if (addConfiguration && core.Configuration.BasePathExists)
4243
{
4344
_ = self
44-
.AddSingleton(core.Configuration)
45-
.AddSingleton(core.Configuration.Manager)
46-
.AddSingleton<IConfiguration>(provider => provider.GetRequiredService<IConfigurationManager>());
45+
.AddSingleton(core.Configuration)
46+
.AddSingleton(core.Configuration.Manager)
47+
.AddSingleton<IConfiguration>(provider => provider.GetRequiredService<IConfigurationManager>());
4748
}
4849

4950
return self;

0 commit comments

Comments
 (0)