using Airbus_Base.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Airbus_Base.DrawningObjects
{
///
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
///
public class DrawningAirbus : DrawningAirplane
{
///
/// Инициализация свойств
///
/// Скорость
/// Вес
/// Цвет корпуса
/// Дополнительный цвет
/// Признак наличия двигателей
/// Признак наличия отсека для пассажиров
/// Ширина картинки
/// Высота картинки
/// true - объект создан, false - проверка не пройдена, нельзя создать объект в этих размерах
public DrawningAirbus(int speed, double weight, Color bodyColor, Color
additionalColor, bool additionalEngine, bool additionalPassengerCompartment, int width, int height) :
base(speed, weight, bodyColor, width, height, 159, 103)
{
if (EntityAirplane != null)
{
EntityAirplane = new EntityAirbus(speed, weight, bodyColor,
additionalColor, additionalEngine, additionalPassengerCompartment);
}
}
///
/// Прорисовка объекта
///
///
public override void DrawTransport(Graphics g)
{
if (EntityAirplane is not EntityAirbus airBus)
{
return;
}
Pen pen = new(Color.Black);
Brush additionalBrush = new SolidBrush(airBus.AdditionalColor);
//Дополнительные двигатели
if (airBus.AdditionalEngine)
{
Point[] enginedraw = { new Point(_startPosX + 55, _startPosY + 30),
new Point(_startPosX + 69, _startPosY + 25), new Point(_startPosX + 55, _startPosY + 20)};
g.FillPolygon(additionalBrush, enginedraw);
Point[] enginedraw1 = { new Point(_startPosX + 55, _startPosY + 75),
new Point(_startPosX + 70, _startPosY + 70), new Point(_startPosX + 55, _startPosY + 65)};
g.FillPolygon(additionalBrush, enginedraw1);
}
base.DrawTransport(g);
//Дополнительный отсек для пассажиров
if (airBus.AdditionalPassengerCompartment)
{
Point[] points = { new Point(_startPosX + 90, _startPosY + 30),
new Point(_startPosX + 100, _startPosY + 15), new Point(_startPosX + 130, _startPosY + 15),
new Point(_startPosX + 140, _startPosY + 30) };
g.FillPolygon(additionalBrush, points);
g.DrawLine(pen, _startPosX + 90, _startPosY + 30, _startPosX + 100, _startPosY + 15);
g.DrawLine(pen, _startPosX + 100, _startPosY + 15, _startPosX + 130, _startPosY + 15);
g.DrawLine(pen, _startPosX + 130, _startPosY + 15, _startPosX + 140, _startPosY + 30);
}
}
public void SetAddColor(Color color)
{
((EntityAirbus)EntityAirplane).AdditionalColor = color;
}
}
}