using ProjectLainer.DrawningObjects; using ProjectLainer.Entities; using System.Diagnostics.CodeAnalysis; namespace ProjectLainer.Generics { internal class DrawiningLainerEqutables : IEqualityComparer { public bool Equals(DrawingEntity? x, DrawingEntity? y) { if (x == null || x.EntityLainer == null) { throw new ArgumentNullException(nameof(x)); } if (y == null || y.EntityLainer == null) { throw new ArgumentNullException(nameof(y)); } if (x.GetType().Name != y.GetType().Name) { return false; } if (x.EntityLainer.Speed != y.EntityLainer.Speed) { return false; } if (x.EntityLainer.Weight != y.EntityLainer.Weight) { return false; } if (x.EntityLainer.BodyColor != y.EntityLainer.BodyColor) { return false; } if (x is DrawningSuperLainer && y is DrawningSuperLainer) { EntitySuperLainer entityX = (EntitySuperLainer)x.EntityLainer; EntitySuperLainer entityY = (EntitySuperLainer)y.EntityLainer; if(entityX.Pools != entityY.Pools) { return false; } if(entityX.Decks != entityY.Decks) { return false; } if(entityX.AdditionalColor != entityY.AdditionalColor) { return false; } } return true; } public int GetHashCode([DisallowNull] DrawingEntity obj) { return obj.GetHashCode(); } } }