using ProjectCruiser.Drawnings; using ProjectCruiser.Exceptions; namespace ProjectCruiser.CollectionGenericObjects { /// /// Реализация абстрактной компании - каршеринг /// public class CruiserDockingService : AbstractCompany { /// /// Конструктор /// /// /// /// public CruiserDockingService(int picWidth, int picHeight, ICollectionGenericObjects collection) : base(picWidth, picHeight, collection) { } protected override void DrawBackgound(Graphics g) { int width = _pictureWidth / _placeSizeWidth; int height = _pictureHeight / _placeSizeHeight; Pen pen = new(Color.Black, 2); for (int i = 0; i < width; i++) { for (int j = 0; j < height + 1; ++j) { g.DrawLine(pen, i * _placeSizeWidth, j * _placeSizeHeight, i * _placeSizeWidth + _placeSizeWidth - 20, j * _placeSizeHeight); g.DrawLine(pen, i * _placeSizeWidth + _placeSizeWidth - 20, j * _placeSizeHeight, i * _placeSizeWidth + _placeSizeWidth - 20, j * _placeSizeHeight + _placeSizeHeight); } } } protected override void SetObjectsPosition() { int width = _pictureWidth / _placeSizeWidth; int height = _pictureHeight / _placeSizeHeight; int curWidth = 0; 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 + 10, curHeight * _placeSizeHeight + 10); } catch (ObjectNotFoundException) { } catch(PositionOutOfCollectionException e) { } if (curWidth < width - 1) curWidth++; else { curWidth = 0; curHeight ++; } if (curHeight >= height) { return; } } } } }