85 lines
3.2 KiB
C#
85 lines
3.2 KiB
C#
using HoistingCrane.Entities;
|
||
using System.Configuration;
|
||
|
||
namespace HoistingCrane.Drawning;
|
||
|
||
//В данном классе мы будем думать над полем игры, размерами персонажа, размерами объектов и т.д.
|
||
public class DrawningHoistingCrane : DrawningTrackedVehicle
|
||
{
|
||
|
||
/// <summary>
|
||
/// Ширина окна
|
||
/// </summary>
|
||
private int? _pictureWidth;
|
||
|
||
/// <summary>
|
||
/// Высота окна
|
||
/// </summary>
|
||
private int? _pictureHeight;
|
||
|
||
/// <summary>
|
||
/// Ширина прорисовки автомобиля
|
||
/// </summary>
|
||
private readonly int _drawingCarWidth = 115;
|
||
|
||
/// <summary>
|
||
/// Высота прорисовки автомобиля
|
||
/// </summary>
|
||
private readonly int _drawingCarHeight = 63;
|
||
|
||
|
||
/// <summary>
|
||
/// конструктор класса отрисовки крана
|
||
/// </summary>
|
||
/// <param name="AdditionalColor">Дополнительный цвет</param>
|
||
/// <param name="Counterweight">Противовес</param>
|
||
/// <param name="Platform">Платформа</param>
|
||
public DrawningHoistingCrane(int speed, int weight, Color bodyColor, Color additionalColor, bool counterweight, bool platform) : base(115, 63)
|
||
{
|
||
EntityTrackedVehicle = new EntityHoistingCrane(speed, weight, bodyColor, additionalColor, counterweight, platform);
|
||
}
|
||
|
||
/// <summary>
|
||
/// Метод отрисовки объекта
|
||
/// </summary>
|
||
/// <param name="gr"></param>
|
||
public override void DrawTransport(Graphics gr)
|
||
{
|
||
if (EntityTrackedVehicle == null || EntityTrackedVehicle is not EntityHoistingCrane EntityHoistingCrane || !_startPosX.HasValue || !_startPosY.HasValue)
|
||
{
|
||
return;
|
||
}
|
||
|
||
base.DrawTransport(gr);
|
||
Brush b = new SolidBrush(EntityHoistingCrane.AdditionalColor);
|
||
Pen pen = new Pen(EntityHoistingCrane.AdditionalColor);
|
||
Pen penBase = new Pen(EntityHoistingCrane.BodyColor);
|
||
if (EntityHoistingCrane.Counterweight)
|
||
{
|
||
//противовес
|
||
|
||
gr.DrawRectangle(pen, _startPosX.Value + 69, _startPosY.Value + 3, 10, 10);
|
||
gr.DrawLine(pen, _startPosX.Value + 68, _startPosY.Value + 3, _startPosX.Value + 78, _startPosY.Value + 12);
|
||
gr.DrawLine(pen, _startPosX.Value + 68, _startPosY.Value + 7, _startPosX.Value + 78, _startPosY.Value + 3);
|
||
}
|
||
|
||
if (EntityHoistingCrane.Platform) {
|
||
//Наличие спусковой платформы
|
||
|
||
gr.FillRectangle(b, _startPosX.Value + 101, _startPosY.Value + 40, 15, 5);
|
||
gr.FillRectangle(b, _startPosX.Value + 116, _startPosY.Value + 35, 4, 5);
|
||
gr.FillRectangle(b, _startPosX.Value + 97, _startPosY.Value + 35, 4, 5);
|
||
}
|
||
|
||
|
||
//Отрисовка крана, на котором держится платформа и противовес
|
||
gr.FillRectangle(b, _startPosX.Value + 65, _startPosY.Value, 5, 26);
|
||
gr.FillRectangle(b, _startPosX.Value + 65, _startPosY.Value, 50, 4);
|
||
gr.DrawLine(penBase, _startPosX.Value + 115, _startPosY.Value + 4, _startPosX.Value + 108, _startPosY.Value + 40);
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|