diff --git a/Liner/Drawing/DrawingLiner.cs b/Liner/Drawing/DrawingLiner.cs index 04a9047..6a11ae7 100644 --- a/Liner/Drawing/DrawingLiner.cs +++ b/Liner/Drawing/DrawingLiner.cs @@ -151,6 +151,29 @@ namespace Liner.Drawing }; } /// + /// Проверка, что объект может переместится по указанному направлению + /// + /// Направление + /// true - можно переместится по указанному направлению + public bool CanMove(DirectionType direction) + { + if (EntityLiner == null) + { + return false; + } + return direction switch + { + //влево + DirectionType.Left => _startPosX - EntityLiner.Step > 0, + //вверх + DirectionType.Up => _startPosY - EntityLiner.Step > 0, + //вправо + DirectionType.Right => _startPosX + EntityLiner.Step + _linerWidth < _pictureWidth, + //вниз + DirectionType.Down => _startPosY + EntityLiner.Step + _linerHeight < _pictureHeight + }; + } + /// /// Изменение направления перемещения /// /// Направление diff --git a/Liner/MovingStrategies/DrawingObjectLiner.cs b/Liner/MovingStrategies/DrawingObjectLiner.cs index 0afe82d..aa00f5c 100644 --- a/Liner/MovingStrategies/DrawingObjectLiner.cs +++ b/Liner/MovingStrategies/DrawingObjectLiner.cs @@ -35,4 +35,5 @@ namespace Liner.MovingStrategies public void MoveObject(DirectionType direction) => _drawingLiner?.MoveTransport(direction); } + }