From 316293d0e57dbd9cf120a6a8f561cb950f86c71d Mon Sep 17 00:00:00 2001 From: kisame Date: Sun, 17 Mar 2024 19:01:47 +0400 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BD=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectAirbus/Drawnings/DrawningPlane.cs | 54 ++++++++++++------- .../MovementStrategy/AbstractStrategy.cs | 2 +- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/ProjectAirbus/ProjectAirbus/Drawnings/DrawningPlane.cs b/ProjectAirbus/ProjectAirbus/Drawnings/DrawningPlane.cs index 18a6c63..cb8fbb7 100644 --- a/ProjectAirbus/ProjectAirbus/Drawnings/DrawningPlane.cs +++ b/ProjectAirbus/ProjectAirbus/Drawnings/DrawningPlane.cs @@ -98,27 +98,42 @@ public class DrawningPlane _pictureHeight = drawningPlaneHeight; } - /// - /// Установка границ поля - /// - /// Ширина поля - /// Высота поля - /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах - public bool SetPictureSize(int width, int height) + /// + /// Установка границ поля + /// + /// Ширина поля + /// Высота поля + /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах + public bool SetPictureSize(int width, int height) + { + if ((width < _drawningPlaneWidth) || (height < _drawningPlaneHeight)) { - // TODO проверка, что объект "влезает" в размеры поля - // если влезает, сохраняем границы и корректируем позицию объекта, - // если она была уже установлена - _pictureWidth = width; - _pictureHeight = height; - return true; + return false; } - /// - /// Установка позиции - /// - /// Координата X - /// Координата Y - public void SetPosition(int x, int y) + + _pictureWidth = width; + _pictureHeight = height; + + //изменение положения + if (_startPosX.HasValue && (_startPosX.Value + _drawningPlaneWidth > _pictureWidth)) + { + _startPosX = _pictureWidth - _drawningPlaneWidth; + } + + if (_startPosY.HasValue && (_startPosY + _drawningPlaneHeight > _pictureHeight)) + { + _startPosY = _pictureHeight - _drawningPlaneHeight; + } + + return true; + + } + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + public void SetPosition(int x, int y) { if (!_pictureHeight.HasValue || !_pictureWidth.HasValue) { @@ -129,7 +144,6 @@ public class DrawningPlane _startPosY = y; } - /// /// Изменение направления перемещения /// diff --git a/ProjectAirbus/ProjectAirbus/MovementStrategy/AbstractStrategy.cs b/ProjectAirbus/ProjectAirbus/MovementStrategy/AbstractStrategy.cs index ad32605..f8560a1 100644 --- a/ProjectAirbus/ProjectAirbus/MovementStrategy/AbstractStrategy.cs +++ b/ProjectAirbus/ProjectAirbus/MovementStrategy/AbstractStrategy.cs @@ -26,7 +26,7 @@ public abstract class AbstractStrategy /// /// Статус перемещения - /// + /// public StrategyStatus GetStatus() { return _state; } ///