diff --git a/Torch.Server/Managers/InstanceManager.cs b/Torch.Server/Managers/InstanceManager.cs
index 11a689e..853f28b 100644
--- a/Torch.Server/Managers/InstanceManager.cs
+++ b/Torch.Server/Managers/InstanceManager.cs
@@ -25,6 +25,8 @@ namespace Torch.Server.Managers
private const string CONFIG_NAME = "SpaceEngineers-Dedicated.cfg";
public ConfigDedicatedViewModel DedicatedConfig { get; set; }
private static readonly Logger Log = LogManager.GetLogger(nameof(InstanceManager));
+ [Dependency]
+ private FilesystemManager _filesystemManager;
public InstanceManager(ITorchBase torchInstance) : base(torchInstance)
{
@@ -34,7 +36,7 @@ namespace Torch.Server.Managers
///
public override void Init()
{
- MyFileSystem.ExePath = Path.Combine(Torch.GetManager().TorchDirectory, "DedicatedServer64");
+ MyFileSystem.ExePath = Path.Combine(_filesystemManager.TorchDirectory, "DedicatedServer64");
MyFileSystem.Init("Content", Torch.Config.InstancePath);
//Initializes saves path. Why this isn't in Init() we may never know.
MyFileSystem.InitUserSpecific(null);
@@ -46,7 +48,7 @@ namespace Torch.Server.Managers
ValidateInstance(path);
MyFileSystem.Reset();
- MyFileSystem.ExePath = Path.Combine(Torch.GetManager().TorchDirectory, "DedicatedServer64");
+ MyFileSystem.ExePath = Path.Combine(_filesystemManager.TorchDirectory, "DedicatedServer64");
MyFileSystem.Init("Content", path);
//Initializes saves path. Why this isn't in Init() we may never know.
MyFileSystem.InitUserSpecific(null);
diff --git a/Torch/Commands/CommandManager.cs b/Torch/Commands/CommandManager.cs
index dd67c88..2285879 100644
--- a/Torch/Commands/CommandManager.cs
+++ b/Torch/Commands/CommandManager.cs
@@ -20,6 +20,8 @@ namespace Torch.Commands
public CommandTree Commands { get; set; } = new CommandTree();
private Logger _log = LogManager.GetLogger(nameof(CommandManager));
+ [Dependency]
+ private ChatManager _chatManager;
public CommandManager(ITorchBase torch, char prefix = '!') : base(torch)
{
@@ -29,7 +31,7 @@ namespace Torch.Commands
public override void Init()
{
RegisterCommandModule(typeof(TorchCommands));
- Torch.GetManager().MessageRecieved += HandleCommand;
+ _chatManager.MessageRecieved += HandleCommand;
}
public bool HasPermission(ulong steamId, Command command)
diff --git a/Torch/Managers/ChatManager.cs b/Torch/Managers/ChatManager.cs
index a2de253..ef6783f 100644
--- a/Torch/Managers/ChatManager.cs
+++ b/Torch/Managers/ChatManager.cs
@@ -27,6 +27,9 @@ namespace Torch.Managers
internal void RaiseMessageRecieved(ChatMsg msg, ref bool sendToOthers) =>
MessageRecieved?.Invoke(msg, ref sendToOthers);
+ [Dependency]
+ private INetworkManager _networkManager;
+
public ChatManager(ITorchBase torchInstance) : base(torchInstance)
{
@@ -36,7 +39,7 @@ namespace Torch.Managers
{
try
{
- Torch.GetManager().RegisterNetworkHandler(new ChatIntercept(this));
+ _networkManager.RegisterNetworkHandler(new ChatIntercept(this));
}
catch
{
diff --git a/Torch/Managers/DependencyManager.cs b/Torch/Managers/DependencyManager.cs
index 8beb64d..bc0bdbf 100644
--- a/Torch/Managers/DependencyManager.cs
+++ b/Torch/Managers/DependencyManager.cs
@@ -176,6 +176,16 @@ namespace Torch.Managers
// tmpQueue.Sort(); If we have priorities this is where to sort them.
_orderedManagers.AddRange(tmpQueue);
}
+ _log.Debug("Dependency tree satisfied. Load order is:");
+ foreach (ManagerInstance manager in _orderedManagers)
+ {
+ _log.Debug(" - {0}", manager.Instance.GetType().FullName);
+ _log.Debug(" - Dependencies: {0}",
+ string.Join(", ", manager.Dependencies.Select(x => x.DependencyType.Name + (x.Optional ? " (Optional)" : ""))));
+ _log.Debug(" - Dependents: {0}",
+ string.Join(", ", manager.Dependents.Select(x => x.Instance.GetType().Name)));
+ }
+
#endregion
// Updates the dependency fields with the correct manager instances
@@ -184,7 +194,7 @@ namespace Torch.Managers
{
manager.Dependents.Clear();
foreach (DependencyInfo dependency in manager.Dependencies)
- dependency.Field.SetValue(manager.Instance, _dependencySatisfaction.GetValueOrDefault(dependency.DependencyType));
+ dependency.Field.SetValue(manager.Instance, _dependencySatisfaction.GetValueOrDefault(dependency.DependencyType)?.Instance);
}
#endregion
}
diff --git a/Torch/Managers/MultiplayerManager.cs b/Torch/Managers/MultiplayerManager.cs
index def01c5..5cf0966 100644
--- a/Torch/Managers/MultiplayerManager.cs
+++ b/Torch/Managers/MultiplayerManager.cs
@@ -52,6 +52,13 @@ namespace Torch.Managers
private static readonly Logger ChatLog = LogManager.GetLogger("Chat");
private Dictionary _onlinePlayers;
+ [Dependency]
+ private ChatManager _chatManager;
+ [Dependency]
+ private CommandManager _commandManager;
+ [Dependency]
+ private NetworkManager _networkManager;
+
internal MultiplayerManager(ITorchBase torch) : base(torch)
{
@@ -61,7 +68,7 @@ namespace Torch.Managers
public override void Init()
{
Torch.SessionLoaded += OnSessionLoaded;
- Torch.GetManager().MessageRecieved += Instance_MessageRecieved;
+ _chatManager.MessageRecieved += Instance_MessageRecieved;
}
private void Instance_MessageRecieved(ChatMsg msg, ref bool sendToOthers)
@@ -125,10 +132,9 @@ namespace Torch.Managers
return;
ChatHistory.Add(new ChatMessage(DateTime.Now, 0, author, message));
- var commands = Torch.GetManager();
- if (commands.IsCommand(message))
+ if (_commandManager.IsCommand(message))
{
- var response = commands.HandleCommandFromServer(message);
+ var response = _commandManager.HandleCommandFromServer(message);
ChatHistory.Add(new ChatMessage(DateTime.Now, 0, author, response));
}
else
@@ -141,7 +147,7 @@ namespace Torch.Managers
return;
var addToGlobalHistoryMethod = typeof(MyCharacter).GetMethod("OnGlobalMessageSuccess", BindingFlags.Instance | BindingFlags.NonPublic);
- Torch.GetManager().RaiseEvent(addToGlobalHistoryMethod, character, steamId, steamId, message);
+ _networkManager.RaiseEvent(addToGlobalHistoryMethod, character, steamId, steamId, message);
}
}
diff --git a/Torch/Managers/PluginManager.cs b/Torch/Managers/PluginManager.cs
index d3acf8f..7bd5c76 100644
--- a/Torch/Managers/PluginManager.cs
+++ b/Torch/Managers/PluginManager.cs
@@ -20,7 +20,10 @@ namespace Torch.Managers
{
private static Logger _log = LogManager.GetLogger(nameof(PluginManager));
public readonly string PluginDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Plugins");
+ [Dependency]
private UpdateManager _updateManager;
+ [Dependency]
+ private CommandManager _commandManager;
///
public IList Plugins { get; } = new ObservableList();
@@ -87,9 +90,6 @@ namespace Torch.Managers
///
public void LoadPlugins()
{
- _updateManager = Torch.GetManager();
- var commands = Torch.GetManager();
-
if (Torch.Config.ShouldUpdatePlugins)
DownloadPlugins();
else
@@ -119,7 +119,7 @@ namespace Torch.Managers
plugin.StoragePath = Torch.Config.InstancePath;
Plugins.Add(plugin);
- commands.RegisterPluginCommands(plugin);
+ _commandManager.RegisterPluginCommands(plugin);
}
catch (Exception e)
{
diff --git a/Torch/Managers/UpdateManager.cs b/Torch/Managers/UpdateManager.cs
index d51c9bd..719517d 100644
--- a/Torch/Managers/UpdateManager.cs
+++ b/Torch/Managers/UpdateManager.cs
@@ -25,6 +25,7 @@ namespace Torch.Managers
private GitHubClient _gitClient = new GitHubClient(new ProductHeaderValue("Torch"));
private string _torchDir = new FileInfo(typeof(UpdateManager).Assembly.Location).DirectoryName;
private Logger _log = LogManager.GetLogger(nameof(UpdateManager));
+ [Dependency]
private FilesystemManager _fsManager;
public UpdateManager(ITorchBase torchInstance) : base(torchInstance)
@@ -35,7 +36,6 @@ namespace Torch.Managers
///
public override void Init()
{
- _fsManager = Torch.GetManager();
CheckAndUpdateTorch();
}