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