73 lines
3.4 KiB
C#
73 lines
3.4 KiB
C#
using Bulldozer.Entities;
|
||
|
||
namespace Bulldozer.DrawingObjects
|
||
{
|
||
public class DrawingBulldozerUpgraded : DrawingBulldozer
|
||
{
|
||
/// <summary>
|
||
/// Конструктор
|
||
/// </summary>
|
||
/// <param name="speed">Скорость</param>
|
||
/// <param name="weight">Вес</param>
|
||
/// <param name="bodyColor">Основной цвет</param>
|
||
/// <param name="additionalColor">Дополнительный цвет</param>
|
||
/// <param name="blade">Признак наличия рыхлителя</param>
|
||
/// <param name="ripper">Признак наличия отвала</param>
|
||
/// <param name="width">Ширина картинки</param>
|
||
/// <param name="height">Высота картинки</param>
|
||
|
||
|
||
public DrawingBulldozerUpgraded(int speed, double weight, Color bodyColor, Color additionalColor, Color dopColor, bool blade, bool ripper, int width, int height) :
|
||
base(speed, weight, bodyColor, additionalColor, width, height)
|
||
{
|
||
if (EntityBulldozer != null)
|
||
{
|
||
EntityBulldozer = new EntityBulldozerUpgraded(speed, weight, bodyColor, additionalColor, dopColor, blade, ripper);
|
||
}
|
||
}
|
||
public override void DrawTransport(Graphics g)
|
||
{
|
||
if (EntityBulldozer is not EntityBulldozerUpgraded upgradedBulldozer)
|
||
{
|
||
return;
|
||
}
|
||
Brush dopBrush = new SolidBrush(upgradedBulldozer.DopColor);
|
||
Pen dopPen = new Pen(upgradedBulldozer.DopColor);
|
||
/// <summary>
|
||
/// Отрисовка отвала бульдозера
|
||
/// </summary>
|
||
base.DrawTransport(g);
|
||
if (upgradedBulldozer.Blade)
|
||
{
|
||
Point point1 = new Point(_startPosX + 8, _startPosY + 29);
|
||
Point point2 = new Point(_startPosX + 8, _startPosY + 50);
|
||
Point point3 = new Point(_startPosX, _startPosY + 50);
|
||
Point[] triangle = { point1, point2, point3 };
|
||
|
||
g.FillRectangle(dopBrush, _startPosX + 8, _startPosY + 29, 8, 8); // заливка основания отвала
|
||
g.FillPolygon(dopBrush, triangle); // заливка отвала
|
||
|
||
g.DrawRectangle(dopPen, _startPosX + 8, _startPosY + 29, 8, 8); // обводка основания отвала
|
||
g.DrawPolygon(dopPen, triangle); // обводка отвала
|
||
}
|
||
|
||
/// <summary>
|
||
/// Отрисовка рыхлителя бульдозера
|
||
/// </summary>
|
||
if (upgradedBulldozer.Ripper)
|
||
{
|
||
Point ripperPoint1 = new Point(_startPosX + 140, _startPosY + 37);
|
||
Point ripperPoint2 = new Point(_startPosX + 151, _startPosY + 37);
|
||
Point ripperPoint3 = new Point(_startPosX + 140, _startPosY + 60);
|
||
Point[] ripper = { ripperPoint1, ripperPoint2, ripperPoint3 };
|
||
|
||
g.FillRectangle(dopBrush, _startPosX + 136, _startPosY + 29, 15, 8); // заливка основания рыхлителя
|
||
g.FillPolygon(dopBrush, ripper); // заливка отвала
|
||
|
||
g.DrawRectangle(dopPen, _startPosX + 136, _startPosY + 29, 15, 8); // обводка основания рыхлителя
|
||
g.DrawPolygon(dopPen, ripper);
|
||
}
|
||
}
|
||
}
|
||
}
|