public void ShouldBuildShrineWithUseCountFromConfiguration() { //given var configuration = new HealingShrinesConfiguration { UseCountRange = Tuple.Create(1, 2), HealedHitpointsBetween = Tuple.Create(2, 4) }; const int shrineUseCount = 2; A.CallTo(() => _dice.RollBetween(configuration.UseCountRange.Item1, configuration.UseCountRange.Item2)).Returns(shrineUseCount); var healingShrine = _shrineFactory.GetShrine(configuration); var toBeHealed = A.Fake <ICanHeal>(); //when for (int i = 0; i < 100; i++) { healingShrine.Heal(toBeHealed); } //then A.CallTo(() => toBeHealed.Heal(A <int> .Ignored)).MustHaveHappened(Repeated.Exactly.Times(shrineUseCount)); }
public void ShouldSpawnShrinesAccordingToMapConfigurationAtRolledPosition() { //given var shrinePosition = new Position(2, 2); const int roomCount = 1; var mapConfiguration = new MapConfiguration { RoomCountBetween = Tuple.Create(roomCount, roomCount), MinRoomNeighboursCount = 1, MaxRoomNeighboursCount = 3, HealingShrines = new HealingShrinesConfiguration { ShrinePercentageSpawnChance = 30 } }; A.CallTo(() => _dice.RollBetween(mapConfiguration.RoomCountBetween.Item1, mapConfiguration.RoomCountBetween.Item2)).Returns(roomCount); A.CallTo(() => _dice.RollChance(mapConfiguration.HealingShrines.ShrinePercentageSpawnChance)).Returns(true); A.CallTo(() => _dice.RollPosition(A <int> .Ignored, A <int> .Ignored)).Returns(shrinePosition); var shrine = new HealingShrine(1, 1); A.CallTo(() => _healingShrineFactory.GetShrine(A <HealingShrinesConfiguration> .Ignored)).Returns(shrine); //when var map = _mapFactory.GenerateMap(mapConfiguration); //then var firstRoom = map.Rooms[0]; Assert.That(firstRoom.Tiles[shrinePosition.X, shrinePosition.Y].Shrine, Is.EqualTo(shrine)); Assert.That(firstRoom.Tiles[shrinePosition.X, shrinePosition.Y].HasShrine); }
private void SpawnShrines(IEnumerable <Room> rooms, HealingShrinesConfiguration healingShrinesConfiguration) { foreach (var room in rooms) { var shouldSpawnShrine = _dice.RollChance(healingShrinesConfiguration.ShrinePercentageSpawnChance); if (!shouldSpawnShrine) { continue; } var newShrine = _healingShrineFactory.GetShrine(healingShrinesConfiguration); var shrinePosition = _dice.RollPosition(room.Size.Width, room.Size.Height); room.BuildShrine(newShrine, shrinePosition); } }