public new void Show()
        {
            #region THEME SETUP
            Themes.Theme theme = ThemeManager.Themes.ContainsKey(AppConfig.Instance.currentTheme ?? "") ? ThemeManager.Themes[AppConfig.Instance.currentTheme] : ThemeManager.Themes["Metro/LightGreen"];
            ThemeManager.Apply(theme);
            #endregion

            ImportAssetsForm iaf = new ImportAssetsForm();
            iaf.ShowDialog();

            Width     *= AppConfig.Instance.scale;
            Height    *= AppConfig.Instance.scale;
            MinWidth  *= AppConfig.Instance.scale;
            MinHeight *= AppConfig.Instance.scale;
            #region OPEN_WITH
            string[] args = Environment.GetCommandLineArgs();
            App.Logger.Log($"Command Line Args: {string.Join(";", args)}");
            if (args?.Length >= 2)
            {
                for (int k = 1; k < args.Length; k++)
                {
                    try
                    {
                        CurrentProject.file = args[k];
                        if (CurrentProject.Load(new NPCProject()))
                        {
                            App.NotificationManager.Clear();
                            App.NotificationManager.Notify(LocalizationManager.Current.Notification["Project_Loaded"]);
                            AddToRecentList(CurrentProject.file);
                            break;
                        }
                        else
                        {
                            CurrentProject.file = "";
                        }
                    }
                    catch { }
                }
            }
            #endregion
            #region APPAREL SETUP
            faceImageIndex.Maximum  = faceAmount - 1;
            beardImageIndex.Maximum = beardAmount - 1;
            hairImageIndex.Maximum  = haircutAmount - 1;
            //(CharacterEditor as CharacterEditor).FaceImageIndex_Changed(null, new RoutedPropertyChangedEventArgs<double?>(0, 0));
            //(CharacterEditor as CharacterEditor).HairImageIndex_Changed(null, new RoutedPropertyChangedEventArgs<double?>(0, 0));
            //(CharacterEditor as CharacterEditor).BeardImageIndex_Changed(null, new RoutedPropertyChangedEventArgs<double?>(0, 0));
            #endregion
            RefreshRecentList();
            #region AFTER UPDATE
            try
            {
                string updaterPath = Path.Combine(AppConfig.Directory, "updater.exe");
                if (File.Exists(updaterPath))
                {
                    OpenPatchNotes();
                    File.Delete(updaterPath);
                    App.Logger.Log("Updater deleted.");
                }
            }
            catch { App.Logger.Log("Can't delete updater.", ELogLevel.WARNING); }
            #endregion
            #region AUTOSAVE INIT
            if (AppConfig.Instance.autosaveOption > 0)
            {
                AutosaveTimer = new DispatcherTimer();
                switch (AppConfig.Instance.autosaveOption)
                {
                case 1:
                    AutosaveTimer.Interval = new TimeSpan(0, 5, 0);
                    break;

                case 2:
                    AutosaveTimer.Interval = new TimeSpan(0, 10, 0);
                    break;

                case 3:
                    AutosaveTimer.Interval = new TimeSpan(0, 15, 0);
                    break;

                case 4:
                    AutosaveTimer.Interval = new TimeSpan(0, 30, 0);
                    break;

                case 5:
                    AutosaveTimer.Interval = new TimeSpan(1, 0, 0);
                    break;
                }
                AutosaveTimer.Tick += AutosaveTimer_Tick;
                AutosaveTimer.Start();
            }
            #endregion
            #region AppUpdate
            AppUpdateTimer = new DispatcherTimer
            {
                Interval = new TimeSpan(0, 0, 1)
            };
            AppUpdateTimer.Tick += AppUpdateTimer_Tick;
            AppUpdateTimer.Start();
            #endregion
            #region VERSION SPECIFIC CODE
#if !DEBUG
            debugOverlayText.Visibility = Visibility.Collapsed;
#endif
#if PREVIEW
            previewOverlayText.Visibility = Visibility.Visible;
#endif
            #endregion
            #region DISCORD
            DiscordManager = new DiscordRPC.DiscordManager(1000)
            {
                descriptive = AppConfig.Instance.enableDiscord
            };
            DiscordManager?.Initialize();
            MainWindowViewModel.TabControl_SelectionChanged(mainTabControl, null);
            #endregion
            #region ENABLE EXPERIMENTAL
            if (AppConfig.Instance.experimentalFeatures)
            {
            }
            #endregion
            #region CONTEXT MENUS

            #endregion
            HolidayManager.Check();
            if (App.Package.Guides.Count > 0)
            {
                foreach (KeyValuePair <string, string> guide in App.Package.Guides)
                {
                    guidesMenuItem.Items.Add(new MenuItem()
                    {
                        Header  = guide.Key,
                        Command = new BaseCommand(() =>
                        {
                            System.Diagnostics.Process.Start(guide.Value);
                        })
                    });
                }
            }
            else
            {
                guidesMenuItem.IsEnabled = false;
            }

            if (string.IsNullOrEmpty(App.Package.GetTemplatesURL))
            {
                getTemplatesMenuItem.IsEnabled = false;
            }
            else
            {
                getTemplatesMenuItem.Click += (sender, e) =>
                {
                    Process.Start(App.Package.GetTemplatesURL);
                };
            }

            if (App.Package.FeedbackLinks.Length > 0)
            {
                foreach (Data.AppPackage.FeedbackLink link in App.Package.FeedbackLinks)
                {
                    MenuItem newItem = new MenuItem()
                    {
                        Header  = link.Localize ? LocalizationManager.Current.Interface[link.Text] : link.Text,
                        Command = new BaseCommand(() =>
                        {
                            System.Diagnostics.Process.Start(link.URL);
                        })
                    };
                    if (!string.IsNullOrEmpty(link.Icon))
                    {
                        try
                        {
                            newItem.Icon = new Image()
                            {
                                Width  = 16,
                                Height = 16,
                                Source = new BitmapImage(new Uri(link.Icon))
                            };
                        }
                        catch (Exception ex)
                        {
                            App.Logger.LogException("Could not load feedback icon", ex: ex);
                        }
                    }
                    commMenuItem.Items.Add(newItem);
                }
            }
            else
            {
                commMenuItem.IsEnabled = false;
            }

            try
            {
                foreach (Data.AppPackage.Notification n in App.Package.Notifications)
                {
                    string text = n.Localize ? LocalizationManager.Current.Notification.Translate(n.Text) : n.Text;

                    List <Button> _buttons = new List <Button>();

                    foreach (Data.AppPackage.Notification.Button b in n.Buttons)
                    {
                        string bText = b.Localize ? LocalizationManager.Current.Notification.Translate(b.Text) : b.Text;

                        Button elem = new Button()
                        {
                            Content = new TextBlock()
                            {
                                Text = bText
                            }
                        };
                        elem.Click += (_, __) => b.GetButtonAction().Invoke();

                        _buttons.Add(elem);
                    }

                    App.NotificationManager.Notify(text, buttons: _buttons.ToArray());
                }
            }
            catch (Exception ex)
            {
                App.Logger.LogException("Could not display notification(s)", ex: ex);
            }

            if (App.Package.Patrons.Length > 0)
            {
                var pList = App.Package.Patrons.ToList();
                pList.Shuffle();
                string pjoined = string.Join(", ", pList.Take(5));

                App.NotificationManager.Notify(LocalizationManager.Current.Notification.Translate("StartUp_Patreon_Patrons", pjoined));
            }

            ConsoleLogger.StartWaitForInput();

            Loaded += (sender, e) =>
            {
                var scr = ScreenHelper.GetCurrentScreen(this);

                var sz = scr.Size;

                if (sz.Width < MinWidth || sz.Height < MinHeight)
                {
                    var res = MessageBox.Show(LocalizationManager.Current.Interface["Warning_Scale"], Title, MessageBoxButton.YesNo);

                    if (res == MessageBoxResult.Yes)
                    {
                        MinWidth  /= AppConfig.Instance.scale;
                        MinHeight /= AppConfig.Instance.scale;
                        Width     /= AppConfig.Instance.scale;
                        Height    /= AppConfig.Instance.scale;

                        this.Left = (sz.Width - Width) / 2 + sz.Left;
                        this.Top  = (sz.Height - Height) / 2 + sz.Top;

                        Application.Current.Resources["Scale"] = 1.0;

                        AppConfig.Instance.scale = 1.0;

                        AppConfig.Instance.Save();
                    }
                }

                if (GameAssetManager.HasImportedAssets)
                {
                    if (!File.Exists(Path.Combine(AppConfig.Instance.unturnedDir, "Extras", "Icons", "Bag_MRE_81.png")))
                    {
                        MessageBox.Show(LocalizationManager.Current.Notification["StartUp_IconsNotGenerated"], Title, MessageBoxButton.OK);
                    }
                }
            };

            base.Show();
        }
 public static void Apply(Theme t)
 {
     CurrentTheme?.Remove();
     t.Apply();
     CurrentTheme = t;
 }