From 3bd0aee272ca54ab1af6a4256bafa9ddc1a3175a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B0=D0=BD=D0=B8=D1=8F=D1=80=20=D0=90=D0=B3=D0=BB?= =?UTF-8?q?=D0=B8=D1=83=D0=BB=D0=BB=D0=BE=D0=B2?= <danuar228@mail.ru> Date: Wed, 19 Oct 2022 18:22:27 +0400 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B0?= =?UTF-8?q?=20=D1=81=D0=B2=D0=BE=D0=B9=D1=81=D1=82=D0=B2=20=D1=81=D0=B0?= =?UTF-8?q?=D0=BC=D0=BE=D0=BB=D0=B5=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AirBomber/AirBomber/DrawningAirBomber.cs | 13 +++++++++++++ AirBomber/AirBomber/DrawningAirplane.cs | 12 ++++++++++++ AirBomber/AirBomber/FormAirplaneConfig.cs | 11 +++++------ 3 files changed, 30 insertions(+), 6 deletions(-) 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); } + /// <summary> + /// Получения копии текущего объекта. Для перемены свойств изменить необязательные аргументы нужным значением + /// </summary> + /// <param name="speed">The speed.</param> + /// <param name="weight">The weight.</param> + /// <param name="bodyColor">Color of the body.</param> + /// <returns>Копию или Измененную копию текущего объекта</returns> + 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); } + /// <summary> + /// Получения копии текущего объекта. Для перемены свойств изменить необязательные аргументы нужным значением + /// </summary> + /// <param name="speed">The speed.</param> + /// <param name="weight">The weight.</param> + /// <param name="bodyColor">Color of the body.</param> + /// <returns>Копию или Измененную копию текущего объекта</returns> + public DrawningAirplane Copy(int? speed = null, float? weight = null, Color? bodyColor = null) + { + return new DrawningAirplane(speed ?? Airplane.Speed, weight ?? Airplane.Weight, bodyColor ?? Airplane.BodyColor); + } + /// <summary> /// Инициализация свойств /// </summary> 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(); }