diff --git a/ProjectElectricLocomotive/ProjectElectricLocomotive/IMoveableObject.cs b/ProjectElectricLocomotive/ProjectElectricLocomotive/IMoveableObject.cs new file mode 100644 index 0000000..0cf8e9c --- /dev/null +++ b/ProjectElectricLocomotive/ProjectElectricLocomotive/IMoveableObject.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ElectricLocomotive; +using ProjectElectricLocomotive.DrawingObjects; + +namespace ProjectElectricLocomotive.MovementStrategy +{ + internal interface IMoveableObject + { + ObjectParameters? GetObjectPosition { get; } + + int GetStep { get; } + + bool CheckCanMove(DirectionType direction); + void MoveObject(DirectionType direction); + } +} diff --git a/ProjectElectricLocomotive/ProjectElectricLocomotive/ObjectsParameters.cs b/ProjectElectricLocomotive/ProjectElectricLocomotive/ObjectsParameters.cs new file mode 100644 index 0000000..8026fca --- /dev/null +++ b/ProjectElectricLocomotive/ProjectElectricLocomotive/ObjectsParameters.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectElectricLocomotive.MovementStrategy +{ + internal class ObjectParameters + { + private readonly int _x; + private readonly int _y; + private readonly int _width; + private readonly int _height; + + /// Левая граница + public int LeftBorder => _x; + + /// Верхняя граница + public int TopBorder => _y; + + /// Правая граница + public int RightBorder => _x + _width; + + /// Нижняя граница + public int DownBorder => _y + _height; + + /// Середина объекта по горизонтали + public int ObjectMiddleHorizontal => _x + _width / 2; + + /// Середина объекта по вертикали + public int ObjectMiddleVertical => _y + _height / 2; + + public ObjectParameters(int x, int y, int width, int height) + { + _x = x; + _y = y; + _width = width; + _height = height; + } + } +}