Client should work again

™️
This commit is contained in:
Westin Miller
2017-12-10 02:46:21 -08:00
parent d2adbecc44
commit 383c9b9a33
2 changed files with 41 additions and 51 deletions

View File

@@ -18,6 +18,7 @@ namespace Torch.Client
{ {
public const string SpaceEngineersBinaries = "Bin64"; public const string SpaceEngineersBinaries = "Bin64";
private static string _spaceEngInstallAlias = null; private static string _spaceEngInstallAlias = null;
public static string SpaceEngineersInstallAlias public static string SpaceEngineersInstallAlias
{ {
get get
@@ -26,7 +27,8 @@ namespace Torch.Client
if (_spaceEngInstallAlias == null) if (_spaceEngInstallAlias == null)
{ {
// ReSharper disable once AssignNullToNotNullAttribute // ReSharper disable once AssignNullToNotNullAttribute
_spaceEngInstallAlias = Path.Combine(Path.GetDirectoryName(typeof(Program).Assembly.Location), "SpaceEngineersAlias"); _spaceEngInstallAlias = Path.Combine(Path.GetDirectoryName(typeof(Program).Assembly.Location),
"SpaceEngineersAlias");
} }
return _spaceEngInstallAlias; return _spaceEngInstallAlias;
} }
@@ -52,16 +54,20 @@ namespace Torch.Client
{ {
AllocConsole(); AllocConsole();
#endif #endif
if (!TorchLauncher.IsTorchWrapped())
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
// Early config: Resolve SE install directory. // Early config: Resolve SE install directory.
if (!File.Exists(Path.Combine(SpaceEngineersInstallAlias, _spaceEngineersVerifyFile))) if (!File.Exists(Path.Combine(SpaceEngineersInstallAlias, _spaceEngineersVerifyFile)))
SetupSpaceEngInstallAlias(); SetupSpaceEngInstallAlias();
using (new TorchAssemblyResolver(Path.Combine(SpaceEngineersInstallAlias, SpaceEngineersBinaries))) TorchLauncher.Launch(Assembly.GetEntryAssembly().FullName, args,
{ Path.Combine(SpaceEngineersInstallAlias, SpaceEngineersBinaries));
RunClient(); return;
} }
RunClient();
#if DEBUG #if DEBUG
} }
finally finally
@@ -77,7 +83,8 @@ namespace Torch.Client
// TODO look at Steam/config/Config.VDF? Has alternate directories. // TODO look at Steam/config/Config.VDF? Has alternate directories.
var steamDir = var steamDir =
Microsoft.Win32.Registry.GetValue("HKEY_CURRENT_USER\\SOFTWARE\\Valve\\Steam", "SteamPath", null) as string; Microsoft.Win32.Registry.GetValue("HKEY_CURRENT_USER\\SOFTWARE\\Valve\\Steam", "SteamPath",
null) as string;
if (steamDir != null) if (steamDir != null)
{ {
spaceEngineersDirectory = Path.Combine(steamDir, _steamSpaceEngineersDirectory); spaceEngineersDirectory = Path.Combine(steamDir, _steamSpaceEngineersDirectory);
@@ -97,7 +104,8 @@ namespace Torch.Client
{ {
if (dialog.ShowDialog() != DialogResult.OK) if (dialog.ShowDialog() != DialogResult.OK)
{ {
var ex = new FileNotFoundException("Unable to find the Space Engineers install directory, aborting"); var ex = new FileNotFoundException(
"Unable to find the Space Engineers install directory, aborting");
_log.Fatal(ex); _log.Fatal(ex);
LogManager.Flush(); LogManager.Flush();
throw ex; throw ex;
@@ -113,7 +121,8 @@ namespace Torch.Client
} }
if (!JunctionLink(SpaceEngineersInstallAlias, spaceEngineersDirectory)) if (!JunctionLink(SpaceEngineersInstallAlias, spaceEngineersDirectory))
{ {
var ex = new IOException($"Failed to create junction link {SpaceEngineersInstallAlias} => {spaceEngineersDirectory}. Aborting."); var ex = new IOException(
$"Failed to create junction link {SpaceEngineersInstallAlias} => {spaceEngineersDirectory}. Aborting.");
_log.Fatal(ex); _log.Fatal(ex);
LogManager.Flush(); LogManager.Flush();
throw ex; throw ex;
@@ -121,7 +130,8 @@ namespace Torch.Client
string junctionVerify = Path.Combine(SpaceEngineersInstallAlias, _spaceEngineersVerifyFile); string junctionVerify = Path.Combine(SpaceEngineersInstallAlias, _spaceEngineersVerifyFile);
if (!File.Exists(junctionVerify)) if (!File.Exists(junctionVerify))
{ {
var ex = new FileNotFoundException($"Junction link is not working. File {junctionVerify} does not exist"); var ex = new FileNotFoundException(
$"Junction link is not working. File {junctionVerify} does not exist");
_log.Fatal(ex); _log.Fatal(ex);
LogManager.Flush(); LogManager.Flush();
throw ex; throw ex;

View File

@@ -26,9 +26,6 @@ namespace Torch.Client
{ {
public class TorchClient : TorchBase, ITorchClient public class TorchClient : TorchBase, ITorchClient
{ {
private MyCommonProgramStartup _startup;
private IMyRender _renderer;
protected override uint SteamAppId => 244850; protected override uint SteamAppId => 244850;
protected override string SteamAppName => "SpaceEngineers"; protected override string SteamAppName => "SpaceEngineers";
@@ -49,29 +46,13 @@ namespace Torch.Client
Directory.SetCurrentDirectory(Program.SpaceEngineersInstallAlias); Directory.SetCurrentDirectory(Program.SpaceEngineersInstallAlias);
MyFileSystem.ExePath = Path.Combine(Program.SpaceEngineersInstallAlias, Program.SpaceEngineersBinaries); MyFileSystem.ExePath = Path.Combine(Program.SpaceEngineersInstallAlias, Program.SpaceEngineersBinaries);
Log.Info("Initializing Torch Client"); Log.Info("Initializing Torch Client");
_startup = new MyCommonProgramStartup(RunArgs); Config.InstancePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
SpaceEngineersGame.SetupBasicGameInfo(); SteamAppName);
SpaceEngineersGame.SetupPerGameSettings();
if (_startup.PerformReporting())
throw new InvalidOperationException("Torch client won't launch when started in error reporting mode");
_startup.PerformAutoconnect();
if (!_startup.CheckSingleInstance())
throw new InvalidOperationException("Only one instance of Space Engineers can be running at a time.");
var appDataPath = _startup.GetAppDataPath();
Config.InstancePath = appDataPath;
base.Init(); base.Init();
OverrideMenus(); OverrideMenus();
SetRenderWindowTitle($"Space Engineers v{GameVersion} with Torch v{TorchVersion}"); SetRenderWindowTitle($"Space Engineers v{GameVersion} with Torch v{TorchVersion}");
} }
public override void Destroy()
{
base.Destroy();
_startup.DetectSharpDxLeaksAfterRun();
}
private void OverrideMenus() private void OverrideMenus()
{ {
var credits = new MyCreditsDepartment("Torch Developed By") var credits = new MyCreditsDepartment("Torch Developed By")
@@ -96,12 +77,11 @@ namespace Torch.Client
BindingFlags.Instance | BindingFlags.NonPublic); BindingFlags.Instance | BindingFlags.NonPublic);
if (renderWindowField == null) if (renderWindowField == null)
return; return;
var window = renderWindowField.GetValue(MySandboxGame.Static.GameRenderComponent.RenderThread) as System.Windows.Forms.Form; var window =
renderWindowField.GetValue(MySandboxGame.Static.GameRenderComponent.RenderThread) as
System.Windows.Forms.Form;
if (window != null) if (window != null)
renderThread.Invoke(() => renderThread.Invoke(() => { window.Text = title; });
{
window.Text = title;
});
} }
public override void Restart() public override void Restart()