Beispiel #1
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }