diff --git a/WarmlyShip/WarmlyShip/DrawningLiner.cs b/WarmlyShip/WarmlyShip/DrawningLiner.cs
index 77bb230..b4da549 100644
--- a/WarmlyShip/WarmlyShip/DrawningLiner.cs
+++ b/WarmlyShip/WarmlyShip/DrawningLiner.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection.PortableExecutable;
using System.Text;
using System.Threading.Tasks;
@@ -52,5 +53,15 @@ namespace WarmlyShip
}
}
+
+ public void SetDopColor(Color color)
+ {
+ Ship = Ship as EntityLiner;
+ if (Ship is not null)
+ {
+ Ship = new EntityLiner(Ship.Speed, Ship.Weight, Ship.BodyColor,
+ color, (Ship as EntityLiner).SwimmingPool, (Ship as EntityLiner).DopDeck);
+ }
+ }
}
}
diff --git a/WarmlyShip/WarmlyShip/DrawningShip.cs b/WarmlyShip/WarmlyShip/DrawningShip.cs
index 8b4cc54..328582a 100644
--- a/WarmlyShip/WarmlyShip/DrawningShip.cs
+++ b/WarmlyShip/WarmlyShip/DrawningShip.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection.PortableExecutable;
using System.Text;
using System.Threading.Tasks;
@@ -199,5 +200,20 @@ namespace WarmlyShip
{
return (_startPosX, _startPosY, _startPosX + _shipWidth, _startPosY + _shipHeight);
}
+
+
+ public virtual void SetBaseColor(Color color)
+ {
+ if (Ship is EntityLiner)
+ {
+ Ship = (EntityLiner)Ship;
+ if (Ship is not null)
+ {
+ Ship = new EntityLiner(Ship.Speed, Ship.Weight, color, (Ship as EntityLiner).DopColor, (Ship as EntityLiner).SwimmingPool, (Ship as EntityLiner).DopDeck);
+ return;
+ }
+ }
+ Ship = new EntityShip(Ship.Speed, Ship.Weight, color);
+ }
}
}
diff --git a/WarmlyShip/WarmlyShip/FormLinerConfig.Designer.cs b/WarmlyShip/WarmlyShip/FormLinerConfig.Designer.cs
index 169f7b3..73ecd13 100644
--- a/WarmlyShip/WarmlyShip/FormLinerConfig.Designer.cs
+++ b/WarmlyShip/WarmlyShip/FormLinerConfig.Designer.cs
@@ -48,8 +48,8 @@
this.labelSpeed = new System.Windows.Forms.Label();
this.pictureBoxObject = new System.Windows.Forms.PictureBox();
this.panelObject = new System.Windows.Forms.Panel();
- this.button2 = new System.Windows.Forms.Button();
- this.button1 = new System.Windows.Forms.Button();
+ this.buttonCancel = new System.Windows.Forms.Button();
+ this.buttonAdd = new System.Windows.Forms.Button();
this.labelDopColor = new System.Windows.Forms.Label();
this.labelBaseColor = new System.Windows.Forms.Label();
this.groupBoxConfig.SuspendLayout();
@@ -252,8 +252,8 @@
// panelObject
//
this.panelObject.AllowDrop = true;
- this.panelObject.Controls.Add(this.button2);
- this.panelObject.Controls.Add(this.button1);
+ this.panelObject.Controls.Add(this.buttonCancel);
+ this.panelObject.Controls.Add(this.buttonAdd);
this.panelObject.Controls.Add(this.labelDopColor);
this.panelObject.Controls.Add(this.labelBaseColor);
this.panelObject.Controls.Add(this.pictureBoxObject);
@@ -265,23 +265,24 @@
this.panelObject.DragEnter += new System.Windows.Forms.DragEventHandler(this.PanelObject_DragEnter);
this.panelObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.PanelColor_MouseDown);
//
- // button2
+ // buttonCancel
//
- this.button2.Location = new System.Drawing.Point(112, 159);
- this.button2.Name = "button2";
- this.button2.Size = new System.Drawing.Size(75, 23);
- this.button2.TabIndex = 5;
- this.button2.Text = "Отмена";
- this.button2.UseVisualStyleBackColor = true;
+ this.buttonCancel.Location = new System.Drawing.Point(112, 159);
+ this.buttonCancel.Name = "buttonCancel";
+ this.buttonCancel.Size = new System.Drawing.Size(75, 23);
+ this.buttonCancel.TabIndex = 5;
+ this.buttonCancel.Text = "Отмена";
+ this.buttonCancel.UseVisualStyleBackColor = true;
//
- // button1
+ // buttonAdd
//
- this.button1.Location = new System.Drawing.Point(31, 159);
- this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(75, 23);
- this.button1.TabIndex = 4;
- this.button1.Text = "Добавить";
- this.button1.UseVisualStyleBackColor = true;
+ this.buttonAdd.Location = new System.Drawing.Point(31, 159);
+ this.buttonAdd.Name = "buttonAdd";
+ this.buttonAdd.Size = new System.Drawing.Size(75, 23);
+ this.buttonAdd.TabIndex = 4;
+ this.buttonAdd.Text = "Добавить";
+ this.buttonAdd.UseVisualStyleBackColor = true;
+ this.buttonAdd.Click += new System.EventHandler(this.ButtonOk_Click);
//
// labelDopColor
//
@@ -293,6 +294,8 @@
this.labelDopColor.TabIndex = 3;
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.LabelBaseColor_DragEnter);
//
// labelBaseColor
//
@@ -304,6 +307,7 @@
this.labelBaseColor.TabIndex = 2;
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.LabelBaseColor_DragEnter);
//
// FormLinerConfig
@@ -350,7 +354,7 @@
private Panel panelObject;
private Label labelDopColor;
private Label labelBaseColor;
- private Button button2;
- private Button button1;
+ private Button buttonCancel;
+ private Button buttonAdd;
}
}
\ No newline at end of file
diff --git a/WarmlyShip/WarmlyShip/FormLinerConfig.cs b/WarmlyShip/WarmlyShip/FormLinerConfig.cs
index dcf9a84..f8a8b45 100644
--- a/WarmlyShip/WarmlyShip/FormLinerConfig.cs
+++ b/WarmlyShip/WarmlyShip/FormLinerConfig.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
@@ -18,7 +19,7 @@ namespace WarmlyShip
///
/// Переменная-выбранная машина
///
- DrawningShip _ship = null;
+ DrawningShip _liner = null;
///
/// Событие
///
@@ -38,8 +39,7 @@ namespace WarmlyShip
panelYellow.MouseDown += PanelColor_MouseDown;
panelBlue.MouseDown += PanelColor_MouseDown;
- // TODO buttonCancel.Click with lambda
-
+ buttonCancel.Click += (sender, e) => Close();
}
///
/// Отрисовать машину
@@ -48,8 +48,8 @@ namespace WarmlyShip
{
Bitmap bmp = new(pictureBoxObject.Width, pictureBoxObject.Height);
Graphics gr = Graphics.FromImage(bmp);
- _ship?.SetPosition(5, 5, pictureBoxObject.Width, pictureBoxObject.Height);
- _ship?.DrawTransport(gr);
+ _liner?.SetPosition(5, 5, pictureBoxObject.Width, pictureBoxObject.Height);
+ _liner?.DrawTransport(gr);
pictureBoxObject.Image = bmp;
}
@@ -103,11 +103,11 @@ namespace WarmlyShip
switch (e.Data.GetData(DataFormats.Text).ToString())
{
case "labelSimpleObject":
- _ship = new DrawningShip((int)numericUpDownSpeed.Value,
+ _liner = new DrawningShip((int)numericUpDownSpeed.Value,
(int)numericUpDownWeight.Value, Color.White);
break;
case "labelModifiedObject":
- _ship = new DrawningLiner((int)numericUpDownSpeed.Value,
+ _liner = new DrawningLiner((int)numericUpDownSpeed.Value,
(int)numericUpDownWeight.Value, Color.White, Color.Black,
checkBoxSwimmingPool.Checked, checkBoxDopDeck.Checked);
break;
@@ -147,7 +147,11 @@ namespace WarmlyShip
///
private void LabelBaseColor_DragDrop(object sender, DragEventArgs e)
{
- // TODO Call method from object _car and set color
+ if (_liner != null)
+ {
+ _liner.SetBaseColor((Color)e.Data.GetData(typeof(Color)));
+ DrawLiner();
+ }
}
///
/// Принимаем дополнительный цвет
@@ -156,7 +160,13 @@ namespace WarmlyShip
///
private void LabelDopColor_DragDrop(object sender, DragEventArgs e)
{
- // TODO Call method from object _car if _car is DrawningSportCar and set dop color
+ if (_liner is DrawningLiner)
+ {
+ var liner = _liner as DrawningLiner;
+ liner.SetDopColor((Color)e.Data.GetData(typeof(Color)));
+
+ }
+ DrawLiner();
}
///
@@ -166,7 +176,7 @@ namespace WarmlyShip
///
private void ButtonOk_Click(object sender, EventArgs e)
{
- EventAddShip?.Invoke(_ship);
+ EventAddShip?.Invoke(_liner);
Close();
}
diff --git a/WarmlyShip/WarmlyShip/FormMapWithSetWarmlyShip.cs b/WarmlyShip/WarmlyShip/FormMapWithSetWarmlyShip.cs
index 5994928..eb70ecf 100644
--- a/WarmlyShip/WarmlyShip/FormMapWithSetWarmlyShip.cs
+++ b/WarmlyShip/WarmlyShip/FormMapWithSetWarmlyShip.cs
@@ -113,12 +113,27 @@ namespace WarmlyShip
///
private void ButtonAddShip_Click(object sender, EventArgs e)
{
- var formCarConfig = new FormLinerConfig();
- // TODO Call method AddEvent from formCarConfig
- formCarConfig.Show();
-
+ var formLinerConfig = new FormLinerConfig();
+ formLinerConfig.AddEvent(new(AddShip));
+ formLinerConfig.Show();
}
+ private void AddShip(DrawningShip liner)
+ {
+ if (listBoxMaps.SelectedIndex == -1)
+ {
+ MessageBox.Show("Перед добавлением объекта необходимо создать карту");
+ }
+ else if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] + new DrawningObjectShip(liner) != -1)
+ {
+ MessageBox.Show("Объект добавлен");
+ pictureBox1.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();
+ }
+ else
+ {
+ MessageBox.Show("Не удалось добавить объект");
+ }
+ }
///
/// Удаление объекта
///