using System.Diagnostics.CodeAnalysis; using ProjectBulldozer.Drawning; using ProjectBulldozer.Entities; namespace ProjectBulldozer.Generics { internal class DrawingBulldozerEqutables : IEqualityComparer { public bool Equals(DrawingTractor? x, DrawingTractor? y) { if (x == null || x.EntityTractor == null) { throw new ArgumentNullException(nameof(x)); } if (y == null || y.EntityTractor == null) { throw new ArgumentNullException(nameof(y)); } if (x.GetType().Name != y.GetType().Name) { return false; } if (x.EntityTractor.Speed != y.EntityTractor.Speed) { return false; } if (x.EntityTractor.Weight != y.EntityTractor.Weight) { return false; } if (x.EntityTractor.BodyColor != y.EntityTractor.BodyColor) { return false; } if (x is DrawingBulldozer && y is DrawingBulldozer) { if ((x.EntityTractor as EntityBulldozer).Otval != (y.EntityTractor as EntityBulldozer).Otval) { return false; } if ((x.EntityTractor as EntityBulldozer).ThirdWheel != (y.EntityTractor as EntityBulldozer).ThirdWheel) { return false; } } return true; } public int GetHashCode([DisallowNull] DrawingTractor obj) { return obj.GetHashCode(); } } }