Beispiel #1
0
        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++;
                    }
                }
            }
        }