From 937cf9e202e467c33c1ef639ce977ae35f8eec69 Mon Sep 17 00:00:00 2001 From: malimova Date: Wed, 22 Nov 2023 22:47:20 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0=20Ext?= =?UTF-8?q?entionDrawningAirPlane?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AirBomber/ExtentionDrawningAirPlane.cs | 50 ++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/AirBomber/AirBomber/ExtentionDrawningAirPlane.cs b/AirBomber/AirBomber/ExtentionDrawningAirPlane.cs index f9a8ae4..5552817 100644 --- a/AirBomber/AirBomber/ExtentionDrawningAirPlane.cs +++ b/AirBomber/AirBomber/ExtentionDrawningAirPlane.cs @@ -6,7 +6,55 @@ using System.Threading.Tasks; namespace AirBomber { - internal class ExtentionDrawningAirPlane + public static class ExtentionDrawningAirPlane { + /// + /// Создание объекта из строки + /// + /// Строка с данными для создания объекта + /// Разделитель даннных + /// Ширина + /// Высота + /// Объект + public static DrawningAirPlane? CreateDrawningAirPlane(this string info, char separatorForObject, int width, int height) + { + string[] strs = info.Split(separatorForObject); + if (strs.Length == 3) + { + return new DrawningAirPlane(Convert.ToInt32(strs[0]), + Convert.ToInt32(strs[1]), Color.FromName(strs[2]), width, height); + } + if (strs.Length == 7) + { + return new DrawningAirBomber(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 DrawningAirPlane drawningAirPlane, char separatorForObject) + { + var plane = drawningAirPlane.EntityAirPlane; + if (plane == null) + { + return string.Empty; + } + var str = $"{plane.Speed}{separatorForObject}{plane.Weight}{separatorForObject}{plane.BodyColor.Name}"; + if (plane is not EntityAirBomber airBomber) + { + return str; + } + return $"{str}{separatorForObject}{airBomber.AdditionalColor.Name}{separatorForObject}{airBomber.Bombs}{separatorForObject}{airBomber.FuelTanks}"; + } } } +