2023-10-26 00:36:02 +04:00

79 lines
3.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Monorail.Entities;
namespace Monorail.DrawningObjects
{
public class DrawningLocomotive : DrawningMonorail
{
public DrawningLocomotive(int speed, double weight, Color bodyColor, Color wheelColor, Color tireColor, int width, int height, int addWheelsNumb,
Color additionalColor, bool secondCabine, bool magniteRail) : base(speed, weight, bodyColor, wheelColor, tireColor, width, height)
{
if (EntityMonorail != null)
{
EntityMonorail = new EntityLocomotive(speed, weight, bodyColor, wheelColor, tireColor,
addWheelsNumb, additionalColor, secondCabine, magniteRail);
}
}
public override void DrawTransport(Graphics g)
{
base.DrawTransport(g);
int dif = _monoRailWidth / 10;
_monoRailWidth -= dif;
Pen windowPen = new(Color.Blue);
Brush wheelBrush = new SolidBrush(EntityMonorail.WheelColor);
Brush windowBrush = new SolidBrush(Color.White);
if (EntityMonorail == null)
return;
if (EntityMonorail is not EntityLocomotive advancedMonorail)
{
return;
}
Pen additionalPen = new(advancedMonorail.AdditionalColor);
Brush additionalBrush = new SolidBrush(advancedMonorail.AdditionalColor);
//3 колеса
if (advancedMonorail.AddWheelsNumb >= 3)
{
g.FillEllipse(additionalBrush, _startPosX + _monoRailWidth / 10 * 6, _startPosY + _monoRailHeight / 10 * 7, wheelSz, wheelSz);
g.DrawEllipse(additionalPen, _startPosX + _monoRailWidth / 10 * 6, _startPosY + _monoRailHeight / 10 * 7, wheelSz, wheelSz);
}
//4 колеса
if (advancedMonorail.AddWheelsNumb >= 4)
{
g.FillEllipse(additionalBrush, _startPosX + _monoRailWidth / 10 * 3, _startPosY + _monoRailHeight / 10 * 7, wheelSz, wheelSz);
g.DrawEllipse(additionalPen, _startPosX + _monoRailWidth / 10 * 3, _startPosY + _monoRailHeight / 10 * 7, wheelSz, wheelSz);
}
if (advancedMonorail.SecondCabine)
{
Point[] pointsSecondCabine = { new Point(_startPosX + _monoRailWidth / 20 * 19, _startPosY + _monoRailHeight / 10),
new Point(_startPosX + _monoRailWidth + dif, _startPosY + _monoRailHeight / 5 * 2),
new Point(_startPosX + _monoRailWidth + dif, _startPosY + _monoRailHeight / 10 * 7),
new Point(_startPosX + _monoRailWidth / 20 * 19, _startPosY + _monoRailHeight / 10 * 7),};
g.FillPolygon(additionalBrush, pointsSecondCabine);
g.DrawPolygon(additionalPen, pointsSecondCabine);
Rectangle Rect = new();
Rect.X = _startPosX + _monoRailWidth / 20 * 19;
Rect.Y = _startPosY + _monoRailHeight / 25 * 4 + _monoRailHeight / 50 * 3;
Rect.Width = _monoRailWidth / 120 * 6;
Rect.Height = _monoRailHeight / 50 * 7;
g.DrawRectangle(windowPen, Rect);
g.FillRectangle(windowBrush, Rect);
}
_monoRailWidth += dif;
//магнитная линия
if (advancedMonorail.MagniteRail)
{
g.DrawLine(additionalPen, new Point(_startPosX, _startPosY + _monoRailHeight - 1), new Point(_startPosX + _monoRailWidth, _startPosY + _monoRailHeight - 1));
}
}
}
}