70 lines
2.2 KiB
C#
70 lines
2.2 KiB
C#
using AntiAircraftGun.CollectionGenereticObject;
|
|
using AntiAircraftGun.Drawnings;
|
|
|
|
|
|
namespace AntiAircraftGun.CollectionGenereticObjects;
|
|
/// <summary>
|
|
/// Реализация абстрактной компании - база бронемашин
|
|
/// </summary>
|
|
public class CarBase : AbstractCompany
|
|
{
|
|
/// <summary>
|
|
/// Конструктор
|
|
/// </summary>
|
|
/// <param name="picWidth"></param>
|
|
/// <param name="picHeight"></param>
|
|
/// <param name="collection"></param>
|
|
public CarBase(int picWidth, int picHeight, ICollectionGenericObjects<DrawningArmoredCar> collection) : base(picWidth, picHeight, collection)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Отрисовка базы
|
|
/// </summary>
|
|
/// <param name="g">Графика</param>
|
|
protected override void DrawBackgound(Graphics g)
|
|
{
|
|
Pen pen = new Pen(Color.Black, 4f);
|
|
for (int i = 0; i < _pictureHeight / _placeSizeHeight / 2; i++)
|
|
{
|
|
g.DrawLine(pen, 0, i * _placeSizeHeight * 2, _pictureWidth / _placeSizeWidth * _placeSizeWidth, i * _placeSizeHeight * 2);
|
|
for (int j = 0; j < _pictureWidth / _placeSizeWidth + 1; ++j)
|
|
{
|
|
g.DrawLine(pen, j * _placeSizeWidth, i * _placeSizeHeight * 2, j * _placeSizeWidth, i * _placeSizeHeight * 2 + _placeSizeHeight);
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Установка объекта в базу
|
|
/// </summary>
|
|
protected override void SetObjectsPosition()
|
|
{
|
|
int width = _pictureWidth / _placeSizeWidth;
|
|
int height = _pictureHeight / _placeSizeHeight;
|
|
|
|
int curWidth = width - 1;
|
|
int curHeight = 0;
|
|
|
|
for (int i = 0; i < (_collection?.Count ?? 0); i++)
|
|
{
|
|
try
|
|
{
|
|
_collection?.Get(i)?.SetPictureSize(_pictureWidth, _pictureHeight);
|
|
_collection?.Get(i)?.SetPosition(_placeSizeWidth * curWidth, curHeight * _placeSizeHeight + 4);
|
|
}
|
|
catch (Exception) { }
|
|
if (curWidth > 0)
|
|
curWidth--;
|
|
else
|
|
{
|
|
curWidth = width - 1;
|
|
curHeight++;
|
|
}
|
|
if (curHeight > height)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|