Изменена установка свойств самолетов

This commit is contained in:
Данияр Аглиуллов 2022-10-19 18:22:27 +04:00
parent 017d1885d9
commit 3bd0aee272
3 changed files with 30 additions and 6 deletions

View File

@ -25,6 +25,19 @@ namespace AirBomber
Airplane = new EntityAirBomber(speed, weight, bodyColor, dopColor, hasBombs, hasFuelTanks); 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) public override void DrawTransport(Graphics g)
{ {
if (Airplane is not EntityAirBomber airBomber) if (Airplane is not EntityAirBomber airBomber)

View File

@ -44,6 +44,18 @@
Airplane = new EntityAirplane(speed, weight, bodyColor); 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>
/// Инициализация свойств /// Инициализация свойств
/// </summary> /// </summary>

View File

@ -143,12 +143,11 @@
var color = (Color)e.Data.GetData(typeof(Color)); var color = (Color)e.Data.GetData(typeof(Color));
if (_airplane is DrawningAirBomber) if (_airplane is DrawningAirBomber)
{ {
var a = (EntityAirBomber)_airplane.Airplane; _airplane = ((DrawningAirBomber)_airplane).Copy(bodyColor: color);
_airplane = new DrawningAirBomber(a.Speed, a.Weight, color, a.DopColor, a.HasBombs, a.HasFuelTanks);
} }
else if (_airplane is DrawningAirplane) else if (_airplane is DrawningAirplane)
{ {
_airplane = new DrawningAirplane(_airplane.Airplane.Speed, _airplane.Airplane.Weight, color); _airplane = _airplane.Copy(bodyColor: color);
} }
DrawAirplane(); DrawAirplane();
} }
@ -160,10 +159,10 @@
private void LabelDopColor_DragDrop(object sender, DragEventArgs e) private void LabelDopColor_DragDrop(object sender, DragEventArgs e)
{ {
var color = (Color)e.Data.GetData(typeof(Color)); 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 = airplane.Copy(dopColor: color);
_airplane = new DrawningAirBomber(a.Speed, a.Weight, a.BodyColor, color, a.HasBombs, a.HasFuelTanks);
} }
DrawAirplane(); DrawAirplane();
} }