Beispiel #1
0
        private void SpawnShop(IMap map, ISystemContainer systemContainer, int power, List <IEntity> itemList, IRandom random, IShopGenerator shopGenerator)
        {
            int retries = 25;

            MapCoordinate emptyLocation = null;
            IEntity       shop          = null;

            emptyLocation = map.GetEmptyPosition(systemContainer.PositionSystem, random);

            if (emptyLocation == null)
            {
                return;
            }

            for (int i = 0; i < retries; i++)
            {
                var itemLevel = random.Between(0, power + 2);
                shop = shopGenerator.GenerateShop(systemContainer, random.Between(4, 10), itemLevel, itemList, random);

                if (shop != null)
                {
                    break;
                }
            }

            if (shop == null)
            {
                return;
            }

            systemContainer.PositionSystem.SetPosition(shop, emptyLocation);
        }
Beispiel #2
0
        private void FillMap(IMap map, ISystemContainer systemContainer, int power, List <IEntity> itemList, IRandom random, IShopGenerator shopGenerator)
        {
            var mapSize = map.Cells.Count;

            var numberOfItems = Density * mapSize;

            int integerItems    = (int)Math.Floor(numberOfItems);
            var fractionalItems = numberOfItems - integerItems;

            if (random.ZeroToOne() < (double)fractionalItems)
            {
                integerItems++;
            }

            numberOfItems = integerItems;

            for (int i = 0; i < numberOfItems; i++)
            {
                SpawnShop(map, systemContainer, power, itemList, random, shopGenerator);
            }
        }