internal static void WriteCampaignToSave(ref TabPage Page, string SaveName) { using (var CampaignWriter = new BinaryWriter(File.Open(SaveName, FileMode.Open, FileAccess.Write))) { var CurrentStory = 0; foreach (var GroupBox in Page.Controls.OfType <GroupBox>().Reverse()) { foreach (var CheckBoxList in GroupBox.Controls.OfType <CheckedListBox>()) { CampaignWriter.BaseStream.Position = StoryLengths[CurrentStory].Start; var CurrentLevel = 0; do { if (CurrentLevel > StoryLengths[CurrentStory].Missions) { break; } if (SkipOffset.Any(Offset => CampaignWriter.BaseStream.Position == Offset)) { CampaignWriter.BaseStream.Position += 0x18; continue; } if (CheckBoxList.GetItemChecked(CurrentLevel)) { CampaignWriter.Write(new byte[] { 0x3, 0x0, 0x0, 0x0, 0x3 }); CampaignWriter.Write(new byte[19]); } else { CampaignWriter.Write(new byte[24]); } CurrentLevel++; } while (CampaignWriter.BaseStream.Position <= StoryLengths[CurrentStory].End); CurrentStory++; } } } }