public override int GetHashCode() { unchecked { var hashCode = BestCompletionTime.GetHashCode(); hashCode = (hashCode * 397) ^ BestScore; hashCode = (hashCode * 397) ^ (BonusObjectivesCompleted?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (CriticalObjectivesCompleted?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (OptionalObjectivesCompleted?.GetHashCode() ?? 0); return(hashCode); } }
public bool Equals(CampaignLevelCompletion other) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } return(BestCompletionTime.Equals(other.BestCompletionTime) && BestScore == other.BestScore && BonusObjectivesCompleted.OrderBy(boc => boc).SequenceEqual(other.BonusObjectivesCompleted.OrderBy(boc => boc)) && CriticalObjectivesCompleted.OrderBy(coc => coc).SequenceEqual(other.CriticalObjectivesCompleted.OrderBy(coc => coc)) && OptionalObjectivesCompleted.OrderBy(ooc => ooc).SequenceEqual(other.OptionalObjectivesCompleted.OrderBy(ooc => ooc))); }