using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AirBomber
{
internal class DrawningAirBomber : DrawningAirplane
{
///
/// Инициализация свойств
///
/// Скорость
/// Вес самолета
/// Цвет обшивки
/// Дополнительный цвет
/// Признак наличия бомб
/// Признак наличия топливных баков
/// Какой будет двигатель самолета. null - двигатели отсутствуют
public DrawningAirBomber(int speed, float weight, Color bodyColor, Color dopColor, bool hasBombs, bool hasFuelTanks, IAirplaneEngines? typeAirplaneEngines = null)
: base(speed, weight, bodyColor, 115, 155, typeAirplaneEngines)
{
Airplane = new EntityAirBomber(speed, weight, bodyColor, dopColor, hasBombs, hasFuelTanks);
}
public override void DrawTransport(Graphics g)
{
if (Airplane is not EntityAirBomber airBomber)
{
return;
}
var x = _startPosX;
var y = _startPosY;
var w = _airplaneWidth;
var h = _airplaneHeight;
Brush brush = new SolidBrush(airBomber.DopColor);
if (airBomber.HasBombs) // Бомбы снизу рисуются сначала
{
DrawBomb(g, airBomber.DopColor, new RectangleF(x + w / 2 - 15, y + h / 2 - 19, 23, 10));
DrawBomb(g, airBomber.DopColor, new RectangleF(x + w / 2 - 15, y + h / 2 + 9, 23, 10));
}
base.DrawTransport(g);
if (airBomber.HasFuelTanks)
{
g.FillEllipse(brush, new RectangleF(x + w / 4, y + h / 2 - 6, w / 2.5f, 12));
}
}
private void DrawBomb(Graphics g, Color colorBomb, RectangleF r)
{
Pen pen = new(colorBomb);
pen.Width = r.Height / 3;
var widthTail = r.Width / 6;
g.FillEllipse(new SolidBrush(colorBomb), r.X, r.Y, r.Width - widthTail, r.Height); // Основание бомбы
// Хвост бомбы
var baseTail = new PointF(r.Right - widthTail, r.Y + r.Height / 2);
g.DrawLine(pen, baseTail, new PointF(r.Right, r.Top));
g.DrawLine(pen, baseTail, new PointF(r.Right, r.Bottom));
}
}
}