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); }
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); } }