using Airbus_Base.Entities; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Airbus_Base.DrawningObjects { /// /// Класс, отвечающий за прорисовку и перемещение объекта-сущности /// public class DrawningAirbus : DrawningAirplane { /// /// Инициализация свойств /// /// Скорость /// Вес /// Цвет корпуса /// Дополнительный цвет /// Признак наличия двигателей /// Признак наличия отсека для пассажиров /// Ширина картинки /// Высота картинки /// true - объект создан, false - проверка не пройдена, нельзя создать объект в этих размерах public DrawningAirbus(int speed, double weight, Color bodyColor, Color additionalColor, bool additionalEngine, bool additionalPassengerCompartment, int width, int height) : base(speed, weight, bodyColor, width, height, 159, 103) { if (EntityAirplane != null) { EntityAirplane = new EntityAirbus(speed, weight, bodyColor, additionalColor, additionalEngine, additionalPassengerCompartment); } } /// /// Прорисовка объекта /// /// public override void DrawTransport(Graphics g) { if (EntityAirplane is not EntityAirbus airBus) { return; } Pen pen = new(Color.Black); Brush additionalBrush = new SolidBrush(airBus.AdditionalColor); //Дополнительные двигатели if (airBus.AdditionalEngine) { Point[] enginedraw = { new Point(_startPosX + 55, _startPosY + 30), new Point(_startPosX + 69, _startPosY + 25), new Point(_startPosX + 55, _startPosY + 20)}; g.FillPolygon(additionalBrush, enginedraw); Point[] enginedraw1 = { new Point(_startPosX + 55, _startPosY + 75), new Point(_startPosX + 70, _startPosY + 70), new Point(_startPosX + 55, _startPosY + 65)}; g.FillPolygon(additionalBrush, enginedraw1); } base.DrawTransport(g); //Дополнительный отсек для пассажиров if (airBus.AdditionalPassengerCompartment) { Point[] points = { new Point(_startPosX + 90, _startPosY + 30), new Point(_startPosX + 100, _startPosY + 15), new Point(_startPosX + 130, _startPosY + 15), new Point(_startPosX + 140, _startPosY + 30) }; g.FillPolygon(additionalBrush, points); g.DrawLine(pen, _startPosX + 90, _startPosY + 30, _startPosX + 100, _startPosY + 15); g.DrawLine(pen, _startPosX + 100, _startPosY + 15, _startPosX + 130, _startPosY + 15); g.DrawLine(pen, _startPosX + 130, _startPosY + 15, _startPosX + 140, _startPosY + 30); } } public void SetAddColor(Color color) { ((EntityAirbus)EntityAirplane).AdditionalColor = color; } } }