Пример #1
0
        public static NodeDataList Get(Type type)
        {
            type.ThrowIfNullArgument(nameof(type));

            if (dict.TryGetValue(type, out NodeDataList list))
            {
                return(list);
            }

            try
            {
                Debug.Log($"Generating field configuration for type {type}");
                NodeDataListBuilder builder = new NodeDataListBuilder(type);
                list = builder.CreateList();
            }
            catch (Exception e)
            {
                Exception e2 = new Exception($"Fatal exception while generating field configuration for type {type}", e);
                FatalErrorHandler.HandleFatalError(e2);
                throw e2;
            }

            dict[type] = list;
            return(list);
        }
Пример #2
0
        private static void UnhandledExceptionFancyHandler(Exception e)
        {
            if (System.Windows.Application.Current?.Windows.OfType <Window>().Any(x => x.IsLoaded && x.IsVisible) != true)
            {
                throw new Exception();
            }

            FatalErrorHandler.OnFatalError(e);
        }
Пример #3
0
        public void Run(Action mainWindowIsReadyCallback)
        {
            ((Action)(async() => {
                EventManager.RegisterClassHandler(typeof(Window), FrameworkElement.LoadedEvent, new RoutedEventHandler(OnWindowLoaded));
                ContentInstallationManager.Instance.TaskAdded += OnTaskAdded;

                try {
                    if ((!Superintendent.Instance.IsReady || AcRootDirectorySelector.IsReviewNeeded()) &&
                        new AcRootDirectorySelector().ShowDialog() != true)
                    {
                        Logging.Write("AC root selection cancelled, exit");
                        return;
                    }

                    if (!AppArguments.Values.Any() ||
                        await ArgumentsHandler.ProcessArguments(AppArguments.Values, false) != ArgumentsHandler.ShowMainWindow.No)
                    {
                        _showMainWindow = true;
                    }

                    if (_additionalProcessing > 0)
                    {
                        Logging.Write("Waiting for extra workers…");
                        await WaitForInProgress();
                        Logging.Write("Done");
                    }

                    if (_showMainWindow && !_mainWindowShown)
                    {
                        Logging.Write("Main window…");
                        _mainWindowShown = true;
                        mainWindowIsReadyCallback?.Invoke();
                        await(_mainWindowTask ?? ShowMainWindowAsync());
                        Logging.Write("Main window closed");
                    }

                    Logging.Write("Waiting for extra windows to close…");

                    do
                    {
                        await Task.Delay(100);
                    } while (await WaitForWindowToClose(_application.Windows.OfType <DpiAwareWindow>().FirstOrDefault(x => x.IsVisible)));

                    Logging.Write("No more windows");
                } catch (Exception e) {
                    FatalErrorHandler.OnFatalError(e);
                    Logging.Error(e);
                } finally {
                    Logging.Write("Shutdown…");
                    _timer.Stop();
                    _application.Shutdown();
                    System.Windows.Forms.Application.Exit();
                }

                Logging.Write("Main loop is finished");
            })).InvokeInMainThreadAsync();
        }
Пример #4
0
 public void ShowCloseReason(ServerConnectionCloseReasonEvent e, Node node)
 {
     if ("DISABLED".Equals(e.Reason))
     {
         FatalErrorHandler.ShowFatalErrorScreen("clientlocal/ui/screen/error/technicalwork");
     }
     else if ("OVERLOADED".Equals(e.Reason))
     {
         FatalErrorHandler.ShowFatalErrorScreen("clientlocal/ui/screen/error/serveroverloaded");
     }
 }
Пример #5
0
        private void Awake()
        {
            try
            {
                TooltipHelper.EnsurePrefabs();
            }
            catch (Exception ex)
            {
                FatalErrorHandler.HandleFatalError(ex);
                Debug.LogException(ex);
            }

            Destroy(gameObject);
        }
Пример #6
0
        private void Awake()
        {
            try
            {
                TooltipHelper.EnsurePrefabs();
            }
            catch (Exception ex)
            {
                FatalErrorHandler.HandleFatalError(ex);
                Log.error(ex, ex.Message);
            }

            Destroy(gameObject);
        }
Пример #7
0
        // Initialization code. Don't use any Avalonia, third-party APIs or any
        // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
        // yet and stuff might break.
        public static void Main(string[] args)
        {
            FixCurrentDirectory();
            var app = BuildAvaloniaApp();

            try
            {
                app.StartWithClassicDesktopLifetime(args);
            }
            catch (Exception e)
            {
                FatalErrorHandler.ExceptionOccured(e);
            }
        }
Пример #8
0
        private void Awake()
        {
            Debug.Log("[B9PartSwitch.UI.PrefabManagerInstant] awake");

            try
            {
                TooltipHelper.EnsurePrefabs();
            }
            catch (Exception ex)
            {
                FatalErrorHandler.HandleFatalError(ex);
                Debug.LogException(ex);
            }

            Destroy(gameObject);
        }
Пример #9
0
        private void Start()
        {
            if (HighLogic.LoadedSceneIsEditor || HighLogic.LoadedSceneIsFlight)
            {
                try
                {
                    UIPartActionSubtypeSelector.EnsurePrefab();
                }
                catch (Exception ex)
                {
                    FatalErrorHandler.HandleFatalError(ex);
                    Debug.LogException(ex);
                }
            }

            Destroy(gameObject);
        }
Пример #10
0
        // Initialization code. Don't use any Avalonia, third-party APIs or any
        // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
        // yet and stuff might break.
        public static void Main(string[] args)
        {
            FixCurrentDirectory();
            if (ProgramBootstrap.TryLaunchUpdaterIfNeeded())
            {
                return;
            }
            System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
            var app = BuildAvaloniaApp();

            try
            {
                app.StartWithClassicDesktopLifetime(args);
            }
            catch (Exception e)
            {
                FatalErrorHandler.ExceptionOccured(e);
            }
        }
Пример #11
0
        // Initialization code. Don't use any Avalonia, third-party APIs or any
        // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
        // yet and stuff might break.
        public static void Main(string[] args)
        {
            FixCurrentDirectory();
            if (ProgramBootstrap.TryLaunchUpdaterIfNeeded())
            {
                return;
            }
            System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
            SafeFireAndForgetExtensions.SetDefaultExceptionHandling(Console.WriteLine);
            GlobalApplication.Arguments.Init(args);
            var app = BuildAvaloniaApp();

            try
            {
                app.StartWithClassicDesktopLifetime(args);
            }
            catch (Exception e)
            {
                FatalErrorHandler.ExceptionOccured(e);
            }
        }
Пример #12
0
        public void Load(ConfigNode node, OperationContext context)
        {
            node.ThrowIfNullArgument(nameof(node));
            context.ThrowIfNullArgument(nameof(context));

            try
            {
                foreach (INodeDataField field in fields)
                {
                    field.Load(node, context);
                }
            }
            catch (HandledFatalException)
            {
                throw;
            }
            catch (Exception e)
            {
                FatalErrorHandler.HandleFatalError(new FatalException($"Fatal exception while attempting to load fields for {context.Subject?.GetType()}", e));
            }
        }
Пример #13
0
 public void ShowErrorScreen(InvalidLocalConfigurationErrorEvent e, Node node)
 {
     FatalErrorHandler.ShowBrokenConfigsErrorScreen();
 }
Пример #14
0
 public void ShowErrorScreen(ClientUpdateErrorEvent e)
 {
     FatalErrorHandler.ShowFatalErrorScreen("clientlocal/ui/screen/error/clientupdateerror");
 }
Пример #15
0
 public void ShowErrorScreen(NotEnoughDiskSpaceForCacheErrorEvent e, Node node)
 {
     FatalErrorHandler.ShowFatalErrorScreen("clientlocal/ui/screen/error/notenoughdiskspaceforcache");
 }
Пример #16
0
 public void ShowErrorScreen(ServerDisconnectedEvent e, Node node)
 {
     FatalErrorHandler.ShowFatalErrorScreen("clientlocal/ui/screen/error/serverdisconnected");
 }
Пример #17
0
 public void ShowErrorScreen(GameDataLoadErrorEvent e, Node node)
 {
     FatalErrorHandler.ShowFatalErrorScreen("clientlocal/ui/screen/error/game_data_load_error");
 }
Пример #18
0
 public void ShowErrorScreen(DisconectUserFromBlockedCountryEvent e, Node node)
 {
     FatalErrorHandler.ShowFatalErrorScreen("clientlocal/ui/screen/error/notavailableinregion");
 }
Пример #19
0
 public void ShowErrorScreen(TechnicalWorkEvent e, Node node)
 {
     FatalErrorHandler.ShowFatalErrorScreen("clientlocal/ui/screen/error/technicalwork");
 }
Пример #20
0
 public void ShowErrorScreen(InvalidGameDataErrorEvent e, Node node)
 {
     FatalErrorHandler.ShowFatalErrorScreen("clientlocal/ui/screen/error/invalid_game_data");
 }
Пример #21
0
        internal IntPtr AllocNativeInitParams(IntPtr aCallbackPtr)
        {
            IntPtr nativeParams = OhNetInitParamsCreate();

            if (LogOutput != null)
            {
                OhNetInitParamsSetLogOutput(nativeParams, LogOutput.Callback, LogOutput.Handle());
            }
            if (FatalErrorHandler != null)
            {
                OhNetInitParamsSetFatalErrorHandler(nativeParams, FatalErrorHandler.Callback, FatalErrorHandler.Handle());
            }
            if (AsyncBeginHandler != null)
            {
                OhNetInitParamsSetAsyncBeginHandler(nativeParams, AsyncBeginHandler.Callback, AsyncBeginHandler.Handle());
            }
            if (AsyncEndHandler != null)
            {
                OhNetInitParamsSetAsyncEndHandler(nativeParams, AsyncEndHandler.Callback, AsyncEndHandler.Handle());
            }
            if (AsyncErrorHandler != null)
            {
                OhNetInitParamsSetAsyncErrorHandler(nativeParams, AsyncErrorHandler.Callback, AsyncErrorHandler.Handle());
            }
            if (SubnetListChangedListener != null)
            {
                OhNetInitParamsSetSubnetListChangedListener(nativeParams, SubnetListChangedListener.Callback, SubnetListChangedListener.Handle());
            }
            if (SubnetAddedListener != null)
            {
                OhNetInitParamsSetSubnetAddedListener(nativeParams, SubnetAddedListener.Callback, SubnetAddedListener.Handle());
            }
            if (SubnetRemovedListener != null)
            {
                OhNetInitParamsSetSubnetRemovedListener(nativeParams, SubnetRemovedListener.Callback, SubnetRemovedListener.Handle());
            }
            if (NetworkAdapterChangedListener != null)
            {
                OhNetInitParamsSetNetworkAdapterChangedListener(nativeParams, NetworkAdapterChangedListener.Callback, NetworkAdapterChangedListener.Handle());
            }
            OhNetInitParamsSetTcpConnectTimeout(nativeParams, TcpConnectTimeoutMs);
            OhNetInitParamsSetMsearchTime(nativeParams, MsearchTimeSecs);
            OhNetInitParamsSetMsearchTtl(nativeParams, MsearchTtl);
            OhNetInitParamsSetNumEventSessionThreads(nativeParams, NumEventSessionThreads);
            OhNetInitParamsSetNumXmlFetcherThreads(nativeParams, NumXmlFetcherThreads);
            OhNetInitParamsSetNumActionInvokerThreads(nativeParams, NumActionInvokerThreads);
            OhNetInitParamsSetNumInvocations(nativeParams, NumInvocations);
            OhNetInitParamsSetNumSubscriberThreads(nativeParams, NumSubscriberThreads);
            OhNetInitParamsSetSubscriptionDuration(nativeParams, SubscriptionDurationSecs);
            OhNetInitParamsSetPendingSubscriptionTimeout(nativeParams, PendingSubscriptionTimeoutMs);
            OhNetInitParamsSetDvMaxUpdateTime(nativeParams, DvMaxUpdateTimeSecs);
            OhNetInitParamsSetDvNumServerThreads(nativeParams, DvNumServerThreads);
            OhNetInitParamsSetDvNumPublisherThreads(nativeParams, DvNumPublisherThreads);
            OhNetInitParamsSetDvNumWebSocketThreads(nativeParams, DvNumWebSocketThreads);
            OhNetInitParamsSetCpUpnpEventServerPort(nativeParams, CpUpnpEventPort);
            OhNetInitParamsSetDvUpnpServerPort(nativeParams, DvUpnpWebServerPort);
            OhNetInitParamsSetDvWebSocketPort(nativeParams, DvWebSocketPort);
            if (DvEnableBonjour)
            {
                OhNetInitParamsSetDvEnableBonjour(nativeParams);
            }
            if (UseLoopbackNetworkAdapter)
            {
                OhNetInitParamsSetUseLoopbackNetworkAdapter(nativeParams);
            }
            return(nativeParams);
        }
Пример #22
0
 public void ShowErrorScreen(NoServerConnectionEvent e, Node node)
 {
     FatalErrorHandler.ShowFatalErrorScreen("clientlocal/ui/screen/error/noserverconnection");
 }