Пример #1
0
        //for assets files in bundles
        //public ModMakerDialog(BundleWorkspace workspace) : this()
        //{
        //
        //}

        private void BuildTreeAssets()
        {
            builtTree = false;

            affectedBundles = CreateTreeItem("Affected bundles");
            affectedFiles   = CreateTreeItem("Affected assets files");

            treeView.Items = new List <TreeViewItem>()
            {
                affectedBundles, affectedFiles
            };

            string rootPath = boxBaseFolder.Text;

            filesItems = new ObservableCollection <ModMakerTreeFileInfo>();
            fileToTvi  = new Dictionary <string, ModMakerTreeFileInfo>();

            foreach (var newAsset in assetWs.NewAssets)
            {
                string file = newAsset.Key.fileName;
                if (!fileToTvi.ContainsKey(file))
                {
                    ModMakerTreeFileInfo newFileItem = new ModMakerTreeFileInfo(file, rootPath);
                    filesItems.Add(newFileItem);
                    fileToTvi.Add(file, newFileItem);
                }

                ModMakerTreeFileInfo fileItem = fileToTvi[file];

                var obsItems = fileItem.Replacers;
                obsItems.Add(new ModMakerTreeReplacerInfo(newAsset.Key, newAsset.Value));
            }

            affectedFiles.Items = filesItems;

            builtTree = true;
        }
Пример #2
0
        private async void BtnImport_Click(object?sender, Avalonia.Interactivity.RoutedEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filters = new List <FileDialogFilter>()
            {
                new FileDialogFilter()
                {
                    Name = "UABE Mod Installer Package", Extensions = new List <string>()
                    {
                        "emip"
                    }
                }
            };

            string[] fileList = await ofd.ShowAsync(this);

            if (fileList.Length == 0)
            {
                return;
            }

            string emipPath = fileList[0];

            if (emipPath != null && emipPath != string.Empty)
            {
                OpenFolderDialog ofdBase = new OpenFolderDialog();
                ofdBase.Title = "Select base folder";

                string rootPath = await ofdBase.ShowAsync(this);

                if (rootPath != null && rootPath != string.Empty)
                {
                    InstallerPackageFile impEmip = new InstallerPackageFile();

                    if (importedEmipStream != null && importedEmipStream.CanRead)
                    {
                        importedEmipStream.Close();
                    }

                    importedEmipStream = File.OpenRead(emipPath);
                    AssetsFileReader r = new AssetsFileReader(importedEmipStream);
                    impEmip.Read(r);

                    boxModName.Text = impEmip.modName;
                    boxCredits.Text = impEmip.modCreators;
                    boxDesc.Text    = impEmip.modDescription;

                    foreach (InstallerPackageAssetsDesc affectedFile in impEmip.affectedFiles)
                    {
                        if (!affectedFile.isBundle)
                        {
                            string file = Path.GetFullPath(affectedFile.path, rootPath);
                            if (!fileToTvi.ContainsKey(file))
                            {
                                ModMakerTreeFileInfo newFileItem = new ModMakerTreeFileInfo(file, rootPath);
                                filesItems.Add(newFileItem);
                                fileToTvi.Add(file, newFileItem);
                            }

                            ModMakerTreeFileInfo fileItem = fileToTvi[file];

                            foreach (AssetsReplacer replacer in affectedFile.replacers)
                            {
                                AssetID assetId = new AssetID(file, replacer.GetPathID());

                                var obsItems = fileItem.Replacers;
                                obsItems.Add(new ModMakerTreeReplacerInfo(assetId, replacer));
                            }
                        }
                    }
                }
            }
        }