From 11ba50c9123f8aed286cbe5a4032631e5c7d2c18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D0=B0=D1=82=20=D0=97=D0=B0=D1=80=D0=B3?= =?UTF-8?q?=D0=B0=D1=80=D0=BE=D0=B2?= Date: Tue, 20 Dec 2022 20:27:16 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D1=80=D0=B0=D0=B2=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DoubleDeckerBus/DrawningObjectBus.cs | 56 +++++++++++++++++++ .../DoubleDeckerBus/IDrawningObject.cs | 2 +- .../DoubleDeckerBus/MapWithSetBusesGeneric.cs | 2 +- .../DoubleDeckerBus/SetBusesGeneric.cs | 8 ++- 4 files changed, 65 insertions(+), 3 deletions(-) diff --git a/DoubleDeckerBus/DoubleDeckerBus/DrawningObjectBus.cs b/DoubleDeckerBus/DoubleDeckerBus/DrawningObjectBus.cs index 3fc5f97..e45f1f3 100644 --- a/DoubleDeckerBus/DoubleDeckerBus/DrawningObjectBus.cs +++ b/DoubleDeckerBus/DoubleDeckerBus/DrawningObjectBus.cs @@ -36,5 +36,61 @@ namespace DoubleDeckerBus { return new DrawningObjectBus(data.CreateDrawningBus()); } + + public bool Equals(IDrawningObject? other) + { + if (other == null) + { + return false; + } + var otherBus = other as DrawningObjectBus; + if (otherBus == null) + { + return false; + } + var bus = _bus.Bus; + var otherBusBus = otherBus._bus.Bus; + if (bus.GetType().Name != otherBusBus.GetType().Name) + { + return false; + } + if (bus.Speed != otherBusBus.Speed) + { + return false; + } + if (bus.Weight != otherBusBus.Weight) + { + return false; + } + if (bus.BodyColor != otherBusBus.BodyColor) + { + return false; + } + + if (bus is EntityDoubleDeckerBus DoubleDeckerBus && otherBusBus is EntityDoubleDeckerBus otherDoubleDeckerBus) + { + + if (DoubleDeckerBus.Stair != otherDoubleDeckerBus.Stair) + { + return false; + } + + if (DoubleDeckerBus.SecondFloor != otherDoubleDeckerBus.SecondFloor) + { + return false; + } + if (DoubleDeckerBus.BodyKit != otherDoubleDeckerBus.BodyKit) + { + return false; + } + if (DoubleDeckerBus.DopColor != otherDoubleDeckerBus.DopColor) + { + return false; + } + + } + + return true; + } } } diff --git a/DoubleDeckerBus/DoubleDeckerBus/IDrawningObject.cs b/DoubleDeckerBus/DoubleDeckerBus/IDrawningObject.cs index 48520e0..0a5b174 100644 --- a/DoubleDeckerBus/DoubleDeckerBus/IDrawningObject.cs +++ b/DoubleDeckerBus/DoubleDeckerBus/IDrawningObject.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace DoubleDeckerBus { - internal interface IDrawningObject + internal interface IDrawningObject : IEquatable { /// /// Шаг перемещения объекта diff --git a/DoubleDeckerBus/DoubleDeckerBus/MapWithSetBusesGeneric.cs b/DoubleDeckerBus/DoubleDeckerBus/MapWithSetBusesGeneric.cs index 77aa5f1..e4e83b2 100644 --- a/DoubleDeckerBus/DoubleDeckerBus/MapWithSetBusesGeneric.cs +++ b/DoubleDeckerBus/DoubleDeckerBus/MapWithSetBusesGeneric.cs @@ -7,7 +7,7 @@ using System.Threading.Tasks; namespace DoubleDeckerBus { internal class MapWithSetBusesGeneric - where T : class, IDrawningObject + where T : class, IDrawningObject, IEquatable where U : AbstractMap { /// diff --git a/DoubleDeckerBus/DoubleDeckerBus/SetBusesGeneric.cs b/DoubleDeckerBus/DoubleDeckerBus/SetBusesGeneric.cs index d27f58d..9831230 100644 --- a/DoubleDeckerBus/DoubleDeckerBus/SetBusesGeneric.cs +++ b/DoubleDeckerBus/DoubleDeckerBus/SetBusesGeneric.cs @@ -7,7 +7,7 @@ using System.Threading.Tasks; namespace DoubleDeckerBus { internal class SetBusesGeneric - where T : class + where T : class, IEquatable { /// /// Список объектов, которые храним @@ -45,11 +45,17 @@ namespace DoubleDeckerBus /// public int Insert(T bus, int position) { + if (_places.Contains(bus)) + { + throw new ArgumentException("Такой автобус уже существует"); + } + if (position < 0 || position >= _maxCount) { throw new BusNotFoundException("Место указано неверно"); } + BusyPlaces++; _places.Insert(position, bus); return position;