public AllegianceNode(ObjectGuid playerGuid, Allegiance allegiance, AllegianceNode monarch = null, AllegianceNode patron = null) { PlayerGuid = playerGuid; Allegiance = allegiance; Monarch = monarch ?? this; Patron = patron; }
public AllegianceNode(IPlayer player, Allegiance allegiance, AllegianceNode monarch = null, AllegianceNode patron = null) { Player = player; Allegiance = allegiance; Monarch = monarch ?? this; Patron = patron; }
public void BuildChain(Allegiance allegiance, List <IPlayer> players) { var vassals = players.Where(p => p.PatronId == PlayerGuid.Full).ToList(); Vassals = new Dictionary <uint, AllegianceNode>(); foreach (var vassal in vassals) { var node = new AllegianceNode(vassal.Guid, allegiance, Monarch, this); node.BuildChain(allegiance, players); Vassals.Add(vassal.Guid.Full, node); } CalculateRank(); }
public void BuildChain(Allegiance allegiance, List <IPlayer> players, Dictionary <uint, List <IPlayer> > patronVassals) { patronVassals.TryGetValue(PlayerGuid.Full, out var vassals); Vassals = new Dictionary <uint, AllegianceNode>(); if (vassals != null) { foreach (var vassal in vassals) { var node = new AllegianceNode(vassal.Guid, allegiance, Monarch, this); node.BuildChain(allegiance, players, patronVassals); Vassals.Add(vassal.Guid.Full, node); } } CalculateRank(); }