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; }
/// <summary> /// Constructs a new Allegiance from a Monarch /// </summary> public Allegiance(IPlayer monarch) { Monarch = new AllegianceNode(monarch, this); // find all players with this monarch var members = AllegianceManager.FindAllPlayers(monarch); Monarch.BuildChain(this, members); BuildMembers(Monarch); //Console.WriteLine("TotalMembers: " + TotalMembers); }
/// <summary> /// Builds the lookup table of Players => AllegianceNodes /// </summary> public void BuildMembers(AllegianceNode node) { if (Monarch.Player.Equals(node.Player)) { Members = new Dictionary <IPlayer, AllegianceNode>(); } Members.Add(node.Player, node); foreach (var vassal in node.Vassals) { BuildMembers(vassal); } }
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(); }