Advertisement
JackCeparou

PartyInspector.cs (Prrovoss)

Mar 15th, 2017
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 10.88 KB | None | 0 0
  1. using Turbo.Plugins.Default;
  2. using SharpDX.DirectInput;
  3. using SharpDX;
  4. using System.Linq;
  5. using System.Collections.Generic;
  6. using Turbo.Plugins.Jack.Extensions;
  7.  
  8. namespace Turbo.Plugins.Prrovoss
  9. {
  10.  
  11.     public class PartyInspector : BasePlugin, IInGameWorldPainter, IKeyEventHandler
  12.     {
  13.         public bool Show { get; set; }
  14.         public IKeyEvent ToggleKeyEvent { get; set; }
  15.         public float SkillRatio { get; set; }
  16.         public float GemRatio { get; set; }
  17.         public float KanaiRatio { get; set; }
  18.         public SkillPainter SkillPainter { get; set; }
  19.         public Dictionary<uint, uint> LegendaryGemItemIDs { get; set; }
  20.         public float XOffset { get; set; }
  21.         public float YOffset { get; set; }
  22.         public float Gap { get; set; }
  23.         public bool DrawKanai { get; set; }
  24.         public bool DrawGems { get; set; }
  25.         public bool DrawSkills { get; set; }
  26.         public List<int> ElementOrder { get; set; }
  27.  
  28.         private float currentX { get; set; }
  29.  
  30.         public PartyInspector()
  31.         {
  32.             Enabled = true;
  33.         }
  34.  
  35.         public override void Load(IController hud)
  36.         {
  37.             base.Load(hud);
  38.  
  39.             Show = false;
  40.             ToggleKeyEvent = Hud.Input.CreateKeyEvent(true, Key.F8, false, false, false);
  41.  
  42.             LegendaryGemItemIDs = new Dictionary<uint, uint>();
  43.  
  44.             SkillPainter = new SkillPainter(Hud, true)
  45.             {
  46.                 TextureOpacity = 1.0f,
  47.                 EnableSkillDpsBar = true,
  48.                 EnableDetailedDpsHint = true,
  49.                 CooldownFont = Hud.Render.CreateFont("arial", 8, 255, 255, 255, 255, true, false, 255, 0, 0, 0, true),
  50.                 SkillDpsBackgroundBrushesByElementalType = new IBrush[]
  51.                 {
  52.                     Hud.Render.CreateBrush(0, 255, 6, 0, 0),
  53.                     Hud.Render.CreateBrush(0, 183, 57, 7, 0),
  54.                     Hud.Render.CreateBrush(0, 0, 38, 119, 0),
  55.                     Hud.Render.CreateBrush(0, 77, 102, 155, 0),
  56.                     Hud.Render.CreateBrush(0, 50, 106, 21, 0),
  57.                     Hud.Render.CreateBrush(0, 138, 0, 94, 0),
  58.                     Hud.Render.CreateBrush(0, 190, 117, 0, 0),
  59.                 },
  60.                 SkillDpsFont = Hud.Render.CreateFont("tahoma", 7, 0, 255, 255, 255, false, false, 0, 0, 0, 0, false),
  61.             };
  62.             SkillRatio = 0.025f;
  63.             KanaiRatio = 0.025f;
  64.             GemRatio = 0.0166666666666667f;
  65.  
  66.             LegendaryGemItemIDs.Add(428348, 3249948847); //Stricken
  67.             LegendaryGemItemIDs.Add(383014, 3248511367); //BotP
  68.             LegendaryGemItemIDs.Add(403456, 3248547304); //BotT
  69.             LegendaryGemItemIDs.Add(403470, 3249805099); //Hoarder
  70.             LegendaryGemItemIDs.Add(428352, 3250847272); //Boyarskys
  71.             LegendaryGemItemIDs.Add(403466, 3249661351); //Enforcer
  72.             LegendaryGemItemIDs.Add(428029, 3249876973); //Esoteric
  73.             LegendaryGemItemIDs.Add(403459, 3248583241); //Ease
  74.             LegendaryGemItemIDs.Add(403461, 3248655115); //Toxin
  75.             LegendaryGemItemIDs.Add(403464, 3248762926); //Gogok
  76.             LegendaryGemItemIDs.Add(428354, 3250883209); //Iceblink
  77.             LegendaryGemItemIDs.Add(403465, 3248798863); //Invigoration
  78.             LegendaryGemItemIDs.Add(403463, 3248726989); //Mirinae
  79.             LegendaryGemItemIDs.Add(428031, 3249912910); //Gizzard
  80.             LegendaryGemItemIDs.Add(403467, 3249697288); //Moratorium
  81.             LegendaryGemItemIDs.Add(428350, 3249984784); //Mutilation
  82.             LegendaryGemItemIDs.Add(403462, 3248691052); //PE
  83.             LegendaryGemItemIDs.Add(454736, 3250919146); //Soul Shard
  84.             LegendaryGemItemIDs.Add(403469, 3249769162); //Simplicitys
  85.             LegendaryGemItemIDs.Add(403471, 3249841036); //Taeguk
  86.             LegendaryGemItemIDs.Add(403460, 3248619178); //WoL
  87.             LegendaryGemItemIDs.Add(403468, 3249733225); //Zeis
  88.  
  89.             XOffset = Hud.Window.Size.Width * 0.16f;
  90.             YOffset = Hud.Window.Size.Width * 0.012f;
  91.             Gap = Hud.Window.Size.Width * 0.012f;
  92.  
  93.             DrawGems = true;
  94.             DrawKanai = true;
  95.             DrawSkills = true;
  96.  
  97.             ElementOrder = new List<int>(new int[] { 0, 1, 2 });
  98.         }
  99.  
  100.         public void PaintWorld(WorldLayer layer)
  101.         {
  102.             if (Show)
  103.             {
  104.                 foreach (IPlayer player in Hud.Game.Players)
  105.                 {
  106.                     currentX = XOffset;
  107.  
  108.                     foreach (int element in ElementOrder)
  109.                     {
  110.                         switch (element)
  111.                         {
  112.                             case 0:
  113.                                 if (DrawKanai)
  114.                                 {
  115.                                     if (player.CubeSnoItem1 != null) DrawKanaiItem(player.CubeSnoItem1, player.PortraitUiElement.Rectangle);
  116.                                     if (player.CubeSnoItem2 != null) DrawKanaiItem(player.CubeSnoItem2, player.PortraitUiElement.Rectangle);
  117.                                     if (player.CubeSnoItem3 != null) DrawKanaiItem(player.CubeSnoItem3, player.PortraitUiElement.Rectangle);
  118.                                     currentX += Gap;
  119.                                 }
  120.                                 break;
  121.  
  122.                             case 1:
  123.                                 if (DrawGems)
  124.                                 {
  125.                                     DrawLegendaryGems(player);
  126.                                 }
  127.                                 break;
  128.  
  129.                             case 2:
  130.                                 if (DrawSkills)
  131.                                 {
  132.                                     DrawPlayerSkills(player);
  133.                                 }
  134.                                 break;
  135.                         }
  136.                     }
  137.                 }
  138.             }
  139.         }
  140.  
  141.         private void DrawLegendaryGems(IPlayer player)
  142.         {
  143.             //IEnumerable<IBuff> gemBuffs = LegendaryPowerInfoExtensions.EquippedLegendaryGemsPrimaryBuffs(player.Powers.UsedLegendaryPowers).Where(b => b.Active);
  144.             IEnumerable<IBuff> gemBuffs = player.Powers.UsedLegendaryGems.AllGemPrimaryBuffs().Where(b => b.Active);
  145.             var size = Hud.Window.Size.Width * GemRatio;
  146.             var portraitRect = player.PortraitUiElement.Rectangle;
  147.             var index = 0;
  148.  
  149.             foreach (IBuff buff in gemBuffs)
  150.             {
  151.                 if (index == 3)
  152.                 {
  153.                     currentX += size;
  154.                     index = 0;
  155.                 }
  156.  
  157.                 var y = portraitRect.Y + YOffset + size * index;
  158.  
  159.                 var rect = new RectangleF(currentX, y, size, size);
  160.  
  161.                 var texture = Hud.Texture.GetItemTexture(Hud.Inventory.GetSnoItem(LegendaryGemItemIDs[buff.SnoPower.Sno]));
  162.  
  163.                 if (Hud.Window.CursorInsideRect(rect.X, rect.Y, rect.Width, rect.Height))
  164.                 {
  165.                     Hud.Render.SetHint(buff.SnoPower.NameLocalized);
  166.                 }
  167.  
  168.                 if (texture != null)
  169.                 {
  170.                     texture.Draw(rect.X, rect.Y, rect.Width, rect.Height);
  171.                 }
  172.  
  173.                 index++;
  174.             }
  175.             currentX += size + Gap;
  176.         }
  177.  
  178.  
  179.         private void DrawPlayerSkills(IPlayer player)
  180.         {
  181.             var size = Hud.Window.Size.Width * SkillRatio;
  182.             var portraitRect = player.PortraitUiElement.Rectangle;
  183.             var index = 0;
  184.             var passivesX = currentX;
  185.             foreach (var skill in player.Powers.SkillSlots)
  186.             {
  187.                 if (skill != null)
  188.                 {
  189.                     index = skill.Key <= ActionKey.RightSkill ? (int)skill.Key + 4 : (int)skill.Key - 2;
  190.  
  191.                     var y = portraitRect.Y + YOffset;
  192.  
  193.                     var rect = new RectangleF(currentX, y, size, size);
  194.  
  195.                     SkillPainter.Paint(skill, rect);
  196.  
  197.                     if (Hud.Window.CursorInsideRect(rect.X, rect.Y, rect.Width, rect.Height))
  198.                     {
  199.                         Hud.Render.SetHint(skill.RuneNameLocalized);
  200.                     }
  201.  
  202.                 }
  203.                 currentX += size;
  204.             }
  205.  
  206.             index = 0;
  207.             foreach (var skill in player.Powers.UsedPassives)
  208.             {
  209.                 if (skill != null)
  210.                 {
  211.                     var y = portraitRect.Y + YOffset + size;
  212.  
  213.                     var rect = new RectangleF(passivesX, y, size, size);
  214.  
  215.                     var texture = Hud.Texture.GetTexture(skill.NormalIconTextureId);
  216.                     texture.Draw(rect.X, rect.Y, rect.Width, rect.Height);
  217.  
  218.                     if (Hud.Window.CursorInsideRect(rect.X, rect.Y, rect.Width, rect.Height))
  219.                     {
  220.                         Hud.Render.SetHint(skill.NameLocalized);
  221.                     }
  222.                 }
  223.                 passivesX += size * 1.666666f;
  224.                 index++;
  225.             }
  226.             currentX += Gap;
  227.         }
  228.  
  229.  
  230.         private void DrawKanaiItem(ISnoItem snoItem, System.Drawing.RectangleF portraitRect)
  231.         {
  232.             var inventoryRect = Hud.Inventory.InventoryMainUiElement.Rectangle;
  233.  
  234.             var itemRect = new System.Drawing.RectangleF(currentX, portraitRect.Y, Hud.Window.Size.Width * KanaiRatio, Hud.Window.Size.Width * KanaiRatio * 2);
  235.             itemRect.Offset(0, YOffset);
  236.             if (snoItem.ItemHeight == 1)
  237.             {
  238.                 itemRect.Offset(0, YOffset);
  239.                 itemRect.Height /= 2;
  240.             }
  241.  
  242.             var slotTexture = Hud.Texture.InventorySlotTexture;
  243.             slotTexture.Draw(itemRect.X, itemRect.Y, itemRect.Width, itemRect.Height);
  244.  
  245.             if (Hud.Window.CursorInsideRect(itemRect.X, itemRect.Y, itemRect.Width, itemRect.Height))
  246.             {
  247.                 var description = snoItem.NameLocalized;
  248.  
  249.                 var power = snoItem.LegendaryPower;
  250.                 if (power != null)
  251.                 {
  252.                     description += "\n\n" + power.DescriptionLocalized;
  253.                 }
  254.  
  255.                 Hud.Render.SetHint(description);
  256.             }
  257.  
  258.             var backgroundTexture = snoItem.ItemHeight == 2 ? Hud.Texture.InventoryLegendaryBackgroundLarge : Hud.Texture.InventoryLegendaryBackgroundSmall;
  259.             backgroundTexture.Draw(itemRect.X, itemRect.Y, itemRect.Width, itemRect.Height);
  260.  
  261.             var itemTexture = Hud.Texture.GetItemTexture(snoItem);
  262.             if (itemTexture != null)
  263.             {
  264.                 itemTexture.Draw(itemRect.X, itemRect.Y, itemRect.Width, itemRect.Height);
  265.             }
  266.             currentX += itemRect.Width;
  267.         }
  268.  
  269.  
  270.         public void OnKeyEvent(IKeyEvent keyEvent)
  271.         {
  272.             if (keyEvent.IsPressed && ToggleKeyEvent.Matches(keyEvent))
  273.             {
  274.                 Show = !Show;
  275.             }
  276.         }
  277.     }
  278. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement