From 5d893ed49ac65b9c0dd25e9c6e6651c51209c226 Mon Sep 17 00:00:00 2001 From: MorozovDanil Date: Tue, 13 Feb 2024 22:35:33 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=B2?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DrawningContainerShip.cs | 40 +++++++++++++------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/ProjectContainerShip/ProjectContainerShip/DrawningContainerShip.cs b/ProjectContainerShip/ProjectContainerShip/DrawningContainerShip.cs index 61ce1ff..14dc86c 100644 --- a/ProjectContainerShip/ProjectContainerShip/DrawningContainerShip.cs +++ b/ProjectContainerShip/ProjectContainerShip/DrawningContainerShip.cs @@ -36,12 +36,12 @@ public class DrawningContainerShip /// /// Ширина прорисовки контейнеровоза /// - private readonly int _drawningCarWidth = 130; + private readonly int _drawningShipWidth = 130; /// /// Высота прорисовки контейнеровоза /// - private readonly int _drawningCarHeight = 85; + private readonly int _drawningShipHeight = 85; /// /// Инициализация свойств @@ -51,7 +51,7 @@ public class DrawningContainerShip /// Основной цвет /// Дополнительный цвет /// Признак наличия контейнеров - /// Признак наличия антикрыла + /// Признак наличия крана public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyKit, bool Crane) { EntityContainerShip = new EntityContainerShip(); @@ -70,6 +70,10 @@ public class DrawningContainerShip /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах public bool SetPictureSize(int width, int height) { + if ((width < _drawningShipWidth) || (height < _drawningShipHeight)) + { + return false; + } // TODO проверка, что объект "влезает" в размеры поля // если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена _pictureWidth = width; @@ -84,15 +88,27 @@ public class DrawningContainerShip /// Координата Y public void SetPosition(int x, int y) { - if (!_pictureHeight.HasValue || !_pictureWidth.HasValue) - { - return; - } - - // TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы - // то надо изменить координаты, чтобы он оставался в этих границах _startPosX = x; _startPosY = y; + if (_startPosX + _drawningShipWidth > _pictureWidth) + { + _startPosX = _pictureWidth - _drawningShipWidth; + } + + if (_startPosX < 0) + { + _startPosX = 0; + } + + if (_startPosY + _drawningShipHeight > _pictureHeight) + { + _startPosY = _pictureHeight - _drawningShipHeight; + } + + if (_startPosY < 0) + { + _startPosY = 0; + } } /// @@ -126,7 +142,7 @@ public class DrawningContainerShip // вправо case DirectionType.Right: //TODO прописать логику сдвига в право - if (_startPosX.Value + EntityContainerShip.Step + _drawningCarWidth <= _pictureWidth) + if (_startPosX.Value + EntityContainerShip.Step + _drawningShipWidth < _pictureWidth) { _startPosX += (int)EntityContainerShip.Step; } @@ -134,7 +150,7 @@ public class DrawningContainerShip //вниз case DirectionType.Down: //TODO прописать логику сдвига в вниз - if (_startPosY.Value + EntityContainerShip.Step + _drawningCarHeight < _pictureHeight) + if (_startPosY.Value + EntityContainerShip.Step + _drawningShipHeight < _pictureHeight) { _startPosY += (int)EntityContainerShip.Step; }