// Update Campaign file private void btnUpdate_Click(object sender, RoutedEventArgs e) { _campaignNew = new Campaign(_blfLocation); // Update Current Map Name/Descrption Language Selection _campaign.HaloCampaign.MapNames[cbLanguages.SelectedIndex] = txtMapName.Text; _campaign.HaloCampaign.MapDescriptions[cbLanguages.SelectedIndex] = txtMapDesc.Text; if (MapIDsError()) return; // Update Map IDs UpdateMapIDs(); // Update Unlock Bytes UpdateUnlockBytes(); // Copy changes to new file _campaignNew.HaloCampaign = _campaign.HaloCampaign; // Write all changes to file _campaignNew.UpdateCampaign(); Close(); MetroMessageBox.Show("Save Successful", "Your Campaign has been saved."); App.AssemblyStorage.AssemblySettings.HomeWindow.ExternalTabClose(_tab); }
public void LoadCampaign() { try { // Just a lazy way to validate the BLF file _blf = new PureBLF(_blfLocation); if (_blf.BLFChunks[1].ChunkMagic != "cmpn") throw new Exception("The selected Campaign BLF is not a valid Campaign BLF file."); _blf.Close(); _campaign = new Campaign(_blfLocation); Dispatcher.Invoke(new Action(delegate { // Add BLF Info paneBLFInfo.Children.Insert(0, new MapHeaderEntry("BLF Length:", "0x" + _campaign.Stream.Length.ToString("X"))); paneBLFInfo.Children.Insert(1, new MapHeaderEntry("BLF Chunks:", _blf.BLFChunks.Count.ToString(CultureInfo.InvariantCulture))); // Load Languages LoadLanguages(); // Load Map IDs LoadMapIDs(); // Load Unlock Bytes LoadUnlockBytes(); // Update UI _startEditing = true; cbLanguages.SelectedIndex = 0; if (App.AssemblyStorage.AssemblySettings.StartpageHideOnLaunch) App.AssemblyStorage.AssemblySettings.HomeWindow.ExternalTabClose(Home.TabGenre.StartPage); RecentFiles.AddNewEntry(new FileInfo(_blfLocation).Name, _blfLocation, "Campaign", Settings.RecentFileType.Campaign); Close(); })); } catch (Exception ex) { Dispatcher.Invoke(new Action(delegate { MetroMessageBox.Show("Unable to open Campaign", ex.Message); App.AssemblyStorage.AssemblySettings.HomeWindow.ExternalTabClose(_tab); Close(); })); } }