void OnLinkClicked(MyGuiControlBase sender, string url) { Debug.Assert(sender == m_textNewsEntry); m_stringCache.Clear(); m_stringCache.AppendFormat(MyTexts.GetString(MyCommonTexts.MessageBoxTextOpenBrowser), url); MyGuiSandbox.AddScreen(MyGuiSandbox.CreateMessageBox( buttonType : MyMessageBoxButtonsType.YES_NO, messageCaption : MyTexts.Get(MyCommonTexts.MessageBoxCaptionPleaseConfirm), messageText : m_stringCache, callback : delegate(MyGuiScreenMessageBox.ResultEnum retval) { if (retval == MyGuiScreenMessageBox.ResultEnum.YES) { if (!MyBrowserHelper.OpenInternetBrowser(url)) { StringBuilder sbMessage = new StringBuilder(); sbMessage.AppendFormat(MyTexts.GetString(MyCommonTexts.TitleFailedToStartInternetBrowser), url); StringBuilder sbTitle = MyTexts.Get(MyCommonTexts.TitleFailedToStartInternetBrowser); MyGuiSandbox.AddScreen(MyGuiSandbox.CreateMessageBox( messageText: sbMessage, messageCaption: sbTitle)); } } })); }
public static void OpenExternalBrowser(string url) { if (!MyBrowserHelper.OpenInternetBrowser(url)) { StringBuilder text = MyTexts.Get(MySpaceTexts.TitleFailedToStartInternetBrowser); MyGuiSandbox.AddScreen(MyGuiSandbox.CreateMessageBox(messageText: text, messageCaption: text)); } }
void LocalizationWebButtonClicked(MyGuiControlButton obj) { MyGuiSandbox.AddScreen(MyGuiSandbox.CreateMessageBox( buttonType : MyMessageBoxButtonsType.YES_NO, messageCaption : MyTexts.Get(MyCommonTexts.MessageBoxCaptionPleaseConfirm), messageText : new StringBuilder().AppendFormat(MyTexts.GetString(MyCommonTexts.MessageBoxTextOpenBrowser), MyPerGameSettings.GameWebUrl), callback : delegate(MyGuiScreenMessageBox.ResultEnum retval) { if (retval == MyGuiScreenMessageBox.ResultEnum.YES) { if (!MyBrowserHelper.OpenInternetBrowser(MyPerGameSettings.LocalizationWebUrl)) { StringBuilder sbMessage = new StringBuilder(); sbMessage.AppendFormat(MyTexts.GetString(MyCommonTexts.TitleFailedToStartInternetBrowser), MyPerGameSettings.LocalizationWebUrl); StringBuilder sbTitle = MyTexts.Get(MyCommonTexts.TitleFailedToStartInternetBrowser); MyGuiSandbox.AddScreen(MyGuiSandbox.CreateMessageBox( messageText: sbMessage, messageCaption: sbTitle)); } } })); }
public bool Check64Bit() { #if !XB1 // This won't crash with BadFormatExpection when 64-bit game started as 32-bit process, it will show message // Will uncomment when it's possible to test it if (!MyEnvironment.Is64BitProcess && AssemblyExtensions.TryGetArchitecture("SteamSDK.dll") == ProcessorArchitecture.Amd64) { string text = GameInfo.GameName + " cannot be started in 64-bit mode, "; text += "because 64-bit version of .NET framework is not available or is broken." + MyEnvironment.NewLine + MyEnvironment.NewLine; text += "Do you want to open website with more information about this particular issue?" + MyEnvironment.NewLine + MyEnvironment.NewLine; text += "Press Yes to open website with info" + MyEnvironment.NewLine; text += "Press No to run in 32-bit mode (smaller potential of " + GameInfo.GameName + "!)" + MyEnvironment.NewLine; text += "Press Cancel to close this dialog"; var result = Sandbox.MyMessageBox.Show(IntPtr.Zero, text, ".NET Framework 64-bit error", MessageBoxOptions.YesNoCancel); if (result == MessageBoxResult.Yes) { MyBrowserHelper.OpenInternetBrowser("http://www.spaceengineersgame.com/64-bit-start-up-issue.html"); } else if (result == MessageBoxResult.No) { var entry = Assembly.GetEntryAssembly().Location; string x86Exe = Path.Combine(new FileInfo(entry).Directory.Parent.FullName, "Bin", Path.GetFileName(entry)); ProcessStartInfo pi = new ProcessStartInfo(); pi.FileName = x86Exe; pi.WorkingDirectory = Path.GetDirectoryName(x86Exe); pi.Arguments = "-fallback"; pi.UseShellExecute = false; pi.WindowStyle = ProcessWindowStyle.Normal; var p = Process.Start(pi); } return(false); } #endif // !XB1 return(true); }
// Main method static void Main(string[] args) { if (args.Contains("-report")) { MyErrorReporter.Report(args[1], args[2], "SE", MyErrorReporter.APP_ERROR_MESSAGE); return; } if (MyFakes.ENABLE_CONNECT_COMMAND_LINE && args.Contains("+connect")) { int index = args.ToList().IndexOf("+connect"); if ((index + 1) < args.Length) { if (IPAddressExtensions.TryParseEndpoint(args[index + 1], out MySandboxGame.ConnectToServer)) { Console.WriteLine("Space engineers " + MyFinalBuildConstants.APP_VERSION_STRING); Console.WriteLine("Obfuscated: " + MyObfuscation.Enabled + ", Platform: " + (Environment.Is64BitProcess ? " 64-bit" : " 32-bit")); Console.WriteLine("Connecting to: " + args[index + 1]); } } } MySingleProgramInstance spi = new MySingleProgramInstance(MyFileSystem.MainAssemblyName); if (spi.IsSingleInstance == false) { MyErrorReporter.ReportAppAlreadyRunning("Space Engineers"); return; } MyInitializer.InvokeBeforeRun( AppId, "SpaceEngineers", Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SpaceEngineers")); MyInitializer.InitCheckSum(); if (!args.Contains("-nosplash")) { InitSplashScreen(); } // This won't crash with BadFormatExpection when 64-bit game started as 32-bit process, it will show message // Will uncomment when it's possible to test it if (!Environment.Is64BitProcess && AssemblyExtensions.TryGetArchitecture("SteamSDK.dll") == ProcessorArchitecture.Amd64) { string text = "Space Engineers cannot be started in 64-bit mode, "; text += "because 64-bit version of .NET framework is not available or is broken." + Environment.NewLine + Environment.NewLine; text += "Do you want to open website with more information about this particular issue?" + Environment.NewLine + Environment.NewLine; text += "Press Yes to open website with info" + Environment.NewLine; text += "Press No to run in 32-bit mode (smaller potential of Space Engineers!)" + Environment.NewLine; text += "Press Cancel to close this dialog"; var result = Sandbox.MyMessageBox.Show(IntPtr.Zero, text, ".NET Framework 64-bit error", Sandbox.MessageBoxOptions.YesNoCancel); if (result == MessageBoxResult.Yes) { MyBrowserHelper.OpenInternetBrowser("http://www.spaceengineersgame.com/64-bit-start-up-issue.html"); } else if (result == MessageBoxResult.No) { var entry = Assembly.GetEntryAssembly().Location; string x86Exe = Path.Combine(new FileInfo(entry).Directory.Parent.FullName, "Bin", Path.GetFileName(entry)); ProcessStartInfo pi = new ProcessStartInfo(); pi.FileName = x86Exe; pi.WorkingDirectory = Path.GetDirectoryName(x86Exe); pi.Arguments = "-fallback"; pi.UseShellExecute = false; pi.WindowStyle = ProcessWindowStyle.Normal; var p = Process.Start(pi); } return; } if (MyFakes.DETECT_LEAKS) { //Slow down SharpDX.Configuration.EnableObjectTracking = true; //SharpDX.Diagnostics.ObjectTracker.OnObjectCreated += new SharpDX.Diagnostics.ObjectTracker.ComObjectDelegate(OnResourceCreated); //SharpDX.Diagnostics.ObjectTracker.OnObjectReleased += new SharpDX.Diagnostics.ObjectTracker.ComObjectDelegate(OnResourceDestroyed); //SharpDX.Diagnostics.ObjectTracker.OnObjectTrack += new SharpDX.Diagnostics.ObjectTracker.ComObjectDelegate(OnObjectTrack); //SharpDX.Diagnostics.ObjectTracker.OnObjectUnTrack += new SharpDX.Diagnostics.ObjectTracker.ComObjectDelegate(OnObjectUnTrack); } RunInternal(args); if (MyFakes.DETECT_LEAKS) { var o = SharpDX.Diagnostics.ObjectTracker.FindActiveObjects(); System.Diagnostics.Debug.Assert(o.Count == 0, "Unreleased DX objects!"); Console.WriteLine(SharpDX.Diagnostics.ObjectTracker.ReportActiveObjects()); } #if PROFILING MyPerformanceTimer.WriteToLog(); #endif MyInitializer.InvokeAfterRun(); }