public ClanMember(string name, ClanRank rank, long clanXP, int kills)
 {
     Name   = name;
     Rank   = rank;
     ClanXP = clanXP;
     Kills  = kills;
 }
Exemplo n.º 2
0
        private void LoadClanIcons(WebIconList iconsList, string localPath)
        {
            var clanIcons = from icon in iconsList.Icons
                            where !string.IsNullOrEmpty(icon.ClanRank)
                            select icon;

            foreach (var clanIconEntry in clanIcons)
            {
                string[] appropriateRanks = clanIconEntry.ClanRank.Contains(",") ? clanIconEntry.ClanRank.Split(',') : new string[] { clanIconEntry.ClanRank };
                Image currentImage = null;
                try
                {
                    currentImage = LoadImageFromFile(Path.Combine(localPath, clanIconEntry.LocalName));
                }
                catch
                {
                    // TODO: Log the error or report it.
                    continue;
                }

                foreach (string rankName in appropriateRanks)
                {
                    try
                    {
                        ClanRank actualRank = (ClanRank)Enum.Parse(typeof(ClanRank), rankName);
                        m_ranksToImages.Add(actualRank, currentImage);
                    }
                    catch
                    {
                        // TODO: Log the error or report it.
                        continue;
                    }
                }
            }
        }
Exemplo n.º 3
0
        public IList <ClanMember> ParseResult(string rawResponse)
        {
            if (rawResponse == null)
            {
                return(null);
            }

            string[]     lines   = rawResponse.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
            ClanMember[] members = new ClanMember[lines.Length - 1]; // skip first line (header)
            try
            {
                for (int i = 0; i < members.Length; i++)
                {
                    string   line     = lines[i + 1]; // skip first line (header)
                    string[] segments = line.Split(',');
                    string   name     = ParsePlayerNameFromApi(segments[0]);
                    ClanRank rank     = ParseClanRankFromApi(segments[1]);
                    long     clanXP   = Int64.Parse(segments[2]);
                    int      kills    = Int32.Parse(segments[3]);
                    members[i] = new ClanMember(name, rank, clanXP, kills);
                }
            }
            catch (Exception e)
            {
                throw new InvalidDataException("Error parsing response.", e);
            }
            return(members);
        }
Exemplo n.º 4
0
        public Image GetImageFor(ClanRank rank)
        {
            if (m_ranksToImages.ContainsKey(rank))
            {
                return m_ranksToImages[rank];
            }

            return m_defaultImage;
        }
Exemplo n.º 5
0
        /// <summary>
        /// Returns true if ClanMember instances are equal
        /// </summary>
        /// <param name="input">Instance of ClanMember to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(ClanMember?input)
        {
            if (input == null)
            {
                return(false);
            }

            return
                ((
                     League == input.League ||
                     (League != null &&
                      League.Equals(input.League))
                     ) &&
                 (
                     Tag == input.Tag ||
                     (Tag != null &&
                      Tag.Equals(input.Tag))
                 ) &&
                 (
                     Name == input.Name ||
                     (Name != null &&
                      Name.Equals(input.Name))
                 ) &&
                 (
                     Role == input.Role ||
                     Role.Equals(input.Role)
                 ) &&
                 (
                     ExpLevel == input.ExpLevel ||
                     ExpLevel.Equals(input.ExpLevel)
                 ) &&
                 (
                     ClanRank == input.ClanRank ||
                     ClanRank.Equals(input.ClanRank)
                 ) &&
                 (
                     PreviousClanRank == input.PreviousClanRank ||
                     PreviousClanRank.Equals(input.PreviousClanRank)
                 ) &&
                 (
                     Donations == input.Donations ||
                     Donations.Equals(input.Donations)
                 ) &&
                 (
                     DonationsReceived == input.DonationsReceived ||
                     DonationsReceived.Equals(input.DonationsReceived)
                 ) &&
                 (
                     Trophies == input.Trophies ||
                     Trophies.Equals(input.Trophies)
                 ) &&
                 (
                     VersusTrophies == input.VersusTrophies ||
                     VersusTrophies.Equals(input.VersusTrophies)
                 ));
        }
Exemplo n.º 6
0
        /// <summary>
        /// Creates a new <see>ClanProfile</see>.
        /// </summary>
        /// <param name="clanName">The name of the user's clan.</param>
        /// <param name="rank">The rank of the user within the clan.</param>
        /// <param name="joinDate">The date at which the user joined the clan.</param>
        protected internal ClanProfile(string clanName, ClanRank rank, DateTime joinDate)
        {
            if (string.IsNullOrEmpty(clanName))
                throw new ArgumentNullException("clanName");
            if (!Enum.IsDefined(typeof(ClanRank), rank))
                throw new InvalidEnumArgumentException("rank", (int)rank, typeof(ClanRank));

            m_clanName = clanName;
            m_rank = rank;
            m_joined = joinDate;
        }
Exemplo n.º 7
0
	    public Clan(Player p, string name, string owner) {
		    this.name = name;
		    this.owner = owner;
		    this.own = p;
		    this.users = new List<ClanUser>(100);
		    this.ownerFriends = p.getFriends().getFriendsList();
		    this.usersWithRank = new Dictionary<string, ClanRank>(250);
		    this.kickRights = ClanRank.OWNER;
		    this.enterRights = ClanRank.NO_RANK;
		    this.talkRights = ClanRank.NO_RANK;
	    }
Exemplo n.º 8
0
 public Clan(Player p, string name, string owner)
 {
     this.name          = name;
     this.owner         = owner;
     this.own           = p;
     this.users         = new List <ClanUser>(100);
     this.ownerFriends  = p.getFriends().getFriendsList();
     this.usersWithRank = new Dictionary <string, ClanRank>(250);
     this.kickRights    = ClanRank.OWNER;
     this.enterRights   = ClanRank.NO_RANK;
     this.talkRights    = ClanRank.NO_RANK;
 }
Exemplo n.º 9
0
        /// <summary>
        /// Creates a new <see>ClanProfile</see>.
        /// </summary>
        /// <param name="clanName">The name of the user's clan.</param>
        /// <param name="rank">The rank of the user within the clan.</param>
        /// <param name="joinDate">The date at which the user joined the clan.</param>
        protected internal ClanProfile(string clanName, ClanRank rank, DateTime joinDate)
        {
            if (string.IsNullOrEmpty(clanName))
            {
                throw new ArgumentNullException("clanName");
            }
            if (!Enum.IsDefined(typeof(ClanRank), rank))
            {
                throw new InvalidEnumArgumentException("rank", (int)rank, typeof(ClanRank));
            }

            m_clanName = clanName;
            m_rank     = rank;
            m_joined   = joinDate;
        }
Exemplo n.º 10
0
        /// <summary>
        /// Проверяет, что игроку доступен контракт банды
        /// </summary>
        private bool ClanRankEnough(Client player, int workLevel, int minLevel, ClanRank minRank)
        {
            if (!LevelEnough(player, workLevel, minLevel))
            {
                return(false);
            }
            var clanInfo = PlayerInfoManager.GetInfo(player).Clan;

            if (clanInfo == null || clanInfo.Rank < minRank)
            {
                API.sendNotificationToPlayer(player, $"~r~Необходимый ранг в банде \"{minRank.GetDescription()}\" и выше", true);
                return(false);
            }
            return(true);
        }
Exemplo n.º 11
0
        /// <summary>
        /// Attempts to change the specified clan member's rank.
        /// </summary>
        /// <remarks>
        /// <para>This method does not attempt to verify that the current user is allowed to change the specified user's rank, or even if the specified
        /// user exists or is in the current user's clan.  The results of this method call are returned via the 
        /// <see>ClanRankChangeResponseReceived</see> event.</para>
        /// </remarks>
        /// <param name="name">The name of the user to change.</param>
        /// <param name="newRank">The user's new rank.</param>
        /// <exception cref="InvalidEnumArgumentException">Thrown if <paramref name="newRank"/> is not a valid value of the <see>ClanRank</see>
        /// enumeration</exception>.
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="name"/> is <see langword="null" /> or zero-length.</exception>
        public void ChangeClanMemberRank(string name, ClanRank newRank)
        {
            if (!Enum.IsDefined(typeof(ClanRank), newRank))
                throw new InvalidEnumArgumentException(Strings.param_newRank, (int)newRank, typeof(ClanRank));
            if (string.IsNullOrEmpty(name))
                throw new ArgumentNullException(Strings.param_name);

            BncsPacket pck = new BncsPacket((byte)BncsPacketId.ClanRankChange);
            int cookie = Interlocked.Increment(ref m_clanCookie);
            m_clanRankChangeToMemberList.Add(cookie, name);
            pck.InsertInt32(cookie);
            pck.InsertCString(name);
            pck.InsertByte((byte)newRank);

            Send(pck);
        }
Exemplo n.º 12
0
        private void HandleClanInfo(ParseData pd)
        {
            DataReader dr = new DataReader(pd.Data);

            dr.Seek(1);
            string   clanTag = dr.ReadDwordString(0);
            ClanRank rank    = (ClanRank)dr.ReadByte();

            ClanMembershipEventArgs args = new ClanMembershipEventArgs(clanTag, rank);

            args.EventData = pd;
            OnClanMembershipReceived(args);

            BncsPacket pck = new BncsPacket((byte)BncsPacketId.ClanMemberList);

            pck.InsertInt32(Interlocked.Increment(ref m_clanCookie));
            Send(pck);
        }
Exemplo n.º 13
0
        private void HandleClanMemberRankChange(ParseData pd)
        {
            DataReader dr         = new DataReader(pd.Data);
            ClanRank   old        = (ClanRank)dr.ReadByte();
            ClanRank   newRank    = (ClanRank)dr.ReadByte();
            string     memberName = dr.ReadCString();
            ClanMember member     = null;

            if (m_clanList.ContainsKey(memberName))
            {
                member = m_clanList[memberName];
            }

            ClanMemberRankChangeEventArgs args = new ClanMemberRankChangeEventArgs(old, newRank, member);

            args.EventData = pd;
            OnClanMemberRankChanged(args);
        }
Exemplo n.º 14
0
        private void HandleClanMemberStatusChanged(ParseData pd)
        {
            DataReader dr       = new DataReader(pd.Data);
            string     userName = dr.ReadCString();

            if (m_clanList.ContainsKey(userName))
            {
                ClanMember       member   = m_clanList[userName];
                ClanRank         rank     = (ClanRank)dr.ReadByte();
                ClanMemberStatus status   = (ClanMemberStatus)dr.ReadByte();
                string           location = dr.ReadCString();
                member.Rank          = rank;
                member.CurrentStatus = status;
                member.Location      = location;

                ClanMemberStatusEventArgs args = new ClanMemberStatusEventArgs(member);
                args.EventData = pd;
                OnClanMemberStatusChanged(args);
            }
        }
Exemplo n.º 15
0
        private void HandleClanMemberInformation(ParseData pd)
        {
            DataReader dr     = new DataReader(pd.Data);
            int        cookie = dr.ReadInt32();

            if (!m_warcraftProfileRequests.ContainsKey(cookie))
            {
                Debug.WriteLine(string.Format(CultureInfo.InvariantCulture, "Unable to locate profile request with cookie {0:x2}", cookie));
                return;
            }
            WarcraftProfileEventArgs args = m_warcraftProfileRequests[cookie];

            byte success = dr.ReadByte();

            if (success != 0)
            {
                m_warcraftProfileRequests.Remove(cookie);
                ProfileLookupFailedEventArgs profileFailed = new ProfileLookupFailedEventArgs(args.Username, args.Product)
                {
                    EventData = pd
                };
                OnProfileLookupFailed(profileFailed);
                return;
            }

            string   clanName = dr.ReadCString();
            ClanRank rank     = (ClanRank)dr.ReadByte();
            DateTime joined   = DateTime.FromFileTime(dr.ReadInt64());

            args.Clan = new ClanProfile(clanName, rank, joined);

            BncsPacket pck = new BncsPacket((byte)BncsPacketId.WarcraftGeneral);

            pck.InsertByte((byte)WarcraftCommands.ClanInfoRequest);
            pck.InsertInt32(cookie);
            pck.InsertDwordString(args.Profile.ClanTag, 0);
            pck.InsertDwordString(args.Product.ProductCode);
            Send(pck);

            BattleNetClientResources.IncomingBufferPool.FreeBuffer(pd.Data);
        }
Exemplo n.º 16
0
        public Image GetImageFor(ClanRank rank)
        {
            switch (rank)
            {
            case ClanRank.Chieftan:
                return(GetImageFor(UserFlags.ChannelOperator, null));

            case ClanRank.Shaman:
                return(GetImageFor(UserFlags.Speaker, null));

            case ClanRank.Grunt:
                return(GetImageFor(UserFlags.None, UserStats.CreateDefault(Product.Warcraft3Expansion)));

            case ClanRank.Peon:
            case ClanRank.Initiate:
                return(GetImageFor(UserFlags.None, UserStats.CreateDefault(Product.Warcraft3Retail)));

            default:
                return(GetImageFor(UserFlags.BattleNetAdministrator, null));
            }
        }
Exemplo n.º 17
0
        /// <summary>
        /// Проверяет, что игроку разрешено взаимодействовать с нпс
        /// </summary>
        private bool HasRight(Client player, long clanId, ClanRank rank)
        {
            var playerInfo = _playerInfoManager.GetInfo(player);

            if (playerInfo.Clan == null)
            {
                API.sendColoredNotificationToPlayer(player, "Вы не состоите в банде", 0, 6, true);
                return(false);
            }
            if (playerInfo.Clan.ClanId != clanId)
            {
                API.sendColoredNotificationToPlayer(player, "Вы состоите в другой банде", 0, 6, true);
                return(false);
            }
            if (playerInfo.Clan.Rank < rank)
            {
                API.sendNotificationToPlayer(player, $"~r~Необходим ранг \"{rank.GetDescription()}\" и выше", true);
                return(false);
            }
            return(true);
        }
Exemplo n.º 18
0
        /// <summary>
        /// Attempts to change the specified clan member's rank.
        /// </summary>
        /// <remarks>
        /// <para>This method does not attempt to verify that the current user is allowed to change the specified user's rank, or even if the specified
        /// user exists or is in the current user's clan.  The results of this method call are returned via the
        /// <see>ClanRankChangeResponseReceived</see> event.</para>
        /// </remarks>
        /// <param name="name">The name of the user to change.</param>
        /// <param name="newRank">The user's new rank.</param>
        /// <exception cref="InvalidEnumArgumentException">Thrown if <paramref name="newRank"/> is not a valid value of the <see>ClanRank</see>
        /// enumeration</exception>.
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="name"/> is <see langword="null" /> or zero-length.</exception>
        public void ChangeClanMemberRank(string name, ClanRank newRank)
        {
            if (!Enum.IsDefined(typeof(ClanRank), newRank))
            {
                throw new InvalidEnumArgumentException(Strings.param_newRank, (int)newRank, typeof(ClanRank));
            }
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(Strings.param_name);
            }

            BncsPacket pck    = new BncsPacket((byte)BncsPacketId.ClanRankChange);
            int        cookie = Interlocked.Increment(ref m_clanCookie);

            m_clanRankChangeToMemberList.Add(cookie, name);
            pck.InsertInt32(cookie);
            pck.InsertCString(name);
            pck.InsertByte((byte)newRank);

            Send(pck);
        }
Exemplo n.º 19
0
        private void HandleClanMemberList(ParseData pd)
        {
            DataReader dr = new DataReader(pd.Data);

            dr.Seek(4);
            byte memCount = dr.ReadByte();

            for (int i = 0; i < memCount; i++)
            {
                string           userName = dr.ReadCString();
                ClanRank         rank     = (ClanRank)dr.ReadByte();
                ClanMemberStatus status   = (ClanMemberStatus)dr.ReadByte();
                string           location = dr.ReadCString();
                m_clanList.Add(userName, new ClanMember(userName, rank, status, location));
            }

            ClanMember[] members = new ClanMember[m_clanList.Count];
            m_clanList.Values.CopyTo(members, 0);

            ClanMemberListEventArgs args = new ClanMemberListEventArgs(members);

            args.EventData = pd;
            OnClanMemberListReceived(args);
        }
Exemplo n.º 20
0
 public void setKickRights(ClanRank rights)
 {
     this.kickRights = rights;
     Server.getClanManager().updateClan(this);
 }
Exemplo n.º 21
0
 public void setEnterRights(ClanRank enterRights)
 {
     this.enterRights = enterRights;
 }
Exemplo n.º 22
0
 public void setLootRights(ClanRank lootRights)
 {
     this.lootRights = lootRights;
 }
 /// <summary>
 /// Creates a new instance of <see>ClanMemberRankChangeEventArgs</see>.
 /// </summary>
 /// <param name="oldRank">The previous rank.</param>
 /// <param name="newRank">The new rank.</param>
 /// <param name="memberWhoChangedTheRank">The member who was responsible for the rank change.</param>
 public ClanMemberRankChangeEventArgs(ClanRank oldRank, ClanRank newRank, ClanMember memberWhoChangedTheRank)
 {
     m_old     = oldRank;
     m_new     = newRank;
     m_changer = memberWhoChangedTheRank;
 }
Exemplo n.º 24
0
 public void setKickRights(ClanRank rights)
 {
     this.kickRights = rights;
     Server.getClanManager().updateClan(this);
 }
Exemplo n.º 25
0
 public void setTalkRights(ClanRank talkRights)
 {
     this.talkRights = talkRights;
 }
Exemplo n.º 26
0
 /// <summary>
 /// Creates a new instance of <see>ClanMemberRankChangeEventArgs</see>.
 /// </summary>
 /// <param name="oldRank">The previous rank.</param>
 /// <param name="newRank">The new rank.</param>
 /// <param name="memberWhoChangedTheRank">The member who was responsible for the rank change.</param>
 public ClanMemberRankChangeEventArgs(ClanRank oldRank, ClanRank newRank, ClanMember memberWhoChangedTheRank)
 {
     m_old = oldRank;
     m_new = newRank;
     m_changer = memberWhoChangedTheRank;
 }
Exemplo n.º 27
0
 public string GetImageIdFor(ClanRank rank)
 {
     return rank.ToString();
 }
Exemplo n.º 28
0
 public string GetImageIdFor(ClanRank rank)
 {
     return rank.ToString();
 }
Exemplo n.º 29
0
 /// <summary>
 /// Creates a new instance of <see>ClanMembershipEventArgs</see>.
 /// </summary>
 /// <param name="clanTag">The tag of the clan to which the client belongs.</param>
 /// <param name="rank">The rank within the clan of the client.</param>
 public ClanMembershipEventArgs(string clanTag, ClanRank rank)
 {
     m_tag = clanTag;
     m_rank = rank;
 }
Exemplo n.º 30
0
 /// <summary>
 /// Creates a new <see>ClanMember</see> for a user who is currently offline.
 /// </summary>
 /// <param name="userName">The clan member's user name.</param>
 /// <param name="rank">The clan member's rank.</param>
 public ClanMember(string userName, ClanRank rank)
 {
     m_userName = userName;
     m_rank     = rank;
     m_location = string.Empty;
 }
Exemplo n.º 31
0
 /// <summary>
 /// Creates a new <see>ClanMember</see> for a user who is online or offline.
 /// </summary>
 /// <param name="userName">The clan member's user name.</param>
 /// <param name="rank">The clan member's rank.</param>
 /// <param name="status">The clan member's current status.</param>
 /// <param name="location">The name of the member's current location (such as a channel or game name).</param>
 public ClanMember(string userName, ClanRank rank, ClanMemberStatus status, string location)
     : this(userName, rank)
 {
     m_online   = status;
     m_location = location;
 }
Exemplo n.º 32
0
 /// <summary>
 /// Creates a new instance of <see>ClanMembershipEventArgs</see>.
 /// </summary>
 /// <param name="clanTag">The tag of the clan to which the client belongs.</param>
 /// <param name="rank">The rank within the clan of the client.</param>
 public ClanMembershipEventArgs(string clanTag, ClanRank rank)
 {
     m_tag  = clanTag;
     m_rank = rank;
 }
Exemplo n.º 33
0
 public string getRankString(ClanRank rank)
 {
     return RANK_NAMES[(int)rank + 1];
 }
Exemplo n.º 34
0
 /// <summary>
 /// Creates a new <see>ClanMember</see> for a user who is online or offline.
 /// </summary>
 /// <param name="userName">The clan member's user name.</param>
 /// <param name="rank">The clan member's rank.</param>
 /// <param name="status">The clan member's current status.</param>
 /// <param name="location">The name of the member's current location (such as a channel or game name).</param>
 public ClanMember(string userName, ClanRank rank, ClanMemberStatus status, string location)
     : this(userName, rank)
 {
     m_online = status;
     m_location = location;
 }
Exemplo n.º 35
0
 public Image GetImageFor(ClanRank rank)
 {
     switch (rank)
     {
         case ClanRank.Chieftan:
             return GetImageFor(UserFlags.ChannelOperator, null);
         case ClanRank.Shaman:
             return GetImageFor(UserFlags.Speaker, null);
         case ClanRank.Grunt:
             return GetImageFor(UserFlags.None, UserStats.CreateDefault(Product.Warcraft3Expansion));
         case ClanRank.Peon:
         case ClanRank.Initiate:
             return GetImageFor(UserFlags.None, UserStats.CreateDefault(Product.Warcraft3Retail));
         default:
             return GetImageFor(UserFlags.BattleNetAdministrator, null);
     }
 }
Exemplo n.º 36
0
 public void setTalkRights(ClanRank talkRights)
 {
     this.talkRights = talkRights;
 }
Exemplo n.º 37
0
 /// <summary>
 /// Creates a new <see>ClanMember</see> for a user who is currently offline.
 /// </summary>
 /// <param name="userName">The clan member's user name.</param>
 /// <param name="rank">The clan member's rank.</param>
 public ClanMember(string userName, ClanRank rank)
 {
     m_userName = userName;
     m_rank = rank;
     m_location = string.Empty;
 }
Exemplo n.º 38
0
 public void setLootRights(ClanRank lootRights)
 {
     this.lootRights = lootRights;
 }
Exemplo n.º 39
0
 public string getRankString(ClanRank rank)
 {
     return(RANK_NAMES[(int)rank + 1]);
 }
Exemplo n.º 40
0
 public void setEnterRights(ClanRank enterRights)
 {
     this.enterRights = enterRights;
 }