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);
}
}
}