using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Catamaran { internal class DrawingCatamaran : DrawingBoat { /// /// Инициализация свойств /// /// Скорость /// Вес автомобиля /// Цвет кузова /// Дополнительный цвет /// Признак наличия обвеса /// Признак наличия антикрыла public DrawingCatamaran(int speed, float weight, Color bodyColor, Color dopColor, bool Floats, bool Sail) : base(speed, weight, bodyColor, 110, 60) { Catamaran = new EntityCatamaran(speed, weight, bodyColor, dopColor, Floats, Sail); } public DrawingCatamaran Copy(int? speed = null, float? weight = null, Color? bodyColor = null, Color? dopColor = null, bool? Floats = null, bool? Sail = null) { var b = (EntityCatamaran)Catamaran; return new DrawingCatamaran(speed ?? b.Speed, weight ?? b.Weight, bodyColor ?? b.BodyColor, dopColor ?? b.DopColor, Floats ?? b.Floats, Sail ?? b.Sail); } public override void DrawTransport(Graphics g) { if (!(Catamaran is EntityCatamaran catamaranPro)) { return; } Pen pen = new Pen(Color.Black); Brush dopBrush = new SolidBrush(catamaranPro.DopColor); if (catamaranPro.Floats) { g.DrawEllipse(pen, _startPosX, _startPosY, (int)(_catamaranWidth / 2), (int)(_catamaranHeight / 2)); g.FillEllipse(dopBrush, _startPosX, _startPosY, (int)(_catamaranWidth / 2), (int)(_catamaranHeight / 2)); g.DrawEllipse(pen, _startPosX, 10 + _startPosY + (int)(_catamaranHeight / 2), (int)(_catamaranWidth / 2), (int)(_catamaranHeight / 2)); g.FillEllipse(dopBrush, _startPosX, 10 + _startPosY + (int)(_catamaranHeight / 2), (int)(_catamaranWidth / 2), (int)(_catamaranHeight / 2)); } _startPosX += 10; _startPosY += 5; base.DrawTransport(g); _startPosX -= 10; _startPosY -= 5; if (catamaranPro.Sail) { Point point_1 = new Point((int)(_startPosX + _catamaranWidth * 2 / 4), (int)_startPosY + 5); Point point_2 = new Point((int)(_startPosX + _catamaranWidth), (int)(_startPosY + _catamaranHeight / 2)); Point point_3 = new Point((int)(_startPosX + _catamaranWidth * 2 / 4), (int)(_startPosY + _catamaranHeight)); Point[] pointsArray = { point_1, point_2, point_3 }; g.DrawPolygon(pen, pointsArray); g.FillPolygon(dopBrush, pointsArray); } } } }