2023-12-15 22:22:18 +04:00

82 lines
3.8 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 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);
}
}
public void SetAddColor(Color color)
{
((EntityAirbus)EntityAirplane).AdditionalColor = color;
}
}
}