From f36062d9d89bf2d09bcfbc25433adfadea9da283 Mon Sep 17 00:00:00 2001 From: YourDax Date: Mon, 30 Oct 2023 16:23:56 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AntiAirCraftGunGenericCollection.cs | 38 +++++++++++-------- .../AntiAirCraftGun/Generics/SetGeneric.cs | 16 ++++---- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/AntiAirCraftGun/AntiAirCraftGun/Generics/AntiAirCraftGunGenericCollection.cs b/AntiAirCraftGun/AntiAirCraftGun/Generics/AntiAirCraftGunGenericCollection.cs index 20b9208..3ff0441 100644 --- a/AntiAirCraftGun/AntiAirCraftGun/Generics/AntiAirCraftGunGenericCollection.cs +++ b/AntiAirCraftGun/AntiAirCraftGun/Generics/AntiAirCraftGunGenericCollection.cs @@ -51,32 +51,26 @@ namespace AntiAircraftGun.Generics /// /// /// - public static bool operator +(AntiAirCraftGunGenericCollection collect, T? - obj) + public static int operator +(AntiAirCraftGunGenericCollection collect, T? obj) { if (obj == null) - { - return false; - } - return collect?._collection.Insert(obj) ?? false; + return -1; + return collect?._collection.Insert(obj) ?? -1; } - /// /// Перегрузка оператора вычитания /// /// /// /// - public static T? operator -(AntiAirCraftGunGenericCollection collect, int - pos) + public static bool operator -(AntiAirCraftGunGenericCollection collect, int pos) { - T? obj = collect._collection.Get(pos); - if (obj != null) - { - collect._collection.Remove(pos); - } - return obj; + T? obj = collect._collection.Get(pos); + if (obj != null) + return collect._collection.Remove(pos); + return false; } + /// /// Получение объекта IMoveableObject /// @@ -156,9 +150,21 @@ namespace AntiAircraftGun.Generics if (y+distance_between_objects >= maxY) { y = 0; - x += obj.GetWidth+10 + distance_between_objects; + x += _placeSizeWidth; } } + if (obj == null) + { + // Увеличиваем координату Y для следующего объекта + y += distance_between_objects; + + // Проверяем, если Y достигло максимума, изменяем X и сбрасываем Y + if (y+distance_between_objects >= maxY) + { + y = 0; + x += _placeSizeWidth; + } + }; } } } diff --git a/AntiAirCraftGun/AntiAirCraftGun/Generics/SetGeneric.cs b/AntiAirCraftGun/AntiAirCraftGun/Generics/SetGeneric.cs index 017d217..bdfeac1 100644 --- a/AntiAirCraftGun/AntiAirCraftGun/Generics/SetGeneric.cs +++ b/AntiAirCraftGun/AntiAirCraftGun/Generics/SetGeneric.cs @@ -30,7 +30,7 @@ namespace AntiAircraftGun.Generics /// /// Добавляемый автомобиль /// - public bool Insert(T car) + public int Insert(T car) { // Вставка в начало набора for (int i = 0; i < _places.Length; i++) @@ -38,10 +38,10 @@ namespace AntiAircraftGun.Generics if (_places[i] == null) { _places[i] = car; - return true; + return 1; } } - return false; // Если нет пустых мест + return -1; // Если нет пустых мест } /// /// Добавление объекта в набор на конкретную позицию @@ -49,15 +49,15 @@ namespace AntiAircraftGun.Generics /// Добавляемый автомобиль /// Позиция /// - public bool Insert(T car, int position) + public int Insert(T car, int position) { // Проверка позиции if (position < 0 || position >= _places.Length) - return false; + return -1; // Проверка, что элемент массива по этой позиции пустой if (_places[position] != null) - return false; + return -1; // Проверка, что после вставляемого элемента в массиве есть пустой элемент for (int i = position + 1; i < _places.Length; i++) @@ -70,11 +70,11 @@ namespace AntiAircraftGun.Generics _places[j] = _places[j - 1]; } _places[position] = car; - return true; + return 1; } } - return false; // Если нет пустых мест справа + return -1; // Если нет пустых мест справа } /// /// Удаление объекта из набора с конкретной позиции