using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WarmlyShip.Entities; namespace WarmlyShip.DrawningObjects { /// /// Класс, отвечающий за прорисовку и перемещение объекта-сущности /// public class DrawningWarmlyShip : DrawningShip { /// /// Инициализация свойств /// /// Скорость /// Вес /// Цвет корпуса /// Дополнительный цвет /// Признак наличия труб /// Признак наличия отсека для топлива /// Ширина картинки /// Высота картинки /// true - объект создан, false - проверка не пройдена, нельзя создать объект в этих размерах public DrawningWarmlyShip(int speed, double weight, Color bodyColor, Color additionalColor, bool pipe, bool fuelCompartment, int width, int height) : base(speed, weight, bodyColor, width, height, 140, 60) { if (EntityShip != null) { EntityShip = new EntityWarmlyShip(speed, weight, bodyColor, additionalColor, pipe, fuelCompartment); } } /// /// Прорисовка объекта /// /// public override void DrawTransport(Graphics g) { if (EntityShip is not EntityWarmlyShip warmlyShip) { return; } Pen pen = new(Color.Black); Brush additionalBrush = new SolidBrush(warmlyShip.AdditionalColor); if (warmlyShip.Pipe) { //трубы g.FillRectangle(additionalBrush, _startPosX + 20, _startPosY + 5, 10, 15); g.DrawRectangle(pen, _startPosX + 20, _startPosY + 5, 10, 15); g.FillRectangle(additionalBrush, _startPosX + 60, _startPosY + 5, 10, 15); g.DrawRectangle(pen, _startPosX + 60, _startPosY + 5, 10, 15); g.FillRectangle(additionalBrush, _startPosX + 100, _startPosY + 5, 10, 15); g.DrawRectangle(pen, _startPosX + 100, _startPosY + 5, 10, 15); Brush brBlack = new SolidBrush(Color.Black); g.FillRectangle(brBlack, _startPosX + 20, _startPosY, 10, 5); g.DrawRectangle(pen, _startPosX + 20, _startPosY, 10, 5); g.FillRectangle(brBlack, _startPosX + 60, _startPosY, 10, 5); g.DrawRectangle(pen, _startPosX + 60, _startPosY, 10, 5); g.FillRectangle(brBlack, _startPosX + 100, _startPosY, 10, 5); g.DrawRectangle(pen, _startPosX + 100, _startPosY, 10, 5); } base.DrawTransport(g); if (warmlyShip.FuelCompartment) { // отсек под топливо g.FillRectangle(additionalBrush, _startPosX + 30, _startPosY + 45, 20, 15); g.DrawRectangle(pen, _startPosX + 30, _startPosY + 45, 20, 15); g.FillRectangle(additionalBrush, _startPosX + 50, _startPosY + 45, 20, 15); g.DrawRectangle(pen, _startPosX + 50, _startPosY + 45, 20, 15); g.FillRectangle(additionalBrush, _startPosX + 70, _startPosY + 45, 20, 15); g.DrawRectangle(pen, _startPosX + 70, _startPosY + 45, 20, 15); } } } }