Esempio n. 1
0
        public void Draw(Graphics g, Font font, Color foreColor)
        {
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            var  fbrush = new SolidBrush(foreColor);
            User user;

            if (!Program.TasClient.ExistingUsers.TryGetValue(userName, out user))
            {
                return;
            }
            var    x       = (int)1;
            var    y       = 3;
            Action newLine = () =>
            {
                x  = (int)1;
                y += (int)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 <string, Color> drawString2 = (text, color) =>
            {
                //y -= 3;
                x += ToolTipHandler.TEXT_X_OFFSET;
                TextRenderer.DrawText(g, text, font, new Point(x, y + ToolTipHandler.TEXT_Y_OFFSET), color, TextFormatFlags.LeftAndRightPadding);
                x += TextRenderer.MeasureText(g, text, font).Width;
                //y += 3;
            };


            Action <Image, int, int> drawImage = (image, w, h) =>
            {
                g.DrawImage(image, x, y, (int)w, (int)h);
                x += (int)(w + 3);
            };

            using (var boldFont = new Font(font, FontStyle.Bold)) TextRenderer.DrawText(g, user.Name, boldFont, new Point(x, y), Config.TextColor, TextFormatFlags.LeftAndRightPadding);
            y += 3;
            newLine();

            if (!user.IsBot)
            {
                var clan = ServerImagesHandler.GetClanOrFactionImage(user);
                if (clan.Item1 != null)
                {
                    drawImage(clan.Item1, 16, 16);
                    drawString2(clan.Item2, Utils.GetFactionColor(user.Faction));
                    newLine();
                }
            }

            Image flag;

            if (Images.CountryFlags.TryGetValue(user.Country, out flag) && flag != null)
            {
                //drawString("Country: ");
                y += 2;
                drawImage(flag, flag.Width, flag.Height);
                y -= 2;
                drawString(CountryNames.GetName(user.Country));
                newLine();
            }
            if (user.IsBot)
            {
                drawImage(ZklResources.robot, 16, 16);
                drawString("Bot");
                newLine();
            }
            if (user.Name == Program.TasClient.MyBattle?.FounderName)
            {
                drawImage(ZklResources.self_police, 16, 16);
                drawString("Battle founder");
                newLine();
            }
            if (user.IsAdmin)
            {
                drawImage(ZklResources.police, 16, 16);
                drawString("Administrator");
                newLine();
            }
            if (Program.TasClient.Friends.Contains(user.Name))
            {
                drawImage(ZklResources.friend, 16, 16);
                drawString("Friend");
                newLine();
            }
            if (user.SteamID != null)
            {
                drawImage(ZklResources.steam, 16, 16);
                drawString(string.Format("Steam name: {0}", user.DisplayName ?? user.Name));
                newLine();
            }
            if (!user.IsBot)
            {
                drawImage(Images.GetRank(user.Level, user.EffectiveMmElo), 16, 16);
                drawString(string.Format("Level: {0}", user.Level));
                newLine();
                if (user.AwaySince.HasValue)
                {
                    drawImage(ZklResources.away, 16, 16);
                    drawString("User idle for " + DateTime.UtcNow.Subtract(user.AwaySince.Value).PrintTimeRemaining() + ".");
                    newLine();
                }
                if (user.IsInGame)
                {
                    drawImage(Buttons.fight, 16, 16);
                    if (user.InGameSince != null)
                    {
                        var time = DateTime.UtcNow.Subtract(user.InGameSince.Value).PrintTimeRemaining();
                        drawString("Playing since " + time + " ago.");
                    }
                    newLine();
                }
                if (!string.IsNullOrEmpty(user.Avatar))
                {
                    var image = Program.ServerImages.GetAvatarImage(user);
                    if (image != null)
                    {
                        g.DrawImage(image, (int)(302 - 65), 0, (int)64, (int)64);
                    }
                }
            }
            if (user.IsInBattleRoom)
            {
                if (y < 70)
                {
                    y = 70;
                }
                if (user.IsInBattleRoom)
                {
                    var battleIcon = Program.BattleIconManager.GetBattleIcon(user.BattleID ?? 0);
                    if (battleIcon != null)
                    {
                        g.DrawImageUnscaled(battleIcon.Image, x, y);
                    }
                }
            }
            fbrush.Dispose();
        }
Esempio n. 2
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();
        }
Esempio n. 3
0
        public void Draw(Graphics g, Font font, Color foreColor)
        {
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            User user;

            if (!Program.TasClient.ExistingUsers.TryGetValue(userName, out user))
            {
                return;
            }
            DpiMeasurement.DpiXYMeasurement();
            var    x       = DpiMeasurement.ScaleValueX(1);
            var    y       = 0;
            Action newLine = () =>
            {
                x  = DpiMeasurement.ScaleValueX(1);
                y += DpiMeasurement.ScaleValueY(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);     //Note: TextRenderer measurement already DPI aware
            };

            Action <string, Color> drawString2 = (text, color) =>
            {
                TextRenderer.DrawText(g, text, font, new Point(x, y), color);
                x += (int)Math.Ceiling((double)TextRenderer.MeasureText(g, text, font).Width); //Note: TextRenderer measurement already DPI aware
            };


            Action <Image, int, int> drawImage = (image, w, h) =>
            {
                g.DrawImage(image, x, y, DpiMeasurement.ScaleValueX(w), DpiMeasurement.ScaleValueY(h));
                x += DpiMeasurement.ScaleValueX(w + 3);
            };

            using (var boldFont = new Font(font, FontStyle.Bold)) TextRenderer.DrawText(g, user.Name, boldFont, new Point(x, y), foreColor);

            newLine();

            if (!user.IsBot)
            {
                var clan = ServerImagesHandler.GetClanOrFactionImage(user);
                if (clan.Item1 != null)
                {
                    drawImage(clan.Item1, 16, 16);
                    drawString2(clan.Item2, Utils.GetFactionColor(user.Faction));
                    newLine();
                }
            }

            Image flag;

            if (Images.CountryFlags.TryGetValue(user.Country, out flag) && flag != null)
            {
                drawString("Country: ");
                drawImage(flag, flag.Width, flag.Height);
                drawString(user.CountryName);
                newLine();
            }
            if (user.IsBot)
            {
                drawImage(ZklResources.robot, 16, 16);
                drawString("Bot");
                newLine();
            }
            if (user.IsAdmin || user.IsZeroKAdmin)
            {
                drawImage(ZklResources.police, 16, 16);
                drawString("Administrator");
                newLine();
            }
            if (Program.FriendManager.Friends.Contains(user.Name))
            {
                drawImage(ZklResources.friend, 16, 16);
                drawString("Friend");
                newLine();
            }
            if (user.IsZkLobbyUser)
            {
                drawImage(ZklResources.ZK_logo_square, 16, 16);
                drawString(string.Format("ZK lobby user ({0})", user.IsZkLinuxUser ? "Linux" : "Windows"));
                newLine();
            }
            if (!user.IsBot)
            {
                drawImage(Images.GetRank(user.Level), 16, 16);
                drawString(string.Format("Level: {0}", user.Level));
                newLine();
                if (user.IsAway)
                {
                    drawImage(ZklResources.away, 16, 16);
                    drawString("User has been idle for " + DateTime.Now.Subtract(user.AwaySince.Value).PrintTimeRemaining() + ".");
                    newLine();
                }
                if (user.IsInGame)
                {
                    drawImage(ZklResources.ingame, 16, 16);
                    var time = DateTime.Now.Subtract(user.InGameSince.Value).PrintTimeRemaining();
                    drawString("Playing since " + time + " ago.");
                    newLine();
                }
                var top10 = Program.SpringieServer.GetTop10Rank(user.Name);
                if (top10 > 0)
                {
                    drawImage(ZklResources.cup, 16, 16);
                    drawString(string.Format("Top 10 Rank: {0}.", top10));
                    newLine();
                }
                if (!string.IsNullOrEmpty(user.Avatar))
                {
                    var image = Program.ServerImages.GetAvatarImage(user);
                    if (image != null)
                    {
                        g.DrawImage(image, DpiMeasurement.ScaleValueX(302 - 65), 0, DpiMeasurement.ScaleValueX(64), DpiMeasurement.ScaleValueY(64));
                    }
                }
            }
            if (user.IsInBattleRoom)
            {
                var battle     = Program.TasClient.ExistingBattles.Values.SingleOrDefault(b => b.Users.Any(ub => ub.Name == user.Name));
                var battleIcon = Program.BattleIconManager.GetBattleIcon(battle.BattleID);
                if (battleIcon != null)
                {
                    g.DrawImageUnscaled(battleIcon.Image, x, y);
                }
            }
        }
Esempio n. 4
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();
                }
            }
        }