public ConfigWindow(MainWindow _main) { InitializeComponent(); main = _main; if (main.modPath != null) { OutputTextbox.Text = main.modPath; } if (main.p4gPath != null) { P4GTextbox.Text = main.p4gPath; } if (main.reloadedPath != null) { ReloadedTextbox.Text = main.reloadedPath; } KeepSND.IsChecked = main.emptySND; TblPatchBox.IsChecked = main.tbl; pacUnpacker = new PacUnpacker(); Console.WriteLine("[INFO] Config launched"); }
public MainWindow() { InitializeComponent(); DataContext = this; outputter.WriteEvent += consoleWriter_WriteEvent; outputter.WriteLineEvent += consoleWriter_WriteLineEvent; Console.SetOut(outputter); binMerger = new binMerge(); tblPatcher = new tblPatch(); pacUnpacker = new PacUnpacker(); DisplayedPackages = new ObservableCollection <DisplayedMetadata>(); PackageList = new ObservableCollection <Package>(); // Retrieve initial thumbnail from embedded resource Assembly asm = Assembly.GetExecutingAssembly(); Stream iconStream = asm.GetManifestResourceStream("AemulusModManager.Preview.png"); bitmap = new BitmapImage(); bitmap.BeginInit(); bitmap.StreamSource = iconStream; bitmap.EndInit(); Preview.Source = bitmap; // Initialize config config = new Config(); // Initialize xml serializers xs = new XmlSerializer(typeof(Config)); xsp = new XmlSerializer(typeof(Metadata)); Console.WriteLine("[INFO] Initializing packages from Config.xml"); // Load in Config if it exists if (File.Exists(@"Config.xml")) { try { using (FileStream streamWriter = File.Open(@"Config.xml", FileMode.Open)) { // Call the Deserialize method and cast to the object type. config = (Config)xs.Deserialize(streamWriter); reloadedPath = config.reloadedPath; p4gPath = config.exePath; modPath = config.modDir; emptySND = config.emptySND; // Compatibility with old Config.xml List <Package> temp = config.package.ToList(); foreach (var p in temp) { if (p.name != null && p.path == null) { p.path = p.name; p.name = null; } } PackageList = new ObservableCollection <Package>(temp); tbl = config.tbl; } } catch (Exception ex) { Console.WriteLine($"Invalid Config.xml ({ex.Message})"); } // Create displayed metadata from packages in PackageList and their respective Package.xml's foreach (var package in PackageList) { string xml = $@"Packages\{package.path}\Package.xml"; Metadata m; DisplayedMetadata dm = new DisplayedMetadata(); try { if (File.Exists(xml)) { m = new Metadata(); try { using (FileStream streamWriter = File.Open(xml, FileMode.Open)) { m = (Metadata)xsp.Deserialize(streamWriter); dm.name = m.name; dm.id = m.id; dm.author = m.author; dm.version = m.version; dm.link = m.link; dm.description = m.description; } } catch (Exception ex) { Console.WriteLine($"[ERROR] Invalid Package.xml for {package.path} ({ex.Message})"); } } dm.path = package.path; dm.enabled = package.enabled; DisplayedPackages.Add(dm); } catch (Exception ex) { Console.WriteLine($"[ERROR] Invalid Package.xml for package {package.id} ({ex.Message})"); continue; } } ModGrid.ItemsSource = DisplayedPackages; } if (modPath == null) { MergeButton.IsEnabled = false; } if (config.modDir != null) { modPath = config.modDir; } // Create Packages directory if it doesn't exist if (!Directory.Exists("Packages")) { Directory.CreateDirectory("Packages"); } if (!Directory.Exists("Original")) { Directory.CreateDirectory("Original"); } Refresh(); updateConfig(); // Check if Original Folder is unpacked if (!Directory.EnumerateFileSystemEntries("Original").Any()) { Console.WriteLine("[WARNING] Aemulus can't find your Vanilla files in the Original folder."); Console.WriteLine("Please click the Config button and select \"Unpack data00004.pac\" before building."); } }