init server before starting ui due to static ctors

This commit is contained in:
zznty
2023-06-29 14:20:23 +07:00
parent 3be524d169
commit 9900f92133
3 changed files with 43 additions and 7 deletions

View File

@@ -104,8 +104,8 @@ namespace Torch.Server
} }
#endif #endif
SpaceEngineersGame.SetupBasicGameInfo(); _server.Init();
SpaceEngineersGame.SetupPerGameSettings();
var uiThread = new Thread(() => var uiThread = new Thread(() =>
{ {
var ui = new TorchUI(_server); var ui = new TorchUI(_server);
@@ -118,8 +118,6 @@ namespace Torch.Server
uiThread.SetApartmentState(ApartmentState.STA); uiThread.SetApartmentState(ApartmentState.STA);
uiThread.Start(); uiThread.Start();
_server.Init();
if (Config.Autostart || Config.TempAutostart) if (Config.Autostart || Config.TempAutostart)
{ {

View File

@@ -7,6 +7,7 @@ using System.Linq;
using System.Reflection; using System.Reflection;
using System.Runtime.Serialization; using System.Runtime.Serialization;
using System.Text; using System.Text;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Havok; using Havok;
using NLog; using NLog;
@@ -35,7 +36,45 @@ namespace Torch.Server.Managers
{ {
private const string CONFIG_NAME = "SpaceEngineers-Dedicated.cfg"; private const string CONFIG_NAME = "SpaceEngineers-Dedicated.cfg";
public event Action<ConfigDedicatedViewModel> InstanceLoaded; private Action<ConfigDedicatedViewModel> _instanceLoaded;
/// <summary>
/// Gets or sets the instance loaded event.
/// </summary>
/// <remarks>
/// Called when the instance is loaded and immediately if subscribed after the instance is loaded.
/// </remarks>
public event Action<ConfigDedicatedViewModel> InstanceLoaded
{
add
{
var action = _instanceLoaded;
Action<ConfigDedicatedViewModel> action2;
do
{
action2 = action;
var action3 = (Action<ConfigDedicatedViewModel>)Delegate.Combine(action2, value);
action = Interlocked.CompareExchange(ref _instanceLoaded, action3, action2);
}
while (action != action2);
if (DedicatedConfig is not null)
value(DedicatedConfig);
}
remove
{
var action = _instanceLoaded;
Action<ConfigDedicatedViewModel> action2;
do
{
action2 = action;
var action3 = (Action<ConfigDedicatedViewModel>)Delegate.Remove(action2, value);
action = Interlocked.CompareExchange(ref _instanceLoaded, action3, action2);
}
while (action != action2);
}
}
public ConfigDedicatedViewModel DedicatedConfig { get; set; } public ConfigDedicatedViewModel DedicatedConfig { get; set; }
private static readonly Logger Log = LogManager.GetLogger(nameof(InstanceManager)); private static readonly Logger Log = LogManager.GetLogger(nameof(InstanceManager));
[Dependency] [Dependency]
@@ -102,7 +141,7 @@ namespace Torch.Server.Managers
SelectWorld(DedicatedConfig.LoadWorld ?? DedicatedConfig.Worlds.First().WorldPath, false); SelectWorld(DedicatedConfig.LoadWorld ?? DedicatedConfig.Worlds.First().WorldPath, false);
InstanceLoaded?.Invoke(DedicatedConfig); _instanceLoaded?.Invoke(DedicatedConfig);
} }
public void SelectCreatedWorld(string worldPath) public void SelectCreatedWorld(string worldPath)

View File

@@ -154,7 +154,6 @@ namespace Torch
Environment.SetEnvironmentVariable("SteamAppId", _appSteamId.ToString()); Environment.SetEnvironmentVariable("SteamAppId", _appSteamId.ToString());
MyVRageWindows.Init("SpaceEngineersDedicated", MySandboxGame.Log, null, false); MyVRageWindows.Init("SpaceEngineersDedicated", MySandboxGame.Log, null, false);
SpaceEngineersGame.SetupPerGameSettings(); SpaceEngineersGame.SetupPerGameSettings();
SpaceEngineersGame.SetupBasicGameInfo();
MySessionComponentExtDebug.ForceDisable = true; MySessionComponentExtDebug.ForceDisable = true;
MyPerGameSettings.SendLogToKeen = false; MyPerGameSettings.SendLogToKeen = false;
// SpaceEngineersGame.SetupAnalytics(); // SpaceEngineersGame.SetupAnalytics();