Example #1
0
        private static void Drawing_OnDraw(EventArgs args)
        {
            if (!Game.IsInGame || !Menu.Item("hotkey").GetValue <KeyBind>().Active)
            {
                return;
            }

            var hero = ObjectMgr.LocalHero;

            if (hero == null)
            {
                return;
            }

            var heroes =
                ObjectMgr.GetEntities <Hero>()
                .Where(x => !x.IsIllusion && x.IsVisible && x.IsAlive && !x.Equals(hero))
                .ToList();

            if (!Menu.Item("ally").GetValue <bool>())
            {
                heroes = heroes.Where(x => x.Team == hero.GetEnemyTeam()).ToList();
            }

            var ratio = HUDInfo.RatioPercentage() +
                        (HUDInfo.RatioPercentage() * ((float)Menu.Item("size").GetValue <Slider>().Value / 10));

            var posX = Menu.Item("posX").GetValue <Slider>().Value;
            var posY = Menu.Item("posY").GetValue <Slider>().Value;

            foreach (var unit in heroes)
            {
                var screenPosition = HUDInfo.GetHPbarPosition(unit);
                if (screenPosition.IsZero)
                {
                    continue;
                }

                var diff = unit.MovementSpeed - hero.MovementSpeed;

                Drawing.DrawRect(screenPosition + new Vector2(posX, posY), new Vector2(45 * ratio, 25 * ratio),
                                 new Color(0, 100, 100, 255));

                Drawing.DrawText(diff > 0 ? "+" + diff : diff.ToString(), "Arial",
                                 screenPosition + new Vector2(posX + 5 * ratio, posY + 4 * ratio),
                                 new Vector2(20 * ratio, 0), diff > 0 ? Color.Orange : Color.Yellow,
                                 FontFlags.AntiAlias | FontFlags.DropShadow);
            }
        }
Example #2
0
        public static void Init()
        {
            var percent = HUDInfo.RatioPercentage();

            ScreenSize = new Vector2(Drawing.Width, Drawing.Height);
            var Resolution = (ScreenSize.X + "x" + ScreenSize.Y);

            //1920x1080 (16:9)
            if (Resolution == 1920 + "x" + 1080)
            {
                MessageCreator.msgX           = 256;
                MessageCreator.msgY           = 128;
                MessageCreator.sizeheroX      = 97;
                MessageCreator.sizeheroYspell = 55;
                MessageCreator.sizeitemX      = 113;
                MessageCreator.herospellY     = 62;
                MessageCreator.heroallyX      = 152;
                MessageCreator.heroX          = 9;
                MessageCreator.spellX         = 193;
                MessageCreator.itemX          = 170;
            }

            //1768x992 (16:9)
            else if (Resolution == 1768 + "x" + 992)
            {
                MessageCreator.msgX           = 248;
                MessageCreator.msgY           = 120;
                MessageCreator.sizeheroX      = 97;
                MessageCreator.sizeheroYspell = 55;
                MessageCreator.sizeitemX      = 113;
                MessageCreator.herospellY     = 56;
                MessageCreator.heroallyX      = 145;
                MessageCreator.heroX          = 9;
                MessageCreator.spellX         = 186;
                MessageCreator.itemX          = 165;
            }

            //1600x900 (16:9)
            else if (Resolution == 1600 + "x" + 900)
            {
                MessageCreator.msgX           = 235;
                MessageCreator.msgY           = 110;
                MessageCreator.sizeheroX      = 88;
                MessageCreator.sizeheroYspell = 50;
                MessageCreator.sizeitemX      = 100;
                MessageCreator.herospellY     = 52;
                MessageCreator.heroallyX      = 140;
                MessageCreator.heroX          = 8;
                MessageCreator.spellX         = 177;
                MessageCreator.itemX          = 157;
            }

            //1360x768 (16:9)
            else if (Resolution == 1360 + "x" + 768)
            {
                MessageCreator.msgX           = 195;
                MessageCreator.msgY           = 95;
                MessageCreator.sizeheroX      = 68;
                MessageCreator.sizeheroYspell = 42;
                MessageCreator.sizeitemX      = 85;
                MessageCreator.herospellY     = 46;
                MessageCreator.heroallyX      = 121;
                MessageCreator.heroX          = 7;
                MessageCreator.spellX         = 146;
                MessageCreator.itemX          = 130;
            }
            //1366x768 (16:9)
            else if (Resolution == 1366 + "x" + 768)
            {
                MessageCreator.msgX           = 195;
                MessageCreator.msgY           = 95;
                MessageCreator.sizeheroX      = 68;
                MessageCreator.sizeheroYspell = 42;
                MessageCreator.sizeitemX      = 85;
                MessageCreator.herospellY     = 46;
                MessageCreator.heroallyX      = 121;
                MessageCreator.heroX          = 7;
                MessageCreator.spellX         = 146;
                MessageCreator.itemX          = 130;
            }

            //1280x720 (16:9)
            else if (Resolution == 1280 + "x" + 720)
            {
                MessageCreator.msgX           = 190;
                MessageCreator.msgY           = 90;
                MessageCreator.sizeheroX      = 64;
                MessageCreator.sizeheroYspell = 39;
                MessageCreator.sizeitemX      = 80;
                MessageCreator.herospellY     = 44;
                MessageCreator.heroallyX      = 121;
                MessageCreator.heroX          = 6;
                MessageCreator.spellX         = 146;
                MessageCreator.itemX          = 130;
            }

            //1680x1050 (16:10)
            else if (Resolution == 1680 + "x" + 1050)
            {
                MessageCreator.msgX           = 256;
                MessageCreator.msgY           = 128;
                MessageCreator.sizeheroX      = 97;
                MessageCreator.sizeheroYspell = 55;
                MessageCreator.sizeitemX      = 113;
                MessageCreator.herospellY     = 62;
                MessageCreator.heroallyX      = 152;
                MessageCreator.heroX          = 9;
                MessageCreator.spellX         = 193;
                MessageCreator.itemX          = 170;
            }

            //1600x1024 (16:10)
            else if (Resolution == 1600 + "x" + 1024)
            {
                MessageCreator.msgX           = 256;
                MessageCreator.msgY           = 128;
                MessageCreator.sizeheroX      = 92;
                MessageCreator.sizeheroYspell = 55;
                MessageCreator.sizeitemX      = 110;
                MessageCreator.herospellY     = 62;
                MessageCreator.heroallyX      = 152;
                MessageCreator.heroX          = 9;
                MessageCreator.spellX         = 190;
                MessageCreator.itemX          = 170;
            }

            //1440x960 (16:10)
            else if (Resolution == 1440 + "x" + 960)
            {
                MessageCreator.msgX           = 220;
                MessageCreator.msgY           = 110;
                MessageCreator.sizeheroX      = 73;
                MessageCreator.sizeheroYspell = 48;
                MessageCreator.sizeitemX      = 92;
                MessageCreator.herospellY     = 53;
                MessageCreator.heroallyX      = 141;
                MessageCreator.heroX          = 8;
                MessageCreator.spellX         = 166;
                MessageCreator.itemX          = 150;
            }

            //1440x900 (16:10)
            else if (Resolution == 1440 + "x" + 900)
            {
                MessageCreator.msgX           = 220;
                MessageCreator.msgY           = 110;
                MessageCreator.sizeheroX      = 73;
                MessageCreator.sizeheroYspell = 48;
                MessageCreator.sizeitemX      = 92;
                MessageCreator.herospellY     = 53;
                MessageCreator.heroallyX      = 141;
                MessageCreator.heroX          = 8;
                MessageCreator.spellX         = 166;
                MessageCreator.itemX          = 150;
            }

            //1280x800 (16:10)
            else if (Resolution == 1280 + "x" + 800)
            {
                MessageCreator.msgX           = 195;
                MessageCreator.msgY           = 110;
                MessageCreator.sizeheroX      = 70;
                MessageCreator.sizeheroYspell = 48;
                MessageCreator.sizeitemX      = 88;
                MessageCreator.herospellY     = 53;
                MessageCreator.heroallyX      = 120;
                MessageCreator.heroX          = 7;
                MessageCreator.spellX         = 142;
                MessageCreator.itemX          = 130;
            }

            //1280x768 (16:10)
            else if (Resolution == 1280 + "x" + 768)
            {
                MessageCreator.msgX           = 195;
                MessageCreator.msgY           = 110;
                MessageCreator.sizeheroX      = 70;
                MessageCreator.sizeheroYspell = 48;
                MessageCreator.sizeitemX      = 88;
                MessageCreator.herospellY     = 53;
                MessageCreator.heroallyX      = 120;
                MessageCreator.heroX          = 7;
                MessageCreator.spellX         = 142;
                MessageCreator.itemX          = 130;
            }

            //1280x1024 (4:3)
            else if (Resolution == 1280 + "x" + 1024)
            {
                MessageCreator.msgX           = 228;
                MessageCreator.msgY           = 110;
                MessageCreator.sizeheroX      = 75;
                MessageCreator.sizeheroYspell = 48;
                MessageCreator.sizeitemX      = 92;
                MessageCreator.herospellY     = 53;
                MessageCreator.heroallyX      = 146;
                MessageCreator.heroX          = 8;
                MessageCreator.spellX         = 174;
                MessageCreator.itemX          = 159;
            }

            //1280x960 (4:3)
            else if (Resolution == 1280 + "x" + 960)
            {
                MessageCreator.msgX           = 228;
                MessageCreator.msgY           = 110;
                MessageCreator.sizeheroX      = 75;
                MessageCreator.sizeheroYspell = 48;
                MessageCreator.sizeitemX      = 92;
                MessageCreator.herospellY     = 53;
                MessageCreator.heroallyX      = 146;
                MessageCreator.heroX          = 8;
                MessageCreator.spellX         = 174;
                MessageCreator.itemX          = 159;
            }
            else
            {
                Console.WriteLine(@"Your screen resolution is not supported and drawings might have wrong size (" + Resolution + ")");
                MessageCreator.msgX           = 256;
                MessageCreator.msgY           = 128;
                MessageCreator.sizeheroX      = 97;
                MessageCreator.sizeheroYspell = 55;
                MessageCreator.sizeitemX      = 113;
                MessageCreator.herospellY     = 62;
                MessageCreator.heroallyX      = 152;
                MessageCreator.heroX          = 9;
                MessageCreator.spellX         = 193;
                MessageCreator.itemX          = 170;
            }
        }
Example #3
0
        public void OnDraw()
        {
            if (!menuManager.IsOpen || !menuManager.ShowAutoBuild)
            {
                return;
            }

            var build           = abilityBuilder.GetBestBuild().ToList();
            var uniqueAbilities = build.GroupBy(x => x)
                                  .Select(x => x.First())
                                  .OrderBy(x => x.AbilitySlot)
                                  .Select(x => x.StoredName())
                                  .ToList();

            var ratio  = HUDInfo.RatioPercentage();
            var xStart = HUDInfo.ScreenSizeX() * 0.35f;
            var yStart = HUDInfo.ScreenSizeY() * 0.55f;

            var text = "Auto build preview (Win rate: " + abilityBuilder.BestBuildWinRate + ")";

            Drawing.DrawRect(
                new Vector2(xStart - 2, yStart - (35 * ratio)),
                new Vector2(Drawing.MeasureText(text, "Arial", new Vector2(35 * ratio), FontFlags.None).X + 2, 35 * ratio),
                new Color(75, 75, 75, 175),
                false);
            Drawing.DrawRect(
                new Vector2(xStart - 2, yStart),
                new Vector2(((build.Count + 1) * 48 * ratio) + 2, uniqueAbilities.Count * 40 * ratio),
                new Color(75, 75, 75, 175),
                false);
            Drawing.DrawText(
                text,
                "Arial",
                new Vector2(xStart, yStart - (35 * ratio)),
                new Vector2(35 * ratio),
                Color.Orange,
                FontFlags.None);

            var positions = new Dictionary <string, float>();

            for (var i = 0; i < uniqueAbilities.Count; i++)
            {
                var texture = uniqueAbilities[i].Contains("special_")
                                  ? Drawing.GetTexture("materials/ensage_ui/other/chat_wheel/arrow_1")
                                  : Drawing.GetTexture("materials/ensage_ui/spellicons/" + uniqueAbilities[i]);

                Drawing.DrawRect(new Vector2(xStart, yStart + (i * 40 * ratio)), new Vector2(45 * ratio, 40 * ratio), texture);
                positions.Add(uniqueAbilities[i], yStart + (i * 40 * ratio));
                Drawing.DrawRect(
                    new Vector2(xStart - 2, (yStart - 2) + (i * 40 * ratio)),
                    new Vector2((build.Count + 1) * 48 * ratio, 2),
                    Color.Silver);
            }

            Drawing.DrawRect(
                new Vector2(xStart - 2, (yStart - 2) + (uniqueAbilities.Count * 40 * ratio)),
                new Vector2((build.Count + 1) * 48 * ratio, 2),
                Color.Silver);

            for (var i = 0; i < build.Count; i++)
            {
                var number = i + 1;

                if (number >= 10)
                {
                    //skip level 10 (talent)
                    number++;
                }
                if (number >= 15)
                {
                    //skip level 15 (talent)
                    number++;
                }
                if (number >= 17)
                {
                    //skip level 17 (empty)
                    number++;
                }

                var size = Drawing.MeasureText(number.ToString(), "Arial", new Vector2(35 * ratio), FontFlags.None);
                Drawing.DrawText(
                    number.ToString(),
                    "Arial",
                    new Vector2(xStart + (45 * ratio) + (i * 48 * ratio) + (((48 * ratio) - size.X) / 2), positions[build[i].StoredName()]),
                    new Vector2(35 * ratio),
                    Color.White,
                    FontFlags.None);
                Drawing.DrawRect(
                    new Vector2((xStart - 2) + (i * 48 * ratio), yStart - 2),
                    new Vector2(2, uniqueAbilities.Count * 40 * ratio),
                    Color.Silver);
            }

            Drawing.DrawRect(
                new Vector2((xStart - 2) + (build.Count * 48 * ratio), yStart - 2),
                new Vector2(2, uniqueAbilities.Count * 40 * ratio),
                Color.Silver);
            Drawing.DrawRect(
                new Vector2((xStart - 2) + ((build.Count + 1) * 48 * ratio), yStart - 2),
                new Vector2(2, (uniqueAbilities.Count * 40 * ratio) + 2),
                Color.Silver);
        }
Example #4
0
        private static void Drawing_OnDraw(EventArgs args)
        {
            var me = ObjectMgr.LocalHero;

            if (!_loaded)
            {
                if (!Game.IsInGame || me == null)
                {
                    return;
                }
                _loaded = true;
                PrintSuccess("> ShowEnemyItems loaded!");
                Game.PrintMessage(
                    "<font face='Comic Sans MS, cursive'><font color='#00aaff'>" +
                    "ShowEnemyItems loaded!</font>", MessageType.LogMessage);
            }

            if (!Game.IsInGame || me == null)
            {
                _loaded = false;
                PrintInfo("> ShowEnemyItems unLoaded");
                return;
            }
            if (!Menu.Item("show").GetValue <bool>())
            {
                return;
            }
            var percent = HUDInfo.RatioPercentage();

            for (uint i = 0; i < 10; i++)
            {
                #region Init

                Hero v;
                try
                {
                    v = ObjectMgr.GetPlayerById(i).Hero;
                }
                catch
                {
                    continue;
                }
                if (v == null)
                {
                    continue;
                }
                if (!v.IsValid)
                {
                    continue;
                }
                #endregion

                Vector2 pos;
                if (v.IsVisible && v.IsAlive && Drawing.WorldToScreen(v.Position, out pos))
                {
                    if (Menu.Item("checkforteam").GetValue <bool>())
                    {
                        if (v.Team == me.Team)
                        {
                            continue;
                        }
                    }
                    var   invetory = v.Inventory.Items;
                    var   iPos     = HUDInfo.GetHPbarPosition(v);
                    var   iSize    = new Vector2(HUDInfo.GetHPBarSizeX(v), HUDInfo.GetHpBarSizeY(v));
                    float yPos     = 0;
                    float count    = 0;
                    var   n        = 0;
                    var   botrange = iSize.X / 4;
                    var   coef     = Menu.Item("sizer").GetValue <Slider>().Value;
                    Drawing.DrawRect(iPos + new Vector2(0, -iSize.Y - iSize.X / 3),
                                     new Vector2(iSize.X / 2 * coef, (float)(iSize.Y * 3.5) * coef),
                                     GetTexture("materials/ensage_ui/heroes_horizontal/" + v.Name.Replace("npc_dota_hero_", "") +
                                                ".vmat"));
                    #region Items
                    foreach (var item in invetory)
                    {
                        n++;
                        var itemname = string.Format("materials/ensage_ui/items/{0}.vmat",
                                                     item.Name.Replace("item_", ""));
                        if (item is Bottle)
                        {
                            var bottletype = item as Bottle;
                            if (bottletype.StoredRune != RuneType.None)
                            {
                                itemname = string.Format("materials/ensage_ui/items/{0}.vmat",
                                                         item.Name.Replace("item_", "") + "_" + bottletype.StoredRune);
                                //Game.PrintMessage(itemname, MessageType.LogMessage);
                            }
                        }

                        Drawing.DrawRect(iPos + new Vector2(count, botrange + yPos),
                                         new Vector2(iSize.X / 3 * coef, (float)(iSize.Y * 2.5) * coef),
                                         GetTexture(itemname));

                        if (item.AbilityState == AbilityState.OnCooldown)
                        {
                            Drawing.DrawRect(iPos + new Vector2(count, botrange + yPos),
                                             new Vector2((iSize.X / 4) * coef,
                                                         item.Cooldown / item.CooldownLength *
                                                         ((float)(iSize.Y * 2.5) * coef)),
                                             new Color(255, 255, 255, Menu.Item("slider").GetValue <Slider>().Value));
                        }
                        if (item.AbilityState == AbilityState.NotEnoughMana)
                        {
                            Drawing.DrawRect(iPos + new Vector2(count, botrange + yPos),
                                             new Vector2((iSize.X / 5) * coef, (float)(iSize.Y * 2.5) * coef),
                                             new Color(0, 0, 200, Menu.Item("slider").GetValue <Slider>().Value));
                        }
                        count += iSize.X / 4 * coef;
                        if (n != 3)
                        {
                            continue;
                        }
                        count = 0;
                        yPos  = (int)((iSize.Y * 2.5) * coef);
                    }

                    #endregion

                    #region Spells
                    //Game.PrintMessage(percent.ToString(),MessageType.ChatMessage);
                    var start = new Vector2(iPos.X, iPos.Y + 120 * percent) + new Vector2(0, yPos);


                    var g = -1;
                    var distBetweenSpells = Menu.Item("distBetweenSpells").GetValue <Slider>().Value;
                    var DistBwtweenLvls   = Menu.Item("DistBwtweenLvls").GetValue <Slider>().Value;
                    var SizeSpell         = Menu.Item("SizeSpell").GetValue <Slider>().Value;
                    var size  = distBetweenSpells; //(iSize.X / 3);
                    var sizey = 9;

                    foreach (var spell in v.Spellbook.Spells.Where(x => x.AbilityType != AbilityType.Attribute))
                    {
                        g++;
                        var cd = spell.Cooldown;
                        Drawing.DrawRect(start + new Vector2((g * size), 0), new Vector2(size, spell.AbilityState != AbilityState.OnCooldown ? sizey : 22),
                                         new ColorBGRA(0, 0, 0, 100));
                        Drawing.DrawRect(start + new Vector2((g * size), 0), new Vector2(size, spell.AbilityState != AbilityState.OnCooldown ? sizey : 22),
                                         new ColorBGRA(255, 255, 255, 100), true);
                        if (spell.AbilityState == AbilityState.NotEnoughMana)
                        {
                            Drawing.DrawRect(start + new Vector2((g * size), 0),
                                             new Vector2(size, spell.AbilityState != AbilityState.OnCooldown ? sizey : 22),
                                             new ColorBGRA(0, 0, 150, 150));
                        }
                        if (spell.AbilityState == AbilityState.OnCooldown)
                        {
                            var text     = string.Format("{0:0.#}", cd);
                            var textSize = Drawing.MeasureText(text, "Arial", new Vector2(10, 200),
                                                               FontFlags.None);
                            var textPos = (start + new Vector2(g * size, 0) +
                                           new Vector2(10 - textSize.X / 2, -textSize.Y / 2 + 12));
                            Drawing.DrawText(text, textPos, /*new Vector2(10, 150),*/ Color.White,
                                             FontFlags.AntiAlias | FontFlags.DropShadow);
                        }
                        if (spell.Level == 0)
                        {
                            continue;
                        }
                        for (var lvl = 1; lvl <= spell.Level; lvl++)
                        {
                            Drawing.DrawRect(start + new Vector2((g * (size) + (/*4+*/ DistBwtweenLvls) * lvl), sizey - 6), new Vector2(SizeSpell, sizey - 6),
                                             new ColorBGRA(255, 255, 0, 255));
                        }
                    }

                    #endregion
                }
            }
        }
Example #5
0
        private static void Drawing_OnDraw(EventArgs args)
        {
            var me = ObjectMgr.LocalHero;

            if (me == null || !me.IsValid)
            {
                return;
            }
            if (Game.IsPaused || !Game.IsInGame || !_loaded || !Menu.Item("showPanel").GetValue <bool>())
            {
                return;
            }
            if (Menu.Item("moveHotkey").GetValue <KeyBind>().Active)
            {
                Menu.Item("posX").SetValue(new Slider((int)Game.MouseScreenPosition.X, -2000, 2000));
                Menu.Item("posY").SetValue(new Slider((int)Game.MouseScreenPosition.Y, -2000, 2000));
            }
            var percent = HUDInfo.RatioPercentage();
            var pos     = new Vector2(Menu.Item("posX").GetValue <Slider>().Value, Menu.Item("posY").GetValue <Slider>().Value);
            var size    = new Vector2(200 * percent, 300 * percent);

            Drawing.DrawRect(pos, size, new Color(0, 0, 0, 100));
            Drawing.DrawRect(pos, size, new Color(0, 155, 255, 255), true);
            Drawing.DrawLine(pos + new Vector2(0, size.Y / 7), pos + new Vector2(size.X, size.Y / 7), new Color(0, 155, 255, 255));
            Drawing.DrawText("Techies Annihilation", pos + new Vector2(10, 10), new Vector2(20 * percent, 0), Color.LightBlue, FontFlags.AntiAlias | FontFlags.DropShadow);
            Drawing.DrawText("v " + Ver, pos + new Vector2(10, size.Y / 9), new Vector2(10 * percent, 0), Color.LightBlue, FontFlags.AntiAlias | FontFlags.DropShadow);
            var spellPos  = pos + new Vector2(size.X / 5 + 25, size.Y / 7 + 10);
            var spellSize = new Vector2(size.X / 8, size.Y / 12);

            Drawing.DrawRect(spellPos, spellSize, new Color(0, 0, 0, 155));
            Drawing.DrawRect(spellPos + new Vector2(spellSize.X + 20 * percent, 0), spellSize, new Color(0, 0, 0, 155));
            Drawing.DrawRect(spellPos + new Vector2(spellSize.X * 2 + 40 * percent, 0), spellSize, new Color(0, 0, 0, 155));
            Drawing.DrawRect(spellPos, spellSize, Drawing.GetTexture("materials/ensage_ui/other/npc_dota_techies_land_mine" + ".vmat"));
            Drawing.DrawRect(spellPos + new Vector2(spellSize.X + 20 * percent, 0), spellSize, Drawing.GetTexture("materials/ensage_ui/spellicons/techies_suicide" + ".vmat"));
            Drawing.DrawRect(spellPos + new Vector2(spellSize.X * 2 + 40 * percent, 0), spellSize, Drawing.GetTexture("materials/ensage_ui/other/npc_dota_techies_remote_mine" + ".vmat"));
            var i = 0;

            foreach (var v in from hero in PlayersDictionary select hero.Value into v where v != null where v.IsValid where v.Team != me.Team select v)
            {
                i++;
                var start = HUDInfo.GetHPbarPosition(v) + new Vector2(0, (float)(-HUDInfo.GetHpBarSizeY() * 1.5));

                if (v.IsAlive)
                {
                    if (Menu.Item("showDmgFromUlt").GetValue <bool>())
                    {
                        float minesDmg;
                        var   dmgAfterUlt = string.Format("{0}",
                                                          GlobalHealthAfterMines.TryGetValue(v, out minesDmg) ? (object)(int)minesDmg : "-");
                        Drawing.DrawText(dmgAfterUlt, start + new Vector2(-10, 0),
                                         new Vector2(Menu.Item("fontSize").GetValue <Slider>().Value, 0), Color.White,
                                         FontFlags.AntiAlias | FontFlags.DropShadow);
                    }
                    if (Menu.Item("showDmgFromSuic").GetValue <bool>())
                    {
                        float suicide;
                        var   dmgAfterSuic = string.Format("{0}",
                                                           GlobalHealthAfterSuicide.TryGetValue(v, out suicide) ? (object)(int)suicide : "-");
                        Drawing.DrawText(dmgAfterSuic, start + new Vector2(HUDInfo.GetHPBarSizeX(), 0),
                                         new Vector2(Menu.Item("fontSize").GetValue <Slider>().Value, 0), Color.White,
                                         FontFlags.AntiAlias | FontFlags.DropShadow);
                    }
                }
                Drawing.DrawRect(pos + new Vector2(10, size.Y / 7 + 10 + i * (size.Y / 10 + 5) * percent),
                                 new Vector2(size.X / 5, size.Y / 10),
                                 Drawing.GetTexture("materials/ensage_ui/heroes_horizontal/" +
                                                    v.Name.Substring("npc_dota_hero_".Length) + ".vmat"));
                Drawing.DrawRect(pos + new Vector2(10, size.Y / 7 + 10 + i * (size.Y / 10 + 5) * percent),
                                 new Vector2(size.X / 5, size.Y / 10), new Color(0, 0, 0, 255), true);

                var ultDmg =
                    string.Format("{0}/{1}",
                                  !v.IsAlive
                            ? 0
                            : Math.Abs(_currentBombDamage) <= 0 ? 0 : GetCount(v, v.Health, _currentBombDamage, me),
                                  Math.Abs(_currentBombDamage) <= 0
                            ? 0
                            : GetCount(v, v.MaximumHealth, _currentBombDamage, me));
                Drawing.DrawText(ultDmg,
                                 new Vector2(spellPos.X + spellSize.X * 2 + 40 * percent,
                                             pos.Y + size.Y / 7 + 10 + i * (size.Y / 10 + 5) * percent), new Vector2(20 * percent, 0), Color.LightBlue,
                                 FontFlags.AntiAlias | FontFlags.DropShadow);
                var dummy = false;
                CanKillSuic(v, ref dummy, me);
                Drawing.DrawText(dummy ? "[+]" : "[-]",
                                 new Vector2(spellPos.X + spellSize.X * 1 + 20 * percent,
                                             pos.Y + size.Y / 7 + 10 + i * (size.Y / 10 + 5) * percent), new Vector2(20 * percent, 0), Color.LightBlue,
                                 FontFlags.AntiAlias | FontFlags.DropShadow);

                Drawing.DrawText("-",
                                 new Vector2(spellPos.X + 10 * percent,
                                             pos.Y + size.Y / 7 + 10 + i * (size.Y / 10 + 5) * percent), new Vector2(20 * percent, 0), Color.LightBlue,
                                 FontFlags.AntiAlias | FontFlags.DropShadow);
            }
        }
Example #6
0
        public void OnDraw()
        {
            if (!menuManager.IsOpen)
            {
                return;
            }

            var build           = abilitylBuilder.GetBestBuild().ToList();
            var uniqueAbilities =
                build.GroupBy(x => x)
                .Select(x => x.First())
                .OrderBy(x => x.AbilitySlot)
                .Select(x => x.StoredName())
                .ToList();

            var ratio  = HUDInfo.RatioPercentage();
            var xStart = HUDInfo.ScreenSizeX() * 0.35f;
            var yStart = HUDInfo.ScreenSizeY() * 0.55f;

            var text = "Auto build preview (Win rate: " + abilitylBuilder.BestBuildWinRate + ")";

            Drawing.DrawRect(
                new Vector2(xStart - 2, yStart - 35 * ratio),
                new Vector2(
                    Drawing.MeasureText(text, "Arial", new Vector2(35 * ratio), FontFlags.None).X + 2,
                    35 * ratio),
                new Color(75, 75, 75, 175),
                false);
            Drawing.DrawRect(
                new Vector2(xStart - 2, yStart),
                new Vector2((build.Count + 1) * 48 * ratio + 2, uniqueAbilities.Count * 40 * ratio),
                new Color(75, 75, 75, 175),
                false);
            Drawing.DrawText(
                text,
                "Arial",
                new Vector2(xStart, yStart - 35 * ratio),
                new Vector2(35 * ratio),
                Color.Orange,
                FontFlags.None);

            var positions = new Dictionary <string, float>();

            for (var i = 0; i < uniqueAbilities.Count; i++)
            {
                Drawing.DrawRect(
                    new Vector2(xStart, yStart + i * 40 * ratio),
                    new Vector2(45 * ratio, 40 * ratio),
                    Textures.GetSpellTexture(uniqueAbilities[i]));
                positions.Add(uniqueAbilities[i], xStart + i * 40 * ratio - 63 * ratio);
                Drawing.DrawRect(
                    new Vector2(xStart - 2, yStart - 2 + i * 40 * ratio),
                    new Vector2((build.Count + 1) * 48 * ratio, 2),
                    Color.Silver);
            }

            Drawing.DrawRect(
                new Vector2(xStart - 2, yStart - 2 + uniqueAbilities.Count * 40 * ratio),
                new Vector2((build.Count + 1) * 48 * ratio, 2),
                Color.Silver);

            for (var i = 0; i < build.Count; i++)
            {
                var number = (i + 1).ToString();
                var size   = Drawing.MeasureText(number, "Arial", new Vector2(35 * ratio), FontFlags.None);
                Drawing.DrawText(
                    number,
                    "Arial",
                    new Vector2(
                        xStart + 45 * ratio + i * 48 * ratio + (48 * ratio - size.X) / 2,
                        positions[build[i].StoredName()]),
                    new Vector2(35 * ratio),
                    Color.White,
                    FontFlags.None);
                Drawing.DrawRect(
                    new Vector2(xStart - 2 + i * 48 * ratio, yStart - 2),
                    new Vector2(2, uniqueAbilities.Count * 40 * ratio),
                    Color.Silver);
            }

            Drawing.DrawRect(
                new Vector2(xStart - 2 + build.Count * 48 * ratio, yStart - 2),
                new Vector2(2, uniqueAbilities.Count * 40 * ratio),
                Color.Silver);
            Drawing.DrawRect(
                new Vector2(xStart - 2 + (build.Count + 1) * 48 * ratio, yStart - 2),
                new Vector2(2, uniqueAbilities.Count * 40 * ratio + 2),
                Color.Silver);
        }