public Backend(Connector con) { this.connector = con; players = new List <Player>(); dragons = new List <Dragon>(); pathwalker = new Pathwalker(this); }
public List <Entity> GetBuildingsWithinWalkableDistance <T>(uint startID, int distance) { List <Entity> entitiesWithinRange = new List <Entity>(); Entity startEntity = Entities.Get(startID); if (startEntity == null) { return(entitiesWithinRange); } List <Point> exits = GetValidExitsFromFoundation(startEntity); foreach (Point exit in exits) { // walk the "road path" until distance is reached List <Point> roads = Pathwalker.GetRoadsWithinDistance(Roads, exit, distance); foreach (Point road in roads) { for (int x = -1; x < 2; x++) { for (int y = -1; y < 2; y++) { if (Math.Abs(x) == Math.Abs(y)) { continue; } // check ortho for foundations Point p = new Point(road.X + x, road.Y + y); if (Foundations.SpaceTaken.ContainsKey(p)) { Entity e = Entities.Get(Foundations.SpaceTaken[p]); if (e != null && e.HasComponent <T>() && !entitiesWithinRange.Contains(e)) { entitiesWithinRange.Add(e); } } } } } } return(entitiesWithinRange); }