public ClanMember(string name, ClanRank rank, long clanXP, int kills) { Name = name; Rank = rank; ClanXP = clanXP; Kills = kills; }
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; } } } }
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); }
public Image GetImageFor(ClanRank rank) { if (m_ranksToImages.ContainsKey(rank)) { return m_ranksToImages[rank]; } return m_defaultImage; }
/// <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) )); }
/// <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; }
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; }
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; }
/// <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; }
/// <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); }
/// <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); }
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); }
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); }
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); } }
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); }
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)); } }
/// <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); }
/// <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); }
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); }
public void setKickRights(ClanRank rights) { this.kickRights = rights; Server.getClanManager().updateClan(this); }
public void setEnterRights(ClanRank enterRights) { this.enterRights = enterRights; }
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; }
public void setTalkRights(ClanRank talkRights) { this.talkRights = talkRights; }
public string GetImageIdFor(ClanRank rank) { return rank.ToString(); }
/// <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; }
/// <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; }
/// <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; }
public string getRankString(ClanRank rank) { return RANK_NAMES[(int)rank + 1]; }
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); } }
public string getRankString(ClanRank rank) { return(RANK_NAMES[(int)rank + 1]); }