lab05 готовая

This commit is contained in:
Alkin Ivan 2024-05-07 02:36:19 +04:00
parent 6ee94b8ce5
commit 08ef0b42bd
7 changed files with 267 additions and 179 deletions

View File

@ -1,10 +1,9 @@
using System; using AirBomber.Drawnings;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AirBomber.Drawnings;
namespace AirBomber; namespace AirBomber;
public delegate DrawningAirPlane ClassDelegate(); /// <summary>
/// Делегар передачи объекта класса прорисовки
/// </summary>
/// <param name="airplane"></param>
public delegate void AirPlaneDelegate(DrawningAirPlane airplane);

View File

@ -9,6 +9,9 @@ namespace AirBomber.Entities
public class EntityAirBomber : EntityAirPlane public class EntityAirBomber : EntityAirPlane
{ {
public Color AdditionalColor { get; private set; } public Color AdditionalColor { get; private set; }
public void SetAdditionalColor(Color color) => AdditionalColor = color;
/// <summary> /// <summary>
/// Признак (опция) наличия бомб /// Признак (опция) наличия бомб
/// </summary> /// </summary>

View File

@ -18,6 +18,9 @@ public class EntityAirPlane
/// Вес /// Вес
/// </summary> /// </summary>
public double Weight { get; private set; } public double Weight { get; private set; }
public void SetBodyColor(Color color) => BodyColor = color;
/// <summary> /// <summary>
/// Основной цвет /// Основной цвет
/// </summary> /// </summary>

View File

@ -47,40 +47,7 @@ namespace AirBomber
/// Создание объекта класса-перемещения /// Создание объекта класса-перемещения
/// </summary> /// </summary>
/// <param name="type">Тип создаваемого объекта</param> /// <param name="type">Тип создаваемого объекта</param>
private void CreateObject(string type)
{
if (_company == null)
{
return;
}
DrawningAirPlane _drawningAirPlane;
Random random = new();
switch (type)
{
case nameof(DrawningAirPlane):
_drawningAirPlane = new DrawningAirPlane(random.Next(30, 70), random.Next(100, 500),
GetColor(random));
break;
case nameof(DrawningAirBomber):
_drawningAirPlane = new DrawningAirBomber(random.Next(30, 70), random.Next(100, 500),
GetColor(random), GetColor(random),
Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)));
break;
default:
return;
}
if (_company + _drawningAirPlane != -1)
{
MessageBox.Show("Объект добавлен");
pictureBox.Image = _company.Show();
}
else
{
MessageBox.Show("Не удалось добавить объект");
}
}
/// <summary> /// <summary>
/// Добавление самолета /// Добавление самолета
@ -90,10 +57,33 @@ namespace AirBomber
private void buttonAddAirPlane_Click(object sender, EventArgs e) private void buttonAddAirPlane_Click(object sender, EventArgs e)
{ {
FormAirPlaneConfig form = new(); FormAirPlaneConfig form = new();
//TODO передать метод
form.Show(); form.Show();
form.AddEvent(SetAirPlane);
} }
/// <summary>
/// Добавление самолета в коллекцию
/// </summary>
/// <param name="airplane"></param>
private void SetAirPlane(DrawningAirPlane airplane)
{
if (_company == null || airplane == null)
{
return;
}
if (_company + airplane != -1)
{
MessageBox.Show("Объект добавлен");
pictureBox.Image = _company.Show();
}
else
{
MessageBox.Show("Не удалось добавить объект");
}
}
/// <summary> /// <summary>
/// Получение цвета /// Получение цвета

View File

@ -31,11 +31,11 @@
groupBoxConfig = new GroupBox(); groupBoxConfig = new GroupBox();
groupBoxColors = new GroupBox(); groupBoxColors = new GroupBox();
panelPurple = new Panel(); panelPurple = new Panel();
panelYellow = new Panel();
panelBlack = new Panel(); panelBlack = new Panel();
panelGray = new Panel(); panelGray = new Panel();
panelWhite = new Panel();
panelYellow = new Panel();
panelBlue = new Panel(); panelBlue = new Panel();
panelWhite = new Panel();
panelGreen = new Panel(); panelGreen = new Panel();
panelRed = new Panel(); panelRed = new Panel();
checkBoxFuelTanks = new CheckBox(); checkBoxFuelTanks = new CheckBox();
@ -46,11 +46,11 @@
labelSpeed = new Label(); labelSpeed = new Label();
labelModifiedObject = new Label(); labelModifiedObject = new Label();
labelSimpleObject = new Label(); labelSimpleObject = new Label();
labelBodyColor = new Label();
pictureBoxObject = new PictureBox(); pictureBoxObject = new PictureBox();
buttonAdd = new Button(); buttonAdd = new Button();
buttonCancel = new Button(); buttonCancel = new Button();
panelObject = new Panel(); panelObject = new Panel();
labelBodyColor = new Label();
labelAdditionalColor = new Label(); labelAdditionalColor = new Label();
groupBoxConfig.SuspendLayout(); groupBoxConfig.SuspendLayout();
groupBoxColors.SuspendLayout(); groupBoxColors.SuspendLayout();
@ -73,8 +73,10 @@
groupBoxConfig.Controls.Add(labelSimpleObject); groupBoxConfig.Controls.Add(labelSimpleObject);
groupBoxConfig.Dock = DockStyle.Left; groupBoxConfig.Dock = DockStyle.Left;
groupBoxConfig.Location = new Point(0, 0); groupBoxConfig.Location = new Point(0, 0);
groupBoxConfig.Margin = new Padding(3, 4, 3, 4);
groupBoxConfig.Name = "groupBoxConfig"; groupBoxConfig.Name = "groupBoxConfig";
groupBoxConfig.Size = new Size(682, 342); groupBoxConfig.Padding = new Padding(3, 4, 3, 4);
groupBoxConfig.Size = new Size(629, 346);
groupBoxConfig.TabIndex = 0; groupBoxConfig.TabIndex = 0;
groupBoxConfig.TabStop = false; groupBoxConfig.TabStop = false;
groupBoxConfig.Text = "Параметры"; groupBoxConfig.Text = "Параметры";
@ -82,149 +84,163 @@
// groupBoxColors // groupBoxColors
// //
groupBoxColors.Controls.Add(panelPurple); groupBoxColors.Controls.Add(panelPurple);
groupBoxColors.Controls.Add(panelYellow);
groupBoxColors.Controls.Add(panelBlack); groupBoxColors.Controls.Add(panelBlack);
groupBoxColors.Controls.Add(panelGray); groupBoxColors.Controls.Add(panelGray);
groupBoxColors.Controls.Add(panelWhite);
groupBoxColors.Controls.Add(panelYellow);
groupBoxColors.Controls.Add(panelBlue); groupBoxColors.Controls.Add(panelBlue);
groupBoxColors.Controls.Add(panelWhite);
groupBoxColors.Controls.Add(panelGreen); groupBoxColors.Controls.Add(panelGreen);
groupBoxColors.Controls.Add(panelRed); groupBoxColors.Controls.Add(panelRed);
groupBoxColors.Location = new Point(285, 12); groupBoxColors.Location = new Point(360, 16);
groupBoxColors.Margin = new Padding(3, 4, 3, 4);
groupBoxColors.Name = "groupBoxColors"; groupBoxColors.Name = "groupBoxColors";
groupBoxColors.Size = new Size(221, 127); groupBoxColors.Padding = new Padding(3, 4, 3, 4);
groupBoxColors.TabIndex = 8; groupBoxColors.Size = new Size(259, 149);
groupBoxColors.TabIndex = 11;
groupBoxColors.TabStop = false; groupBoxColors.TabStop = false;
groupBoxColors.Text = "Цвета"; groupBoxColors.Text = "Цвета";
// //
// panelPurple // panelPurple
// //
panelPurple.BackColor = Color.Purple; panelPurple.BackColor = Color.Purple;
panelPurple.Location = new Point(175, 81); panelPurple.Location = new Point(201, 88);
panelPurple.Margin = new Padding(3, 4, 3, 4);
panelPurple.Name = "panelPurple"; panelPurple.Name = "panelPurple";
panelPurple.Size = new Size(39, 40); panelPurple.Size = new Size(39, 45);
panelPurple.TabIndex = 1; panelPurple.TabIndex = 3;
//
// panelBlack
//
panelBlack.BackColor = Color.Black;
panelBlack.Location = new Point(119, 81);
panelBlack.Name = "panelBlack";
panelBlack.Size = new Size(39, 40);
panelBlack.TabIndex = 1;
//
// panelGray
//
panelGray.BackColor = Color.Gray;
panelGray.Location = new Point(63, 81);
panelGray.Name = "panelGray";
panelGray.Size = new Size(39, 40);
panelGray.TabIndex = 1;
//
// panelWhite
//
panelWhite.BackColor = Color.White;
panelWhite.Location = new Point(7, 81);
panelWhite.Name = "panelWhite";
panelWhite.Size = new Size(39, 40);
panelWhite.TabIndex = 9;
// //
// panelYellow // panelYellow
// //
panelYellow.BackColor = Color.Yellow; panelYellow.BackColor = Color.Yellow;
panelYellow.Location = new Point(175, 28); panelYellow.Location = new Point(201, 29);
panelYellow.Margin = new Padding(3, 4, 3, 4);
panelYellow.Name = "panelYellow"; panelYellow.Name = "panelYellow";
panelYellow.Size = new Size(39, 40); panelYellow.Size = new Size(39, 45);
panelYellow.TabIndex = 1; panelYellow.TabIndex = 1;
// //
// panelBlack
//
panelBlack.BackColor = Color.Black;
panelBlack.Location = new Point(137, 88);
panelBlack.Margin = new Padding(3, 4, 3, 4);
panelBlack.Name = "panelBlack";
panelBlack.Size = new Size(39, 45);
panelBlack.TabIndex = 4;
//
// panelGray
//
panelGray.BackColor = Color.Gray;
panelGray.Location = new Point(77, 88);
panelGray.Margin = new Padding(3, 4, 3, 4);
panelGray.Name = "panelGray";
panelGray.Size = new Size(39, 45);
panelGray.TabIndex = 5;
//
// panelBlue // panelBlue
// //
panelBlue.BackColor = Color.Blue; panelBlue.BackColor = Color.Blue;
panelBlue.Location = new Point(119, 28); panelBlue.Location = new Point(137, 29);
panelBlue.Margin = new Padding(3, 4, 3, 4);
panelBlue.Name = "panelBlue"; panelBlue.Name = "panelBlue";
panelBlue.Size = new Size(39, 40); panelBlue.Size = new Size(39, 45);
panelBlue.TabIndex = 1; panelBlue.TabIndex = 1;
// //
// panelWhite
//
panelWhite.BackColor = Color.White;
panelWhite.Location = new Point(17, 88);
panelWhite.Margin = new Padding(3, 4, 3, 4);
panelWhite.Name = "panelWhite";
panelWhite.Size = new Size(39, 45);
panelWhite.TabIndex = 2;
//
// panelGreen // panelGreen
// //
panelGreen.BackColor = Color.Green; panelGreen.BackColor = Color.Green;
panelGreen.Location = new Point(63, 28); panelGreen.Location = new Point(77, 29);
panelGreen.Margin = new Padding(3, 4, 3, 4);
panelGreen.Name = "panelGreen"; panelGreen.Name = "panelGreen";
panelGreen.Size = new Size(39, 40); panelGreen.Size = new Size(39, 45);
panelGreen.TabIndex = 1; panelGreen.TabIndex = 1;
// //
// panelRed // panelRed
// //
panelRed.BackColor = Color.Red; panelRed.BackColor = Color.Red;
panelRed.Location = new Point(7, 28); panelRed.Location = new Point(17, 29);
panelRed.Margin = new Padding(3, 4, 3, 4);
panelRed.Name = "panelRed"; panelRed.Name = "panelRed";
panelRed.Size = new Size(39, 40); panelRed.Size = new Size(39, 45);
panelRed.TabIndex = 0; panelRed.TabIndex = 0;
panelRed.MouseDown += Panel_MouseDown; panelRed.MouseDown += Panel_MouseDown;
// //
// checkBoxFuelTanks // checkBoxFuelTanks
// //
checkBoxFuelTanks.AutoSize = true; checkBoxFuelTanks.AutoSize = true;
checkBoxFuelTanks.Location = new Point(12, 178); checkBoxFuelTanks.Location = new Point(14, 237);
checkBoxFuelTanks.Margin = new Padding(3, 4, 3, 4);
checkBoxFuelTanks.Name = "checkBoxFuelTanks"; checkBoxFuelTanks.Name = "checkBoxFuelTanks";
checkBoxFuelTanks.Size = new Size(319, 19); checkBoxFuelTanks.Size = new Size(312, 24);
checkBoxFuelTanks.TabIndex = 7; checkBoxFuelTanks.TabIndex = 7;
checkBoxFuelTanks.Text = "Признак наличия дополнительных топливных баков"; checkBoxFuelTanks.Text = "Признак наличия доп. топливных баков";
checkBoxFuelTanks.UseVisualStyleBackColor = true; checkBoxFuelTanks.UseVisualStyleBackColor = true;
// //
// checkBoxBombs // checkBoxBombs
// //
checkBoxBombs.AutoSize = true; checkBoxBombs.AutoSize = true;
checkBoxBombs.Location = new Point(12, 132); checkBoxBombs.Location = new Point(14, 176);
checkBoxBombs.Margin = new Padding(3, 4, 3, 4);
checkBoxBombs.Name = "checkBoxBombs"; checkBoxBombs.Name = "checkBoxBombs";
checkBoxBombs.Size = new Size(156, 19); checkBoxBombs.Size = new Size(196, 24);
checkBoxBombs.TabIndex = 6; checkBoxBombs.TabIndex = 6;
checkBoxBombs.Text = "Признак наличия бомб"; checkBoxBombs.Text = "Признак наличия бомб";
checkBoxBombs.UseVisualStyleBackColor = true; checkBoxBombs.UseVisualStyleBackColor = true;
// //
// numericUpDownWeight // numericUpDownWeight
// //
numericUpDownWeight.Location = new Point(80, 82); numericUpDownWeight.Location = new Point(91, 109);
numericUpDownWeight.Margin = new Padding(3, 4, 3, 4);
numericUpDownWeight.Maximum = new decimal(new int[] { 1000, 0, 0, 0 }); numericUpDownWeight.Maximum = new decimal(new int[] { 1000, 0, 0, 0 });
numericUpDownWeight.Minimum = new decimal(new int[] { 100, 0, 0, 0 }); numericUpDownWeight.Minimum = new decimal(new int[] { 100, 0, 0, 0 });
numericUpDownWeight.Name = "numericUpDownWeight"; numericUpDownWeight.Name = "numericUpDownWeight";
numericUpDownWeight.Size = new Size(88, 23); numericUpDownWeight.Size = new Size(101, 27);
numericUpDownWeight.TabIndex = 5; numericUpDownWeight.TabIndex = 5;
numericUpDownWeight.Value = new decimal(new int[] { 100, 0, 0, 0 }); numericUpDownWeight.Value = new decimal(new int[] { 100, 0, 0, 0 });
// //
// labelWeight // labelWeight
// //
labelWeight.AutoSize = true; labelWeight.AutoSize = true;
labelWeight.Location = new Point(12, 84); labelWeight.Location = new Point(14, 112);
labelWeight.Name = "labelWeight"; labelWeight.Name = "labelWeight";
labelWeight.Size = new Size(29, 15); labelWeight.Size = new Size(36, 20);
labelWeight.TabIndex = 4; labelWeight.TabIndex = 4;
labelWeight.Text = "Вес:"; labelWeight.Text = "Вес:";
// //
// numericUpDownSpeed // numericUpDownSpeed
// //
numericUpDownSpeed.Location = new Point(80, 38); numericUpDownSpeed.Location = new Point(91, 51);
numericUpDownSpeed.Margin = new Padding(3, 4, 3, 4);
numericUpDownSpeed.Maximum = new decimal(new int[] { 1000, 0, 0, 0 }); numericUpDownSpeed.Maximum = new decimal(new int[] { 1000, 0, 0, 0 });
numericUpDownSpeed.Minimum = new decimal(new int[] { 100, 0, 0, 0 }); numericUpDownSpeed.Minimum = new decimal(new int[] { 100, 0, 0, 0 });
numericUpDownSpeed.Name = "numericUpDownSpeed"; numericUpDownSpeed.Name = "numericUpDownSpeed";
numericUpDownSpeed.Size = new Size(88, 23); numericUpDownSpeed.Size = new Size(101, 27);
numericUpDownSpeed.TabIndex = 3; numericUpDownSpeed.TabIndex = 3;
numericUpDownSpeed.Value = new decimal(new int[] { 100, 0, 0, 0 }); numericUpDownSpeed.Value = new decimal(new int[] { 100, 0, 0, 0 });
// //
// labelSpeed // labelSpeed
// //
labelSpeed.AutoSize = true; labelSpeed.AutoSize = true;
labelSpeed.Location = new Point(12, 40); labelSpeed.Location = new Point(14, 53);
labelSpeed.Name = "labelSpeed"; labelSpeed.Name = "labelSpeed";
labelSpeed.Size = new Size(62, 15); labelSpeed.Size = new Size(76, 20);
labelSpeed.TabIndex = 2; labelSpeed.TabIndex = 2;
labelSpeed.Text = "Скорость:"; labelSpeed.Text = "Скорость:";
// //
// labelModifiedObject // labelModifiedObject
// //
labelModifiedObject.BorderStyle = BorderStyle.FixedSingle; labelModifiedObject.BorderStyle = BorderStyle.FixedSingle;
labelModifiedObject.Location = new Point(486, 157); labelModifiedObject.Location = new Point(466, 222);
labelModifiedObject.Name = "labelModifiedObject"; labelModifiedObject.Name = "labelModifiedObject";
labelModifiedObject.Size = new Size(134, 40); labelModifiedObject.Size = new Size(117, 53);
labelModifiedObject.TabIndex = 1; labelModifiedObject.TabIndex = 1;
labelModifiedObject.Text = "Продвинутый"; labelModifiedObject.Text = "Продвинутый";
labelModifiedObject.TextAlign = ContentAlignment.MiddleCenter; labelModifiedObject.TextAlign = ContentAlignment.MiddleCenter;
@ -233,37 +249,29 @@
// labelSimpleObject // labelSimpleObject
// //
labelSimpleObject.BorderStyle = BorderStyle.FixedSingle; labelSimpleObject.BorderStyle = BorderStyle.FixedSingle;
labelSimpleObject.Location = new Point(337, 157); labelSimpleObject.Location = new Point(330, 222);
labelSimpleObject.Name = "labelSimpleObject"; labelSimpleObject.Name = "labelSimpleObject";
labelSimpleObject.Size = new Size(134, 40); labelSimpleObject.Size = new Size(117, 53);
labelSimpleObject.TabIndex = 0; labelSimpleObject.TabIndex = 0;
labelSimpleObject.Text = "Простой"; labelSimpleObject.Text = "Простой";
labelSimpleObject.TextAlign = ContentAlignment.MiddleCenter; labelSimpleObject.TextAlign = ContentAlignment.MiddleCenter;
labelSimpleObject.MouseDown += labelObject_MouseDown; labelSimpleObject.MouseDown += labelObject_MouseDown;
// //
// labelBodyColor
//
labelBodyColor.BorderStyle = BorderStyle.FixedSingle;
labelBodyColor.Location = new Point(19, 15);
labelBodyColor.Name = "labelBodyColor";
labelBodyColor.Size = new Size(69, 40);
labelBodyColor.TabIndex = 9;
labelBodyColor.Text = "Цвет";
labelBodyColor.TextAlign = ContentAlignment.MiddleCenter;
//
// pictureBoxObject // pictureBoxObject
// //
pictureBoxObject.Location = new Point(19, 81); pictureBoxObject.Location = new Point(15, 69);
pictureBoxObject.Margin = new Padding(3, 4, 3, 4);
pictureBoxObject.Name = "pictureBoxObject"; pictureBoxObject.Name = "pictureBoxObject";
pictureBoxObject.Size = new Size(169, 151); pictureBoxObject.Size = new Size(194, 161);
pictureBoxObject.TabIndex = 1; pictureBoxObject.TabIndex = 1;
pictureBoxObject.TabStop = false; pictureBoxObject.TabStop = false;
// //
// buttonAdd // buttonAdd
// //
buttonAdd.Location = new Point(701, 271); buttonAdd.Location = new Point(672, 254);
buttonAdd.Margin = new Padding(3, 4, 3, 4);
buttonAdd.Name = "buttonAdd"; buttonAdd.Name = "buttonAdd";
buttonAdd.Size = new Size(88, 40); buttonAdd.Size = new Size(101, 53);
buttonAdd.TabIndex = 2; buttonAdd.TabIndex = 2;
buttonAdd.Text = "Добавить"; buttonAdd.Text = "Добавить";
buttonAdd.UseVisualStyleBackColor = true; buttonAdd.UseVisualStyleBackColor = true;
@ -271,9 +279,10 @@
// //
// buttonCancel // buttonCancel
// //
buttonCancel.Location = new Point(812, 271); buttonCancel.Location = new Point(786, 254);
buttonCancel.Margin = new Padding(3, 4, 3, 4);
buttonCancel.Name = "buttonCancel"; buttonCancel.Name = "buttonCancel";
buttonCancel.Size = new Size(89, 40); buttonCancel.Size = new Size(102, 53);
buttonCancel.TabIndex = 3; buttonCancel.TabIndex = 3;
buttonCancel.Text = "Отмена"; buttonCancel.Text = "Отмена";
buttonCancel.UseVisualStyleBackColor = true; buttonCancel.UseVisualStyleBackColor = true;
@ -281,35 +290,53 @@
// panelObject // panelObject
// //
panelObject.AllowDrop = true; panelObject.AllowDrop = true;
panelObject.Controls.Add(labelAdditionalColor);
panelObject.Controls.Add(labelBodyColor); panelObject.Controls.Add(labelBodyColor);
panelObject.Controls.Add(labelAdditionalColor);
panelObject.Controls.Add(pictureBoxObject); panelObject.Controls.Add(pictureBoxObject);
panelObject.Location = new Point(701, 12); panelObject.Location = new Point(679, 0);
panelObject.Margin = new Padding(3, 4, 3, 4);
panelObject.Name = "panelObject"; panelObject.Name = "panelObject";
panelObject.Size = new Size(200, 253); panelObject.Size = new Size(222, 246);
panelObject.TabIndex = 4; panelObject.TabIndex = 4;
panelObject.DragDrop += panelObject_DragDrop; panelObject.DragDrop += PanelObject_DragDrop;
panelObject.DragEnter += panelObject_DragEnter; panelObject.DragEnter += PanelObject_DragEnter;
//
// labelBodyColor
//
labelBodyColor.AllowDrop = true;
labelBodyColor.BorderStyle = BorderStyle.FixedSingle;
labelBodyColor.Location = new Point(15, 12);
labelBodyColor.Name = "labelBodyColor";
labelBodyColor.Size = new Size(85, 43);
labelBodyColor.TabIndex = 2;
labelBodyColor.Text = "Цвет";
labelBodyColor.TextAlign = ContentAlignment.MiddleCenter;
labelBodyColor.DragDrop += LabelColors_DragDrop;
labelBodyColor.DragEnter += LabelColors_DragEnter;
// //
// labelAdditionalColor // labelAdditionalColor
// //
labelAdditionalColor.AllowDrop = true;
labelAdditionalColor.BorderStyle = BorderStyle.FixedSingle; labelAdditionalColor.BorderStyle = BorderStyle.FixedSingle;
labelAdditionalColor.Location = new Point(111, 15); labelAdditionalColor.Location = new Point(123, 12);
labelAdditionalColor.Name = "labelAdditionalColor"; labelAdditionalColor.Name = "labelAdditionalColor";
labelAdditionalColor.Size = new Size(77, 40); labelAdditionalColor.Size = new Size(85, 43);
labelAdditionalColor.TabIndex = 10; labelAdditionalColor.TabIndex = 3;
labelAdditionalColor.Text = "Доп. Цвет"; labelAdditionalColor.Text = "Доп. Цвет";
labelAdditionalColor.TextAlign = ContentAlignment.MiddleCenter; labelAdditionalColor.TextAlign = ContentAlignment.MiddleCenter;
labelAdditionalColor.DragDrop += labelAdditionalColor_DragDrop;
labelAdditionalColor.DragEnter += labelAdditionalColor_DragEnter;
// //
// FormAirPlaneConfig // FormAirPlaneConfig
// //
AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleDimensions = new SizeF(8F, 20F);
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(913, 342); ClientSize = new Size(909, 346);
Controls.Add(panelObject); Controls.Add(panelObject);
Controls.Add(buttonCancel); Controls.Add(buttonCancel);
Controls.Add(buttonAdd); Controls.Add(buttonAdd);
Controls.Add(groupBoxConfig); Controls.Add(groupBoxConfig);
Margin = new Padding(3, 4, 3, 4);
Name = "FormAirPlaneConfig"; Name = "FormAirPlaneConfig";
Text = "Создание объекта"; Text = "Создание объекта";
groupBoxConfig.ResumeLayout(false); groupBoxConfig.ResumeLayout(false);
@ -333,20 +360,20 @@
private NumericUpDown numericUpDownSpeed; private NumericUpDown numericUpDownSpeed;
private Label labelSpeed; private Label labelSpeed;
private CheckBox checkBoxFuelTanks; private CheckBox checkBoxFuelTanks;
private GroupBox groupBoxColors;
private Panel panelRed;
private Panel panelYellow;
private Panel panelBlue;
private Panel panelGreen;
private Panel panelPurple;
private Panel panelBlack;
private Panel panelGray;
private Panel panelWhite;
private PictureBox pictureBoxObject; private PictureBox pictureBoxObject;
private Button buttonAdd; private Button buttonAdd;
private Button buttonCancel; private Button buttonCancel;
private Panel panelObject; private Panel panelObject;
private Label labelBodyColor;
private Label labelAdditionalColor; private Label labelAdditionalColor;
private GroupBox groupBoxColors;
private Panel panelPurple;
private Panel panelYellow;
private Panel panelBlack;
private Panel panelGray;
private Panel panelBlue;
private Panel panelWhite;
private Panel panelGreen;
private Panel panelRed;
private Label labelBodyColor;
} }
} }

View File

@ -1,13 +1,5 @@
using AirBomber.Drawnings; using AirBomber.Drawnings;
using System; using AirBomber.Entities;
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 AirBomber; namespace AirBomber;
@ -16,17 +8,23 @@ namespace AirBomber;
/// </summary> /// </summary>
public partial class FormAirPlaneConfig : Form public partial class FormAirPlaneConfig : Form
{ {
/// <summary> /// <summary>
/// Объект - прорисовка самолета /// Объект - прорисовка самолета
/// </summary> /// </summary>
private DrawningAirPlane _airplane = null; private DrawningAirPlane? _airplane = null;
/// <summary>
/// События для передачи объекта
/// </summary>
private event Action<DrawningAirPlane> AirPlaneDelegate;
/// <summary> /// <summary>
/// Конструктор /// Конструктор
/// </summary> /// </summary>
public FormAirPlaneConfig() public FormAirPlaneConfig()
{ {
InitializeComponent();
panelRed.MouseDown += Panel_MouseDown; panelRed.MouseDown += Panel_MouseDown;
panelGreen.MouseDown += Panel_MouseDown; panelGreen.MouseDown += Panel_MouseDown;
panelBlue.MouseDown += Panel_MouseDown; panelBlue.MouseDown += Panel_MouseDown;
@ -36,47 +34,57 @@ public partial class FormAirPlaneConfig : Form
panelBlack.MouseDown += Panel_MouseDown; panelBlack.MouseDown += Panel_MouseDown;
panelPurple.MouseDown += Panel_MouseDown; panelPurple.MouseDown += Panel_MouseDown;
InitializeComponent(); buttonCancel.Click += (sender, e) => Close();
} }
/// <summary> /// <summary>
/// Прорисовка объекта /// Привязка внешнего метода к событию
/// </summary> /// </summary>
private void DrawObject() /// <param name="airplaneDelegate"></param>
public void AddEvent(Action<DrawningAirPlane> airplaneDelegate)
{ {
Bitmap bpm = new(pictureBoxObject.Width, pictureBoxObject.Height); AirPlaneDelegate += airplaneDelegate;
Graphics g = Graphics.FromImage(bpm); }
/// <summary>
/// Прорисовка объекта
/// </summary>
private void DrawObject()
{
Bitmap bmp = new(pictureBoxObject.Width, pictureBoxObject.Height);
Graphics gr = Graphics.FromImage(bmp);
_airplane?.SetPictureSize(pictureBoxObject.Width, pictureBoxObject.Height); _airplane?.SetPictureSize(pictureBoxObject.Width, pictureBoxObject.Height);
_airplane?.SetPosition(5, 5); _airplane?.SetPosition(5, 5);
pictureBoxObject.Image = bpm; _airplane?.DrawTransport(gr);
pictureBoxObject.Image = bmp;
} }
/// <summary> /// <summary>
/// Передаем информацию при нажатии на Label /// Передаем информацию при нажатии на Label
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>
private void labelObject_MouseDown(object sender, MouseEventArgs e) private void labelObject_MouseDown(object sender, MouseEventArgs e)
{ {
(sender as Label)?.DoDragDrop((sender as Label)?.Name ?? string.Empty, DragDropEffects.Move | DragDropEffects.Copy); (sender as Label)?.DoDragDrop((sender as Label)?.Name ?? string.Empty, DragDropEffects.Move | DragDropEffects.Copy);
} }
/// <summary> /// <summary>
/// Проверка получаемой информации (ее типа на соответствие требуемому) /// Проверка получаемой информации (ее типа на соответствие требуемому)
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>
private void panelObject_DragEnter(object sender, DragEventArgs e) private void PanelObject_DragEnter(object sender, DragEventArgs e)
{ {
e.Effect = e.Data?.GetDataPresent(DataFormats.Text) ?? false ? DragDropEffects.Copy : DragDropEffects.None; e.Effect = e.Data?.GetDataPresent(DataFormats.Text) ?? false ? DragDropEffects.Copy : DragDropEffects.None;
} }
/// <summary> /// <summary>
/// Действия при приеме перетаскиваемой информации /// Действия при приеме перетаскиваемой информации
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>
private void panelObject_DragDrop(object sender, DragEventArgs e) private void PanelObject_DragDrop(object sender, DragEventArgs e)
{ {
switch (e.Data?.GetData(DataFormats.Text)?.ToString()) switch (e.Data?.GetData(DataFormats.Text)?.ToString())
{ {
@ -88,22 +96,80 @@ public partial class FormAirPlaneConfig : Form
Color.Black, checkBoxBombs.Checked, checkBoxFuelTanks.Checked); Color.Black, checkBoxBombs.Checked, checkBoxFuelTanks.Checked);
break; break;
} }
labelBodyColor.BackColor = Color.Empty;
labelAdditionalColor.BackColor = Color.Empty;
DrawObject(); DrawObject();
} }
/// <summary> /// <summary>
/// Передаем информацию при нажатии на Panel /// Передаем информацию при нажатии на Panel
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>
private void Panel_MouseDown(object? sender, MouseEventArgs e) private void Panel_MouseDown(object? sender, MouseEventArgs e)
{ {
// TODO отправка цвета в Drag&Drop
(sender as Control)?.DoDragDrop((sender as Control)?.BackColor ?? Color.Black, DragDropEffects.Move | DragDropEffects.Copy);
} }
private void ButtonAdd_Click(object sender, EventArgs e) // TODO Реализовать логику смены цветов: основного и дополнительного (для продвинутого объекта)
private void labelBodyColor_DragEnter(object sender, DragEventArgs e)
{ {
if (e.Data.GetDataPresent(typeof(Color)))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void labelBodyColor_DragDrop(object sender, DragEventArgs e)
{
if (_airplane != null)
{
_airplane.EntityAirPlane.SetBodyColor((Color)e.Data.GetData(typeof(Color)));
DrawObject();
}
}
private void labelAdditionalColor_DragEnter(object sender, DragEventArgs e)
{
if (_airplane is DrawningAirBomber)
{
if (e.Data.GetDataPresent(typeof(Color)))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
}
private void labelAdditionalColor_DragDrop(object sender, DragEventArgs e)
{
if (_airplane?.EntityAirPlane is EntityAirBomber _airbomber)
{
_airbomber.SetAdditionalColor((Color)e.Data.GetData(typeof(Color)));
}
DrawObject();
}
/// <summary>
/// Передача объекта
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ButtonAdd_Click(object sender, EventArgs e)
{
if (_airplane != null)
{
AirPlaneDelegate?.Invoke(_airplane);
Close();
}
} }
} }

View File

@ -18,7 +18,7 @@
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value> <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>