public string GetImageIdFor(UserFlags flags, UserStats us) { foreach (UserFlags flag in m_flagsToImages.Keys) { if (TestFlag(flag, flags)) { return flag.ToString(); } } string clientBasedImage = us.Product.ProductCode; Warcraft3Stats w3 = us as Warcraft3Stats; if (!object.ReferenceEquals(w3, null)) { if (w3.IconTier == 1) { clientBasedImage = "W3O1"; } else { clientBasedImage = string.Format("{0}{1}{2}", w3.Product == Product.Warcraft3Retail ? "W3" : "FT", w3.IconRace.ToString(), w3.IconTier); } } return clientBasedImage; }
public Image GetImageFor(UserFlags flags, UserStats stats) { foreach (UserFlags flag in m_flagsToImages.Keys) { if (TestFlag(flag, flags)) { return m_flagsToImages[flag]; } } Image clientBasedImage = null; if (m_nonTieredClientImages.ContainsKey(stats.Product.ProductCode)) clientBasedImage = m_nonTieredClientImages[stats.Product.ProductCode]; Warcraft3Stats w3 = stats as Warcraft3Stats; if (!object.ReferenceEquals(w3, null)) { if (w3.IconTier == 1) { clientBasedImage = m_defaultTierIcon; } else { if (m_tieredClientImages.ContainsKey(stats.Product.ProductCode)) { Dictionary<int, Dictionary<char, Image>> tiers = m_tieredClientImages[stats.Product.ProductCode]; if (tiers.ContainsKey(w3.IconTier)) { Dictionary<char, Image> races = tiers[w3.IconTier]; if (WARCRAFT_3_RACES_TO_IDS.ContainsKey(w3.IconRace)) { char race = WARCRAFT_3_RACES_TO_IDS[w3.IconRace]; if (races.ContainsKey(race)) { clientBasedImage = races[race]; } } } } } } if (object.ReferenceEquals(clientBasedImage, null)) clientBasedImage = m_defaultImage; return clientBasedImage; }
private void AnnounceUser(UserEventArgs e) { ChatUser user = e.User; UserStats us = e.User.Stats; string imgID = m_prp.Icons.GetImageIdFor(user.Flags, us); ChatNode productNode = ChatNode.Empty; if (m_profile.IncludeIconsInChat) { Image img = m_prp.Icons.GetImageFor(user.Flags, us); productNode = new ImageChatNode(string.Concat(imgID, ".jpg"), img, imgID); } switch (us.Product.ProductCode) { case "DRTL": case "DSHR": case "SSHR": case "STAR": case "SEXP": case "JSTR": case "W2BN": StarcraftStats ss = us as StarcraftStats; if (ss == null) { chat.AddChat(new ChatNode(user.Username, CssClasses.UsernameOther), productNode, new ChatNode(string.Format(" joined the channel with {0}.", us.Product.Name), CssClasses.JoinedChannel)); } else { chat.AddChat(new ChatNode(user.Username, CssClasses.UsernameOther), productNode, new ChatNode(string.Format(" joined the channel with {0} ({1} win{2}, ladder rating {3}, rank {4}).", ss.Product.Name, ss.Wins, ss.Wins != 1 ? "s" : string.Empty, ss.LadderRating, ss.LadderRank), CssClasses.JoinedChannel)); } break; case "D2DV": case "D2XP": Diablo2Stats ds = us as Diablo2Stats; if (ds == null) { chat.AddChat(new ChatNode(user.Username, CssClasses.UsernameOther), productNode, new ChatNode(string.Format(" joined the channel with {0}.", us.Product.Name), CssClasses.JoinedChannel)); } else { StringBuilder sb = new StringBuilder(); sb.Append(" joined the channel with "); sb.Append(ds.Product.Name); if (ds.IsRealmCharacter) { sb.Append(" as "); sb.Append(ds.CharacterName); sb.AppendFormat(", a level {0}", ds.Level); if (ds.IsHardcoreCharacter) { sb.Append(" hardcore"); } if (ds.IsLadderCharacter) { sb.Append(" ladder"); } if (ds.IsExpansionCharacter) { sb.Append(" Expansion "); } else { sb.Append(" Classic "); } sb.Append(ds.CharacterClass); sb.Append("."); chat.AddChat(new ChatNode(ds.UserName, CssClasses.UsernameOther), new ChatNode(sb.ToString(), CssClasses.JoinedChannel)); } else { chat.AddChat(new ChatNode(user.Username, CssClasses.UsernameOther), productNode, new ChatNode(string.Format(" joined the channel with {0}.", us.Product.Name), CssClasses.JoinedChannel)); } } break; case "WAR3": case "W3XP": Warcraft3Stats ws = us as Warcraft3Stats; if (ws == null) { chat.AddChat(new ChatNode(user.Username, CssClasses.UsernameOther), productNode, new ChatNode(string.Format(" joined the channel with {0}.", us.Product.Name), CssClasses.JoinedChannel)); } else { if (string.IsNullOrEmpty(ws.ClanTag)) { chat.AddChat(new ChatNode(user.Username, CssClasses.UsernameOther), productNode, new ChatNode(string.Format(" joined the channel with {0}, {1} icon tier {2}, level {3}.", ws.Product.Name, ws.IconRace, ws.IconTier, ws.Level), CssClasses.JoinedChannel)); } else { chat.AddChat(new ChatNode(user.Username, CssClasses.UsernameOther), productNode, new ChatNode(string.Format(" of clan {0} joined the channel with {1}, {2} icon tier {3}, level {4}.", ws.ClanTag, ws.Product.Name, ws.IconRace, ws.IconTier, ws.Level), CssClasses.JoinedChannel)); } } break; default: chat.AddChat(new ChatNode(user.Username, CssClasses.UsernameOther), productNode, new ChatNode(string.Format(" joined the channel with {0} ({1}).", us.Product.Name, us.LiteralText), CssClasses.JoinedChannel)); break; } if (user.Flags != UserFlags.None) { chat.AddChat(new ChatNode(user.Username, CssClasses.UsernameOther), new ChatNode(string.Format(" had the following flags: {0}", user.Flags), CssClasses.JoinedChannel)); } }
private ToolTipPropertySet CreateTip(ChatUser user) { // get the image to use Image icon = null; if (m_resourceProvider != null) { icon = m_resourceProvider.Icons.GetImageFor(user.Stats.Product); } // get the color to use. Color background = Color.Black; if (ProductTipColors.ContainsKey(user.Stats.Product)) { background = ProductTipColors[user.Stats.Product]; } // generate description StringBuilder description = new StringBuilder(); description.Append("Product: "); description.AppendLine(user.Stats.Product.Name); description.Append("Ping: "); description.AppendLine(user.Ping.ToString(CultureInfo.InvariantCulture)); description.Append("Flags: "); description.AppendLine(user.Flags.ToString()); description.AppendLine(); if (user.Stats is StarcraftStats) { StarcraftStats stats = user.Stats as StarcraftStats; description.Append("Wins: "); description.AppendLine(stats.Wins.ToString(CultureInfo.InvariantCulture)); description.Append("Rank: "); description.AppendLine(stats.LadderRank.ToString(CultureInfo.InvariantCulture)); description.Append("Rating: "); description.AppendLine(stats.LadderRating.ToString(CultureInfo.InvariantCulture)); } else if (user.Stats is Diablo2Stats) { Diablo2Stats stats = user.Stats as Diablo2Stats; description.AppendLine(stats.IsExpansionCharacter ? "Expansion character" : "Classic character"); if (stats.IsHardcoreCharacter) { description.Append("Hardcore "); } if (stats.IsLadderCharacter) { description.Append("Ladder "); } description.Append(stats.IsRealmCharacter ? "Realm " : "Open "); description.AppendLine("character"); if (stats.IsRealmCharacter) { description.AppendFormat(CultureInfo.InvariantCulture, "Level {0} {1}", stats.Level, stats.CharacterClass); description.AppendLine(); description.AppendLine(stats.CharacterName); description.AppendLine(stats.Difficulty.ToString()); } } else if (user.Stats is Warcraft3Stats) { Warcraft3Stats stats = user.Stats as Warcraft3Stats; description.Append("Clan: "); description.AppendLine(string.IsNullOrEmpty(stats.ClanTag) ? "(none)" : stats.ClanTag); description.AppendFormat(CultureInfo.InvariantCulture, "Level: {0}", stats.Level); description.AppendLine(); } ToolTipPropertySet ttps = new ToolTipPropertySet(user.Username, description.ToString(), background, icon, Color.White, background); return(ttps); }