コード例 #1
0
        public void Draw(Graphics g, Font font, Color foreColor)
        {
            Battle battle;
            User   founder;

            if (!GetBattle(out battle))
            {
                return;
            }
            var fbrush = new SolidBrush(foreColor);
            var x      = 1; // margin
            var y      = 3;

            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            Action newLine = () =>
            {
                x  = 1;
                y += 16;
            };
            Action <string> drawString = text =>
            {
                //y -= 3;
                x += ToolTipHandler.TEXT_X_OFFSET;
                TextRenderer.DrawText(g, text, font, new Point(x, y + ToolTipHandler.TEXT_Y_OFFSET), Config.TextColor, TextFormatFlags.LeftAndRightPadding);
                x += TextRenderer.MeasureText(g, text, font).Width;
                //y += 3;
            };
            Action <Image, int, int> drawImage = (image, w, h) =>
            {
                g.DrawImage(image, x, y, w, h);
                x += w + 3;
            };

            drawString("Founder: " + battle.FounderName);
            newLine();
            drawString("Map: " + battle.MapName);
            newLine();
            drawString("Players: " + battle.NonSpectatorCount);
            drawString("Spectators: " + battle.SpectatorCount);
            drawString("Friends: " + battle.Users.Count(u => Program.TasClient.Friends.Contains(u.Key)));
            newLine();


            if (battle.IsInGame)
            {
                drawImage(Buttons.fight, 16, 16);
                if (battle.RunningSince != null)
                {
                    var timeString = DateTime.UtcNow.Subtract(battle.RunningSince.Value).PrintTimeRemaining();
                    drawString("Battle running for " + timeString + ".");
                }
                newLine();
            }
            if (battle.IsPassworded)
            {
                drawImage(ZklResources._lock, 16, 16);
                drawString("Joining requires a password.");
                newLine();
            }

            newLine();


            foreach (var player in battle.Users.Values.Select(u => u.LobbyUser))
            {
                var user = player;
                var icon = TextImage.GetUserImage(user.Name);
                drawImage(icon, 16, 16);
                Image flag;
                y += 3;
                if (Images.CountryFlags.TryGetValue(user.Country, out flag) && flag != null)
                {
                    drawImage(flag, flag.Width, flag.Height);
                }
                else
                {
                    x += 19;
                }
                y -= 3;
                if (!user.IsBot)
                {
                    drawImage(Images.GetRank(user.Level, user.EffectiveMmElo), 16, 16);
                    var clan = ServerImagesHandler.GetClanOrFactionImage(user);

                    if (clan.Item1 != null)
                    {
                        drawImage(clan.Item1, 16, 16);
                    }
                }

                /*
                 * if (user.IsZkLobbyUser)
                 * {
                 *  drawImage(Resources.ZK_logo_square, 16, 16);
                 * }*/
                drawString(player.Name);


                if (!user.IsBot)
                {
                    if (user.IsAway)
                    {
                        drawImage(ZklResources.away, 16, 16);
                    }
                    if (user.IsInGame)
                    {
                        drawImage(Buttons.fight, 16, 16);
                    }
                }
                newLine();
            }
            if (Program.TasClient.MyBattle != null && battle.BattleID == Program.TasClient.MyBattle.BattleID && !String.IsNullOrEmpty(Program.ModStore.ChangedOptions))
            {
                newLine();
                drawString("Game Options:");
                newLine();
                foreach (var line in Program.ModStore.ChangedOptions.Lines().Where(z => !string.IsNullOrEmpty(z)))
                {
                    drawString("  " + line);
                    newLine();
                }
            }
            fbrush.Dispose();
        }
コード例 #2
0
        public void Draw(Graphics g, Font font, Color foreColor)
        {
            Battle battle;
            User   founder;

            if (!GetBattleAndFounder(out battle, out founder))
            {
                return;
            }

            var x = 1; // margin
            var y = 3;

            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            Action newLine = () =>
            {
                x  = 1;
                y += 16;
            };
            Action <string> drawString = text =>
            {
                TextRenderer.DrawText(g, text, font, new Point(x, y), foreColor);
                x += (int)Math.Ceiling((double)TextRenderer.MeasureText(g, text, font).Width);
            };
            Action <Image, int, int> drawImage = (image, w, h) =>
            {
                g.DrawImage(image, x, y, w, h);
                x += w + 3;
            };

            founder = battle.Founder;
            drawString("Founder: " + battle.Founder);
            newLine();
            drawString("Map: " + battle.MapName);
            newLine();
            drawString("Players: " + battle.NonSpectatorCount);
            drawString("Spectators: " + battle.SpectatorCount);
            drawString("Friends: " + battle.Users.Values.Count(u => Program.FriendManager.Friends.Contains(u.Name)));
            newLine();


            if (founder.IsInGame)
            {
                drawImage(ZklResources.boom, 16, 16);
                if (founder.InGameSince != null)
                {
                    var timeString = DateTime.UtcNow.Subtract(founder.InGameSince.Value).PrintTimeRemaining();
                    drawString("The battle has been going on for at least " + timeString + ".");
                }
                newLine();
            }
            if (battle.IsPassworded)
            {
                drawImage(ZklResources._lock, 16, 16);
                drawString("Joining requires a password.");
                newLine();
            }

            newLine();


            foreach (var player in battle.Users.Values)
            {
                var user = player.LobbyUser;
                var icon = TextImage.GetUserImage(user.Name);
                drawImage(icon, 16, 16);
                Image flag;
                y += 3;
                if (Images.CountryFlags.TryGetValue(user.Country, out flag) && flag != null)
                {
                    drawImage(flag, flag.Width, flag.Height);
                }
                else
                {
                    x += 19;
                }
                y -= 3;
                if (!user.IsBot)
                {
                    drawImage(Images.GetRank(user.Level), 16, 16);
                    var clan = ServerImagesHandler.GetClanOrFactionImage(user);

                    if (clan.Item1 != null)
                    {
                        drawImage(clan.Item1, 16, 16);
                    }
                }

                /*
                 * if (user.IsZkLobbyUser)
                 * {
                 *  drawImage(Resources.ZK_logo_square, 16, 16);
                 * }*/
                drawString(player.Name);

                var top10 = Program.SpringieServer.GetTop10Rank(user.Name);
                if (top10 > 0)
                {
                    var oldx = x;
                    drawImage(ZklResources.cup, 16, 16);
                    x -= 17;
                    drawString(top10.ToString());
                    x = oldx + 16;
                }

                if (!user.IsBot)
                {
                    if (user.IsAway)
                    {
                        drawImage(ZklResources.away, 16, 16);
                    }
                    if (user.IsInGame)
                    {
                        drawImage(ZklResources.ingame, 16, 16);
                    }
                }
                newLine();
            }
            if (Program.TasClient.MyBattle != null && battle.BattleID == Program.TasClient.MyBattle.BattleID && !String.IsNullOrEmpty(Program.ModStore.ChangedOptions))
            {
                newLine();
                drawString("Game Options:");
                newLine();
                foreach (var line in Program.ModStore.ChangedOptions.Lines().Where(z => !string.IsNullOrEmpty(z)))
                {
                    drawString("  " + line);
                    newLine();
                }
            }
        }