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)); } } } }