Advertisement
Guest User

CustomSkillPainter.cs

a guest
Apr 9th, 2017
328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.25 KB | None | 0 0
  1. using SharpDX;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Globalization;
  5. using System.Linq;
  6. using Turbo.Plugins.Default;
  7.  
  8. namespace Turbo.Plugins.Csavo
  9. {
  10.  
  11.     public class CustomSkillPainter : ITransparentCollection // Modified SkillPainter. Credits to KillerJohn (http://www.ownedcore.com/forums/members/863466-killerjohn.html) for the SkillPainter
  12.     {
  13.  
  14.         public bool Enabled { get; set; }
  15.         public IController Hud { get; set; }
  16.  
  17.         public IFont CooldownFont { get; set; }
  18.         public IFont SkillCDRFont { get; set; }
  19.         public IFont SkillRCFont { get; set; }
  20.  
  21.         public float TextureOpacity { get; set; }
  22.  
  23.         public CustomSkillPainter(IController hud, bool setDefaultStyle)
  24.         {
  25.             Enabled = true;
  26.             Hud = hud;
  27.  
  28.             if (setDefaultStyle)
  29.             {
  30.                 CooldownFont = Hud.Render.CreateFont("arial", 14, 255, 255, 255, 255, true, false, 255, 0, 0, 0, true);
  31.                 SkillCDRFont = Hud.Render.CreateFont("tahoma", 6, 255, 255, 255, 255, false, false, 160, 0, 0, 0, true);
  32.                 SkillRCFont = Hud.Render.CreateFont("tahoma", 5, 255, 255, 255, 255, false, false, 160, 0, 0, 0, true);
  33.             }
  34.         }
  35.  
  36.         public void Paint(IPlayerSkill skill, RectangleF rect)
  37.         {
  38.             if (skill == null) return;
  39.  
  40.             if (TextureOpacity > 0)
  41.             {
  42.                 var texture = Hud.Texture.GetTexture(skill.SnoPower.NormalIconTextureId);
  43.                 if (texture != null)
  44.                 {
  45.                     texture.Draw(rect.X, rect.Y, rect.Width, rect.Height, TextureOpacity);
  46.                 }
  47.             }
  48.  
  49.             if (skill.IsOnCooldown && (skill.CooldownFinishTick > Hud.Game.CurrentGameTick))
  50.             {
  51.                 var remaining = (skill.CooldownFinishTick - Hud.Game.CurrentGameTick) / 60.0d;
  52.                 var text = remaining > 1.0f ? remaining.ToString("F0", CultureInfo.InvariantCulture) : remaining.ToString("F1", CultureInfo.InvariantCulture);
  53.  
  54.                 var textLayout = CooldownFont.GetTextLayout(text);
  55.                 CooldownFont.DrawText(textLayout, rect.X + (rect.Width - (float)Math.Ceiling(textLayout.Metrics.Width)) / 2.0f, rect.Y + (rect.Height - textLayout.Metrics.Height) / 2);
  56.  
  57.                 var SkillCDR = (skill.CooldownFinishTick - skill.CooldownStartTick) / 60.0d;
  58.                 var CDRtext = SkillCDR.ToString("F2", CultureInfo.InvariantCulture) + " sec";
  59.                 var CDRLayout = SkillCDRFont.GetTextLayout(CDRtext);
  60.                 SkillCDRFont.DrawText(CDRLayout, rect.Left + (rect.Width / 2) - (CDRLayout.Metrics.Width / 2), rect.Bottom - CDRLayout.Metrics.Height);
  61.             }
  62.  
  63.             var resourceCost = skill.ResourceCost;
  64.             if (resourceCost != -1)
  65.             {
  66.                 if (Hud.Window.CursorInsideRect(rect.Left, rect.Top, rect.Width, rect.Height))
  67.                 {
  68.                     if (skill.SnoPower.Sno == 111215 && Hud.Game.Me.Powers.BuffIsActive(111215, 1)) // Vault - Tumble
  69.                     {
  70.                         var RCtext = BasePlugin.ValueToString(skill.GetResourceRequirement() * 0.5, ValueFormat.NormalNumber) + " " + (resourceCost > 0 ? Hud.Game.Me.HeroClassDefinition.PrimaryResourceName : Hud.Game.Me.HeroClassDefinition.SecondaryResourceName);
  71.                         var RCLayout = SkillRCFont.GetTextLayout(RCtext);
  72.                         SkillRCFont.DrawText(RCLayout, rect.Right - (rect.Width / 2) - (RCLayout.Metrics.Width / 2) - 1, rect.Top);
  73.                     }
  74.                     else if (skill.SnoPower.Sno == 129214/* && Hud.Game.Me.Powers.BuffIsActive(446318, 1)*/) // Cluster Arrow + Manticore NOTE: Manticore detection not working, so the RC will include Manticore RCR until I find a fix. Also I don't know how to detect the legendary affix value, so it will display with min and max affixes as well
  75.                     {
  76.                         var RCtext = BasePlugin.ValueToString(skill.GetResourceRequirement() * 0.6, ValueFormat.NormalNumber) + "-" + BasePlugin.ValueToString(skill.GetResourceRequirement() * 0.5, ValueFormat.NormalNumber) + " " + (resourceCost > 0 ? Hud.Game.Me.HeroClassDefinition.PrimaryResourceName : Hud.Game.Me.HeroClassDefinition.SecondaryResourceName);
  77.                         var RCLayout = SkillRCFont.GetTextLayout(RCtext);
  78.                         SkillRCFont.DrawText(RCLayout, rect.Right - (rect.Width / 2) - (RCLayout.Metrics.Width / 2) - 1, rect.Top);
  79.                     }
  80.                     else
  81.                     {
  82.                         var RCtext = BasePlugin.ValueToString(skill.GetResourceRequirement(), ValueFormat.NormalNumber) + " " + (resourceCost > 0 ? Hud.Game.Me.HeroClassDefinition.PrimaryResourceName : Hud.Game.Me.HeroClassDefinition.SecondaryResourceName);
  83.                         var RCLayout = SkillRCFont.GetTextLayout(RCtext);
  84.                         SkillRCFont.DrawText(RCLayout, rect.Right - (rect.Width / 2) - (RCLayout.Metrics.Width / 2) - 1, rect.Top);
  85.                     }
  86.                 }
  87.             }
  88.         }
  89.  
  90.         public IEnumerable<ITransparent> GetTransparents()
  91.         {
  92.             yield return CooldownFont;
  93.             yield return SkillCDRFont;
  94.             yield return SkillRCFont;
  95.         }
  96.     }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement