diff --git a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/ExtentionDrawningSPAU.cs b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/ExtentionDrawningSPAU.cs new file mode 100644 index 0000000..1a06126 --- /dev/null +++ b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/ExtentionDrawningSPAU.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SelfPropelledArtilleryUnit.Entities; + +namespace SelfPropelledArtilleryUnit.DrawningObjects +{ + public static class ExtentionDrawningSPAU + { + /// + /// Создание объекта из строки + /// + /// Строка с данными для создания объекта + /// Разделитель даннных + /// Ширина + /// Высота + /// Объект + public static DrawningSPAU? CreateDrawningCar(this string info, char separatorForObject, int width, int height) + { + string[] strs = info.Split(separatorForObject); + if (strs.Length == 3) + { + return new DrawningSPAU(Convert.ToInt32(strs[0]), Convert.ToInt32(strs[1]), Color.FromName(strs[2]), width, height); + } + if (strs.Length == 6) + { + return new DrawningSPAUchild(Convert.ToInt32(strs[0]), Convert.ToInt32(strs[1]), Color.FromName(strs[2]), Color.FromName(strs[3]), Convert.ToBoolean(strs[4]), Convert.ToBoolean(strs[5]), width, height); + } + return null; + } + /// + /// Получение данных для сохранения в файл + /// + /// Сохраняемый объект + /// Разделитель даннных + /// Строка с данными по объекту + public static string GetDataForSave(this DrawningSPAU drawningSPAU, char separatorForObject) + { + var sPAU = drawningSPAU.EntitySPAU; + if (sPAU == null) + { + return string.Empty; + } + var str = $"{sPAU.Speed}{separatorForObject}{sPAU.Weight}{separatorForObject}{sPAU.BodyColor.Name}"; + if (sPAU is not EntitySPAUchild sPAUchild) + { + return str; + } + return $"{str}{separatorForObject}{sPAUchild.AdditionalColor.Name}{separatorForObject}{sPAUchild.BodyKit}{separatorForObject}{sPAUchild.Ballon}"; + } + } +}