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