private void DrawLine(IScreenCoordinate objectPosition, Line line, bool grey) { var start = PointOnLine(Center.X, Center.Y, objectPosition.X, objectPosition.Y, 60); var end = PointOnLine(objectPosition.X, objectPosition.Y - 30, Center.X, Center.Y, 20); if (grey) { GreyBrush.DrawLine(start.X, start.Y, end.X, end.Y, StrokeWidth * 0.5f); return; } switch (line.Anim) { case Line.AnimType.None: line.Brush.DrawLine(start.X, start.Y, end.X, end.Y, StrokeWidth * 0.8f); break; case Line.AnimType.Blink: if ((Hud.Game.CurrentRealTimeMilliseconds / 700) % 2 == 0) { line.Brush.DrawLine(start.X, start.Y, end.X, end.Y, StrokeWidth * 0.6f); } break; case Line.AnimType.Fade: line.Brush.Opacity = _opacity; line.Brush.DrawLine(start.X, start.Y, end.X, end.Y, StrokeWidth * 0.8f); break; case Line.AnimType.WidthMod: line.Brush.DrawLine(start.X, start.Y, end.X, end.Y, StrokeWidth * _lineWidth); break; default: throw new ArgumentOutOfRangeException(); } }
public void PaintTopInGame(ClipState clipState) { if (clipState != ClipState.BeforeClip) { return; } var textDistanceAway = TextDistanceAway; var monsters = Hud.Game.AliveMonsters.Where(monster => MonsterBrushes.ContainsKey(monster.Rarity) && monster.SummonerAcdDynamicId == 0 && monster.NormalizedXyDistanceToMe > CloseEnoughRange); foreach (var monster in monsters) { var monsterScreenCoordinate = monster.FloorCoordinate.ToScreenCoordinate(); //Draw line to monster var start = PointOnLine(center.X, center.Y, monsterScreenCoordinate.X, monsterScreenCoordinate.Y, 60); var end = PointOnLine(monsterScreenCoordinate.X, monsterScreenCoordinate.Y - 30, center.X, center.Y, 20); if (monster.NormalizedXyDistanceToMe < HitRange) { MonsterBrushes[monster.Rarity].DrawLine(start.X, start.Y, end.X, end.Y, StrokeWidth); } else { GreyBrush.DrawLine(start.X, start.Y, end.X, end.Y, StrokeWidth * 0.5f); } if (ShowText) //Draw text { var layout = TextFont.GetTextLayout(string.Format("{0:N0}", monster.NormalizedXyDistanceToMe)); var p = PointOnLine(center.X, center.Y, monsterScreenCoordinate.X, monsterScreenCoordinate.Y, textDistanceAway); TextFont.DrawText(layout, p.X, p.Y); textDistanceAway += 30; // avoid text overlap } } }