diff --git a/ProjectAirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneConfig.Designer.cs b/ProjectAirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneConfig.Designer.cs
new file mode 100644
index 0000000..0163aab
--- /dev/null
+++ b/ProjectAirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneConfig.Designer.cs
@@ -0,0 +1,366 @@
+namespace ProjectAirplaneWithRadar
+{
+ partial class FormAirplaneConfig
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ configGroupBox = new GroupBox();
+ colorGroupBox = new GroupBox();
+ yellowPanel = new Panel();
+ bluePanel = new Panel();
+ greenPanel = new Panel();
+ purplePanel = new Panel();
+ blackPanel = new Panel();
+ greyPanel = new Panel();
+ whitePanel = new Panel();
+ redPanel = new Panel();
+ airplaneWithRadarLabel = new Label();
+ airplaneLabel = new Label();
+ checkDopBak = new CheckBox();
+ checkRadar = new CheckBox();
+ numericWeight = new NumericUpDown();
+ numericSpeed = new NumericUpDown();
+ weightLabel = new Label();
+ speedLabel = new Label();
+ allowPanel = new Panel();
+ addColorLabel = new Label();
+ pictureBox = new PictureBox();
+ colorLabel = new Label();
+ addButton = new Button();
+ cancelButton = new Button();
+ configGroupBox.SuspendLayout();
+ colorGroupBox.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)numericWeight).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)numericSpeed).BeginInit();
+ allowPanel.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)pictureBox).BeginInit();
+ //SuspendLayout();
+ //
+ // configGroupBox
+ //
+ configGroupBox.Controls.Add(colorGroupBox);
+ configGroupBox.Controls.Add(airplaneWithRadarLabel);
+ configGroupBox.Controls.Add(airplaneLabel);
+ configGroupBox.Controls.Add(checkDopBak);
+ configGroupBox.Controls.Add(checkRadar);
+ configGroupBox.Controls.Add(numericWeight);
+ configGroupBox.Controls.Add(numericSpeed);
+ configGroupBox.Controls.Add(weightLabel);
+ configGroupBox.Controls.Add(speedLabel);
+ configGroupBox.Location = new Point(12, 12);
+ configGroupBox.Name = "configGroupBox";
+ configGroupBox.Size = new Size(511, 279);
+ configGroupBox.TabIndex = 0;
+ configGroupBox.TabStop = false;
+ configGroupBox.Text = "Параметры";
+ //
+ // colorGroupBox
+ //
+ colorGroupBox.Controls.Add(yellowPanel);
+ colorGroupBox.Controls.Add(bluePanel);
+ colorGroupBox.Controls.Add(greenPanel);
+ colorGroupBox.Controls.Add(purplePanel);
+ colorGroupBox.Controls.Add(blackPanel);
+ colorGroupBox.Controls.Add(greyPanel);
+ colorGroupBox.Controls.Add(whitePanel);
+ colorGroupBox.Controls.Add(redPanel);
+ colorGroupBox.Location = new Point(171, 23);
+ colorGroupBox.Name = "colorGroupBox";
+ colorGroupBox.Size = new Size(234, 143);
+ colorGroupBox.TabIndex = 7;
+ colorGroupBox.TabStop = false;
+ colorGroupBox.Text = "Цвета";
+ //
+ // yellowPanel
+ //
+ yellowPanel.AllowDrop = true;
+ yellowPanel.BackColor = Color.Yellow;
+ yellowPanel.Location = new Point(174, 27);
+ yellowPanel.Name = "yellowPanel";
+ yellowPanel.Size = new Size(50, 50);
+ yellowPanel.TabIndex = 3;
+ //
+ // bluePanel
+ //
+ bluePanel.AllowDrop = true;
+ bluePanel.BackColor = Color.Blue;
+ bluePanel.Location = new Point(118, 27);
+ bluePanel.Name = "bluePanel";
+ bluePanel.Size = new Size(50, 50);
+ bluePanel.TabIndex = 2;
+ //
+ // greenPanel
+ //
+ greenPanel.AllowDrop = true;
+ greenPanel.BackColor = Color.Green;
+ greenPanel.Location = new Point(62, 27);
+ greenPanel.Name = "greenPanel";
+ greenPanel.Size = new Size(50, 50);
+ greenPanel.TabIndex = 1;
+ //
+ // purplePanel
+ //
+ purplePanel.AllowDrop = true;
+ purplePanel.BackColor = Color.Purple;
+ purplePanel.Location = new Point(174, 82);
+ purplePanel.Name = "purplePanel";
+ purplePanel.Size = new Size(50, 50);
+ purplePanel.TabIndex = 3;
+ //
+ // blackPanel
+ //
+ blackPanel.AllowDrop = true;
+ blackPanel.BackColor = Color.Black;
+ blackPanel.Location = new Point(118, 83);
+ blackPanel.Name = "blackPanel";
+ blackPanel.Size = new Size(50, 50);
+ blackPanel.TabIndex = 2;
+ //
+ // greyPanel
+ //
+ greyPanel.AllowDrop = true;
+ greyPanel.BackColor = Color.Silver;
+ greyPanel.Location = new Point(62, 83);
+ greyPanel.Name = "greyPanel";
+ greyPanel.Size = new Size(50, 50);
+ greyPanel.TabIndex = 1;
+ //
+ // whitePanel
+ //
+ whitePanel.AllowDrop = true;
+ whitePanel.BackColor = Color.White;
+ whitePanel.Location = new Point(6, 83);
+ whitePanel.Name = "whitePanel";
+ whitePanel.Size = new Size(50, 50);
+ whitePanel.TabIndex = 1;
+ //
+ // redPanel
+ //
+ redPanel.AllowDrop = true;
+ redPanel.BackColor = Color.Red;
+ redPanel.Location = new Point(6, 27);
+ redPanel.Name = "redPanel";
+ redPanel.Size = new Size(50, 50);
+ redPanel.TabIndex = 0;
+ //
+ // airplaneWithRadarLabel
+ //
+ airplaneWithRadarLabel.BorderStyle = BorderStyle.FixedSingle;
+ airplaneWithRadarLabel.Location = new Point(297, 169);
+ airplaneWithRadarLabel.Name = "airplaneWithRadarLabel";
+ airplaneWithRadarLabel.Size = new Size(120, 50);
+ airplaneWithRadarLabel.TabIndex = 9;
+ airplaneWithRadarLabel.Text = "Продвинутый";
+ airplaneWithRadarLabel.TextAlign = ContentAlignment.MiddleCenter;
+ //
+ // airplaneLabel
+ //
+ airplaneLabel.BorderStyle = BorderStyle.FixedSingle;
+ airplaneLabel.Location = new Point(171, 169);
+ airplaneLabel.Name = "airplaneLabel";
+ airplaneLabel.Size = new Size(120, 50);
+ airplaneLabel.TabIndex = 8;
+ airplaneLabel.Text = "Простой";
+ airplaneLabel.TextAlign = ContentAlignment.MiddleCenter;
+ //
+ // checkDopBak
+ //
+ checkDopBak.AutoSize = true;
+ checkDopBak.Location = new Point(6, 162);
+ checkDopBak.Name = "checkDopBak";
+ checkDopBak.Size = new Size(159, 24);
+ checkDopBak.TabIndex = 5;
+ checkDopBak.Text = "наличие доп. бака";
+ checkDopBak.UseVisualStyleBackColor = true;
+ //
+ // checkRadar
+ //
+ checkRadar.AutoSize = true;
+ checkRadar.Location = new Point(6, 132);
+ checkRadar.Name = "checkRadar";
+ checkRadar.Size = new Size(144, 24);
+ checkRadar.TabIndex = 4;
+ checkRadar.Text = "наличие радара";
+ checkRadar.UseVisualStyleBackColor = true;
+ //
+ // numericWeight
+ //
+ numericWeight.Location = new Point(6, 99);
+ numericWeight.Maximum = new decimal(new int[] { 1000, 0, 0, 0 });
+ numericWeight.Minimum = new decimal(new int[] { 100, 0, 0, 0 });
+ numericWeight.Name = "numericWeight";
+ numericWeight.Size = new Size(150, 27);
+ numericWeight.TabIndex = 3;
+ numericWeight.Value = new decimal(new int[] { 100, 0, 0, 0 });
+ //
+ // numericSpeed
+ //
+ numericSpeed.Location = new Point(6, 46);
+ numericSpeed.Maximum = new decimal(new int[] { 1000, 0, 0, 0 });
+ numericSpeed.Minimum = new decimal(new int[] { 100, 0, 0, 0 });
+ numericSpeed.Name = "numericSpeed";
+ numericSpeed.Size = new Size(150, 27);
+ numericSpeed.TabIndex = 2;
+ numericSpeed.Value = new decimal(new int[] { 100, 0, 0, 0 });
+ //
+ // weightLabel
+ //
+ weightLabel.AutoSize = true;
+ weightLabel.Location = new Point(6, 76);
+ weightLabel.Name = "weightLabel";
+ weightLabel.Size = new Size(33, 20);
+ weightLabel.TabIndex = 1;
+ weightLabel.Text = "Вес";
+ //
+ // speedLabel
+ //
+ speedLabel.AutoSize = true;
+ speedLabel.Location = new Point(6, 23);
+ speedLabel.Name = "speedLabel";
+ speedLabel.Size = new Size(73, 20);
+ speedLabel.TabIndex = 0;
+ speedLabel.Text = "Скорость";
+ //
+ // allowPanel
+ //
+ allowPanel.AllowDrop = true;
+ allowPanel.Controls.Add(addColorLabel);
+ allowPanel.Controls.Add(pictureBox);
+ allowPanel.Controls.Add(colorLabel);
+ allowPanel.Location = new Point(538, 12);
+ allowPanel.Name = "allowPanel";
+ allowPanel.Size = new Size(250, 247);
+ allowPanel.TabIndex = 1;
+ allowPanel.DragDrop += allowPanel_DragDrop;
+ allowPanel.DragEnter += allowPanel_DragEnter;
+ //
+ // addColorLabel
+ //
+ addColorLabel.AllowDrop = true;
+ addColorLabel.BorderStyle = BorderStyle.FixedSingle;
+ addColorLabel.Location = new Point(141, 10);
+ addColorLabel.Name = "addColorLabel";
+ addColorLabel.Size = new Size(104, 33);
+ addColorLabel.TabIndex = 2;
+ addColorLabel.Text = "Доп. цвет";
+ addColorLabel.TextAlign = ContentAlignment.MiddleCenter;
+ addColorLabel.DragDrop += addColorLabel_DragDrop;
+ addColorLabel.DragEnter += addColorLabel_DragEnter;
+ //
+ // pictureBox
+ //
+ pictureBox.Location = new Point(17, 50);
+ pictureBox.Name = "pictureBox";
+ pictureBox.Size = new Size(218, 190);
+ pictureBox.TabIndex = 0;
+ pictureBox.TabStop = false;
+ //
+ // colorLabel
+ //
+ colorLabel.AllowDrop = true;
+ colorLabel.BorderStyle = BorderStyle.FixedSingle;
+ colorLabel.Location = new Point(17, 10);
+ colorLabel.Name = "colorLabel";
+ colorLabel.Size = new Size(104, 33);
+ colorLabel.TabIndex = 1;
+ colorLabel.Text = "Цвет";
+ colorLabel.TextAlign = ContentAlignment.MiddleCenter;
+ colorLabel.DragDrop += colorLabel_DragDrop;
+ colorLabel.DragEnter += colorLabel_DragEnter;
+ //
+ // addButton
+ //
+ addButton.Location = new Point(555, 262);
+ addButton.Name = "addButton";
+ addButton.Size = new Size(94, 29);
+ addButton.TabIndex = 2;
+ addButton.Text = "Добавить";
+ addButton.UseVisualStyleBackColor = true;
+ addButton.Click += addButton_Click;
+ //
+ // cancelButton
+ //
+ cancelButton.Location = new Point(679, 262);
+ cancelButton.Name = "cancelButton";
+ cancelButton.Size = new Size(94, 29);
+ cancelButton.TabIndex = 3;
+ cancelButton.Text = "Отменить";
+ cancelButton.UseVisualStyleBackColor = true;
+ //
+ // FormMonorailConfig
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(800, 303);
+ Controls.Add(cancelButton);
+ Controls.Add(addButton);
+ Controls.Add(allowPanel);
+ Controls.Add(configGroupBox);
+ Name = "FormMonorailConfig";
+ Text = "FormMonorailConfig";
+ configGroupBox.ResumeLayout(false);
+ configGroupBox.PerformLayout();
+ colorGroupBox.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)numericWeight).EndInit();
+ ((System.ComponentModel.ISupportInitialize)numericSpeed).EndInit();
+ allowPanel.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)pictureBox).EndInit();
+ ResumeLayout(false);
+ }
+
+ #endregion
+
+ private GroupBox configGroupBox;
+ private CheckBox checkRadar;
+ private NumericUpDown numericWeight;
+ private NumericUpDown numericSpeed;
+ private Label weightLabel;
+ private Label speedLabel;
+ private CheckBox checkDopBak;
+ private GroupBox colorGroupBox;
+ private Panel panel5;
+ private Panel panel4;
+ private Panel panel3;
+ private Panel panel2;
+ private Panel redPanel;
+ private Panel purplePanel;
+ private Panel blackPanel;
+ private Panel greyPanel;
+ private Panel whitePanel;
+ private Label airplaneWithRadarLabel;
+ private Label airplaneLabel;
+ private Panel yellowPanel;
+ private Panel bluePanel;
+ private Panel greenPanel;
+ private Panel allowPanel;
+ private PictureBox pictureBox;
+ private Label addColorLabel;
+ private Label colorLabel;
+ private Button addButton;
+ private Button cancelButton;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneConfig.cs b/ProjectAirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneConfig.cs
new file mode 100644
index 0000000..f350074
--- /dev/null
+++ b/ProjectAirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneConfig.cs
@@ -0,0 +1,155 @@
+using ProjectAirplaneWithRadar.DrawningObjects;
+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 ProjectAirplaneWithRadar
+{
+ public partial class FormAirplaneConfig : Form
+ {
+ DrawningAirplane? _airplane = null;
+
+ private event AirplaneDelegate? EventAddAirplane;
+
+ DrawningAirplane SelectedAirplane(DrawningAirplane фшкздфту)
+ {
+ return _airplane;
+ }
+
+ public void AddEvent(AirplaneDelegate ev)
+ {
+ if (EventAddAirplane == null)
+ {
+ EventAddAirplane = ev;
+ }
+ else
+ {
+ EventAddAirplane += ev;
+ }
+ }
+
+ public FormAirplaneConfig()
+ {
+ InitializeComponent();
+ blackPanel.MouseDown += PanelColor_MouseDown;
+ greenPanel.MouseDown += PanelColor_MouseDown;
+ redPanel.MouseDown += PanelColor_MouseDown;
+ bluePanel.MouseDown += PanelColor_MouseDown;
+ greyPanel.MouseDown += PanelColor_MouseDown;
+ yellowPanel.MouseDown += PanelColor_MouseDown;
+ purplePanel.MouseDown += PanelColor_MouseDown;
+ whitePanel.MouseDown += PanelColor_MouseDown;
+ airplaneLabel.MouseDown += LabelObject_MouseDown;
+ airplaneWithRadarLabel.MouseDown += LabelObject_MouseDown;
+ cancelButton.Click += (s, e) => Close();
+ }
+
+ public void DrawAirplane()
+ {
+ Bitmap bmp = new Bitmap(pictureBox.Width, pictureBox.Height);
+ Graphics gr = Graphics.FromImage(bmp);
+ _airplane?.SetPosition(5, 5);
+ _airplane?.DrawTransport(gr);
+ pictureBox.Image = bmp;
+ }
+
+ private void PanelColor_MouseDown(object sender, MouseEventArgs e)
+ {
+ (sender as Panel)?.DoDragDrop((sender as Panel)?.BackColor,DragDropEffects.Move | DragDropEffects.Copy);
+ }
+
+ private void allowPanel_DragDrop(object sender, DragEventArgs e)
+ {
+ switch (e.Data?.GetData(DataFormats.Text).ToString())
+ {
+ case "airplaneLabel":
+ _airplane = new DrawningAirplane((int)numericSpeed.Value,
+ (int)numericWeight.Value, Color.White, Color.Silver, Color.Black, pictureBox.Width,
+ pictureBox.Height);
+ break;
+ case "airplaneWithRadarLabel":
+ _airplane = new DrawningAirplaneWithRadar((int)numericSpeed.Value,
+ (int)numericWeight.Value, Color.White, Color.Silver, Color.Black, pictureBox.Width,
+ pictureBox.Height, 4, Color.Silver, checkRadar.Checked, checkDopBak.Checked);
+ break;
+ }
+ colorLabel.BackColor = Color.Empty;
+ addColorLabel.BackColor = Color.Empty;
+ DrawAirplane();
+
+ }
+
+ private void allowPanel_DragEnter(object sender, DragEventArgs e)
+ {
+ if (e.Data?.GetDataPresent(DataFormats.Text) ?? false)
+ {
+ e.Effect = DragDropEffects.Copy;
+ }
+ else
+ {
+ e.Effect = DragDropEffects.None;
+ }
+
+ }
+
+ private void addButton_Click(object sender, EventArgs e)
+ {
+ EventAddAirplane?.Invoke(_airplane);
+ Close();
+ }
+
+ private void LabelObject_MouseDown(object sender, MouseEventArgs e)
+ {
+ (sender as Label)?.DoDragDrop((sender as Label)?.Name, DragDropEffects.Move | DragDropEffects.Copy);
+ }
+
+
+ private void colorLabel_DragDrop(object sender, DragEventArgs e)
+ {
+ if (_airplane == null)
+ return;
+ colorLabel.BackColor = (Color)e.Data.GetData(typeof(Color));
+ _airplane.ChangeColor(colorLabel.BackColor);
+ DrawAirplane();
+ }
+
+ private void colorLabel_DragEnter(object sender, DragEventArgs e)
+ {
+ if (e.Data.GetDataPresent(typeof(Color)))
+ {
+ e.Effect = DragDropEffects.Copy;
+ }
+ else
+ {
+ e.Effect = DragDropEffects.None;
+ }
+ }
+
+ private void addColorLabel_DragDrop(object sender, DragEventArgs e)
+ {
+ if ((_airplane == null) || (_airplane is DrawningAirplaneWithRadar == false))
+ return;
+ addColorLabel.BackColor = (Color)e.Data.GetData(typeof(Color));
+ ((DrawningAirplaneWithRadar)_airplane).ChangeAddColor(addColorLabel.BackColor);
+ DrawAirplane();
+ }
+
+ private void addColorLabel_DragEnter(object sender, DragEventArgs e)
+ {
+ if (e.Data.GetDataPresent(typeof(Color)))
+ {
+ e.Effect = DragDropEffects.Copy;
+ }
+ else
+ {
+ e.Effect = DragDropEffects.None;
+ }
+ }
+ }
+}
diff --git a/ProjectAirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneConfig.resx b/ProjectAirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneConfig.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/ProjectAirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneConfig.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file