Automatic dependency resolution
- All managers now use automatic dependency resolution
This commit is contained in:
@@ -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
|
||||
/// <inheritdoc />
|
||||
public override void Init()
|
||||
{
|
||||
MyFileSystem.ExePath = Path.Combine(Torch.GetManager<FilesystemManager>().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<FilesystemManager>().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);
|
||||
|
@@ -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<ChatManager>().MessageRecieved += HandleCommand;
|
||||
_chatManager.MessageRecieved += HandleCommand;
|
||||
}
|
||||
|
||||
public bool HasPermission(ulong steamId, Command command)
|
||||
|
@@ -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<INetworkManager>().RegisterNetworkHandler(new ChatIntercept(this));
|
||||
_networkManager.RegisterNetworkHandler(new ChatIntercept(this));
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
@@ -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
|
||||
}
|
||||
|
@@ -52,6 +52,13 @@ namespace Torch.Managers
|
||||
private static readonly Logger ChatLog = LogManager.GetLogger("Chat");
|
||||
private Dictionary<MyPlayer.PlayerId, MyPlayer> _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<ChatManager>().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<CommandManager>();
|
||||
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<NetworkManager>().RaiseEvent(addToGlobalHistoryMethod, character, steamId, steamId, message);
|
||||
_networkManager.RaiseEvent(addToGlobalHistoryMethod, character, steamId, steamId, message);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
|
||||
/// <inheritdoc />
|
||||
public IList<ITorchPlugin> Plugins { get; } = new ObservableList<ITorchPlugin>();
|
||||
@@ -87,9 +90,6 @@ namespace Torch.Managers
|
||||
/// <inheritdoc />
|
||||
public void LoadPlugins()
|
||||
{
|
||||
_updateManager = Torch.GetManager<UpdateManager>();
|
||||
var commands = Torch.GetManager<CommandManager>();
|
||||
|
||||
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)
|
||||
{
|
||||
|
@@ -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
|
||||
/// <inheritdoc />
|
||||
public override void Init()
|
||||
{
|
||||
_fsManager = Torch.GetManager<FilesystemManager>();
|
||||
CheckAndUpdateTorch();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user