52 lines
2.0 KiB
C#
52 lines
2.0 KiB
C#
using Tank.Entities;
|
||
|
||
namespace Tank.Drowings;
|
||
|
||
/// <summary>
|
||
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
|
||
/// </summary>
|
||
public class DrawningTank : DrawningMachine
|
||
{
|
||
/// <summary>
|
||
/// Конструктор
|
||
/// </summary>
|
||
/// <param name="speed">Скорость</param>
|
||
/// <param name="weight">Вес</param>
|
||
/// <param name="bodyColor">Основной цвет</param>
|
||
/// <param name="additionalColor">Дополнительный цвет</param>
|
||
/// <param name="pushka">Признак наличия обвеса</param>
|
||
/// <param name="pulemet">Признак наличия антикрыла</param>
|
||
|
||
public DrawningTank(int speed, double weight, Color bodyColor, Color additionalColor, bool pushka, bool pulemet) : base(218, 105)
|
||
{
|
||
EntityMachine = new EntityTank(speed, weight, bodyColor, additionalColor, pushka, pulemet);
|
||
}
|
||
/// <summary>
|
||
/// Прорисовка объекта
|
||
/// </summary>
|
||
/// <param name="g"></param>
|
||
|
||
public override void DrawTransport(Graphics g)
|
||
{
|
||
if (EntityMachine == null || EntityMachine is not EntityTank tank || !_startPosX.HasValue || !_startPosY.HasValue)
|
||
{
|
||
return;
|
||
}
|
||
|
||
base.DrawTransport(g);
|
||
Brush additionalBrush = new SolidBrush(tank.AdditionalColor);
|
||
|
||
if (tank.Pushka)
|
||
g.FillRectangle(additionalBrush, _startPosX.Value + 120, _startPosY.Value + 20, 100, 15);
|
||
|
||
if (tank.Pulemet)
|
||
{
|
||
Point p = new Point(_startPosX.Value + 75, _startPosY.Value + 10);
|
||
Point p1 = new Point(_startPosX.Value + 80, _startPosY.Value + 1);
|
||
Point p2 = new Point(_startPosX.Value + 87, _startPosY.Value + 2);
|
||
Point p3 = new Point(_startPosX.Value + 80, _startPosY.Value + 10);
|
||
Point[] p_pulemet1 = { p, p1, p2, p3 };
|
||
g.FillPolygon(additionalBrush, p_pulemet1);
|
||
}
|
||
}
|
||
} |