using ProjectTank.DrawningObjects; using ProjectTank.Entities; namespace ProjectTank.Drawnings { public static class ExtentionDrawningTankBase { /// /// Создание объекта из строки /// /// Строка с данными для создания объекта /// Разделитель даннных /// Ширина /// Высота /// Объект public static DrawningTankBase? CreateDrawningTankBase(this string info, char separatorForObject, int width, int height) { string[] strs = info.Split(separatorForObject); if (strs.Length == 3) { return new DrawningTankBase(Convert.ToInt32(strs[0]), Convert.ToInt32(strs[1]), Color.FromName(strs[2]), width, height); } if (strs.Length == 6) { return new DrawningTank(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 DrawningTankBase drawningTankBase, char separatorForObject) { var tankBase = drawningTankBase.EntityTankBase; if (tankBase == null) { return string.Empty; } var str = $"{tankBase.Speed}{separatorForObject}{tankBase.Weight}{separatorForObject}{tankBase.BodyColor.Name}"; if (tankBase is not EntityTank tank) { return str; } return $"{str}{separatorForObject}{tank.AdditionalColor.Name}{separatorForObject}{tank.AntiAirforceGun}{separatorForObject}{tank.TankTower}"; } } }