using AntiAircraftGun.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AntiAircraftGun.Drawnings;
/// <summary>
/// Расширение для класса EntityArmoredCar
/// </summary>
public static class ExtentionDrawningArmoredCar
{
    /// <summary>
	/// Разделитель для записи информации по объекту в файл
	/// </summary>
	private static readonly string _separatorForObject = ":";

    /// <summary>
    /// Создание объекта из строки
    /// </summary>
    /// <param name="info">Строка с данными для создания объекта</param>
    /// <returns>Объект</returns>
    public static DrawningArmoredCar? CreateDrawningArmoredCar(this string info)
    {
        string[] strs = info.Split(_separatorForObject);
        DrawningArmoredCar? armoredCar = EntityAntiAircraftGun.CreateEntityAntiAircraftGun(strs);
        if (armoredCar != null)
        {
            return new DrawningAntiAircraftGun(armoredCar);
        }

        armoredCar = DrawningArmoredCar.CreateEntityArmoredCar(strs);
        if (armoredCar != null)
        {
            return new DrawningArmoredCar(armoredCar);
        }

        return null;
    }

    /// <summary>
	/// Получение данных для сохранения в файл
	/// </summary>
	/// <param name="armoredCar">Сохраняемый объект</param>
	/// <returns>Строка с данными по объекту</returns>
	public static string GetDataForSave(this DrawningArmoredCar drawningArmoredCar)
    {
        string[]? array = drawningArmoredCar?.EntityAircraftGun?.GetStringRepresentation();

        if (array == null)
        {
            return string.Empty;
        }

        return string.Join(_separatorForObject, array);
    }
}