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(); }