93 lines
4.3 KiB
C#
93 lines
4.3 KiB
C#
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);
|
||
}
|
||
}
|
||
}
|
||
}
|