89 lines
3.9 KiB
C#
89 lines
3.9 KiB
C#
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 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);
|
||
}
|
||
}
|
||
} |