79 lines
3.6 KiB
C#
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));
|
|
}
|
|
}
|
|
}
|
|
|
|
} |