示例#1
0
        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;
        }
示例#2
0
        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;
        }
示例#3
0
        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));
            }
        }
示例#4
0
        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);
        }