93 lines
4.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using ProjectStormtrooper.Entites;
namespace ProjectStormtrooper.Drawnings;
/// <summary>
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
/// </summary>
public class DrawningStormtrooper : DrawningAirplane
{
/// <summary>
/// конструктор
/// </summary>
/// <param name="speed">Скорость</param>
/// <param name="weight">Вес</param>
/// <param name="bodyColor">Основной цвет</param>
/// <param name="additionalColor">Дополнительный цвет</param>
/// <param name="dvigatel">Признак наличия обвеса</param>
/// <param name="vint">Признак наличия антикрыла</param>
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);
}
}
}