From 3a02eacd59193f4e2056b395d3e934762d55fc1e Mon Sep 17 00:00:00 2001 From: bocchanskyy Date: Tue, 12 Dec 2023 01:33:18 +0400 Subject: [PATCH 1/3] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D1=83=D1=8E=206?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ExtentionDrawingBulldozer.cs | 48 ++++++++ .../FormBulldozerCollection.Designer.cs | 60 ++++++++++ .../Bulldozer/FormBulldozerCollection.cs | 49 +++++++- .../Bulldozer/FormBulldozerCollection.resx | 9 ++ .../Generics/BulldozersGenericCollection.cs | 6 +- .../Generics/BulldozersGenericStorage.cs | 105 +++++++++++++++++- 6 files changed, 269 insertions(+), 8 deletions(-) create mode 100644 Bulldozer/Bulldozer/DrawingObjects/ExtentionDrawingBulldozer.cs diff --git a/Bulldozer/Bulldozer/DrawingObjects/ExtentionDrawingBulldozer.cs b/Bulldozer/Bulldozer/DrawingObjects/ExtentionDrawingBulldozer.cs new file mode 100644 index 0000000..6e30586 --- /dev/null +++ b/Bulldozer/Bulldozer/DrawingObjects/ExtentionDrawingBulldozer.cs @@ -0,0 +1,48 @@ +using Bulldozer.Entities; + +namespace Bulldozer.DrawingObjects +{ + public static class ExtentionDrawingBulldozer + { + public static DrawingBulldozer? CreateDrawingBulldozer(this string info, char separatorForObject, int width, int height) + { + string[] strs = info.Split(separatorForObject); + if (strs.Length == 4) + { + return new DrawingBulldozer(Convert.ToInt32(strs[0]), + Convert.ToInt32(strs[1]), Color.FromName(strs[2]), Color.FromName(strs[3]), width, height); + } + if (strs.Length == 7) + { + return new DrawingBulldozerUpgraded(Convert.ToInt32(strs[0]), + Convert.ToInt32(strs[1]), + Color.FromName(strs[2]), + Color.FromName(strs[3]), + Color.FromName(strs[4]), + Convert.ToBoolean(strs[5]), + Convert.ToBoolean(strs[6]), width, height); + } + return null; + } + /// + /// Получение данных для сохранения в файл + /// + /// Сохраняемый объект + /// Разделитель даннных + /// Строка с данными по объекту + public static string GetDataForSave(this DrawingBulldozer drawingBulldozer, char separatorForObject) + { + var bulldozer = drawingBulldozer.EntityBulldozer; + if (bulldozer == null) + { + return string.Empty; + } + var str = $"{bulldozer.Speed}{separatorForObject}{bulldozer.Weight}{separatorForObject}{bulldozer.BodyColor.Name}{separatorForObject}{bulldozer.AdditionalColor.Name}"; + if (bulldozer is not EntityBulldozerUpgraded bulldozerUpgraded) + { + return str; + } + return $"{str}{separatorForObject}{bulldozerUpgraded.DopColor.Name}{separatorForObject}{bulldozerUpgraded.Ripper}{separatorForObject}{bulldozerUpgraded.Blade}"; + } + } +} diff --git a/Bulldozer/Bulldozer/FormBulldozerCollection.Designer.cs b/Bulldozer/Bulldozer/FormBulldozerCollection.Designer.cs index a784a61..9ecba64 100644 --- a/Bulldozer/Bulldozer/FormBulldozerCollection.Designer.cs +++ b/Bulldozer/Bulldozer/FormBulldozerCollection.Designer.cs @@ -39,9 +39,16 @@ this.buttonUpdateColletion = new System.Windows.Forms.Button(); this.buttonDeleteBulldozer = new System.Windows.Forms.Button(); this.buttonAddBulldozer = new System.Windows.Forms.Button(); + this.openFileDialog = new System.Windows.Forms.OpenFileDialog(); + this.saveFileDialog = new System.Windows.Forms.SaveFileDialog(); + this.menuStrip = new System.Windows.Forms.MenuStrip(); + this.toolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.SaveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.LoadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxCollection)).BeginInit(); this.panelTools.SuspendLayout(); this.groupListBulldozersBox.SuspendLayout(); + this.menuStrip.SuspendLayout(); this.SuspendLayout(); // // pictureBoxCollection @@ -163,12 +170,56 @@ this.buttonAddBulldozer.UseVisualStyleBackColor = true; this.buttonAddBulldozer.Click += new System.EventHandler(this.buttonAddBulldozer_Click); // + // openFileDialog + // + this.openFileDialog.FileName = "openFileDialog"; + this.openFileDialog.Filter = "txt file | *.txt"; + // + // saveFileDialog + // + this.saveFileDialog.Filter = "txt file | *.txt"; + // + // menuStrip + // + this.menuStrip.ImageScalingSize = new System.Drawing.Size(20, 20); + this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem}); + this.menuStrip.Location = new System.Drawing.Point(0, 0); + this.menuStrip.Name = "menuStrip"; + this.menuStrip.Size = new System.Drawing.Size(1110, 28); + this.menuStrip.TabIndex = 2; + this.menuStrip.Text = "menuStrip"; + // + // toolStripMenuItem + // + this.toolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.SaveToolStripMenuItem, + this.LoadToolStripMenuItem}); + this.toolStripMenuItem.Name = "toolStripMenuItem"; + this.toolStripMenuItem.Size = new System.Drawing.Size(59, 24); + this.toolStripMenuItem.Text = "Файл"; + // + // SaveToolStripMenuItem + // + this.SaveToolStripMenuItem.Name = "SaveToolStripMenuItem"; + this.SaveToolStripMenuItem.Size = new System.Drawing.Size(224, 26); + this.SaveToolStripMenuItem.Text = "Сохранить"; + this.SaveToolStripMenuItem.Click += new System.EventHandler(this.SaveToolStripMenuItem_Click); + // + // LoadToolStripMenuItem + // + this.LoadToolStripMenuItem.Name = "LoadToolStripMenuItem"; + this.LoadToolStripMenuItem.Size = new System.Drawing.Size(224, 26); + this.LoadToolStripMenuItem.Text = "Загрузить"; + this.LoadToolStripMenuItem.Click += new System.EventHandler(this.LoadToolStripMenuItem_Click); + // // FormBulldozerCollection // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1110, 793); this.Controls.Add(this.panelTools); + this.Controls.Add(this.menuStrip); this.Controls.Add(this.pictureBoxCollection); this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); this.Name = "FormBulldozerCollection"; @@ -178,7 +229,10 @@ this.panelTools.PerformLayout(); this.groupListBulldozersBox.ResumeLayout(false); this.groupListBulldozersBox.PerformLayout(); + this.menuStrip.ResumeLayout(false); + this.menuStrip.PerformLayout(); this.ResumeLayout(false); + this.PerformLayout(); } @@ -195,5 +249,11 @@ private GroupBox groupListBulldozersBox; private Button buttonDeleteBulldozersList; private Button buttonAddBulldozersList; + private OpenFileDialog openFileDialog; + private SaveFileDialog saveFileDialog; + private MenuStrip menuStrip; + private ToolStripMenuItem toolStripMenuItem; + private ToolStripMenuItem SaveToolStripMenuItem; + private ToolStripMenuItem LoadToolStripMenuItem; } } \ No newline at end of file diff --git a/Bulldozer/Bulldozer/FormBulldozerCollection.cs b/Bulldozer/Bulldozer/FormBulldozerCollection.cs index f498020..38d1a6f 100644 --- a/Bulldozer/Bulldozer/FormBulldozerCollection.cs +++ b/Bulldozer/Bulldozer/FormBulldozerCollection.cs @@ -1,6 +1,7 @@ using Bulldozer.DrawingObjects; using Bulldozer.Generics; using Bulldozer.MovementStrategy; +using System.Windows.Forms; namespace Bulldozer @@ -12,7 +13,7 @@ namespace Bulldozer /// private readonly BulldozersGenericStorage _storage; - + public FormBulldozerCollection() { InitializeComponent(); @@ -90,13 +91,14 @@ namespace Bulldozer /// /// /// + private void buttonAddBulldozer_Click(object sender, EventArgs e) { if (listBoxBulldozerStorages.SelectedIndex == -1) { - MessageBox.Show("Выберите набор в списке.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; + MessageBox.Show("Выберите набор в списке.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; } var formBulldozerConfig = new FormBulldozerConfig(); formBulldozerConfig.AddEvent(AddBulldozer); @@ -176,5 +178,46 @@ namespace Bulldozer } pictureBoxCollection.Image = obj.ShowBulldozers(); } + + /// + /// Обработка нажатия "Сохранение" + /// + /// + /// + private void SaveToolStripMenuItem_Click(object sender, EventArgs e) + { + if (saveFileDialog.ShowDialog() == DialogResult.OK) + { + if (_storage.SaveData(saveFileDialog.FileName)) + { + MessageBox.Show("Сохранение прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else + { + MessageBox.Show("Не сохранилось", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + /// + /// Обработка нажатия "Загрузка" + /// + /// + /// + private void LoadToolStripMenuItem_Click(object sender, EventArgs e) + { + if (openFileDialog.ShowDialog() == DialogResult.OK) + { + if (_storage.LoadData(openFileDialog.FileName)) + { + MessageBox.Show("Загрузка прошла успешно!", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); + ReloadObjects(); + } + else + { + MessageBox.Show("Не загрузилось!", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + + } + } + } } } diff --git a/Bulldozer/Bulldozer/FormBulldozerCollection.resx b/Bulldozer/Bulldozer/FormBulldozerCollection.resx index f298a7b..860e1db 100644 --- a/Bulldozer/Bulldozer/FormBulldozerCollection.resx +++ b/Bulldozer/Bulldozer/FormBulldozerCollection.resx @@ -57,4 +57,13 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + + + 184, 17 + + + 338, 17 + \ No newline at end of file diff --git a/Bulldozer/Bulldozer/Generics/BulldozersGenericCollection.cs b/Bulldozer/Bulldozer/Generics/BulldozersGenericCollection.cs index 31c227c..4e6e5b9 100644 --- a/Bulldozer/Bulldozer/Generics/BulldozersGenericCollection.cs +++ b/Bulldozer/Bulldozer/Generics/BulldozersGenericCollection.cs @@ -7,6 +7,10 @@ namespace Bulldozer.Generics where T : DrawingBulldozer where U : IMoveableObject { + /// + /// Получение объектов коллекции + /// + public IEnumerable GetBulldozers => _collection.GetBulldozers(); /// /// Ширина окна прорисовки /// @@ -141,7 +145,7 @@ namespace Bulldozer.Generics return; } } - } + } } diff --git a/Bulldozer/Bulldozer/Generics/BulldozersGenericStorage.cs b/Bulldozer/Bulldozer/Generics/BulldozersGenericStorage.cs index 41934ac..f6c3a31 100644 --- a/Bulldozer/Bulldozer/Generics/BulldozersGenericStorage.cs +++ b/Bulldozer/Bulldozer/Generics/BulldozersGenericStorage.cs @@ -1,5 +1,6 @@ using Bulldozer.DrawingObjects; using Bulldozer.MovementStrategy; +using System.Text; namespace Bulldozer.Generics { @@ -66,12 +67,10 @@ namespace Bulldozer.Generics /// /// /// - public BulldozersGenericCollection? - this[string ind] + public BulldozersGenericCollection ? this[string ind] { get { - // TODO: Продумать логику получения набора if (_bulldozerStorages.ContainsKey(ind)) { return _bulldozerStorages[ind]; @@ -82,6 +81,104 @@ namespace Bulldozer.Generics } } } - } + /// Разделитель для записи ключа и значения элемента словаря + /// + private static readonly char _separatorForKeyValue = '|'; + /// + /// Разделитель для записей коллекции данных в файл + /// + private readonly char _separatorRecords = ';'; + /// + /// Разделитель для записи информации по объекту в файл + /// + private static readonly char _separatorForObject = ':'; + /// + /// Сохранение информации по автомобилям в хранилище в файл + /// + /// Путь и имя файла + /// true - сохранение прошло успешно, false - ошибка при сохранении данных + public bool SaveData(string filename) + { + if (File.Exists(filename)) + { + File.Delete(filename); + } + StringBuilder data = new(); + foreach (KeyValuePair> record in _bulldozerStorages) + { + StringBuilder records = new(); + foreach (DrawingBulldozer? elem in record.Value.GetBulldozers) + { + records.Append($"{elem?.GetDataForSave(_separatorForObject)}{_separatorRecords}"); + } + data.AppendLine($"{record.Key}{_separatorForKeyValue}{records}"); + } + if (data.Length == 0) + { + return false; + } + using FileStream fs = new(filename, FileMode.Create); + byte[] info = new UTF8Encoding(true).GetBytes($"BulldozerStorage{Environment.NewLine}{data}"); + fs.Write(info, 0, info.Length); + return true; + } + + /// + /// Загрузка информации по автомобилям в хранилище из файла + /// + /// Путь и имя файла + /// true - загрузка прошла успешно, false - ошибка при загрузке данных + public bool LoadData(string filename) + { + if (!File.Exists(filename)) + { + return false; + } + string bufferTextFromFile = ""; + using (FileStream fs = new(filename, FileMode.Open)) + { + byte[] b = new byte[fs.Length]; + UTF8Encoding temp = new(true); + while (fs.Read(b, 0, b.Length) > 0) + { + bufferTextFromFile += temp.GetString(b); + } + } + var strs = bufferTextFromFile.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); + if (strs == null || strs.Length == 0) + { + return false; + } + if (!strs[0].StartsWith("BulldozerStorage")) + { + return false; + } + _bulldozerStorages.Clear(); + foreach (string data in strs) + { + string[] record = data.Split(_separatorForKeyValue, StringSplitOptions.RemoveEmptyEntries); + if (record.Length != 2) + { + continue; + } + BulldozersGenericCollection collection = new(_pictureWidth, _pictureHeight); + string[] set = record[1].Split(_separatorRecords, StringSplitOptions.RemoveEmptyEntries); + + foreach (string elem in set) + { + DrawingBulldozer? bulldozer = elem?.CreateDrawingBulldozer(_separatorForObject, _pictureWidth, _pictureHeight); + if (bulldozer != null) + { + if ((collection + bulldozer) == -1) + { + return false; + } + } + } + _bulldozerStorages.Add(record[0], collection); + } + return true; + } + } } -- 2.25.1 From 9874caf6909e255c6f480e61b4d06bca5e574c74 Mon Sep 17 00:00:00 2001 From: bocchanskyy Date: Mon, 25 Dec 2023 00:54:31 +0400 Subject: [PATCH 2/3] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D1=83=D1=8E=206?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Bulldozer/FormBulldozerConfig.Designer.cs | 21 +---- .../Generics/BulldozersGenericStorage.cs | 76 ++++++++++--------- 2 files changed, 41 insertions(+), 56 deletions(-) diff --git a/Bulldozer/Bulldozer/FormBulldozerConfig.Designer.cs b/Bulldozer/Bulldozer/FormBulldozerConfig.Designer.cs index 3ddc87c..7e07d50 100644 --- a/Bulldozer/Bulldozer/FormBulldozerConfig.Designer.cs +++ b/Bulldozer/Bulldozer/FormBulldozerConfig.Designer.cs @@ -125,7 +125,6 @@ this.labelModifiedObject.TabIndex = 8; this.labelModifiedObject.Text = "Продвинутый"; this.labelModifiedObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.labelModifiedObject.MouseDown += labelObject_MouseDown; // // labelSimpleObject // @@ -138,7 +137,6 @@ this.labelSimpleObject.TabIndex = 7; this.labelSimpleObject.Text = "Простой"; this.labelSimpleObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.labelSimpleObject.MouseDown += labelObject_MouseDown; // // groupBoxColors // @@ -158,8 +156,6 @@ this.groupBoxColors.TabIndex = 6; this.groupBoxColors.TabStop = false; this.groupBoxColors.Text = "Цвета"; - this.groupBoxColors.DragDrop += PanelObject_DragDrop; - this.groupBoxColors.DragEnter += PanelObject_DragEnter; // // panelPurple // @@ -169,7 +165,6 @@ this.panelPurple.Name = "panelPurple"; this.panelPurple.Size = new System.Drawing.Size(43, 43); this.panelPurple.TabIndex = 1; - this.panelPurple.MouseDown += panelColor_MouseDown; // // panelBlack // @@ -179,7 +174,6 @@ this.panelBlack.Name = "panelBlack"; this.panelBlack.Size = new System.Drawing.Size(43, 43); this.panelBlack.TabIndex = 1; - this.panelBlack.MouseDown += panelColor_MouseDown; // // panelGray // @@ -189,7 +183,6 @@ this.panelGray.Name = "panelGray"; this.panelGray.Size = new System.Drawing.Size(43, 43); this.panelGray.TabIndex = 1; - this.panelGray.MouseDown += panelColor_MouseDown; // // panelWhite // @@ -199,7 +192,6 @@ this.panelWhite.Name = "panelWhite"; this.panelWhite.Size = new System.Drawing.Size(43, 43); this.panelWhite.TabIndex = 1; - this.panelWhite.MouseDown += panelColor_MouseDown; // // panelYellow // @@ -209,7 +201,6 @@ this.panelYellow.Name = "panelYellow"; this.panelYellow.Size = new System.Drawing.Size(43, 43); this.panelYellow.TabIndex = 1; - this.panelYellow.MouseDown += panelColor_MouseDown; // // panelBlue // @@ -219,17 +210,15 @@ this.panelBlue.Name = "panelBlue"; this.panelBlue.Size = new System.Drawing.Size(43, 43); this.panelBlue.TabIndex = 1; - this.panelBlue.MouseDown += panelColor_MouseDown; // // panelGreen // - this.panelGreen.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); + this.panelGreen.BackColor = System.Drawing.Color.Green; this.panelGreen.Location = new System.Drawing.Point(77, 34); this.panelGreen.Margin = new System.Windows.Forms.Padding(2); this.panelGreen.Name = "panelGreen"; this.panelGreen.Size = new System.Drawing.Size(43, 43); this.panelGreen.TabIndex = 1; - this.panelGreen.MouseDown += panelColor_MouseDown; // // panelRed // @@ -239,7 +228,6 @@ this.panelRed.Name = "panelRed"; this.panelRed.Size = new System.Drawing.Size(43, 43); this.panelRed.TabIndex = 0; - this.panelRed.MouseDown += panelColor_MouseDown; // // numericUpDownWeight // @@ -327,8 +315,6 @@ this.panelObject.Name = "panelObject"; this.panelObject.Size = new System.Drawing.Size(334, 202); this.panelObject.TabIndex = 2; - this. panelObject.DragDrop += PanelObject_DragDrop; - panelObject.DragEnter += PanelObject_DragEnter; // // labelAddColor // @@ -341,8 +327,6 @@ this.labelAddColor.TabIndex = 3; this.labelAddColor.Text = "Дополн. цвет"; this.labelAddColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.labelAddColor.DragDrop += labelColor_dragDrop; - this.labelAddColor.DragEnter += labelColor_dragEnter; // // labelColor // @@ -355,8 +339,6 @@ this.labelColor.TabIndex = 2; this.labelColor.Text = "Основной цвет"; this.labelColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.labelColor.DragDrop += labelColor_dragDrop; - this.labelColor.DragEnter += labelColor_dragEnter; // // buttonAdd // @@ -367,7 +349,6 @@ this.buttonAdd.TabIndex = 3; this.buttonAdd.Text = "Добавить"; this.buttonAdd.UseVisualStyleBackColor = true; - this.buttonAdd.Click += buttonAdd_Click; // // buttonCancel // diff --git a/Bulldozer/Bulldozer/Generics/BulldozersGenericStorage.cs b/Bulldozer/Bulldozer/Generics/BulldozersGenericStorage.cs index f6c3a31..2d2620e 100644 --- a/Bulldozer/Bulldozer/Generics/BulldozersGenericStorage.cs +++ b/Bulldozer/Bulldozer/Generics/BulldozersGenericStorage.cs @@ -67,7 +67,7 @@ namespace Bulldozer.Generics /// /// /// - public BulldozersGenericCollection ? this[string ind] + public BulldozersGenericCollection? this[string ind] { get { @@ -118,9 +118,15 @@ namespace Bulldozer.Generics { return false; } - using FileStream fs = new(filename, FileMode.Create); - byte[] info = new UTF8Encoding(true).GetBytes($"BulldozerStorage{Environment.NewLine}{data}"); - fs.Write(info, 0, info.Length); + string toWrite = $"BulldozerStorage{Environment.NewLine}{data}"; + var strs = toWrite.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); + using (StreamWriter sw = new(filename)) + { + foreach (var str in strs) + { + sw.WriteLine(str); + } + } return true; } @@ -135,50 +141,48 @@ namespace Bulldozer.Generics { return false; } - string bufferTextFromFile = ""; - using (FileStream fs = new(filename, FileMode.Open)) + using (StreamReader sr = new(filename)) { - byte[] b = new byte[fs.Length]; - UTF8Encoding temp = new(true); - while (fs.Read(b, 0, b.Length) > 0) + string str = sr.ReadLine(); + var strs = str.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); + if (strs == null || strs.Length == 0) { - bufferTextFromFile += temp.GetString(b); + return false; } - } - var strs = bufferTextFromFile.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); - if (strs == null || strs.Length == 0) - { - return false; - } - if (!strs[0].StartsWith("BulldozerStorage")) - { - return false; - } - _bulldozerStorages.Clear(); - foreach (string data in strs) - { - string[] record = data.Split(_separatorForKeyValue, StringSplitOptions.RemoveEmptyEntries); - if (record.Length != 2) + if (!strs[0].StartsWith("BulldozerStorage")) { - continue; + return false; } - BulldozersGenericCollection collection = new(_pictureWidth, _pictureHeight); - string[] set = record[1].Split(_separatorRecords, StringSplitOptions.RemoveEmptyEntries); - - foreach (string elem in set) + _bulldozerStorages.Clear(); + do { - DrawingBulldozer? bulldozer = elem?.CreateDrawingBulldozer(_separatorForObject, _pictureWidth, _pictureHeight); - if (bulldozer != null) + string[] record = str.Split(_separatorForKeyValue, StringSplitOptions.RemoveEmptyEntries); + if (record.Length != 2) { - if ((collection + bulldozer) == -1) + str = sr.ReadLine(); + continue; + } + BulldozersGenericCollection collection = new(_pictureWidth, _pictureHeight); + string[] set = record[1].Split(_separatorRecords, StringSplitOptions.RemoveEmptyEntries); + foreach (string elem in set) + { + DrawingBulldozer? bulldozer = + elem?.CreateDrawingBulldozer(_separatorForObject, _pictureWidth, _pictureHeight); + if (bulldozer != null) { - return false; + if ((collection + bulldozer) == -1) + { + return false; + } } } - } - _bulldozerStorages.Add(record[0], collection); + _bulldozerStorages.Add(record[0], collection); + + str = sr.ReadLine(); + } while (str != null); } return true; } } } + -- 2.25.1 From dd17103d9e7bad3e06abc8a998f24ca1f0551fa6 Mon Sep 17 00:00:00 2001 From: bocchanskyy Date: Tue, 26 Dec 2023 07:04:42 +0400 Subject: [PATCH 3/3] formconfig fix --- .../Bulldozer/FormBulldozerConfig.Designer.cs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Bulldozer/Bulldozer/FormBulldozerConfig.Designer.cs b/Bulldozer/Bulldozer/FormBulldozerConfig.Designer.cs index 7e07d50..9e4b643 100644 --- a/Bulldozer/Bulldozer/FormBulldozerConfig.Designer.cs +++ b/Bulldozer/Bulldozer/FormBulldozerConfig.Designer.cs @@ -125,6 +125,7 @@ this.labelModifiedObject.TabIndex = 8; this.labelModifiedObject.Text = "Продвинутый"; this.labelModifiedObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labelModifiedObject.MouseDown += labelObject_MouseDown; // // labelSimpleObject // @@ -137,6 +138,7 @@ this.labelSimpleObject.TabIndex = 7; this.labelSimpleObject.Text = "Простой"; this.labelSimpleObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labelSimpleObject.MouseDown += labelObject_MouseDown; // // groupBoxColors // @@ -156,6 +158,8 @@ this.groupBoxColors.TabIndex = 6; this.groupBoxColors.TabStop = false; this.groupBoxColors.Text = "Цвета"; + this.groupBoxColors.DragDrop += PanelObject_DragDrop; + this.groupBoxColors.DragEnter += PanelObject_DragEnter; // // panelPurple // @@ -165,6 +169,7 @@ this.panelPurple.Name = "panelPurple"; this.panelPurple.Size = new System.Drawing.Size(43, 43); this.panelPurple.TabIndex = 1; + this.panelPurple.MouseDown += panelColor_MouseDown; // // panelBlack // @@ -174,6 +179,7 @@ this.panelBlack.Name = "panelBlack"; this.panelBlack.Size = new System.Drawing.Size(43, 43); this.panelBlack.TabIndex = 1; + this.panelBlack.MouseDown += panelColor_MouseDown; // // panelGray // @@ -183,6 +189,7 @@ this.panelGray.Name = "panelGray"; this.panelGray.Size = new System.Drawing.Size(43, 43); this.panelGray.TabIndex = 1; + this.panelGray.MouseDown += panelColor_MouseDown; // // panelWhite // @@ -192,6 +199,7 @@ this.panelWhite.Name = "panelWhite"; this.panelWhite.Size = new System.Drawing.Size(43, 43); this.panelWhite.TabIndex = 1; + this.panelWhite.MouseDown += panelColor_MouseDown; // // panelYellow // @@ -201,6 +209,7 @@ this.panelYellow.Name = "panelYellow"; this.panelYellow.Size = new System.Drawing.Size(43, 43); this.panelYellow.TabIndex = 1; + this.panelYellow.MouseDown += panelColor_MouseDown; // // panelBlue // @@ -210,6 +219,7 @@ this.panelBlue.Name = "panelBlue"; this.panelBlue.Size = new System.Drawing.Size(43, 43); this.panelBlue.TabIndex = 1; + this.panelBlue.MouseDown += panelColor_MouseDown; // // panelGreen // @@ -219,6 +229,7 @@ this.panelGreen.Name = "panelGreen"; this.panelGreen.Size = new System.Drawing.Size(43, 43); this.panelGreen.TabIndex = 1; + this.panelGreen.MouseDown += panelColor_MouseDown; // // panelRed // @@ -228,6 +239,7 @@ this.panelRed.Name = "panelRed"; this.panelRed.Size = new System.Drawing.Size(43, 43); this.panelRed.TabIndex = 0; + this.panelRed.MouseDown += panelColor_MouseDown; // // numericUpDownWeight // @@ -315,6 +327,8 @@ this.panelObject.Name = "panelObject"; this.panelObject.Size = new System.Drawing.Size(334, 202); this.panelObject.TabIndex = 2; + this.panelObject.DragDrop += PanelObject_DragDrop; + this.panelObject.DragEnter += PanelObject_DragEnter; // // labelAddColor // @@ -327,6 +341,8 @@ this.labelAddColor.TabIndex = 3; this.labelAddColor.Text = "Дополн. цвет"; this.labelAddColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labelAddColor.DragDrop += labelColor_dragDrop; + this.labelAddColor.DragEnter += labelColor_dragEnter; // // labelColor // @@ -339,6 +355,8 @@ this.labelColor.TabIndex = 2; this.labelColor.Text = "Основной цвет"; this.labelColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labelColor.DragDrop += labelColor_dragDrop; + this.labelColor.DragEnter += labelColor_dragEnter; // // buttonAdd // @@ -349,6 +367,7 @@ this.buttonAdd.TabIndex = 3; this.buttonAdd.Text = "Добавить"; this.buttonAdd.UseVisualStyleBackColor = true; + this.buttonAdd.Click += buttonAdd_Click; // // buttonCancel // -- 2.25.1