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); } }
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; } }
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); }
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 } } }
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); } }
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); }