Ejemplo n.º 1
0
 private void DrawSight(Graphics gfx, IHavePosition center, IEnumerable <IHavePosition> close, Color color)
 {
     foreach (var c in close)
     {
         gfx.DrawLine(new Pen(color), new Point(OffsetX + (int)center.Position.X, OffsetY + (int)center.Position.Y), new Point(OffsetX + (int)c.Position.X, OffsetY + (int)c.Position.Y));
     }
 }
Ejemplo n.º 2
0
        public static IEnumerable <IHavePosition> FindClosestAgents(IHavePosition center, int numberOfAgentsToFind, IEnumerable <IHavePosition> agents)
        {
            var closestObjects = agents
                                 .Where(x => x != center)
                                 .Select(x => new { Agent = x, SquareDistance = center.Position.SquaredDistance(x.Position) })
                                 .ToList();

            closestObjects.Sort((a, b) => {
                return(a.SquareDistance > b.SquareDistance ? 1 : -1);
            });

            List <IHavePosition> closestAgents = new List <IHavePosition>();

            var timesToCopyFirstAgent = numberOfAgentsToFind - closestObjects.Count();

            for (int i = 0; i < timesToCopyFirstAgent; i++)
            {
                closestAgents.Add(closestObjects.First().Agent);
            }

            closestAgents.AddRange(closestObjects.Take(numberOfAgentsToFind).Select(x => x.Agent));

            return(closestAgents);
        }
Ejemplo n.º 3
0
 public virtual double GetDirection(IHavePosition fromOther)
 {
     throw new NotImplementedException("BaseCharacter -> GetDirection is not implemented yet.");
 }