private void FindCareers()
        {
            careerListView.BeginUpdate();

            careerListView.Items.Clear();

            if (Directory.Exists(FilePath))
            {
                foreach (var careerPath in Directory
                         .GetDirectories(FilePath)
                         .OrderByDescending(Directory.GetLastWriteTime))
                {
                    var careerFiles = Directory.GetFiles(careerPath, "*.pcsav");
                    if (careerFiles.Length == 0)
                    {
                        continue;
                    }

                    SFXSaveGameFile saveFile = null;
                    foreach (var careerFile in careerFiles)
                    {
                        try
                        {
                            using (var input = File.OpenRead(careerFile))
                            {
                                saveFile = SFXSaveGameFile.Read(input);
                            }

                            break;
                        }
                        catch (Exception)
                        {
                            saveFile = null;
                        }
                    }

                    // attempt to parse the directory name
                    string        name;
                    OriginType    originType;
                    NotorietyType reputationType;
                    string        className;
                    DateTime      date;

                    if (ParseCareerName(
                            Path.GetFileName(careerPath),
                            out name,
                            out originType,
                            out reputationType,
                            out className,
                            out date))
                    {
                        var classType = PlayerClass.Invalid;

                        if (saveFile != null)
                        {
                            classType = GetPlayerClassFromStringId(saveFile.Player.ClassFriendlyName);
                        }

                        if (classType == PlayerClass.Invalid && className != null)
                        {
                            classType = GetPlayerClassFromLocalizedName(className);
                        }

                        var displayName = "";
                        displayName += (saveFile == null ? name : saveFile.Player.FirstName) + "\n";
                        displayName += string.Format("{0}, {1}",
                                                     classType,
                                                     date.ToString("d"));
                        //displayName += date.ToString();

                        careerListView.Items.Add(new ListViewItem
                        {
                            Text = displayName,
                            // ReSharper disable LocalizableElement
                            ImageKey = "Class_" + classType,
                            // ReSharper restore LocalizableElement
                            Tag = careerPath,
                        });
                    }
                    else
                    {
                        careerListView.Items.Add(new ListViewItem
                        {
                            Text = Path.GetFileName(careerPath),
                            // ReSharper disable LocalizableElement
                            ImageKey = "Class_Unknown",
                            // ReSharper restore LocalizableElement
                            Tag = careerPath,
                        });
                    }
                }
            }

            if (FileMode == PickerMode.Save)
            {
                if (careerListView.Items.Count > 0)
                {
                    var item = new ListViewItem
                    {
                        // ReSharper disable LocalizableElement
                        Name = "New Career",
                        // ReSharper restore LocalizableElement
                        Text = Localization.SavePicker_NewCareerLabel,
                        // ReSharper disable LocalizableElement
                        ImageKey = "New",
                        // ReSharper restore LocalizableElement
                    };
                    careerListView.Items.Insert(1, item);
                }
                else
                {
                    var item = new ListViewItem
                    {
                        // ReSharper disable LocalizableElement
                        Name = "New Career",
                        // ReSharper restore LocalizableElement
                        Text = Localization.SavePicker_NewCareerLabel,
                        // ReSharper disable LocalizableElement
                        ImageKey = "New",
                        // ReSharper restore LocalizableElement
                    };
                    careerListView.Items.Add(item);
                }
            }

            careerListView.EndUpdate();

            if (careerListView.Items.Count > 0)
            {
                careerListView.Items[0].Selected = true;
            }
            else
            {
                FindSaves(null);
            }
        }
        private void FindSaves(string savePath)
        {
            saveListView.BeginUpdate();

            saveListView.Items.Clear();
            if (FileMode == PickerMode.Save)
            {
                var item = new ListViewItem
                {
                    // ReSharper disable LocalizableElement
                    Name = "New Save",
                    // ReSharper restore LocalizableElement
                    Text = Localization.SavePicker_NewSaveLabel,
                    // ReSharper disable LocalizableElement
                    ImageKey = "New",
                    // ReSharper restore LocalizableElement
                };
                saveListView.Items.Add(item);
            }

            _HighestSaveNumber = 1;
            if (savePath != null)
            {
                if (Directory.Exists(FilePath))
                {
                    foreach (var inputPath in Directory
                             .GetFiles(savePath, "*.pcsav")
                             .OrderByDescending(Directory.GetLastWriteTime))
                    {
                        var baseName = Path.GetFileNameWithoutExtension(inputPath);
                        if (baseName != null &&
                            baseName.StartsWith("Save_") &&
                            baseName.Length == 9)
                        {
                            int saveNumber;
                            if (int.TryParse(baseName.Substring(5).TrimStart('0'), out saveNumber))
                            {
                                _HighestSaveNumber = Math.Max(saveNumber, _HighestSaveNumber);
                            }
                        }

                        SFXSaveGameFile saveFile = null;
                        try
                        {
                            using (var input = File.OpenRead(inputPath))
                            {
                                saveFile = SFXSaveGameFile.Read(input);
                            }
                        }
                        catch (Exception)
                        {
                            saveFile = null;
                        }

                        var item = new ListViewItem
                        {
                            Text     = Path.GetFileName(inputPath),
                            ImageKey = "",
                            Tag      = inputPath,
                        };
                        saveListView.Items.Add(item);
                    }
                }
            }

            saveListView.EndUpdate();

            if (saveListView.Items.Count > 0)
            {
                saveListView.Items[0].Selected = true;
            }
        }
Beispiel #3
0
        private void FindSaves(string savePath)
        {
            saveListView.BeginUpdate();

            saveListView.Items.Clear();

            if (FileMode == PickerMode.Save)
            {
                var item = new ListViewItem
                {
                    Name     = @"New Save",
                    Text     = Localization.SavePicker_NewSaveLabel,
                    ImageKey = @"New",
                };

                saveListView.Items.Add(item);
            }

            _highestSaveNumber = 1;

            if (savePath != null)
            {
                if (Directory.Exists(FilePath))
                {
                    foreach (var inputPath in Directory
                             .GetFiles(savePath, "*.pcsav")
                             .OrderByDescending(Directory.GetLastWriteTime))
                    {
                        var baseName = Path.GetFileNameWithoutExtension(inputPath);
                        if (baseName != null &&
                            baseName.StartsWith("Save_") &&
                            baseName.Length == 9)
                        {
                            int saveNumber;

                            if (int.TryParse(baseName.Substring(5).TrimStart('0'), out saveNumber))
                            {
                                _highestSaveNumber = Math.Max(saveNumber, _highestSaveNumber);
                            }
                        }

                        try
                        {
                            using (var input = File.OpenRead(inputPath))
                            {
                                SFXSaveGameFile.Read(input);
                            }
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message, Localization.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }

                        var item = new ListViewItem
                        {
                            Text     = Path.GetFileName(inputPath),
                            ImageKey = "",
                            Tag      = inputPath,
                        };

                        saveListView.Items.Add(item);
                    }
                }
            }

            saveListView.EndUpdate();

            if (saveListView.Items.Count > 0)
            {
                saveListView.Items[0].Selected = true;
            }
        }