Esempio n. 1
0
        /// <summary>
        /// Imports a first generation mod pack
        /// </summary>
        /// <param name="modPackDirectory">The mod pack directory</param>
        private async Task ImportOldModPack()
        {
            Dispatcher.Invoke(() =>
            {
                var progress = new Progress <(int count, int total)>(prog =>
                {
                    LockedStatusLabel.Content = $"{UIStrings.Loading} ({prog.count}, {prog.total})";

                    if (prog.count == prog.total)
                    {
                        LockedStatusLabel.Content = UIStrings.Finalizing;
                    }
                });
            });

            var originalModPackData = await _texToolsModPack.GetOriginalModPackJsonData(_modPackDirectory);

            Dispatcher.Invoke(() =>
            {
                // There is nearly no point to doing this on another thread if it's going to be constantly
                // re-invoking the main thread with literally every line.
                foreach (var modsJson in originalModPackData)
                {
                    var jsonEntry = new ModsJson
                    {
                        Name         = modsJson.Name,
                        Category     = modsJson.Category.GetDisplayName(),
                        FullPath     = modsJson.FullPath,
                        DatFile      = modsJson.DatFile,
                        ModOffset    = modsJson.ModOffset,
                        ModSize      = modsJson.ModSize,
                        ModPackEntry = new ModPack
                        {
                            name    = Path.GetFileNameWithoutExtension(_modPackDirectory.FullName),
                            author  = "N/A",
                            version = "1.0.0"
                        }
                    };
                    JsonEntries.Add(jsonEntry);
                    Entries.Add(new SimpleModpackEntry(JsonEntries.Count - 1, this));
                }

                ModPackName.Content    = Path.GetFileNameWithoutExtension(_modPackDirectory.FullName);
                ModPackAuthor.Content  = "N/A";
                ModPackVersion.Content = "1.0.0";

                var cv = (CollectionView)CollectionViewSource.GetDefaultView(ModListView.ItemsSource);
                cv.SortDescriptions.Clear();
                cv.SortDescriptions.Add(new SortDescription(nameof(SimpleModpackEntry.ItemName), _lastDirection));

                long size = 0;
                for (int i = 0; i < JsonEntries.Count; i++)
                {
                    SelectedEntries.Add(i);
                    size += JsonEntries[i].ModSize;
                }
                ModListView.SelectAll();
                ModSize = size;
            });
        }
        private async void Menu_ModConverter_Click(object sender, RoutedEventArgs e)
        {
            var modPackDirectory = new DirectoryInfo(Settings.Default.ModPack_Directory);
            var openFileDialog   = new OpenFileDialog {
                InitialDirectory = modPackDirectory.FullName, Filter = "TexToolsModPack TTMP (*.ttmp;*.ttmp2)|*.ttmp;*.ttmp2"
            };

            if (openFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }
            var ttmpFileName = openFileDialog.FileName;
            var ttmp         = new TTMP(modPackDirectory, XivStrings.TexTools);

            (ModPackJson ModPackJson, Dictionary <string, Image> ImageDictionary)ttmpData;
            var progressController = await this.ShowProgressAsync(UIStrings.Mod_Converter, UIMessages.PleaseStandByMessage);

            var modsJsonList = await ttmp.GetOriginalModPackJsonData(new DirectoryInfo(ttmpFileName));

            if (modsJsonList == null)
            {
                ttmpData = await ttmp.GetModPackJsonData(new DirectoryInfo(ttmpFileName));
            }
            else
            {
                ttmpData = (ModPackJson : new ModPackJson(), ImageDictionary : new Dictionary <string, Image>());
                ttmpData.ModPackJson.Author         = "Mod Converter";
                ttmpData.ModPackJson.Version        = "1.0.0";
                ttmpData.ModPackJson.Name           = Path.GetFileNameWithoutExtension(ttmpFileName);
                ttmpData.ModPackJson.TTMPVersion    = "s";
                ttmpData.ModPackJson.SimpleModsList = new List <ModsJson>();
                foreach (var mod in modsJsonList)
                {
                    var modsJson = new ModsJson();
                    modsJson.Category     = mod.Category;
                    modsJson.DatFile      = mod.DatFile;
                    modsJson.FullPath     = mod.FullPath;
                    modsJson.ModOffset    = mod.ModOffset;
                    modsJson.ModPackEntry = null;
                    modsJson.ModSize      = mod.ModSize;
                    modsJson.Name         = mod.Name;
                    ttmpData.ModPackJson.SimpleModsList.Add(modsJson);
                }
            }
            var gameDir  = new DirectoryInfo(Settings.Default.FFXIV_Directory);
            var lang     = XivLanguages.GetXivLanguage(Settings.Default.Application_Language);
            var gear     = new Gear(gameDir, lang);
            var gearList = await gear.GetGearList();

            var modConverterView = new ModConverterView(gearList, ttmpFileName, ttmpData)
            {
                Owner = this, WindowStartupLocation = WindowStartupLocation.CenterOwner
            };
            await progressController.CloseAsync();

            modConverterView.ShowDialog();
        }
        /// <summary>
        /// Imports a first generation mod pack
        /// </summary>
        /// <param name="modPackDirectory">The mod pack directory</param>
        private void ImportOldModPack()
        {
            var modding = new Modding(_gameDirectory);

            var originalModPackData = _texToolsModPack.GetOriginalModPackJsonData(_modPackDirectory);

            foreach (var modsJson in originalModPackData)
            {
                var race   = GetRace(modsJson.FullPath);
                var number = GetNumber(modsJson.FullPath);
                var type   = GetType(modsJson.FullPath);
                var map    = GetMap(modsJson.FullPath);

                var active   = false;
                var isActive = modding.IsModEnabled(modsJson.FullPath, false);

                if (isActive == XivModStatus.Enabled)
                {
                    active = true;
                }

                _simpleDataList.Add(new SimpleModPackEntries
                {
                    Name      = modsJson.Name,
                    Category  = modsJson.Category,
                    Race      = race.ToString(),
                    Part      = type,
                    Num       = number,
                    Map       = map,
                    Active    = active,
                    JsonEntry = new ModsJson
                    {
                        Name      = modsJson.Name,
                        Category  = modsJson.Category,
                        FullPath  = modsJson.FullPath,
                        DatFile   = modsJson.DatFile,
                        ModOffset = modsJson.ModOffset,
                        ModSize   = modsJson.ModSize
                    }
                });
            }

            ModPackName.Content    = "N/A";
            ModPackAuthor.Content  = "N/A";
            ModPackVersion.Content = "N/A";

            _simpleDataList.Sort();

            ModListView.ItemsSource = new ObservableCollection <SimpleModPackEntries>(_simpleDataList);

            ModListView.SelectAll();
        }
        private async void Menu_ModConverter_Click(object sender, RoutedEventArgs e)
        {
            var modPackDirectory = new DirectoryInfo(Settings.Default.ModPack_Directory);
            var openFileDialog   = new OpenFileDialog {
                InitialDirectory = modPackDirectory.FullName, Filter = "TexToolsModPack TTMP (*.ttmp;*.ttmp2)|*.ttmp;*.ttmp2"
            };

            if (openFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }
            var ttmpFileName = openFileDialog.FileName;
            var ttmp         = new TTMP(modPackDirectory, XivStrings.TexTools);

            (ModPackJson ModPackJson, Dictionary <string, Image> ImageDictionary)ttmpData;
            var progressController = await this.ShowProgressAsync(UIStrings.Mod_Converter, UIMessages.PleaseStandByMessage);

            var modsJsonList = await ttmp.GetOriginalModPackJsonData(new DirectoryInfo(ttmpFileName));

            if (modsJsonList == null)
            {
                ttmpData = await ttmp.GetModPackJsonData(new DirectoryInfo(ttmpFileName));
            }
            else
            {
                ttmpData = (ModPackJson : new ModPackJson(), ImageDictionary : new Dictionary <string, Image>());
                ttmpData.ModPackJson.Author         = "Mod Converter";
                ttmpData.ModPackJson.Version        = "1.0.0";
                ttmpData.ModPackJson.Name           = Path.GetFileNameWithoutExtension(ttmpFileName);
                ttmpData.ModPackJson.TTMPVersion    = "s";
                ttmpData.ModPackJson.SimpleModsList = new List <ModsJson>();
                foreach (var mod in modsJsonList)
                {
                    var modsJson = new ModsJson();
                    modsJson.Category     = mod.Category;
                    modsJson.DatFile      = mod.DatFile;
                    modsJson.FullPath     = mod.FullPath;
                    modsJson.ModOffset    = mod.ModOffset;
                    modsJson.ModPackEntry = null;
                    modsJson.ModSize      = mod.ModSize;
                    modsJson.Name         = mod.Name;
                    ttmpData.ModPackJson.SimpleModsList.Add(modsJson);
                }
            }
            var categorys = ItemTreeView.ItemsSource as ObservableCollection <Category>;
            var list      = new List <xivModdingFramework.Items.Interfaces.IItem>();
            var ctgs1     = categorys[0];

            foreach (var ctgs2 in ctgs1.Categories)
            {
                if (ctgs2.Item != null)
                {
                    list.Add(ctgs2.Item);
                    continue;
                }
                foreach (var ctgs3 in ctgs2.Categories)
                {
                    if (ctgs3.Item != null)
                    {
                        list.Add(ctgs3.Item);
                    }
                }
            }
            var modConverterView = new ModConverterView(list, ttmpFileName, ttmpData)
            {
                Owner = this, WindowStartupLocation = WindowStartupLocation.CenterOwner
            };
            await progressController.CloseAsync();

            modConverterView.ShowDialog();
        }