private LRSResult GetRegionInfo(ICoordinate region, bool outOfBounds, Game game) { var currentResult = new LRSResult(); if (!outOfBounds) { currentResult = this.GetRegionData(region, game); } else { currentResult.GalacticBarrier = true; } return(currentResult); }
public LRSResult Execute(Region regionToScan) { var regionResult = new LRSResult(); regionResult.Coordinate = regionToScan.GetCoordinate(); if (regionToScan.Type != RegionType.Nebulae) { regionResult.Hostiles = regionToScan.GetHostiles().Count; regionResult.Starbases = regionToScan.GetStarbaseCount(); regionResult.Stars = regionToScan.GetStarCount(); regionResult.Name = regionToScan.Name; } regionToScan.Scanned = true; return(regionResult); }
private LRSResult GetRegionData(ICoordinate region, Game game) { Region regionToScan = Regions.Get(game.Map, this.CoordinateToScan(region.X, region.Y, game.Config)); var regionResult = new LRSResult(); if (regionToScan.Type != RegionType.Nebulae) { regionResult = LongRangeScan.For(game.Map.Playership).Execute(regionToScan); } else { regionResult.Coordinate = new Coordinate(region.X, region.Y); regionResult.Name = regionToScan.Name; regionResult.Unknown = true; } return(regionResult); }
public IEnumerable <LRSResult> GetLRSFullData(Location location, Game game) { var scanData = new List <LRSResult>(); bool currentlyInNebula = location.Region.Type == RegionType.Nebulae; for (var regionY = location.Region.Y - 1; regionY <= location.Region.Y + 1; regionY++) { for (var regionX = location.Region.X - 1; regionX <= location.Region.X + 1; regionX++) { var offMap = game.Map.OutOfBounds(new Region(new Coordinate(regionY, regionX, false))); var currentResult = new LRSResult(); //todo: breaks here when regionX or regionY is 8 currentResult.Coordinate = new Coordinate(regionX, regionY, false); if (!currentlyInNebula) { currentResult = this.GetRegionInfo(new Coordinate(regionX, regionY, false), offMap, game); currentResult.MyLocation = location.Region.X == regionX && location.Region.Y == regionY; } else { //We are in a nebula. LRS won't work here. currentResult.Unknown = true; currentResult.Coordinate = new Coordinate(regionX, regionY); //because we at least know the coordinate of what we don't know is.. } scanData.Add(currentResult); } } return(scanData); }
public LRSResult GetInfo(Map map, string regionName) { var regionResult = new LRSResult(); Region regionToScan = map.Regions.Get(regionName); regionResult.Coordinate = regionToScan.GetCoordinate(); if (regionToScan.Type != RegionType.Nebulae) { regionResult.Hostiles = regionToScan.GetHostiles().Count; regionResult.Starbases = regionToScan.GetStarbaseCount(); regionResult.Stars = regionToScan.GetStarCount(); } var barrierID = "Galactic Barrier"; //todo: resource this regionResult.Name = regionResult.GalacticBarrier ? barrierID : regionToScan.Name; regionToScan.Scanned = true; return(regionResult); }