コード例 #1
0
 public AllegianceNode(ObjectGuid playerGuid, Allegiance allegiance, AllegianceNode monarch = null, AllegianceNode patron = null)
 {
     PlayerGuid = playerGuid;
     Allegiance = allegiance;
     Monarch    = monarch ?? this;
     Patron     = patron;
 }
コード例 #2
0
 public AllegianceNode(IPlayer player, Allegiance allegiance, AllegianceNode monarch = null, AllegianceNode patron = null)
 {
     Player     = player;
     Allegiance = allegiance;
     Monarch    = monarch ?? this;
     Patron     = patron;
 }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        /// <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);
            }
        }
コード例 #5
0
        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();
        }
コード例 #6
0
ファイル: AllegianceNode.cs プロジェクト: jacobtipp/trACE
        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();
        }