using ProjectFighterJet.Drawnings;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ProjectFighterJet.CollectionGenericObjects;

public class FighterJetSharingService : AbstractCompany
{
    /// <summary>
    /// Конструктор
    /// </summary>
    /// <param name="picWidth"></param>
    /// <param name="picHeight"></param>
    /// <param name="collection"></param>
    public FighterJetSharingService(int picWidth, int picHeight, ICollectionGenericObjects<DrawningJet> collection) : base(picWidth, picHeight, collection)
    {
    }
    protected override void DrawBackgound(Graphics g)
    {
        int width = _pictureWidth / _placeSizeWidth;
        int height = _pictureHeight / _placeSizeHeight;
        Pen pen = new(Color.Black, 3);
        for (int i = 0; i < width; i++)
        {
            for (int j = 0; j < height + 1; ++j)
            {
                g.DrawLine(pen, i * _placeSizeWidth + 15, j * _placeSizeHeight, i * _placeSizeWidth + 15 + _placeSizeWidth - 55, j * _placeSizeHeight);
                g.DrawLine(pen, i * _placeSizeWidth + 15, j * _placeSizeHeight, i * _placeSizeWidth + 15, j * _placeSizeHeight - _placeSizeHeight);
            }
        }
    }

    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++)
        {
            if (_collection.Get(i) != null)
            {
                _collection.Get(i).SetPictureSize(_pictureWidth, _pictureHeight);
                _collection.Get(i).SetPosition(_placeSizeWidth * curWidth + 15, curHeight * _placeSizeHeight + 5);
            }
            if (curWidth > 0)
                curWidth--;
            else
            {
                curWidth = width - 1;
                curHeight++;
            }
            if (curHeight > height)
            {
                return;
            }
        }
    }
}