private Tree BuildPartner(Node node, bool fartherChild) { if (Family.Members[node.Key].Refs.TryGetPartner( out Member partner, Settings.At, Settings.CanBeDead )) { if (fartherChild && Seen.Add(partner.Id)) { node.Partner = new Node( partner.Id, partner.FullName.Value(Settings.At) ) { PartnerReference = node.Key }; BuildRecurrent(node.Partner); } else { node.PartnerReference = partner.Id; } } return(this); }
private Tree BuildRecurrent(Node actual) { foreach (Member child in UseChildren(actual)) { if (Seen.Add(child.Id)) { Node childNode = new Node( child.Id, child.FullName.Value(Settings.At) ); actual.AddChild(childNode); if (Settings.CanBeFromFartherGeneration) { BuildRecurrent(childNode).BuildPartner( childNode, actual.Key != Root.Key ); } } else { actual.AddChildReference(child.Id); } } return(this); }
public void MadeSeenBy(FriendModel user) { Seen.Add(user); }