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