From 1c5ea38fdfd9f9f43976cc0e1e7e00409179b822 Mon Sep 17 00:00:00 2001
From: ksenianeva <95441235+ksenianeva@users.noreply.github.com>
Date: Tue, 15 Nov 2022 12:36:40 +0400
Subject: [PATCH 1/3] =?UTF-8?q?=D0=9F=D1=8F=D1=82=D0=B0=D1=8F=20=D0=BB?=
 =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=BD=D0=B0?=
 =?UTF-8?q?=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0.=20=D0=9D=D0=BE?=
 =?UTF-8?q?=D0=B2=D0=B0=D1=8F=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=20+=20Drag&?=
 =?UTF-8?q?Drop.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../ContainerShip/EntityContainerShip.cs      |   5 +
 ContainerShip/ContainerShip/EntityShip.cs     |   4 +
 .../ContainerShip/FormMapWithSetShips.cs      |  26 +-
 .../ContainerShip/FormShipConfig.Designer.cs  | 407 ++++++++++++++++++
 ContainerShip/ContainerShip/FormShipConfig.cs | 112 +++++
 .../ContainerShip/FormShipConfig.resx         |  60 +++
 .../ContainerShip/MapWithSetShipsGeneric.cs   |   4 +
 7 files changed, 601 insertions(+), 17 deletions(-)
 create mode 100644 ContainerShip/ContainerShip/FormShipConfig.Designer.cs
 create mode 100644 ContainerShip/ContainerShip/FormShipConfig.cs
 create mode 100644 ContainerShip/ContainerShip/FormShipConfig.resx

diff --git a/ContainerShip/ContainerShip/EntityContainerShip.cs b/ContainerShip/ContainerShip/EntityContainerShip.cs
index 816351d..dcc9c4c 100644
--- a/ContainerShip/ContainerShip/EntityContainerShip.cs
+++ b/ContainerShip/ContainerShip/EntityContainerShip.cs
@@ -28,5 +28,10 @@ namespace ContainerShip
             Crane = crane;
             Containers = containers;
         }
+
+        public void setDopColor(Color newDopColor) 
+        { 
+            DopColor = newDopColor; 
+        }
     }
 }
diff --git a/ContainerShip/ContainerShip/EntityShip.cs b/ContainerShip/ContainerShip/EntityShip.cs
index 05fb955..fe410f4 100644
--- a/ContainerShip/ContainerShip/EntityShip.cs
+++ b/ContainerShip/ContainerShip/EntityShip.cs
@@ -38,5 +38,9 @@ namespace ContainerShip
             Weight = weight <= 0 ? rnd.Next(40, 70) : weight;
             BodyColor = bodyColor;
         }
+        public void setColor (Color newColor)
+        {
+            BodyColor = newColor;
+        }
     }
 }
diff --git a/ContainerShip/ContainerShip/FormMapWithSetShips.cs b/ContainerShip/ContainerShip/FormMapWithSetShips.cs
index e04780f..52785df 100644
--- a/ContainerShip/ContainerShip/FormMapWithSetShips.cs
+++ b/ContainerShip/ContainerShip/FormMapWithSetShips.cs
@@ -18,7 +18,8 @@ namespace ContainerShip
         /// </summary>
         private readonly Dictionary<string, AbstractMap> _mapsDict = new()
         {
-            { "Простая карта", new SimpleMap() }
+            { "Простая карта", new SimpleMap() },
+            { "Модифицированная карта", new ModifyMap()}
         };
         /// <summary>
         /// Объект от класса карты с набором объектов
@@ -45,9 +46,9 @@ namespace ContainerShip
             int index = listBoxMaps.SelectedIndex;
 
             listBoxMaps.Items.Clear();
-            for (int i = 0; i < _mapsCollection.Keys.Count; i++)
+            foreach (string key in _mapsCollection.Keys)
             {
-                listBoxMaps.Items.Add(_mapsCollection.Keys[i]);
+                listBoxMaps.Items.Add(key);
             }
 
             if (listBoxMaps.Items.Count > 0 && (index == -1 || index >= listBoxMaps.Items.Count))
@@ -70,20 +71,11 @@ namespace ContainerShip
             {
                 return;
             }
-            FormShip form = new();
-            if (form.ShowDialog() == DialogResult.OK)
-            {
-                DrawingObjectShip ship = new(form.SelectedShip);
-                if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] + ship != -1)
-                {
-                    MessageBox.Show("Объект добавлен");
-                    pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();
-                }
-                else
-                {
-                    MessageBox.Show("Не удалось добавить объект");
-                }
-            }
+            var formAirBomberConfig = new FormShipConfig();
+            formAirBomberConfig.AddEvent(new Action<DrawingShip>(ship => {
+                _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].add(new DrawingObjectShip(ship));
+                pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();}));
+            formAirBomberConfig.Show();
         }
         /// <summary>
         /// Удаление объекта
diff --git a/ContainerShip/ContainerShip/FormShipConfig.Designer.cs b/ContainerShip/ContainerShip/FormShipConfig.Designer.cs
new file mode 100644
index 0000000..f2544ba
--- /dev/null
+++ b/ContainerShip/ContainerShip/FormShipConfig.Designer.cs
@@ -0,0 +1,407 @@
+namespace ContainerShip
+{
+    partial class FormShipConfig
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.buttonCancel = new System.Windows.Forms.Button();
+            this.buttonOk = new System.Windows.Forms.Button();
+            this.panelObject = new System.Windows.Forms.Panel();
+            this.labelDopColor = new System.Windows.Forms.Label();
+            this.labelBaseColor = new System.Windows.Forms.Label();
+            this.pictureBoxObject = new System.Windows.Forms.PictureBox();
+            this.groupBoxConfig = new System.Windows.Forms.GroupBox();
+            this.labelModifiedObject = new System.Windows.Forms.Label();
+            this.labelSimpleObject = new System.Windows.Forms.Label();
+            this.groupBoxColors = new System.Windows.Forms.GroupBox();
+            this.panelPurple = new System.Windows.Forms.Panel();
+            this.panelYellow = new System.Windows.Forms.Panel();
+            this.panelBlack = new System.Windows.Forms.Panel();
+            this.panelBlue = new System.Windows.Forms.Panel();
+            this.panelGray = new System.Windows.Forms.Panel();
+            this.panelGreen = new System.Windows.Forms.Panel();
+            this.panelWhite = new System.Windows.Forms.Panel();
+            this.panelRed = new System.Windows.Forms.Panel();
+            this.checkBoxContainers = new System.Windows.Forms.CheckBox();
+            this.checkBoxCrane = new System.Windows.Forms.CheckBox();
+            this.numericUpDownWeight = new System.Windows.Forms.NumericUpDown();
+            this.labelWeight = new System.Windows.Forms.Label();
+            this.numericUpDownSpeed = new System.Windows.Forms.NumericUpDown();
+            this.labelSpeed = new System.Windows.Forms.Label();
+            this.panelObject.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBoxObject)).BeginInit();
+            this.groupBoxConfig.SuspendLayout();
+            this.groupBoxColors.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownWeight)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownSpeed)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // buttonCancel
+            // 
+            this.buttonCancel.Location = new System.Drawing.Point(966, 321);
+            this.buttonCancel.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.buttonCancel.Name = "buttonCancel";
+            this.buttonCancel.Size = new System.Drawing.Size(149, 50);
+            this.buttonCancel.TabIndex = 9;
+            this.buttonCancel.Text = "Отмена";
+            this.buttonCancel.UseVisualStyleBackColor = true;
+            // 
+            // buttonOk
+            // 
+            this.buttonOk.Location = new System.Drawing.Point(793, 321);
+            this.buttonOk.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.buttonOk.Name = "buttonOk";
+            this.buttonOk.Size = new System.Drawing.Size(149, 50);
+            this.buttonOk.TabIndex = 8;
+            this.buttonOk.Text = "Добавить";
+            this.buttonOk.UseVisualStyleBackColor = true;
+            this.buttonOk.Click += new System.EventHandler(this.ButtonOk_Click);
+            // 
+            // panelObject
+            // 
+            this.panelObject.AllowDrop = true;
+            this.panelObject.Controls.Add(this.labelDopColor);
+            this.panelObject.Controls.Add(this.labelBaseColor);
+            this.panelObject.Controls.Add(this.pictureBoxObject);
+            this.panelObject.Location = new System.Drawing.Point(765, 4);
+            this.panelObject.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.panelObject.Name = "panelObject";
+            this.panelObject.Size = new System.Drawing.Size(374, 307);
+            this.panelObject.TabIndex = 7;
+            this.panelObject.DragDrop += new System.Windows.Forms.DragEventHandler(this.PanelObject_DragDrop);
+            this.panelObject.DragEnter += new System.Windows.Forms.DragEventHandler(this.PanelObject_DragEnter);
+            // 
+            // labelDopColor
+            // 
+            this.labelDopColor.AllowDrop = true;
+            this.labelDopColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.labelDopColor.Location = new System.Drawing.Point(201, 15);
+            this.labelDopColor.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.labelDopColor.Name = "labelDopColor";
+            this.labelDopColor.Size = new System.Drawing.Size(148, 52);
+            this.labelDopColor.TabIndex = 2;
+            this.labelDopColor.Text = "Доп. цвет";
+            this.labelDopColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            this.labelDopColor.DragDrop += new System.Windows.Forms.DragEventHandler(this.LabelDopColor_DragDrop);
+            this.labelDopColor.DragEnter += new System.Windows.Forms.DragEventHandler(this.LabelColor_DragEnter);
+            // 
+            // labelBaseColor
+            // 
+            this.labelBaseColor.AllowDrop = true;
+            this.labelBaseColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.labelBaseColor.Location = new System.Drawing.Point(29, 15);
+            this.labelBaseColor.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.labelBaseColor.Name = "labelBaseColor";
+            this.labelBaseColor.Size = new System.Drawing.Size(148, 52);
+            this.labelBaseColor.TabIndex = 1;
+            this.labelBaseColor.Text = "Цвет";
+            this.labelBaseColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            this.labelBaseColor.DragDrop += new System.Windows.Forms.DragEventHandler(this.LabelBaseColor_DragDrop);
+            this.labelBaseColor.DragEnter += new System.Windows.Forms.DragEventHandler(this.LabelColor_DragEnter);
+            // 
+            // pictureBoxObject
+            // 
+            this.pictureBoxObject.Location = new System.Drawing.Point(29, 73);
+            this.pictureBoxObject.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.pictureBoxObject.Name = "pictureBoxObject";
+            this.pictureBoxObject.Size = new System.Drawing.Size(321, 208);
+            this.pictureBoxObject.TabIndex = 0;
+            this.pictureBoxObject.TabStop = false;
+            // 
+            // groupBoxConfig
+            // 
+            this.groupBoxConfig.Controls.Add(this.labelModifiedObject);
+            this.groupBoxConfig.Controls.Add(this.labelSimpleObject);
+            this.groupBoxConfig.Controls.Add(this.groupBoxColors);
+            this.groupBoxConfig.Controls.Add(this.checkBoxContainers);
+            this.groupBoxConfig.Controls.Add(this.checkBoxCrane);
+            this.groupBoxConfig.Controls.Add(this.numericUpDownWeight);
+            this.groupBoxConfig.Controls.Add(this.labelWeight);
+            this.groupBoxConfig.Controls.Add(this.numericUpDownSpeed);
+            this.groupBoxConfig.Controls.Add(this.labelSpeed);
+            this.groupBoxConfig.Location = new System.Drawing.Point(13, 4);
+            this.groupBoxConfig.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.groupBoxConfig.Name = "groupBoxConfig";
+            this.groupBoxConfig.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.groupBoxConfig.Size = new System.Drawing.Size(743, 367);
+            this.groupBoxConfig.TabIndex = 6;
+            this.groupBoxConfig.TabStop = false;
+            this.groupBoxConfig.Text = "Параметры";
+            // 
+            // labelModifiedObject
+            // 
+            this.labelModifiedObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.labelModifiedObject.Location = new System.Drawing.Point(563, 270);
+            this.labelModifiedObject.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.labelModifiedObject.Name = "labelModifiedObject";
+            this.labelModifiedObject.Size = new System.Drawing.Size(138, 62);
+            this.labelModifiedObject.TabIndex = 16;
+            this.labelModifiedObject.Text = "Продвинутый";
+            this.labelModifiedObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            this.labelModifiedObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LabelObject_MouseDown);
+            // 
+            // labelSimpleObject
+            // 
+            this.labelSimpleObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.labelSimpleObject.Location = new System.Drawing.Point(403, 270);
+            this.labelSimpleObject.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.labelSimpleObject.Name = "labelSimpleObject";
+            this.labelSimpleObject.Size = new System.Drawing.Size(138, 62);
+            this.labelSimpleObject.TabIndex = 15;
+            this.labelSimpleObject.Text = "Простой";
+            this.labelSimpleObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            this.labelSimpleObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LabelObject_MouseDown);
+            // 
+            // groupBoxColors
+            // 
+            this.groupBoxColors.Controls.Add(this.panelPurple);
+            this.groupBoxColors.Controls.Add(this.panelYellow);
+            this.groupBoxColors.Controls.Add(this.panelBlack);
+            this.groupBoxColors.Controls.Add(this.panelBlue);
+            this.groupBoxColors.Controls.Add(this.panelGray);
+            this.groupBoxColors.Controls.Add(this.panelGreen);
+            this.groupBoxColors.Controls.Add(this.panelWhite);
+            this.groupBoxColors.Controls.Add(this.panelRed);
+            this.groupBoxColors.Location = new System.Drawing.Point(381, 37);
+            this.groupBoxColors.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.groupBoxColors.Name = "groupBoxColors";
+            this.groupBoxColors.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.groupBoxColors.Size = new System.Drawing.Size(344, 212);
+            this.groupBoxColors.TabIndex = 14;
+            this.groupBoxColors.TabStop = false;
+            this.groupBoxColors.Text = "Цвета";
+            // 
+            // panelPurple
+            // 
+            this.panelPurple.BackColor = System.Drawing.Color.Purple;
+            this.panelPurple.Location = new System.Drawing.Point(263, 122);
+            this.panelPurple.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.panelPurple.Name = "panelPurple";
+            this.panelPurple.Size = new System.Drawing.Size(57, 67);
+            this.panelPurple.TabIndex = 3;
+            // 
+            // panelYellow
+            // 
+            this.panelYellow.BackColor = System.Drawing.Color.Yellow;
+            this.panelYellow.Location = new System.Drawing.Point(263, 37);
+            this.panelYellow.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.panelYellow.Name = "panelYellow";
+            this.panelYellow.Size = new System.Drawing.Size(57, 67);
+            this.panelYellow.TabIndex = 1;
+            // 
+            // panelBlack
+            // 
+            this.panelBlack.BackColor = System.Drawing.Color.Black;
+            this.panelBlack.Location = new System.Drawing.Point(181, 122);
+            this.panelBlack.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.panelBlack.Name = "panelBlack";
+            this.panelBlack.Size = new System.Drawing.Size(57, 67);
+            this.panelBlack.TabIndex = 4;
+            // 
+            // panelBlue
+            // 
+            this.panelBlue.BackColor = System.Drawing.Color.Blue;
+            this.panelBlue.Location = new System.Drawing.Point(181, 37);
+            this.panelBlue.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.panelBlue.Name = "panelBlue";
+            this.panelBlue.Size = new System.Drawing.Size(57, 67);
+            this.panelBlue.TabIndex = 1;
+            // 
+            // panelGray
+            // 
+            this.panelGray.BackColor = System.Drawing.Color.Gray;
+            this.panelGray.Location = new System.Drawing.Point(103, 122);
+            this.panelGray.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.panelGray.Name = "panelGray";
+            this.panelGray.Size = new System.Drawing.Size(57, 67);
+            this.panelGray.TabIndex = 5;
+            // 
+            // panelGreen
+            // 
+            this.panelGreen.BackColor = System.Drawing.Color.Green;
+            this.panelGreen.Location = new System.Drawing.Point(103, 37);
+            this.panelGreen.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.panelGreen.Name = "panelGreen";
+            this.panelGreen.Size = new System.Drawing.Size(57, 67);
+            this.panelGreen.TabIndex = 1;
+            // 
+            // panelWhite
+            // 
+            this.panelWhite.BackColor = System.Drawing.Color.White;
+            this.panelWhite.Location = new System.Drawing.Point(21, 122);
+            this.panelWhite.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.panelWhite.Name = "panelWhite";
+            this.panelWhite.Size = new System.Drawing.Size(57, 67);
+            this.panelWhite.TabIndex = 2;
+            // 
+            // panelRed
+            // 
+            this.panelRed.BackColor = System.Drawing.Color.Red;
+            this.panelRed.Location = new System.Drawing.Point(21, 37);
+            this.panelRed.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.panelRed.Name = "panelRed";
+            this.panelRed.Size = new System.Drawing.Size(57, 67);
+            this.panelRed.TabIndex = 0;
+            // 
+            // checkBoxContainers
+            // 
+            this.checkBoxContainers.AutoSize = true;
+            this.checkBoxContainers.Location = new System.Drawing.Point(32, 233);
+            this.checkBoxContainers.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.checkBoxContainers.Name = "checkBoxContainers";
+            this.checkBoxContainers.Size = new System.Drawing.Size(280, 29);
+            this.checkBoxContainers.TabIndex = 12;
+            this.checkBoxContainers.Text = "Признак наличия контейнера";
+            this.checkBoxContainers.UseVisualStyleBackColor = true;
+            // 
+            // checkBoxCrane
+            // 
+            this.checkBoxCrane.AutoSize = true;
+            this.checkBoxCrane.Location = new System.Drawing.Point(32, 194);
+            this.checkBoxCrane.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.checkBoxCrane.Name = "checkBoxCrane";
+            this.checkBoxCrane.Size = new System.Drawing.Size(233, 29);
+            this.checkBoxCrane.TabIndex = 11;
+            this.checkBoxCrane.Text = "Признак наличия крана";
+            this.checkBoxCrane.UseVisualStyleBackColor = true;
+            // 
+            // numericUpDownWeight
+            // 
+            this.numericUpDownWeight.Location = new System.Drawing.Point(129, 120);
+            this.numericUpDownWeight.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.numericUpDownWeight.Maximum = new decimal(new int[] {
+            1000,
+            0,
+            0,
+            0});
+            this.numericUpDownWeight.Minimum = new decimal(new int[] {
+            100,
+            0,
+            0,
+            0});
+            this.numericUpDownWeight.Name = "numericUpDownWeight";
+            this.numericUpDownWeight.Size = new System.Drawing.Size(113, 31);
+            this.numericUpDownWeight.TabIndex = 10;
+            this.numericUpDownWeight.Value = new decimal(new int[] {
+            100,
+            0,
+            0,
+            0});
+            // 
+            // labelWeight
+            // 
+            this.labelWeight.AutoSize = true;
+            this.labelWeight.Location = new System.Drawing.Point(32, 125);
+            this.labelWeight.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.labelWeight.Name = "labelWeight";
+            this.labelWeight.Size = new System.Drawing.Size(43, 25);
+            this.labelWeight.TabIndex = 9;
+            this.labelWeight.Text = "Вес:";
+            // 
+            // numericUpDownSpeed
+            // 
+            this.numericUpDownSpeed.Location = new System.Drawing.Point(129, 50);
+            this.numericUpDownSpeed.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.numericUpDownSpeed.Maximum = new decimal(new int[] {
+            1000,
+            0,
+            0,
+            0});
+            this.numericUpDownSpeed.Minimum = new decimal(new int[] {
+            100,
+            0,
+            0,
+            0});
+            this.numericUpDownSpeed.Name = "numericUpDownSpeed";
+            this.numericUpDownSpeed.Size = new System.Drawing.Size(113, 31);
+            this.numericUpDownSpeed.TabIndex = 8;
+            this.numericUpDownSpeed.Value = new decimal(new int[] {
+            100,
+            0,
+            0,
+            0});
+            // 
+            // labelSpeed
+            // 
+            this.labelSpeed.AutoSize = true;
+            this.labelSpeed.Location = new System.Drawing.Point(32, 55);
+            this.labelSpeed.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.labelSpeed.Name = "labelSpeed";
+            this.labelSpeed.Size = new System.Drawing.Size(93, 25);
+            this.labelSpeed.TabIndex = 7;
+            this.labelSpeed.Text = "Скорость:";
+            // 
+            // FormShipConfig
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 25F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(1157, 386);
+            this.Controls.Add(this.buttonCancel);
+            this.Controls.Add(this.buttonOk);
+            this.Controls.Add(this.panelObject);
+            this.Controls.Add(this.groupBoxConfig);
+            this.Name = "FormShipConfig";
+            this.Text = "Создание объекта";
+            this.panelObject.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBoxObject)).EndInit();
+            this.groupBoxConfig.ResumeLayout(false);
+            this.groupBoxConfig.PerformLayout();
+            this.groupBoxColors.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownWeight)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownSpeed)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private Button buttonCancel;
+        private Button buttonOk;
+        private Panel panelObject;
+        private Label labelDopColor;
+        private Label labelBaseColor;
+        private PictureBox pictureBoxObject;
+        private GroupBox groupBoxConfig;
+        private Label labelModifiedObject;
+        private Label labelSimpleObject;
+        private GroupBox groupBoxColors;
+        private Panel panelPurple;
+        private Panel panelYellow;
+        private Panel panelBlack;
+        private Panel panelBlue;
+        private Panel panelGray;
+        private Panel panelGreen;
+        private Panel panelWhite;
+        private Panel panelRed;
+        private CheckBox checkBoxContainers;
+        private CheckBox checkBoxCrane;
+        private NumericUpDown numericUpDownWeight;
+        private Label labelWeight;
+        private NumericUpDown numericUpDownSpeed;
+        private Label labelSpeed;
+    }
+}
\ No newline at end of file
diff --git a/ContainerShip/ContainerShip/FormShipConfig.cs b/ContainerShip/ContainerShip/FormShipConfig.cs
new file mode 100644
index 0000000..21b6cbc
--- /dev/null
+++ b/ContainerShip/ContainerShip/FormShipConfig.cs
@@ -0,0 +1,112 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace ContainerShip
+{
+    public partial class FormShipConfig : Form
+    {
+        DrawingShip _ship = null;
+        private event Action<DrawingShip> EventAddShip;      
+        public FormShipConfig()
+        {
+            InitializeComponent();
+            panelBlack.MouseDown += PanelColor_MouseDown;
+            panelPurple.MouseDown += PanelColor_MouseDown;
+            panelGray.MouseDown += PanelColor_MouseDown;
+            panelGreen.MouseDown += PanelColor_MouseDown;
+            panelRed.MouseDown += PanelColor_MouseDown;
+            panelWhite.MouseDown += PanelColor_MouseDown;
+            panelYellow.MouseDown += PanelColor_MouseDown;
+            panelBlue.MouseDown += PanelColor_MouseDown;
+            buttonCancel.Click += (object sender, EventArgs e) => Close();
+        }
+        private void DrawShip()
+        {
+            Bitmap bmp = new(pictureBoxObject.Width, pictureBoxObject.Height);
+            Graphics gr = Graphics.FromImage(bmp);
+            _ship?.SetPosition(5, 5, pictureBoxObject.Width, pictureBoxObject.Height);
+            _ship?.DrawTransport(gr);
+            pictureBoxObject.Image = bmp;
+        }
+        private void LabelObject_MouseDown(object sender, MouseEventArgs e)
+        {
+            (sender as Label).DoDragDrop((sender as Label).Name, DragDropEffects.Move | DragDropEffects.Copy);
+        }
+        private void PanelObject_DragEnter(object sender, DragEventArgs e)
+        {
+            if (e.Data.GetDataPresent(DataFormats.Text))
+            {
+                e.Effect = DragDropEffects.Copy;
+            }
+            else
+            {
+                e.Effect = DragDropEffects.None;
+            }
+        }
+        public void AddEvent(Action<DrawingShip> ev)
+        {
+            if (EventAddShip == null)
+            {
+                EventAddShip = ev;
+            }
+            else
+            {
+                EventAddShip += ev;
+            }
+        }
+        private void PanelObject_DragDrop(object sender, DragEventArgs e)
+        {
+            switch (e.Data.GetData(DataFormats.Text).ToString())
+            {
+                case "labelSimpleObject":
+                    _ship = new DrawingShip((int)numericUpDownSpeed.Value, (int)numericUpDownWeight.Value, Color.White);
+                    break;
+                case "labelModifiedObject":
+                   _ship = new DrawingContainerShip((int)numericUpDownSpeed.Value, (int)numericUpDownWeight.Value, Color.White, Color.Black,
+                        checkBoxCrane.Checked, checkBoxContainers.Checked);
+                    break;
+            }
+            DrawShip();
+        }
+        private void PanelColor_MouseDown(object sender, MouseEventArgs e)
+        {
+            (sender as Control).DoDragDrop((sender as Control).BackColor.Name, DragDropEffects.Move | DragDropEffects.Copy);
+        }
+        private void LabelColor_DragEnter(object sender, DragEventArgs e)
+        {
+            if (e.Data.GetDataPresent(typeof(String)))
+            {
+                e.Effect = DragDropEffects.Copy;
+            }
+            else
+            {
+                e.Effect = DragDropEffects.None;
+            }
+        }
+        private void LabelBaseColor_DragDrop(object sender, DragEventArgs e)
+        {
+            _ship?.Ship?.setColor(Color.FromName(e.Data.GetData(DataFormats.Text).ToString()));
+            DrawShip();
+        }
+        private void LabelDopColor_DragDrop(object sender, DragEventArgs e)
+        {
+            if (_ship.Ship is EntityContainerShip ContainerShip)
+            {
+                ContainerShip.setDopColor(Color.FromName(e.Data.GetData(DataFormats.Text).ToString()));
+                DrawShip();
+            }
+        }
+        private void ButtonOk_Click(object sender, EventArgs e)
+        {
+            EventAddShip?.Invoke(_ship);
+            Close();
+        }
+    }
+}
diff --git a/ContainerShip/ContainerShip/FormShipConfig.resx b/ContainerShip/ContainerShip/FormShipConfig.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/ContainerShip/ContainerShip/FormShipConfig.resx
@@ -0,0 +1,60 @@
+<root>
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/ContainerShip/ContainerShip/MapWithSetShipsGeneric.cs b/ContainerShip/ContainerShip/MapWithSetShipsGeneric.cs
index 56c9a2d..10db820 100644
--- a/ContainerShip/ContainerShip/MapWithSetShipsGeneric.cs
+++ b/ContainerShip/ContainerShip/MapWithSetShipsGeneric.cs
@@ -167,5 +167,9 @@ namespace ContainerShip
         {
             return map._setShips.Remove(position);
         }
+        public int add(T ship)
+        {
+            return _setShips.Insert(ship);
+        }
     }
 }
-- 
2.25.1


From 740b975dc77801d10c9cd1448a2b296402fabc6a Mon Sep 17 00:00:00 2001
From: ksenianeva <95441235+ksenianeva@users.noreply.github.com>
Date: Tue, 15 Nov 2022 12:55:13 +0400
Subject: [PATCH 2/3] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?=
 =?UTF-8?q?=D0=B5=20=D0=B4=D0=BE=D0=BF.=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD?=
 =?UTF-8?q?=D0=B8=D1=8F=204=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?=
 =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=BE=D0=B9.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ContainerShip/ContainerShip/FormMapWithSetShips.cs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ContainerShip/ContainerShip/FormMapWithSetShips.cs b/ContainerShip/ContainerShip/FormMapWithSetShips.cs
index 52785df..42c141b 100644
--- a/ContainerShip/ContainerShip/FormMapWithSetShips.cs
+++ b/ContainerShip/ContainerShip/FormMapWithSetShips.cs
@@ -46,9 +46,9 @@ namespace ContainerShip
             int index = listBoxMaps.SelectedIndex;
 
             listBoxMaps.Items.Clear();
-            foreach (string key in _mapsCollection.Keys)
+            for (int i = 0; i < _mapsCollection.Keys.Count; i++)
             {
-                listBoxMaps.Items.Add(key);
+                listBoxMaps.Items.Add(_mapsCollection.Keys[i]);
             }
 
             if (listBoxMaps.Items.Count > 0 && (index == -1 || index >= listBoxMaps.Items.Count))
-- 
2.25.1


From 742275b7e4aaf7274d124760b7edaf3a8c32a887 Mon Sep 17 00:00:00 2001
From: ksenianeva <95441235+ksenianeva@users.noreply.github.com>
Date: Tue, 15 Nov 2022 13:01:34 +0400
Subject: [PATCH 3/3] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D0=BC=D0=B5?=
 =?UTF-8?q?=D1=82=D0=BE=D0=B4=D0=B0=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B8?=
 =?UTF-8?q?=20AddShip.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ContainerShip/ContainerShip/FormMapWithSetShips.cs | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/ContainerShip/ContainerShip/FormMapWithSetShips.cs b/ContainerShip/ContainerShip/FormMapWithSetShips.cs
index 42c141b..68c660c 100644
--- a/ContainerShip/ContainerShip/FormMapWithSetShips.cs
+++ b/ContainerShip/ContainerShip/FormMapWithSetShips.cs
@@ -71,11 +71,11 @@ namespace ContainerShip
             {
                 return;
             }
-            var formAirBomberConfig = new FormShipConfig();
-            formAirBomberConfig.AddEvent(new Action<DrawingShip>(ship => {
+            var formShipConfig = new FormShipConfig();
+            formShipConfig.AddEvent(new Action<DrawingShip>(ship => {
                 _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].add(new DrawingObjectShip(ship));
                 pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();}));
-            formAirBomberConfig.Show();
+            formShipConfig.Show();
         }
         /// <summary>
         /// Удаление объекта
-- 
2.25.1