static void Drawing_OnEndScene(EventArgs args)
{
if (!Menu.Item("toggle").GetValue<bool>()) return;
if (Drawing.Direct3DDevice9 == null || Drawing.Direct3DDevice9.IsDisposed || !Game.IsInGame)
return;
var player = ObjectMgr.LocalPlayer;
if (player == null || player.Team == Team.Observer) return;
try {
foreach (var v in HeroList) {
if (!v.Key.IsVisible && v.Key.IsAlive) {
if (Menu.Item("predict").GetValue<bool>())
{
Vector3 ePos =
new Vector3(
v.Key.NetworkPosition.X +
(float) Math.Cos(v.Key.NetworkRotationRad)*v.Key.MovementSpeed*
(Game.GameTime - v.Value),
v.Key.NetworkPosition.Y +
(float) Math.Sin(v.Key.NetworkRotationRad)*v.Key.MovementSpeed*
(Game.GameTime - v.Value),
v.Key.NetworkPosition.Z + 50);
if (v.Key.NetworkActivity != NetworkActivity.Move) ePos = v.Key.NetworkPosition;
Text.DrawText(null,
FirstCharToUpper(v.Key.Name.Substring(v.Key.Name.LastIndexOf("hero_") + 5)),
(int) Math.Round(WorldToMiniMap(ePos).X, MidpointRounding.AwayFromZero) -
(int) (v.Key.Name.Substring(v.Key.Name.LastIndexOf("hero_") + 5).Length*3*ScaleX),
(int) Math.Round(WorldToMiniMap(ePos).Y, MidpointRounding.AwayFromZero) -
(int) (5*ScaleY),
Color.White);
}
else
{
Vector3 ePos =
new Vector3(
v.Key.NetworkPosition.X,
v.Key.NetworkPosition.Y,
v.Key.NetworkPosition.Z);
if (v.Key.NetworkActivity != NetworkActivity.Move) ePos = v.Key.NetworkPosition;
Text.DrawText(null,
FirstCharToUpper(v.Key.Name.Substring(v.Key.Name.LastIndexOf("hero_") + 5)),
(int)Math.Round(WorldToMiniMap(ePos).X, MidpointRounding.AwayFromZero) -
(int)(v.Key.Name.Substring(v.Key.Name.LastIndexOf("hero_") + 5).Length * 3 * ScaleX),
(int)Math.Round(WorldToMiniMap(ePos).Y, MidpointRounding.AwayFromZero) -
(int)(5 * ScaleY),
Color.White);
}
}
}
} catch (Exception) {
// Do nothing, HeroList has simply been modified during this foreach loop.
}
}