Esempio n. 1
0
        public void Draw(Rectangle9 position, float cooldownSize)
        {
            try
            {
                RendererManager.DrawTexture(this.Ability.TextureName, position, TextureType.Ability);

                if (this.Ability.IsCasting || this.Ability.IsChanneling)
                {
                    RendererManager.DrawRectangle(position - 3f, Color.LightGreen, 3);
                }
                else
                {
                    RendererManager.DrawRectangle(position - 1, Color.Black);
                }

                if (this.displayLevel)
                {
                    var level = this.Ability.Level;
                    if (level == 0)
                    {
                        RendererManager.DrawTexture("o9k.ability_0lvl_bg", position);
                        return;
                    }

                    var levelText     = level.ToString("N0");
                    var levelSize     = RendererManager.MeasureText(levelText, position.Width * 0.45f);
                    var levelPosition = position.SinkToBottomLeft(levelSize.X, levelSize.Y * 0.8f);

                    RendererManager.DrawTexture("o9k.ability_lvl_bg", levelPosition);
                    RendererManager.DrawText(levelText, levelPosition, Color.White, FontFlags.VerticalCenter, position.Width * 0.45f);
                }

                if (this.Ability.IsDisplayingCharges)
                {
                    var chargesText     = this.Ability.Charges.ToString("N0");
                    var chargesPosition = position.SinkToBottomRight(position.Width * 0.5f, position.Height * 0.5f);
                    RendererManager.DrawTexture("o9k.charge_bg", chargesPosition);
                    RendererManager.DrawTexture("o9k.outline_green", chargesPosition * 1.07f);
                    RendererManager.DrawText(chargesText, chargesPosition, Color.White, FontFlags.Center, position.Width * 0.45f);
                }

                if (this.Ability.IsChanneling)
                {
                    return;
                }

                var cooldown = this.Ability.RemainingCooldown;
                if (cooldown > 0)
                {
                    RendererManager.DrawTexture("o9k.ability_cd_bg", position);
                    RendererManager.DrawText(
                        Math.Ceiling(cooldown).ToString("N0"),
                        position,
                        Color.White,
                        FontFlags.Center | FontFlags.VerticalCenter,
                        cooldownSize);
                }
                else if (this.Ability.ManaCost > this.Ability.Owner.Mana)
                {
                    RendererManager.DrawTexture("o9k.ability_mana_bg", position);
                    RendererManager.DrawText(
                        Math.Ceiling((this.Ability.ManaCost - this.Ability.Owner.Mana) / this.Ability.Owner.ManaRegeneration)
                        .ToString("N0"),
                        position,
                        Color.White,
                        FontFlags.Center | FontFlags.VerticalCenter,
                        cooldownSize);
                }
                else if (!this.Ability.IsUsable)
                {
                    RendererManager.DrawTexture("o9k.ability_0lvl_bg", position);
                }
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }
        }
Esempio n. 2
0
        private void OnDraw()
        {
            try
            {
                var heroPosition = this.position.Value;

                foreach (var unit in this.units)
                {
                    if (!unit.IsValid)
                    {
                        continue;
                    }

                    RendererManager.DrawTexture(unit.TextureName, new RectangleF(heroPosition.X, heroPosition.Y, this.heroSize.X, this.heroSize.Y), TextureType.Unit);

                    var borderPosition = new Rectangle9(
                        heroPosition.X + this.heroSize.X + 1,
                        heroPosition.Y,
                        this.itemSize.X,
                        this.itemSize.Y);

                    for (var i = 0; i < 7; i++)
                    {
                        RendererManager.DrawTexture("o9k.inventory_item_bg", borderPosition + new Vector2((this.itemSize.X + 1) * i, 0));
                    }

                    foreach (var ability in unit.Abilities.OrderBy(x => x.Id == AbilityId.item_tpscroll))
                    {
                        if (ability.Id == AbilityId.item_tpscroll)
                        {
                            var tpPosition = new Rectangle9(
                                heroPosition + new Vector2(this.heroSize.X * 0.65f, this.heroSize.Y * 0.4f),
                                this.itemSize.X * 0.6f,
                                this.itemSize.X * 0.6f);

                            RendererManager.DrawTexture("o9k.outline", tpPosition + 1);
                            RendererManager.DrawTexture(ability.TextureName, tpPosition, TextureType.RoundAbility);

                            if (this.showCooldown)
                            {
                                var cooldown = ability.RemainingCooldown;
                                if (cooldown > 0)
                                {
                                    RendererManager.DrawTexture("o9k.inventory_tp_cd_bg", tpPosition);
                                    RendererManager.DrawText(
                                        Math.Ceiling(cooldown).ToString("N0"),
                                        tpPosition,
                                        Color.White,
                                        FontFlags.Center | FontFlags.VerticalCenter,
                                        this.size * 0.35f);
                                }
                            }

                            continue;
                        }

                        if (!ability.IsItem || !ability.IsUsable)
                        {
                            continue;
                        }

                        var itemPosition = borderPosition - 4;

                        RendererManager.DrawTexture(ability.TextureName, itemPosition, TextureType.Ability);

                        if (this.showCharges && ability.IsDisplayingCharges)
                        {
                            var chargesText     = ability.BaseItem.CurrentCharges.ToString("N0");
                            var chargesSize     = RendererManager.MeasureText(chargesText, this.size * 0.35f);
                            var chargesPosition = itemPosition.SinkToBottomRight(chargesSize.X * 1.1f, chargesSize.Y * 0.8f);

                            RendererManager.DrawFilledRectangle(chargesPosition, Color.Black);
                            RendererManager.DrawText(chargesText, chargesPosition, Color.White, FontFlags.Left, this.size * 0.35f);
                        }

                        if (this.showCooldown)
                        {
                            var cooldown = ability.RemainingCooldown;
                            if (cooldown > 0)
                            {
                                RendererManager.DrawTexture("o9k.inventory_item_cd_bg", itemPosition);
                                RendererManager.DrawText(
                                    Math.Ceiling(cooldown).ToString("N0"),
                                    itemPosition,
                                    Color.White,
                                    FontFlags.Center | FontFlags.VerticalCenter,
                                    this.size * 0.7f);
                            }
                        }

                        borderPosition += new Vector2(this.itemSize.X + 1, 0);
                    }

                    heroPosition += new Vector2(0, this.size + 1);
                }
            }
            catch (InvalidOperationException)
            {
                //ignore
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }
        }
Esempio n. 3
0
 public override void Draw(RectangleF position, IMinimap minimap)
 {
     RendererManager.DrawTexture("o9k.ping", minimap.WorldToMinimap(this.pingPosition, 25 * Hud.Info.ScreenRatio * this.GetPingSize()));
 }
Esempio n. 4
0
        private void RenderManagerOnDraw()
        {
            var mousePos = GetMousePosition;

            foreach (var bomb in _main.Updater.BombManager.RemoteMines.Where(x =>
                                                                             x.Owner.IsValid && x.Owner.IsAlive && x.Stacker.IsActive))
            {
                if (_main.MenuManager.StackDontDrawSolo && bomb.Stacker.Counter == 1)
                {
                    continue;
                }
                var topPos = CustomHUDInfo.GetHpBarPosition(bomb.Owner);
                if (topPos.IsZero)
                {
                    continue;
                }
                var size                = new Vector2(CustomHUDInfo.HpBarSizeX, CustomHUDInfo.HpBarSizeY);
                var text                = bomb.Stacker.Counter.ToString();
                var textSize            = RendererManager.MeasureText(text, 30);
                var textPos             = topPos + new Vector2(size.X / 2 - textSize.X / 2, -size.Y * 2);
                var extraRectangleSizeX = 50;
                var extraRectangleSizeY = textSize.Y / 2;
                var rectWidth           = textSize.X + extraRectangleSizeX * 2;
                var boxSize             = new Vector2(rectWidth / 5);
                var rectangle           = new RectangleF(textPos.X - extraRectangleSizeX, textPos.Y - extraRectangleSizeY,
                                                         rectWidth + 2, textSize.Y + boxSize.X);

                if (IsIn(rectangle, mousePos))
                {
                    RendererManager.DrawFilledRectangle(rectangle, Color.White, new SharpDX.Color(200, 10, 10, 10), 1);
                    RendererManager.DrawText(text, new Vector2(rectangle.X + rectangle.Width / 2 - textSize.X / 2, rectangle.Y),

                                             bomb.UnderTrueSight ? Color.OrangeRed : Color.White, 30);

                    var count = 0;
                    foreach (var target in TargetManager.Targets.GroupBy(x => x.HeroId).ToList())
                    {
                        var boxPos  = new Vector2(rectangle.X + count++ *boxSize.X, rectangle.Y + textSize.Y);
                        var boxRect = new RectangleF(boxPos.X + 1, boxPos.Y - 1, boxSize.X, boxSize.Y);
                        RendererManager.DrawTexture(target.Key, new RectangleF(boxPos.X, boxPos.Y, boxSize.X, boxSize.Y), UnitTextureType.MiniUnit);
                        if (bomb.Stacker.DetonateDict.TryGetValue(target.Key, out var isEnable))
                        {
                            RendererManager.DrawRectangle(boxRect, isEnable ? Color.Green : Color.OrangeRed, 1);
                        }
                        else
                        {
                            bomb.Stacker.DetonateDict.Add(target.Key, true);
                        }

                        if (IsIn(boxRect, mousePos))
                        {
                            if (IsButtonClicked)
                            {
                                IsButtonClicked = false;
                                bomb.Stacker.DetonateDict[target.Key] = !bomb.Stacker.DetonateDict[target.Key];
                            }
                        }
                        else
                        {
                            RendererManager.DrawFilledRectangle(boxRect, Color.White, new SharpDX.Color(100, 50, 50, 50), 0);
                        }
                    }
                }
                else
                {
                    RendererManager.DrawText(text, textPos, bomb.UnderTrueSight ? Color.OrangeRed : Color.White, 30);
                }
            }
        }
Esempio n. 5
0
        public SuicideDamage(TechiesCrappahilationPaid main)
        {
            _main = main;
            var suicide = main.MenuManager.VisualSubMenu.CreateMenu("Suicide");

            ShowSuicideDamage = suicide.CreateSwitcher("Show suicide damage on heroes", true);
            SuicideType       = suicide.CreateSwitcher("Suicide Draw type" /*, new StringList("text", "icon")*/);
            var settings = suicide.CreateMenu("Settings");

            PositionX = settings.CreateSlider("extra position x", 0, -100, 100);
            PositionY = settings.CreateSlider("extra position y", 0, -100, 100);
            TextSize  = settings.CreateSlider("text size", 13, 5, 25);

            PlayerPositions = new Dictionary <Hero, Vector2>();

            RendererManager.Draw += () =>
            {
                foreach (var enemy in TargetManager.Targets)
                {
                    if (enemy != null && enemy.IsValid)
                    {
                        if (PlayerPositions.ContainsKey(enemy))
                        {
                            PlayerPositions[enemy] = CustomHUDInfo.GetHpBarPosition(enemy);
                        }
                        else
                        {
                            PlayerPositions.Add(enemy, CustomHUDInfo.GetHpBarPosition(enemy));
                        }
                    }
                }
            };

            RendererManager.Draw += () =>
            {
                if (!ShowSuicideDamage.Value)
                {
                    return;
                }
                foreach (var g in PlayerPositions.ToList())
                {
                    var enemy = g.Key;
                    if (!_main.Updater.BombDamageManager.DamageDictionary.ContainsKey(enemy.HeroId) ||
                        !enemy.IsVisible || !enemy.IsAlive)
                    {
                        continue;
                    }
                    var pos = g.Value;
//                    var w2s = Drawing.WorldToScreen(pos);
                    if (pos.IsZero)
                    {
                        continue;
                    }
                    var drawPos = pos;
                    // if (SuicideType.Value.SelectedIndex == 0)
                    if (SuicideType.Value)
                    {
                        var damage = Math
                                     .Round(_main.Updater.BombDamageManager.DamageDictionary[enemy.HeroId].HealthAfterSuicide, 1)
                                     .ToString(CultureInfo.InvariantCulture);
                        var size = RendererManager.MeasureText(damage, TextSize);
                        drawPos.X -= size.X + 5;
                        RendererManager.DrawFilledRectangle(
                            new RectangleF(drawPos.X - 1 + PositionX, drawPos.Y + PositionY, size.X, size.Y),
                            Color.Black,
                            Color.Black, 1);
                        RendererManager.DrawText(damage, drawPos + new Vector2(PositionX, PositionY), Color.White,
                                                 TextSize);
                    }
                    else
                    {
                        var willDie = _main.Updater.BombDamageManager.DamageDictionary[enemy.HeroId].HeroWillDieSuicide;
                        var rect    = new RectangleF(drawPos.X - 26 + PositionX, drawPos.Y + PositionY, TextSize * 2 - 2,
                                                     TextSize * 2 - 2);
                        RendererManager.DrawTexture($"{AbilityId.techies_suicide}_icon", rect);
                        var clr = willDie ? Color.LimeGreen : Color.Red;
                        RendererManager.DrawFilledRectangle(rect,
                                                            new SharpDX.Color((float)clr.R, clr.G, clr.B, 35),
                                                            willDie ? Color.LimeGreen : Color.Red, 0.5f);
                    }
                }
            };
        }
Esempio n. 6
0
        private void OnRendererManagerDraw()
        {
            var pos = phantomAssassin.Position.WorldToMinimap();

            RendererManager.DrawTexture(@"mini_heroes\npc_dota_hero_phantom_assassin.png", new RectangleF(pos.X - 11, pos.Y - 13, 24, 24));
        }
Esempio n. 7
0
        protected override void OverlaySpells(IEnumerable <Ability> spells, Vector2 position, HeroId heroId, float mana, Vector2 extraSize)
        {
            foreach (var spell in spells)
            {
                if (spell.IsHidden)
                {
                    continue;
                }

                var rect = new RectangleF(position.X, position.Y, extraSize.X, extraSize.Y);
                RendererManager.DrawTexture(spell.Name, rect, TextureType.Ability, true);

                if (spell.IsInAbilityPhase)
                {
                    RendererManager.DrawTexture("Divine.BeAware.Resources.Textures.spell_phase.png", rect);
                }

                var level      = spell.Level;
                var manaCast   = spell.ManaCost;
                var enoughMana = mana >= manaCast;
                var cooldown   = spell.Cooldown;

                if (cooldown > 0 || !enoughMana || level <= 0)
                {
                    var color = level <= 0 ? new Color(10, 10, 10, 210) : (enoughMana ? new Color(40, 40, 40, 180) : new Color(25, 25, 130, 190));
                    RendererManager.DrawFilledRectangle(new RectangleF(position.X + 1, position.Y, extraSize.X - 1, extraSize.Y), color, color, 0);
                }

                var notinvospell = heroId != HeroId.npc_dota_hero_invoker || (spell.AbilitySlot != AbilitySlot.Slot_4 && spell.AbilitySlot != AbilitySlot.Slot_5);
                if (notinvospell)
                {
                    var levelText = level.ToString();
                    var textSize  = RendererManager.MeasureText(levelText, extraSize.X / 2);

                    RendererManager.DrawFilledRectangle(new RectangleF(position.X + 1, position.Y, textSize.X + 2, textSize.Y + 1), Color.Zero, new Color(0, 0, 0, 220), 0);
                    RendererManager.DrawText(levelText, new Vector2(position.X + 1, position.Y), new Color(168, 168, 168), extraSize.X / 2);
                }

                if (cooldown > 0)
                {
                    var cooldownText = (cooldown > 1 ? Math.Min(Math.Ceiling(cooldown), 99) : Math.Round(cooldown, 1)).ToString();
                    var cooldownSize = extraSize.X / 2 + 3;
                    var textSize     = RendererManager.MeasureText(cooldownText, cooldownSize);

                    RendererManager.DrawText(cooldownText, position + new Vector2(extraSize.X / 2 - textSize.X / 2, (extraSize.Y / 2) - (textSize.Y / 2)), Color.WhiteSmoke, cooldownSize);
                }

                if (!enoughMana && cooldown <= 0)
                {
                    var manaText = Math.Min(Math.Ceiling(manaCast - mana), 999).ToString(CultureInfo.InvariantCulture);
                    var textSize = RendererManager.MeasureText(manaText, extraSize.X / 2 + 1);

                    Vector2 pos;
                    if (!notinvospell)
                    {
                        pos = position + new Vector2(extraSize.X / 2 - textSize.X / 2, (float)((extraSize.Y / 1.5) - (textSize.Y / 2)));
                    }
                    else
                    {
                        pos = position + new Vector2((float)(extraSize.X / 1.5 - textSize.X / 2), (float)((extraSize.Y / 1.5) - (textSize.Y / 2)));
                    }

                    RendererManager.DrawText(manaText, pos, Color.LightBlue, extraSize.X / 2 + 1);
                }

                RendererManager.DrawRectangle(new RectangleF(position.X, position.Y, extraSize.X + 1, extraSize.Y), Color.Black, 1);

                position += new Vector2(extraSize.X, 0);
            }
        }
Esempio n. 8
0
        protected override void OverlaySpells(IEnumerable <Ability> spells, Vector2 position, HeroId heroId, float mana, Vector2 extraSize)
        {
            foreach (var spell in spells)
            {
                if (spell.IsHidden)
                {
                    continue;
                }

                if (spell.IsInAbilityPhase)
                {
                    RendererManager.DrawTexture("Divine.BeAware.Resources.Textures.spell_phase.png", new RectangleF(position.X, position.Y, extraSize.X, extraSize.Y));
                }

                var level        = spell.Level;
                var manaCast     = spell.ManaCost;
                var isEnoughMana = mana >= manaCast;
                var cooldown     = spell.Cooldown;
                var isCooldown   = cooldown > 0;
                var isLevel      = level > 0;

                var extraRange = new Vector2(level > 4 ? (level - 4) * 5.5f : 0, 0);

                if (isCooldown || !isEnoughMana || !isLevel)
                {
                    if (isLevel)
                    {
                        extraRange.Y = 13;
                    }

                    var color = !isLevel ? new Color(100, 10, 10, 190) : (isEnoughMana ? new Color(40, 40, 40, 180) : new Color(25, 25, 130, 190));
                    RendererManager.DrawFilledRectangle(new RectangleF(position.X + 1, position.Y, extraSize.X - 1, extraSize.Y), color, color, 0);
                }

                var notinvospell = heroId != HeroId.npc_dota_hero_invoker || (spell.AbilitySlot != AbilitySlot.Slot_4 && spell.AbilitySlot != AbilitySlot.Slot_5);
                if (notinvospell)
                {
                    for (var lvl = 1; lvl <= level; lvl++)
                    {
                        var rect = new RectangleF(position.X + (extraSize.X * 0.212f * lvl) - extraSize.X * 0.08f, position.Y + 3, extraSize.X * 0.115f, extraSize.X * 0.115f);
                        RendererManager.DrawFilledRectangle(rect, Color.Zero, new Color(255, 255, 0), 0);
                    }
                }

                if (isCooldown)
                {
                    var cooldownText = (cooldown > 1 ? Math.Min(Math.Ceiling(cooldown), 99) : Math.Round(cooldown, 1)).ToString();
                    var cooldownSize = extraSize.X / 2 + 3;
                    var textSize     = RendererManager.MeasureText(cooldownText, cooldownSize);

                    var pos = position + new Vector2(extraSize.X / 2 - textSize.X / 2, (extraSize.Y / 2) - (textSize.Y / 2) + (extraRange.Y - 2));
                    RendererManager.DrawText(cooldownText, pos, Color.WhiteSmoke, cooldownSize);
                }

                if (!isEnoughMana && !isCooldown)
                {
                    var manaText = Math.Min(Math.Ceiling(manaCast - mana), 999).ToString(CultureInfo.InvariantCulture);
                    var textSize = RendererManager.MeasureText(manaText, extraSize.X / 2 + 1);

                    Vector2 pos;
                    if (!notinvospell)
                    {
                        pos = position + new Vector2(extraSize.X / 2 - textSize.X / 2, (extraSize.Y / 2) - (textSize.Y / 2) + (extraRange.Y - 2));
                    }
                    else
                    {
                        pos = position + new Vector2(extraSize.X / 2 - textSize.X / 2, (extraSize.Y / 2) - (textSize.Y / 2) + (extraRange.Y - 2));
                    }

                    RendererManager.DrawText(manaText, pos, Color.LightBlue, extraSize.X / 2 + 1);
                }

                RendererManager.DrawRectangle(new RectangleF(position.X, position.Y, extraSize.X + 1 + extraRange.X, extraSize.Y + extraRange.Y), Color.Black, 1);

                position += new Vector2(extraSize.X + extraRange.X, 0);
            }
        }