Files
Torch/Torch.Server/Managers/ConsoleCommandManager.cs
zznty b76af4a8b0
Some checks failed
Release / Get Version (push) Successful in 8s
Release / Build and Publish Nuget (push) Successful in 3m35s
Release / Build and Publish Package (push) Failing after 4m22s
feature: Add console command listener for nogui scenarios
2024-05-15 21:16:22 +07:00

55 lines
1.3 KiB
C#

using NLog;
using System;
using System.Threading;
using Torch.API;
using Torch.API.Managers;
using Torch.Commands;
using Torch.Managers;
namespace Torch.Server.Managers
{
internal class ConsoleCommandManager(ITorchBase torchInstance) : Manager(torchInstance)
{
private static readonly Logger Log = LogManager.GetCurrentClassLogger();
[Dependency]
private CommandManager _commandManager;
public override void Attach()
{
if (!Torch.Config.NoGui)
return;
Log.Info("Starting console command listener");
new Thread(CommandListener)
{
Name = "Console Command Listener",
IsBackground = true,
}.Start();
}
private void CommandListener()
{
while (Torch.GameState < TorchGameState.Unloading)
{
var line = Console.ReadLine();
if (line == null)
break;
Torch.Invoke(() =>
{
if (!_commandManager.HandleCommandFromServer(line, LogResponse))
Log.Error("Invalid input '{0}'", line);
});
}
}
private void LogResponse(TorchChatMessage message)
{
Log.Info(message.Message);
}
}
}