예제 #1
0
        private async void LoadDataWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            await progressDialog.CloseAsync();

            if (e.Error != null)
            {
                await DialogManager.ShowMessageAsync(Application.Current.MainWindow as MetroWindow, ErrorTitle, e.Error.Message, MessageDialogStyle.Affirmative, new MetroDialogSettings { AffirmativeButtonText = ErrorConfirm, AnimateShow = true, AnimateHide = true });

                ExtMethods.Log($"LoadDataWorker | {e.Error.Message}");
            }
            else
            {
                while (workerNotifications.Count > 0)
                {
                    await DialogManager.ShowMessageAsync(Application.Current.MainWindow as MetroWindow, workerNotifications[0].NotificationTitle, workerNotifications[0].NotificationDescription, MessageDialogStyle.Affirmative, new MetroDialogSettings { AffirmativeButtonText = ErrorConfirm, AnimateShow = true, AnimateHide = true });

                    workerNotifications.RemoveAt(0);
                }
            }
        }
예제 #2
0
        public static MainData Load()
        {
            if (!Directory.Exists(LangPath))
            {
                Directory.CreateDirectory(LangPath);
            }
            if (!File.Exists(Path.Combine(LangPath, "en.json")))
            {
                File.WriteAllText(Path.Combine(LangPath, "en.json"), JsonConvert.SerializeObject(EN, Formatting.Indented));
            }
            if (!File.Exists(Path.Combine(LangPath, "ru.json")))
            {
                File.WriteAllText(Path.Combine(LangPath, "ru.json"), JsonConvert.SerializeObject(RU, Formatting.Indented));
            }
            if (!File.Exists(Path.Combine(LangPath, "fr.json")))
            {
                File.WriteAllText(Path.Combine(LangPath, "fr.json"), JsonConvert.SerializeObject(FR, Formatting.Indented));
            }
            if (!File.Exists(Path.Combine(LangPath, "ge.json")))
            {
                File.WriteAllText(Path.Combine(LangPath, "ge.json"), JsonConvert.SerializeObject(GE, Formatting.Indented));
            }
            PEOptions eOptions = CreateOptions();

            if (string.IsNullOrEmpty(eOptions.Language))
            {
                eOptions.Language = ExtMethods.GetWindowsCulture();
            }
            Dictionary <string, string> Locale = JsonConvert.DeserializeObject <Dictionary <string, string> >(File.ReadAllText(Path.Combine(LangPath, eOptions.Language + ".json")));
            Dictionary <string, string> Eth    = new Dictionary <string, string>();

            switch (eOptions.Language)
            {
            case "en":
                Eth = EN;
                break;

            case "ge":
                Eth = GE;
                break;

            case "ru":
                Eth = RU;
                break;

            case "fr":
                Eth = FR;
                break;
            }
            bool needReSave = false;

            foreach (var lc in Eth)
            {
                if (!Locale.ContainsKey(lc.Key))
                {
                    Locale.Add(lc.Key, lc.Value);
                    needReSave = true;
                }
            }
            if (needReSave)
            {
                File.WriteAllText(Path.Combine(LangPath, $"{eOptions.Language}.json"), JsonConvert.SerializeObject(Locale, Formatting.Indented));
            }
            MainData lang = new MainData {
                locale = Locale, options = eOptions, characterInventory = new CharacterInventory {
                    Rubles = 0, Euros = 0, Dollars = 0
                }
            };

            try
            {
                if (!string.IsNullOrEmpty(eOptions.EftServerPath) && !ExtMethods.PathIsEftServerBase(eOptions))
                {
                    eOptions.EftServerPath = null;
                }
                if (!string.IsNullOrEmpty(eOptions.DefaultProfile) && !string.IsNullOrEmpty(eOptions.EftServerPath) && !File.Exists(Path.Combine(eOptions.EftServerPath, eOptions.DirsList["dir_profiles"], eOptions.DefaultProfile + ".json")))
                {
                    eOptions.DefaultProfile = null;
                }
                if (!string.IsNullOrEmpty(eOptions.EftServerPath) && ExtMethods.ServerHaveProfiles(eOptions))
                {
                    lang.Profiles = Directory.GetFiles(Path.Combine(eOptions.EftServerPath, eOptions.DirsList["dir_profiles"])).Select(x => Path.GetFileNameWithoutExtension(x)).ToList();
                    if (lang.Profiles.Count > 0 && (string.IsNullOrEmpty(eOptions.DefaultProfile) || !lang.Profiles.Contains(eOptions.DefaultProfile)))
                    {
                        eOptions.DefaultProfile = lang.Profiles.FirstOrDefault();
                    }
                }
                if (!string.IsNullOrEmpty(eOptions.EftServerPath) && !string.IsNullOrEmpty(eOptions.DefaultProfile))
                {
                    var Pr = JsonConvert.DeserializeObject <Profile>(File.ReadAllText(Path.Combine(eOptions.EftServerPath, eOptions.DirsList["dir_profiles"], eOptions.DefaultProfile + ".json")));
                    lang.Character = Pr.characters?.pmc;
                    if (lang.Character == null)
                    {
                        lang.Character = new Character();
                    }
                    lang.Character.Suits         = Pr.suits?.ToList();
                    lang.Character.WeaponPresets = Pr.weaponbuilds;
                }
                if (lang.Character != null && lang.Character.Info != null && lang.Character.Inventory != null && lang.Character.TraderStandings != null && lang.Character.Skills != null)
                {
                    lang.ProfileHash = JsonConvert.SerializeObject(lang.Character).ToString().GetHashCode();
                }
            }
            catch (Exception ex)
            {
                DialogManager.ShowMessageAsync(Application.Current.MainWindow as MetroWindow, lang.locale["invalid_server_location_caption"], $"{ex.GetType().Name}: {ex.Message}", MessageDialogStyle.Affirmative, new MetroDialogSettings {
                    AffirmativeButtonText = lang.locale["saveprofiledialog_ok"], AnimateShow = true, AnimateHide = true
                });
                ExtMethods.Log($"Error loading profile: {ex.GetType().Name}: {ex.Message}{Environment.NewLine}{ex.StackTrace}");
            }
            return(lang);
        }