init server before starting ui due to static ctors
This commit is contained in:
@@ -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)
|
||||||
{
|
{
|
||||||
|
@@ -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)
|
||||||
|
@@ -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();
|
||||||
|
Reference in New Issue
Block a user