79 lines
3.3 KiB
C#
79 lines
3.3 KiB
C#
using DoubleDeckerBus.Entities;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Net.NetworkInformation;
|
|
|
|
namespace DoubleDeckerBus.DrawningObjects
|
|
{
|
|
public class DrawningDoubleDeckerBus : DrawningBus
|
|
{
|
|
public DrawningDoubleDeckerBus(int speed, float weight, Color bodyColor,
|
|
Color additionalColor, bool secondFloor, bool ladder, bool lineBetweenFloor, int width, int height) :
|
|
base(speed, weight, bodyColor, width, height, 120, 85)
|
|
{
|
|
|
|
if (EntityBus != null)
|
|
{
|
|
EntityBus = new EntityDoubleDeckerBus(speed, weight, bodyColor,
|
|
additionalColor, secondFloor, ladder, lineBetweenFloor);
|
|
}
|
|
}
|
|
|
|
public override void DrawTransport(Graphics g)
|
|
{
|
|
if (EntityBus is not EntityDoubleDeckerBus doubleDeckerBus)
|
|
{
|
|
return;
|
|
}
|
|
|
|
Pen pen = new(Color.Black);
|
|
Brush brAdditionalColor = new SolidBrush(doubleDeckerBus.AdditionalColor);
|
|
Brush brBlue = new SolidBrush(Color.Blue);
|
|
Brush brBlack = new SolidBrush(Color.Black);
|
|
|
|
if (doubleDeckerBus.SecondFloor)
|
|
{
|
|
g.FillRectangle(brAdditionalColor, _startPosX, _startPosY + 10, 100, 30);
|
|
|
|
g.DrawRectangle(pen, _startPosX + 30, _startPosY + 20, 10, 20);
|
|
g.FillRectangle(brBlack, _startPosX + 30, _startPosY + 20, 10, 20);
|
|
|
|
g.FillEllipse(brBlue, _startPosX + 10, _startPosY + 15, 10, 15);
|
|
g.FillEllipse(brBlue, _startPosX + 50, _startPosY + 15, 10, 15);
|
|
g.FillEllipse(brBlue, _startPosX + 70, _startPosY + 15, 10, 15);
|
|
g.FillEllipse(brBlue, _startPosX + 90, _startPosY + 15, 10, 15);
|
|
}
|
|
|
|
_startPosY += 30;
|
|
base.DrawTransport(g);
|
|
_startPosY -= 30;
|
|
|
|
if (doubleDeckerBus.Ladder)
|
|
{
|
|
if (doubleDeckerBus.SecondFloor == true)
|
|
{
|
|
//Вертикальные прямые
|
|
g.DrawLine(pen, new Point((int)(_startPosX), (int)(_startPosY + 70)), new Point((int)(_startPosX), (int)(_startPosY + 10)));
|
|
g.DrawLine(pen, new Point((int)(_startPosX + 10), (int)(_startPosY + 70)), new Point((int)(_startPosX + 10), (int)(_startPosY + 10)));
|
|
|
|
//Горизонтальные прямые
|
|
g.DrawLine(pen, new Point((int)(_startPosX), (int)(_startPosY + 20)), new Point((int)(_startPosX + 10), (int)(_startPosY + 20)));
|
|
g.DrawLine(pen, new Point((int)(_startPosX), (int)(_startPosY + 30)), new Point((int)(_startPosX + 10), (int)(_startPosY + 30)));
|
|
g.DrawLine(pen, new Point((int)(_startPosX), (int)(_startPosY + 40)), new Point((int)(_startPosX + 10), (int)(_startPosY + 40)));
|
|
g.DrawLine(pen, new Point((int)(_startPosX), (int)(_startPosY + 50)), new Point((int)(_startPosX + 10), (int)(_startPosY + 50)));
|
|
g.DrawLine(pen, new Point((int)(_startPosX), (int)(_startPosY + 60)), new Point((int)(_startPosX + 10), (int)(_startPosY + 60)));
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|