93 lines
4.3 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 System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AircraftCarrier
{
/// <summary>
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
/// </summary>
internal class DrawingPlaneWarship : DrawingWarship
{
/// <summary>
/// Инициализация свойств
/// </summary>
/// <param name="speed">Скорость</param>
/// <param name="weight">Вес корабля</param>
/// <param name="bodyColor">Цвет</param>
/// <param name="dopColor">Дополнительный цвет</param>
/// <param name="bodyKit">Признак наличия обвеса</param>
/// <param name="controlplace">Признак наличия рубки управления</param>
/// <param name="runway">Признак наличия взлетной полосы</param>
public DrawingPlaneWarship(int speed, float weight, Color bodyColor, Color dopColor, bool bodyKit, bool controlplace, bool runway) :
base(speed, weight, bodyColor, 244, 100)
{
Ship = new EntityPlaneWarship(speed, weight, bodyColor, dopColor, bodyKit, controlplace, runway);
}
public override void DrawTransport(Graphics g)
{
if (Ship is not EntityPlaneWarship planeWarship)
{
return;
}
Pen pen = new(Color.Black);
Brush dopBrush = new SolidBrush(planeWarship.DopColor);
Brush brYellow = new SolidBrush(Color.Yellow);
Brush br = new SolidBrush(Ship?.BodyColor ?? Color.White);
if (planeWarship.BodyKit)
{
// броня корабля
PointF pointShipArmor1 = new PointF(_startPosX + 167, _startPosY + 25);
PointF pointShipArmor2 = new PointF(_startPosX + 237, _startPosY + 40);
PointF pointShipArmor3 = new PointF(_startPosX + 167, _startPosY + 75);
PointF pointShipArmor4 = new PointF(_startPosX + 237, _startPosY + 55);
PointF[] PointsShipArmor =
{
pointShipArmor1, pointShipArmor2, pointShipArmor3, pointShipArmor4,
};
g.FillPolygon(br, PointsShipArmor);
g.DrawPolygon(pen, PointsShipArmor);
g.DrawEllipse(pen, _startPosX + 224, _startPosY + 37, 20, 20);
g.FillEllipse(br, _startPosX + 224, _startPosY + 37, 20, 20);
// торпеда
g.DrawRectangle(pen, _startPosX + 30, _startPosY + 8, 105, 15);
g.FillRectangle(br, _startPosX + 30, _startPosY + 8, 105, 15);
g.DrawEllipse(pen, _startPosX + 130, _startPosY + 5, 35, 20);
g.FillEllipse(br, _startPosX + 130, _startPosY + 5, 35, 20);
}
_startPosX += 22;
_startPosY += 25;
base.DrawTransport(g);
_startPosX -= 22;
_startPosY -= 25;
if (planeWarship.RunWay)
{
//взлетная полоса
g.DrawRectangle(pen, _startPosX + 27, _startPosY + 75, 140, 25);
g.DrawRectangle(pen, _startPosX + 32, _startPosY + 87, 25, 5);
g.DrawRectangle(pen, _startPosX + 82, _startPosY + 87, 25, 5);
g.DrawRectangle(pen, _startPosX + 132, _startPosY + 87, 25, 5);
g.FillRectangle(brYellow, _startPosX + 32, _startPosY + 87, 25, 5);
g.FillRectangle(brYellow, _startPosX + 82, _startPosY + 87, 25, 5);
g.FillRectangle(brYellow, _startPosX + 132, _startPosY + 87, 25, 5);
}
if (planeWarship.СontrolPlace)
{
g.FillEllipse(dopBrush, _startPosX + 127, _startPosY + 30, 10, 10);
g.DrawEllipse(pen, _startPosX + 127, _startPosY + 30, 10, 10);
g.FillEllipse(dopBrush, _startPosX + 137, _startPosY + 30, 10, 10);
g.DrawEllipse(pen, _startPosX + 137, _startPosY + 30, 10, 10);
g.FillRectangle(dopBrush, _startPosX + 132, _startPosY + 30, 10, 10);
g.DrawRectangle(pen, _startPosX + 132, _startPosY + 30, 10, 10);
}
}
}
}