78 lines
3.6 KiB
C#
78 lines
3.6 KiB
C#
using Airbus_Base.Entities;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace Airbus_Base.DrawningObjects
|
||
{
|
||
/// <summary>
|
||
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
|
||
/// </summary>
|
||
public class DrawningAirbus : DrawningAirplane
|
||
{
|
||
/// <summary>
|
||
/// Инициализация свойств
|
||
/// </summary>
|
||
/// <param name="speed">Скорость</param>
|
||
/// <param name="weight">Вес</param>
|
||
/// <param name="bodyColor">Цвет корпуса</param>
|
||
/// <param name="additionalColor">Дополнительный цвет</param>
|
||
/// <param name="additionalEngine">Признак наличия двигателей</param>
|
||
/// <param name="additionalPassengerCompartment">Признак наличия отсека для пассажиров</param>
|
||
/// <param name="width">Ширина картинки</param>
|
||
/// <param name="height">Высота картинки</param>
|
||
/// <returns>true - объект создан, false - проверка не пройдена, нельзя создать объект в этих размерах</returns>
|
||
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);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Прорисовка объекта
|
||
/// </summary>
|
||
/// <param name="g"></param>
|
||
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);
|
||
}
|
||
}
|
||
}
|
||
}
|