using OwnChar.Plugins; using OwnChar.Server.Api.Plugins; using Pilz.Configuration; namespace OwnChar.Server; internal class Program { public static string? AppTempFolder { get; private set; } public static ISettingsManager? SettingsManager { get; private set; } public static void Main(string[] args) { // Load settings AppTempFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "OwnChar", "Server"); Directory.CreateDirectory(AppTempFolder); SettingsManager = new SettingsManager(Path.Combine(AppTempFolder, "Settings.json"), true); // Create server context var server = new ServerContext(SettingsManager.Instance); // Load log // ... // Load plugins server.Log.Debug("Loading plugins"); var pluginPath = Path.Combine(AppTempFolder, "Plugins"); Directory.CreateDirectory(pluginPath); var pluginPaths = Directory.GetDirectories(pluginPath, "*", SearchOption.TopDirectoryOnly).Select(n => Path.Combine(n, n + ".dll")).ToArray(); var plugins = OwnCharPlugins.Instance.LoadPlugins(pluginPaths, new OwnCharServerPluginInitParams(server)); server.Log.InfoFormat("{0} plugins loaded", plugins.Count()); // Start server app server.Start(args); } }