using ProjectStormtrooper.Entites; namespace ProjectStormtrooper.Drawnings; /// /// Класс, отвечающий за прорисовку и перемещение объекта-сущности /// public class DrawningStormtrooper : DrawningAirplane { /// /// конструктор /// /// Скорость /// Вес /// Основной цвет /// Дополнительный цвет /// Признак наличия обвеса /// Признак наличия антикрыла public DrawningStormtrooper(int speed, double weight, Color bodyColor, Color additionalColor, bool dvigatel, bool vint) : base(153, 110) { EntityAirplane = new EntityStormtrooper(speed, weight, bodyColor, additionalColor, dvigatel, vint); } public DrawningStormtrooper(int speed, double weight, Color bodyColor, Color additionalColor, bool dvigatel, bool vint, bool v) : this(speed, weight, bodyColor, additionalColor, dvigatel, vint) { } public override void DrawTransport(Graphics g) { if (EntityAirplane == null || EntityAirplane is not EntityStormtrooper stormtrooper || !_startPosX.HasValue || !_startPosY.HasValue) { return; } Pen pen = new(Color.Black); Brush additionalBrush = new SolidBrush(stormtrooper.AdditionalColor); if (stormtrooper.Vint) { ///отрисовка винта Point p25 = new Point(_startPosX.Value + 10, _startPosY.Value + 60); Point p26 = new Point(_startPosX.Value + 5, _startPosY.Value + 35); Point p27 = new Point(_startPosX.Value + 15, _startPosY.Value + 35); Point p28 = new Point(_startPosX.Value + 10, _startPosY.Value + 60); Point p29 = new Point(_startPosX.Value + 10, _startPosY.Value + 60); Point p30 = new Point(_startPosX.Value + 5, _startPosY.Value + 85); Point p31 = new Point(_startPosX.Value + 15, _startPosY.Value + 85); Point p32 = new Point(_startPosX.Value + 10, _startPosY.Value + 60); Point[] p_vint = { p25, p26, p27, p28, p29, p30, p31, p32 }; g.DrawPolygon(pen, p_vint); ///отрисовка крепления нижнего двигателя Point p33 = new Point(_startPosX.Value + 90, _startPosY.Value + 66); Point p34 = new Point(_startPosX.Value + 95, _startPosY.Value + 70); Point p35 = new Point(_startPosX.Value + 110, _startPosY.Value + 70); Point p36 = new Point(_startPosX.Value + 115, _startPosY.Value + 65); ///отрисовка крепления верхнего двигателя Point p37 = new Point(_startPosX.Value + 90, _startPosY.Value + 45); Point p38 = new Point(_startPosX.Value + 95, _startPosY.Value + 40); Point p39 = new Point(_startPosX.Value + 110, _startPosY.Value + 40); Point p40 = new Point(_startPosX.Value + 115, _startPosY.Value + 45); ///отрисовка верхней ракеты g.DrawEllipse(pen, _startPosX.Value + 88, _startPosY.Value + 30, 34, 10); ///отрисовка нижней ракеты g.DrawEllipse(pen, _startPosX.Value + 88, _startPosY.Value + 70, 34, 10); Point[] p_kreplenie2 = { p33, p34, p35, p36 }; Point[] p_kreplenie1 = { p37, p38, p39, p40 }; g.DrawPolygon(pen, p_kreplenie2); g.DrawPolygon(pen, p_kreplenie1); } _startPosX += 10; _startPosY += 5; base.DrawTransport(g); _startPosX -= 10; _startPosY -= 5; // отрисовка двигателей if (stormtrooper.Dvigatel) { g.FillEllipse(additionalBrush, _startPosX.Value + 75, _startPosY.Value + 25, 15, 15); g.FillEllipse(additionalBrush, _startPosX.Value + 75, _startPosY.Value + 75, 15, 15); } } }