diff --git a/AirBomber/AirBomber/DrawningAirBomber.cs b/AirBomber/AirBomber/DrawningAirBomber.cs
index 0705593..449b1ba 100644
--- a/AirBomber/AirBomber/DrawningAirBomber.cs
+++ b/AirBomber/AirBomber/DrawningAirBomber.cs
@@ -25,6 +25,19 @@ namespace AirBomber
Airplane = new EntityAirBomber(speed, weight, bodyColor, dopColor, hasBombs, hasFuelTanks);
}
+ ///
+ /// Получения копии текущего объекта. Для перемены свойств изменить необязательные аргументы нужным значением
+ ///
+ /// The speed.
+ /// The weight.
+ /// Color of the body.
+ /// Копию или Измененную копию текущего объекта
+ public DrawningAirBomber Copy(int? speed = null, float? weight = null, Color? bodyColor = null, Color? dopColor = null, bool? hasBombs = null, bool? hasFuelTanks = null)
+ {
+ var e = (EntityAirBomber)Airplane;
+ return new DrawningAirBomber(speed ?? e.Speed, weight ?? e.Weight, bodyColor ?? e.BodyColor, dopColor ?? e.DopColor, hasBombs ?? e.HasBombs, hasFuelTanks ?? e.HasFuelTanks);
+ }
+
public override void DrawTransport(Graphics g)
{
if (Airplane is not EntityAirBomber airBomber)
diff --git a/AirBomber/AirBomber/DrawningAirplane.cs b/AirBomber/AirBomber/DrawningAirplane.cs
index 08f7cce..e2e85b1 100644
--- a/AirBomber/AirBomber/DrawningAirplane.cs
+++ b/AirBomber/AirBomber/DrawningAirplane.cs
@@ -44,6 +44,18 @@
Airplane = new EntityAirplane(speed, weight, bodyColor);
}
+ ///
+ /// Получения копии текущего объекта. Для перемены свойств изменить необязательные аргументы нужным значением
+ ///
+ /// The speed.
+ /// The weight.
+ /// Color of the body.
+ /// Копию или Измененную копию текущего объекта
+ public DrawningAirplane Copy(int? speed = null, float? weight = null, Color? bodyColor = null)
+ {
+ return new DrawningAirplane(speed ?? Airplane.Speed, weight ?? Airplane.Weight, bodyColor ?? Airplane.BodyColor);
+ }
+
///
/// Инициализация свойств
///
diff --git a/AirBomber/AirBomber/FormAirplaneConfig.cs b/AirBomber/AirBomber/FormAirplaneConfig.cs
index 4a088ad..df8db6e 100644
--- a/AirBomber/AirBomber/FormAirplaneConfig.cs
+++ b/AirBomber/AirBomber/FormAirplaneConfig.cs
@@ -143,12 +143,11 @@
var color = (Color)e.Data.GetData(typeof(Color));
if (_airplane is DrawningAirBomber)
{
- var a = (EntityAirBomber)_airplane.Airplane;
- _airplane = new DrawningAirBomber(a.Speed, a.Weight, color, a.DopColor, a.HasBombs, a.HasFuelTanks);
+ _airplane = ((DrawningAirBomber)_airplane).Copy(bodyColor: color);
}
else if (_airplane is DrawningAirplane)
{
- _airplane = new DrawningAirplane(_airplane.Airplane.Speed, _airplane.Airplane.Weight, color);
+ _airplane = _airplane.Copy(bodyColor: color);
}
DrawAirplane();
}
@@ -160,10 +159,10 @@
private void LabelDopColor_DragDrop(object sender, DragEventArgs e)
{
var color = (Color)e.Data.GetData(typeof(Color));
- if (_airplane is DrawningAirBomber)
+ var airplane = _airplane as DrawningAirBomber;
+ if (airplane != null)
{
- var a = (EntityAirBomber)_airplane.Airplane;
- _airplane = new DrawningAirBomber(a.Speed, a.Weight, a.BodyColor, color, a.HasBombs, a.HasFuelTanks);
+ _airplane = airplane.Copy(dopColor: color);
}
DrawAirplane();
}