diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawingAirplaneWithRadar.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawingAirplaneWithRadar.cs index 8ba2e38..a4188e6 100644 --- a/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawingAirplaneWithRadar.cs +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawingAirplaneWithRadar.cs @@ -6,7 +6,7 @@ namespace ProjectAirplaneWithRadar.Drawnings /// Класс, отвечающий за прорисовку и перемещение объекта-сущности /// public class DrawingAirplaneWithRadar : DrawningAirplane - { + { /// /// Инициализация свойств /// @@ -21,6 +21,16 @@ namespace ProjectAirplaneWithRadar.Drawnings EntityAirplane = new EntityAirplaneWithRadar(speed, weight, bodyColor, additionalColor, wheels, radar); } + /// + /// Конструктор для метода создания объекта из строки (ExtentionDrawningAirplane) + /// + /// + public DrawingAirplaneWithRadar(EntityAirplane? airplane) : base(airplane) + { + if (airplane != null) + EntityAirplane = airplane; + } + /// /// Прорисовка объекта /// diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawningAirplane.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawningAirplane.cs index 63981d4..c2e33b6 100644 --- a/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawningAirplane.cs +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawningAirplane.cs @@ -83,6 +83,15 @@ namespace ProjectAirplaneWithRadar.Drawnings EntityAirplane = new EntityAirplane(speed, weight, bodyColor); } + /// + /// Конструктор для метода создания объекта из строки (ExtentionDrawningAirplane) + /// + /// + public DrawningAirplane(EntityAirplane? airplane) : this() + { + EntityAirplane = airplane; + } + /// /// Конструктор для наследников /// diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/ExtentionDrawningAirplane.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/ExtentionDrawningAirplane.cs new file mode 100644 index 0000000..b23ed4b --- /dev/null +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/ExtentionDrawningAirplane.cs @@ -0,0 +1,55 @@ +using ProjectAirplaneWithRadar.Entities; + +namespace ProjectAirplaneWithRadar.Drawnings +{ + public static class ExtentionDrawningAirplane + { + /// + /// Разделитель для записи информации по объекту в файл + /// + private static readonly string _separatorForObject = ":"; + + /// + /// Создание объекта из строки + /// + /// Строка с данными для создания объекта + /// Объект + public static DrawningAirplane? CreateDrawningAirplane(this string info) + { + string[] strs = info.Split(_separatorForObject); + EntityAirplane? airplane = EntityAirplaneWithRadar.CreateEntityAirplaneWithRadar(strs); + + if (airplane != null) + { + return new DrawingAirplaneWithRadar(airplane); + } + + airplane = EntityAirplane.CreateEntityAirplane(strs); + + if (airplane != null) + { + return new DrawningAirplane(airplane); + } + + return null; + } + + /// + /// Получение данных для сохранения в файл + /// + /// Сохраняемый объект + /// Строка с данными по объекту + public static string GetDataForSave(this DrawningAirplane drawningAirplane) + { + string[]? array = drawningAirplane?.EntityAirplane?.GetStringRepresentation(); + + if (array == null) + { + return string.Empty; + } + + return string.Join(_separatorForObject, array); + } + + } +}