using System; using LeagueSharp; using SharpDX; using SharpDX.Direct3D9; using Color = System.Drawing.Color; namespace HoolaRiven { internal class HpBarIndicator { public static Device dxDevice = Drawing.Direct3DDevice; public static Line dxLine; public float hight = 9; public float width = 104; public HpBarIndicator() { dxLine = new Line(dxDevice) { Width = 9 }; Drawing.OnPreReset += DrawingOnOnPreReset; Drawing.OnPostReset += DrawingOnOnPostReset; AppDomain.CurrentDomain.DomainUnload += CurrentDomainOnDomainUnload; AppDomain.CurrentDomain.ProcessExit += CurrentDomainOnDomainUnload; } public Obj_AI_Hero unit { get; set; } private Vector2 Offset { get { if (unit != null) { return unit.IsAlly ? new Vector2(34, 9) : new Vector2(10, 20); } return new Vector2(); } } public Vector2 startPosition { get { return new Vector2(unit.HPBarPosition.X + Offset.X, unit.HPBarPosition.Y + Offset.Y); } } private static void CurrentDomainOnDomainUnload(object sender, EventArgs eventArgs) { dxLine.Dispose(); } private static void DrawingOnOnPostReset(EventArgs args) { dxLine.OnResetDevice(); } private static void DrawingOnOnPreReset(EventArgs args) { dxLine.OnLostDevice(); } private float getHpProc(float dmg = 0) { float health = ((unit.Health - dmg) > 0) ? (unit.Health - dmg) : 0; return (health / unit.MaxHealth); } private Vector2 getHpPosAfterDmg(float dmg) { float w = getHpProc(dmg) * width; return new Vector2(startPosition.X + w, startPosition.Y); } public void drawDmg(float dmg, ColorBGRA color) { Vector2 hpPosNow = getHpPosAfterDmg(0); Vector2 hpPosAfter = getHpPosAfterDmg(dmg); fillHPBar(hpPosNow, hpPosAfter, color); //fillHPBar((int)(hpPosNow.X - startPosition.X), (int)(hpPosAfter.X- startPosition.X), color); } private void fillHPBar(int to, int from, Color color) { var sPos = startPosition; for (var i = from; i < to; i++) { Drawing.DrawLine(sPos.X + i, sPos.Y, sPos.X + i, sPos.Y + 9, 1, color); } } private void fillHPBar(Vector2 from, Vector2 to, ColorBGRA color) { dxLine.Begin(); dxLine.Draw(new[] { new Vector2((int) from.X, (int) from.Y + 4f), new Vector2((int) to.X, (int) to.Y + 4f) }, color); dxLine.End(); } } }