лаба7, готовая, но более уверенная
This commit is contained in:
parent
d177de49ad
commit
925cc7a006
@ -60,13 +60,13 @@ namespace AirplaneWithRadar.Generics
|
||||
/// <param name="collect"></param>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public static bool operator +(AirplanesGenericCollection<T, U> collect, T? obj)
|
||||
public static int operator +(AirplanesGenericCollection<T, U> collect, T? obj)
|
||||
{
|
||||
if (obj == null)
|
||||
{
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
return (bool)collect?._collection.Insert(obj);
|
||||
return collect._collection.Insert(obj);
|
||||
}
|
||||
/// <summary>
|
||||
/// Перегрузка оператора вычитания
|
||||
@ -78,11 +78,7 @@ namespace AirplaneWithRadar.Generics
|
||||
pos)
|
||||
{
|
||||
T? obj = collect._collection[pos];
|
||||
if (obj != null)
|
||||
{
|
||||
collect._collection.Remove(pos);
|
||||
}
|
||||
return false;
|
||||
return collect._collection.Remove(pos);
|
||||
}
|
||||
/// <summary>
|
||||
/// Получение объекта IMoveableObject
|
||||
|
@ -63,10 +63,9 @@ namespace AirplaneWithRadar.Generics
|
||||
/// <param name="name">Название набора</param>
|
||||
public void AddSet(string name)
|
||||
{
|
||||
if (_airplaneStorages.ContainsKey(name))
|
||||
return;
|
||||
_airplaneStorages[name] = new AirplanesGenericCollection<DrawningAirplane,
|
||||
DrawningObjectAirplane>(_pictureWidth, _pictureHeight);
|
||||
if (!_airplaneStorages.ContainsKey(name))
|
||||
_airplaneStorages.Add(name,new AirplanesGenericCollection<DrawningAirplane,
|
||||
DrawningObjectAirplane>(_pictureWidth, _pictureHeight));
|
||||
}
|
||||
/// <summary>
|
||||
/// Удаление набора
|
||||
@ -171,7 +170,7 @@ namespace AirplaneWithRadar.Generics
|
||||
DrawningAirplane? airplane = elem?.CreateDrawningAirplane(_separatorForObject, _pictureWidth, _pictureHeight);
|
||||
if (airplane != null)
|
||||
{
|
||||
if (!(collection + airplane))
|
||||
if (collection + airplane == -1)
|
||||
{
|
||||
throw new InvalidOperationException("Ошибка добавления в коллекцию");
|
||||
}
|
||||
|
@ -25,11 +25,11 @@ namespace AirplaneWithRadar.DrawningObjects
|
||||
/// <summary>
|
||||
/// Ширина окна
|
||||
/// </summary>
|
||||
private int _pictureWidth;
|
||||
public int _pictureWidth;
|
||||
/// <summary>
|
||||
/// Высота окна
|
||||
/// </summary>
|
||||
private int _pictureHeight;
|
||||
public int _pictureHeight;
|
||||
/// <summary>
|
||||
/// /// Левая координата прорисовки самолета
|
||||
/// </summary>
|
||||
|
@ -169,34 +169,44 @@ namespace AirplaneWithRadar
|
||||
_logger.LogWarning("Коллекция не выбрана");
|
||||
return;
|
||||
}
|
||||
var obj = _storage[listBoxStorages.SelectedItem.ToString() ??
|
||||
string.Empty];
|
||||
if (obj == null)
|
||||
var formAirplaneConfig = new FormAirplaneConfig();
|
||||
formAirplaneConfig.AddEvent(AddAirplane);
|
||||
formAirplaneConfig.Show();
|
||||
}
|
||||
private void AddAirplane(DrawningAirplane airplane)
|
||||
{
|
||||
airplane._pictureWidth = pictureBoxCollection.Image.Width;
|
||||
airplane._pictureHeight = pictureBoxCollection.Image.Height;
|
||||
if (listBoxStorages.SelectedIndex == -1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var formAirplaneConfig = new FormAirplaneConfig();
|
||||
formAirplaneConfig.Show();
|
||||
Action<DrawningAirplane>? airplaneDelegate = new((m) =>
|
||||
var obj = _storage[listBoxStorages.SelectedItem.ToString() ?? string.Empty];
|
||||
if (obj == null)
|
||||
{
|
||||
bool isAddSuccessful = (obj + m);
|
||||
if (isAddSuccessful)
|
||||
_logger.LogWarning($"Не удалось добавить объект: набор пуст");
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
if (obj + airplane != -1)
|
||||
{
|
||||
MessageBox.Show("Объект добавлен");
|
||||
m.ChangePictureBoxSize(pictureBoxCollection.Width, pictureBoxCollection.Height);
|
||||
pictureBoxCollection.Image = obj.ShowAirplanes();
|
||||
_logger.LogInformation($"Самолет добавлен в набор {listBoxStorages.SelectedItem.ToString()}");
|
||||
_logger.LogInformation($"Объект добавлен {airplane}");
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Набор переполнен! Не удалось добавить объект");
|
||||
_logger.LogWarning($"Самолет не добавлен в набор {listBoxStorages.SelectedItem.ToString()}");
|
||||
MessageBox.Show("Не удалось добавить объект");
|
||||
}
|
||||
});
|
||||
formAirplaneConfig.AddEvent(airplaneDelegate);
|
||||
}
|
||||
catch (ApplicationException ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message);
|
||||
_logger.LogWarning($"Не удалось добавить объект: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Удаление объекта из набора
|
||||
/// </summary>
|
||||
|
@ -40,14 +40,9 @@ namespace AirplaneWithRadar.Generics
|
||||
/// </summary>
|
||||
/// <param name="airplane">Добавляемый самолет</param>
|
||||
/// <returns></returns>
|
||||
public bool Insert(T airplane)
|
||||
public int Insert(T airplane)
|
||||
{
|
||||
if (_places.Count == _maxCount)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Insert(airplane, 0);
|
||||
return true;
|
||||
return Insert(airplane, 0);
|
||||
}
|
||||
/// <summary>
|
||||
/// Добавление объекта в набор на конкретную позицию
|
||||
@ -55,18 +50,14 @@ namespace AirplaneWithRadar.Generics
|
||||
/// <param name="airplane">Добавляемый самолет</param>
|
||||
/// <param name="position">Позиция</param>
|
||||
/// <returns></returns>
|
||||
public bool Insert(T airplane, int position)
|
||||
public int Insert(T airplane, int position)
|
||||
{
|
||||
if (position < 0 || position > Count)
|
||||
throw new AirplaneNotFoundException(position);
|
||||
if (Count >= _maxCount)
|
||||
{
|
||||
throw new StorageOverflowException(_maxCount);
|
||||
}
|
||||
if (position < 0 || position >= _maxCount)
|
||||
{
|
||||
throw new StorageOverflowException("Невозможно добавить");
|
||||
}
|
||||
_places.Insert(position, airplane);
|
||||
return true;
|
||||
return position;
|
||||
}
|
||||
/// <summary>
|
||||
/// Удаление объекта из набора с конкретной позиции
|
||||
@ -75,14 +66,8 @@ namespace AirplaneWithRadar.Generics
|
||||
/// <returns></returns>
|
||||
public bool Remove(int position)
|
||||
{
|
||||
if (position >= Count || position < 0 || position > _maxCount)
|
||||
{
|
||||
throw new AirplaneNotFoundException("Невалидная операция");
|
||||
}
|
||||
if (_places[position] == null)
|
||||
{
|
||||
if (position >= Count || position < 0)
|
||||
throw new AirplaneNotFoundException(position);
|
||||
}
|
||||
_places.RemoveAt(position);
|
||||
return true;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user