DrawningPlane
This commit is contained in:
parent
f6590d151b
commit
71d01b9f6e
@ -1,39 +1,13 @@
|
||||
namespace Seaplane.Drawnings;
|
||||
using Seaplane.Entities;
|
||||
|
||||
namespace Seaplane.Drawnings;
|
||||
/// <summary>
|
||||
/// Класс отвечающий за прорисовку и перемещение объекта - сущности
|
||||
/// </summary>
|
||||
public class DrawingSeaplane
|
||||
public class DrawingSeaplane : DrawningPlane
|
||||
{
|
||||
/// <summary>
|
||||
/// Класс - сущность
|
||||
/// </summary>
|
||||
public EntitySeaplane? EntitySeaplane { get; set; }
|
||||
/// <summary>
|
||||
/// Ширина окна
|
||||
/// </summary>
|
||||
private int? _pictureWidth;
|
||||
/// <summary>
|
||||
/// Высота окна
|
||||
/// </summary>
|
||||
private int? _pictureHeight;
|
||||
/// <summary>
|
||||
/// Левая координата прорисовки гидросамолета
|
||||
/// </summary>
|
||||
private int? _startPosX;
|
||||
/// <summary>
|
||||
/// Верхняя координата прорисовки гидросамолета
|
||||
/// </summary>
|
||||
private int? _startPosY;
|
||||
/// <summary>
|
||||
/// Ширина прорисовки гидросамолета
|
||||
/// </summary>
|
||||
private readonly int _drawningPlaneWidth = 0;
|
||||
/// <summary>
|
||||
/// Высота прорисовки гидросамолета
|
||||
/// </summary>
|
||||
private readonly int _drawningPlaneHeight = 0;
|
||||
/// <summary>
|
||||
/// Инициализация полей объекта-класса гидросамолета
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес</param>
|
||||
@ -42,63 +16,12 @@ public class DrawingSeaplane
|
||||
/// <param name="bodyKit">Наличие обвеса</param>
|
||||
/// <param name="floats">Наличие поплавков</param>
|
||||
/// <param name="inflatableBoat">Наличие надувной лодки</param>
|
||||
public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyKit, bool wing, bool sportLine)
|
||||
public DrawingSeaplane(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyKit, bool wing, bool sportLine) : base(110, 60)
|
||||
{
|
||||
EntitySeaplane = new EntitySeaplane();
|
||||
EntitySeaplane.Init(speed, weight, bodyColor, additionalColor, bodyKit, wing, sportLine);
|
||||
_pictureWidth = null;
|
||||
_pictureHeight = null;
|
||||
_startPosX = null;
|
||||
_startPosY = null;
|
||||
}
|
||||
public bool SetPictureSize(int width, int height)
|
||||
{
|
||||
// TODO проверка, что объект "влезает" в размеры поля
|
||||
// если влезает, сохраняем границы и корректируем позицию объекта,если она была уже установлена
|
||||
if (width < _drawningPlaneWidth || height < _drawningPlaneHeight) return false;
|
||||
_pictureWidth = width;
|
||||
_pictureHeight = height;
|
||||
if (_startPosX != null || _startPosY != null)
|
||||
{
|
||||
if (_startPosX + _drawningPlaneWidth > _pictureWidth)
|
||||
{
|
||||
_startPosX = _startPosX - (_startPosX + _drawningPlaneWidth - _pictureWidth);
|
||||
}
|
||||
else if (_startPosX < 0) _startPosX = 0;
|
||||
if (_startPosY + _drawningPlaneHeight > _pictureHeight)
|
||||
{
|
||||
_startPosY = _startPosY - (_startPosY + _drawningPlaneHeight - _pictureHeight);
|
||||
}
|
||||
else if (_startPosY < 0) _startPosY = 0;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/// <summary>
|
||||
/// Установка позиций
|
||||
/// </summary>
|
||||
/// <param name="x"></param>
|
||||
/// <param name="y"></param>
|
||||
public void SetPosition(int x, int y)
|
||||
{
|
||||
if (!_pictureHeight.HasValue || !_pictureWidth.HasValue)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы
|
||||
// то надо изменить координаты, чтобы он оставался в этих границах
|
||||
if (x + _drawningPlaneWidth > _pictureWidth)
|
||||
{
|
||||
_startPosX = x - (x + _drawningPlaneWidth - _pictureWidth);
|
||||
}
|
||||
else if (x < 0) _startPosX = 0;
|
||||
else _startPosX = x;
|
||||
if (y + _drawningPlaneHeight > _pictureHeight)
|
||||
{
|
||||
_startPosY = y - (y + _drawningPlaneHeight - _pictureHeight);
|
||||
}
|
||||
else if (y < 0) _startPosY = 0;
|
||||
else _startPosY = y;
|
||||
EntityPlane = new EntitySeaplane(speed, weight, bodyColor, additionalColor, bodyKit, wing, sportLine);
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Изменение направления перемещения
|
||||
/// </summary>
|
||||
|
@ -12,7 +12,7 @@ public class DrawningPlane
|
||||
/// <summary>
|
||||
/// Класс - сущность
|
||||
/// </summary>
|
||||
public EntityPlane? EntityPlane { get; set; }
|
||||
public EntityPlane? EntityPlane { get;protected set; }
|
||||
/// <summary>
|
||||
/// Ширина окна
|
||||
/// </summary>
|
||||
@ -24,11 +24,11 @@ public class DrawningPlane
|
||||
/// <summary>
|
||||
/// Левая координата прорисовки гидросамолета
|
||||
/// </summary>
|
||||
private int? _startPosX;
|
||||
protected int? _startPosX;
|
||||
/// <summary>
|
||||
/// Верхняя координата прорисовки гидросамолета
|
||||
/// </summary>
|
||||
private int? _startPosY;
|
||||
protected int? _startPosY;
|
||||
/// <summary>
|
||||
/// Ширина прорисовки гидросамолета
|
||||
/// </summary>
|
||||
@ -38,23 +38,41 @@ public class DrawningPlane
|
||||
/// </summary>
|
||||
private readonly int _drawningPlaneHeight = 0;
|
||||
/// <summary>
|
||||
/// Инициализация полей объекта-класса гидросамолета
|
||||
/// Пустой конструктор
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
/// <param name="additionalColor">Дополнительный цвет</param>
|
||||
/// <param name="bodyKit">Наличие обвеса</param>
|
||||
/// <param name="floats">Наличие поплавков</param>
|
||||
/// <param name="inflatableBoat">Наличие надувной лодки</param>
|
||||
public void Init(int speed, double weight, Color bodyColor)
|
||||
private DrawningPlane()
|
||||
{
|
||||
EntityPlane = new EntityPlane(speed, weight, bodyColor);
|
||||
_pictureWidth = null;
|
||||
_pictureHeight = null;
|
||||
_startPosX = null;
|
||||
_startPosY = null;
|
||||
}
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
public DrawningPlane(int speed, double weight, Color bodyColor) : this()
|
||||
{
|
||||
EntityPlane = new EntityPlane(speed, weight, bodyColor);
|
||||
}
|
||||
/// <summary>
|
||||
/// Конструктор для наследников
|
||||
/// </summary>
|
||||
/// <param name="drawningPlaneWidth">Ширина прорисовки гидросамолета</param>
|
||||
/// <param name="drawningPlaneHeight">Высота прорисовки гидросамолета</param>
|
||||
protected DrawningPlane(int drawningPlaneWidth, int drawningPlaneHeight) : this()
|
||||
{
|
||||
_drawningPlaneWidth = drawningPlaneWidth;
|
||||
_drawningPlaneHeight = drawningPlaneHeight;
|
||||
}
|
||||
/// <summary>
|
||||
/// Установка границ поля
|
||||
/// </summary>
|
||||
/// <param name="width"></param>
|
||||
/// <param name="height"></param>
|
||||
/// <returns></returns>
|
||||
public bool SetPictureSize(int width, int height)
|
||||
{
|
||||
// TODO проверка, что объект "влезает" в размеры поля
|
||||
@ -152,7 +170,7 @@ public class DrawningPlane
|
||||
/// Прорисовка объекта
|
||||
/// </summary>
|
||||
/// <param name="g"></param>
|
||||
public void DrawTransport(Graphics g)
|
||||
public virtual void DrawTransport(Graphics g)
|
||||
{
|
||||
if (EntityPlane == null || !_startPosX.HasValue || !_startPosY.HasValue)
|
||||
{
|
||||
@ -161,8 +179,6 @@ public class DrawningPlane
|
||||
|
||||
Pen pen = new(Color.Black);
|
||||
|
||||
|
||||
|
||||
//корпус гидросамолета
|
||||
Brush br = new SolidBrush(EntityPlane.BodyColor);
|
||||
g.FillRectangle(br, _startPosX.Value, _startPosY.Value + 20, 100, 20);
|
||||
|
@ -2,19 +2,8 @@
|
||||
/// <summary>
|
||||
/// Класс-сущность Гидросамолет
|
||||
/// </summary>
|
||||
public class EntitySeaplane
|
||||
{ /// <summary>
|
||||
/// Скорость
|
||||
/// </summary>
|
||||
public int Speed { get; private set; }
|
||||
/// <summary>
|
||||
/// Вес
|
||||
/// </summary>
|
||||
public double Weight { get; private set; }
|
||||
/// <summary>
|
||||
/// Основной цвет
|
||||
/// </summary>
|
||||
public Color BodyColor { get; private set; }
|
||||
public class EntitySeaplane : EntityPlane
|
||||
{
|
||||
/// <summary>
|
||||
/// Дополниетльный цвет
|
||||
/// </summary>
|
||||
@ -47,9 +36,6 @@ public class EntitySeaplane
|
||||
/// <param name="inflatableBoat">Наличие надувной лодки</param>
|
||||
public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyKit, bool floats, bool inflatableBoat)
|
||||
{
|
||||
Speed = speed;
|
||||
Weight = weight;
|
||||
BodyColor = bodyColor;
|
||||
AdditionalColor = additionalColor;
|
||||
BodyKit = bodyKit;
|
||||
Floats = floats;
|
||||
|
Loading…
Reference in New Issue
Block a user