diff --git a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/DrawningArtillery.cs b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/DrawningArtillery.cs
index cbc26f2..7a1825d 100644
--- a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/DrawningArtillery.cs
+++ b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/DrawningArtillery.cs
@@ -39,9 +39,9 @@ public class DrawningArtillery
/// Вес
/// Основной цвет
/// Дополнительный цвет
- /// Признак наличия обвеса
- /// Признак наличия антикрыла
- /// Признак наличия гоночной полосы
+ /// Признак наличия пушки
+ /// Признак наличия залповой установки
+
public void Init(int speed, double weight, Color bodyColor, Color
additionalColor, bool cannon, bool rocket)
{
@@ -60,15 +60,20 @@ public class DrawningArtillery
/// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах
public bool SetPictureSize(int width, int height)
{
- // TODO проверка, что объект "влезает" в размеры поля
- // если влезает, сохраняем границы и корректируем позицию объекта,если она была уже установлена
- if (width >= _drawningArtilleryWidth && height >= _drawningArtilleryHeight)
+ if (_drawningArtilleryHeight > height || _drawningArtilleryWidth > width)
{
- _pictureWidth = width;
- _pictureHeight = height;
- return true;
+ return false;
}
- return false;
+
+ _pictureWidth = width;
+ _pictureHeight = height;
+
+ if (_startPosX.HasValue && _startPosY.HasValue)
+ {
+ SetPosition(_startPosX.Value, _startPosY.Value);
+ }
+
+ return true;
}
///
/// Установка позиции
@@ -83,16 +88,23 @@ public class DrawningArtillery
}
// TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы
// то надо изменить координаты, чтобы он оставался в этих границах
- if (x + 110 > _pictureWidth.Value)
- {
- x -= (x + 110) - _pictureWidth.Value;
+ if (x < 0 || x + _drawningArtilleryWidth > _pictureWidth)
+ {
+ _startPosX = _pictureWidth - _drawningArtilleryWidth;
}
- if (y + 60 > _pictureHeight.Value)
+ else
{
- y -= (y + 60) - _pictureHeight.Value;
+ _startPosX = x;
+ }
+
+ if (y < 0 || y + _drawningArtilleryHeight > _pictureHeight)
+ {
+ _startPosY = _pictureHeight - _drawningArtilleryHeight;
+ }
+ else
+ {
+ _startPosY = y;
}
- _startPosX = x;
- _startPosY = y;
}
///
/// Изменение направления перемещения
@@ -160,53 +172,53 @@ public class DrawningArtillery
Brush grayBrush = new SolidBrush(Color.Gray);
Brush blackBrush = new SolidBrush(Color.Black);
//тело
- g.FillRectangle(additionalBrush, _startPosX.Value, _startPosY.Value + 40, 110, 20);
+ g.FillRectangle(brush, _startPosX.Value, _startPosY.Value + 40, 110, 20);
g.DrawRectangle(pen, _startPosX.Value, _startPosY.Value + 40, 110, 20);
//башня
- g.FillRectangle(additionalBrush, _startPosX.Value+30, _startPosY.Value+20,50,20);
+ g.FillRectangle(brush, _startPosX.Value+30, _startPosY.Value+20,50,20);
g.DrawRectangle(pen, _startPosX.Value+30, _startPosY.Value + 20, 50, 20);
//ходовая
//основа
g.DrawEllipse(pen, _startPosX.Value, _startPosY.Value + 50, 110, 20);
g.FillEllipse(grayBrush, _startPosX.Value, _startPosY.Value + 50, 110, 20);
- //1-e
+ //1-й
g.DrawEllipse(pen, _startPosX.Value + 25, _startPosY.Value + 58, 11, 11);
g.FillEllipse(blackBrush, _startPosX.Value + 25, _startPosY.Value + 58, 11, 11);
- //2-ое
+ //2-й
g.DrawEllipse(pen, _startPosX.Value + 40, _startPosY.Value + 58, 11, 11);
g.FillEllipse(blackBrush, _startPosX.Value + 40, _startPosY.Value + 58, 11, 11);
- //3-ее
+ //3-й
g.DrawEllipse(pen, _startPosX.Value + 55, _startPosY.Value + 58, 11, 11);
g.FillEllipse(blackBrush, _startPosX.Value + 55, _startPosY.Value + 58, 11, 11);
- //4-ое
+ //4-й
g.DrawEllipse(pen, _startPosX.Value + 70, _startPosY.Value + 58, 11, 11);
g.FillEllipse(blackBrush, _startPosX.Value + 70, _startPosY.Value + 58, 11, 11);
- //5-ое
+ //5-ЛевБол
g.DrawEllipse(pen, _startPosX.Value + 90, _startPosY.Value + 52, 15, 15);
g.FillEllipse(blackBrush, _startPosX.Value + 90, _startPosY.Value + 52, 15, 15);
- //6-ое
+ //6-ПравБол
g.DrawEllipse(pen, _startPosX.Value + 7, _startPosY.Value + 52, 15, 15);
g.FillEllipse(blackBrush, _startPosX.Value + 7, _startPosY.Value + 52, 15, 15);
//орудие
if (EntityArtillery.Cannon)
{
- g.FillRectangle(brush, _startPosX.Value+80, _startPosY.Value + 25, 50, 5);
+ g.FillRectangle(additionalBrush, _startPosX.Value+80, _startPosY.Value + 25, 50, 5);
g.DrawRectangle(pen, _startPosX.Value+80, _startPosY.Value + 25, 50, 5);
}
//установка
if (EntityArtillery.Cannon)
{
//колонна
- g.FillRectangle(brush, _startPosX.Value +5, _startPosY.Value + 10, 5, 30);
+ g.FillRectangle(additionalBrush, _startPosX.Value +5, _startPosY.Value + 10, 5, 30);
g.DrawRectangle(pen, _startPosX.Value +5, _startPosY.Value + 10, 5, 30);
//контейнер
- g.FillRectangle(brush, _startPosX.Value + 3, _startPosY.Value + 5, 50, 13);
+ g.FillRectangle(additionalBrush, _startPosX.Value + 3, _startPosY.Value + 5, 50, 13);
g.DrawRectangle(pen, _startPosX.Value + 3, _startPosY.Value + 5, 50, 13);
//ракеты
g.DrawRectangle(pen, _startPosX.Value + 52, _startPosY.Value + 5, 10, 3);
diff --git a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/EntityArtillery.cs b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/EntityArtillery.cs
index c0c3f0d..1aa0109 100644
--- a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/EntityArtillery.cs
+++ b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/EntityArtillery.cs
@@ -1,6 +1,6 @@
namespace SelfPropelledArtilleryUnit;
///
-/// Класс-сущность "Спортивный автомобиль"
+/// Класс-сущность "САУ"
///
@@ -23,11 +23,11 @@ public class EntityArtillery
///
public Color AdditionalColor { get; private set; }
///
- /// Признак (опция) наличия обвеса
+ /// Признак (опция) наличия пушки
///
public bool Cannon { get; private set; }
///
- /// Признак (опция) наличия антикрыла
+ /// Признак (опция) наличия залповой установки
///
public bool Rocket { get; private set; }
@@ -42,9 +42,9 @@ public class EntityArtillery
/// Вес автомобиля
/// Основной цвет
/// Дополнительный цвет
- /// Признак наличия обвеса
- /// Признак наличия антикрыла
- /// Признак наличия гоночной полосы
+ /// Признак наличия пушки
+ /// Признак наличия залповой установки
+
public void Init(int speed, double weight, Color bodyColor, Color
additionalColor, bool cannon, bool rocket)
{