private void GenerateMonsters() { int enemies = dungeonConstants.NumberOfMonsters; MonsterGenerator monsterGenerator = new MonsterGenerator(dungeonConstants); for (int i = 0; i < enemies; i++) { MonsterHolder monsterHolder = monsterGenerator.CreateMonsters(); monsterHolder.Deactivate(); dungeon.AddMonster(monsterHolder); } }
public async Task CreateMonsters_AlwaysMaxRarityRolls_MaxHighRarityMonstersAsync() { var schemeDict = new Dictionary <string, IMonsterScheme> { { "regular", CreateMonsterScheme("regular") }, { "rare", CreateMonsterScheme("rare") }, { "champion", CreateMonsterScheme("champion") } }; var schemeServiceMock = new Mock <ISchemeService>(); schemeServiceMock.Setup(x => x.GetScheme <IMonsterScheme>(It.IsAny <string>())) .Returns <string>(sid => schemeDict[sid]); var schemeService = schemeServiceMock.Object; var dice = new LinearDice(3121); var randomSourceMock = new Mock <MonsterGeneratorRandomSource>(dice).As <IMonsterGeneratorRandomSource>(); randomSourceMock.CallBase = true; randomSourceMock.Setup(x => x.RollRarity()).Returns(2); randomSourceMock.Setup(x => x.RollRegionCount(It.IsAny <int>(), It.IsAny <int>())).Returns(20); var randomSource = randomSourceMock.Object; var actorList = new List <IActor>(); var actorManagerMock = new Mock <IActorManager>(); actorManagerMock.Setup(x => x.Add(It.IsAny <IActor>())).Callback <IActor>(a => actorList.Add(a)); actorManagerMock.SetupGet(x => x.Items).Returns(actorList); var actorManager = actorManagerMock.Object; var propContainerManagerMock = new Mock <IStaticObjectManager>(); var propContainerManager = propContainerManagerMock.Object; propContainerManagerMock.SetupGet(x => x.Items).Returns(Array.Empty <IStaticObject>()); var taskSourceMock = new Mock <IActorTaskSource <ISectorTaskSourceContext> >(); var taskSource = taskSourceMock.Object; var monsterFactory = new MonsterPersonFactory(); var monsterGenerator = new MonsterGenerator(schemeService, monsterFactory, randomSource, taskSource); var map = await SquareMapFactory.CreateAsync(20).ConfigureAwait(false); var sectorMock = new Mock <ISector>(); sectorMock.SetupGet(x => x.ActorManager).Returns(actorManager); sectorMock.SetupGet(x => x.StaticObjectManager).Returns(propContainerManager); sectorMock.SetupGet(x => x.Map).Returns(map); var sector = sectorMock.Object; var monsterRegions = new List <MapRegion> { new MapRegion(1, map.Nodes.ToArray()) }; var sectorScheme = new TestSectorSubScheme { RegularMonsterSids = new[] { "regular" }, RareMonsterSids = new[] { "rare" }, ChampionMonsterSids = new[] { "champion" } }; // ACT monsterGenerator.CreateMonsters(sector, monsterRegions, sectorScheme); // ASSERT var championCount = actorManager.Items.Count(x => ((MonsterPerson)x.Person).Scheme.Sid == "champion"); championCount.Should().Be(1); var rareCount = actorManager.Items.Count(x => ((MonsterPerson)x.Person).Scheme.Sid == "rare"); rareCount.Should().Be(10); }
public async System.Threading.Tasks.Task CreateMonsters_AlwaysMaxRarityRolls_MaxHighRarityMonstersAsync() { var schemeDict = new Dictionary <string, IMonsterScheme> { { "regular", CreateMonsterScheme("regular") }, { "rare", CreateMonsterScheme("rare") }, { "champion", CreateMonsterScheme("champion") } }; var schemeServiceMock = new Mock <ISchemeService>(); schemeServiceMock.Setup(x => x.GetScheme <IMonsterScheme>(It.IsAny <string>())) .Returns <string>(sid => schemeDict[sid]); var schemeService = schemeServiceMock.Object; var dice = new Dice(3121); var randomSourceMock = new Mock <MonsterGeneratorRandomSource>(dice).As <IMonsterGeneratorRandomSource>(); randomSourceMock.CallBase = true; randomSourceMock.Setup(x => x.RollRarity()).Returns(2); randomSourceMock.Setup(x => x.RollRegionCount(It.IsAny <int>())).Returns(20); var randomSource = randomSourceMock.Object; var actorList = new List <IActor>(); var actorManagerMock = new Mock <IActorManager>(); actorManagerMock.Setup(x => x.Add(It.IsAny <IActor>())).Callback <IActor>(a => actorList.Add(a)); actorManagerMock.SetupGet(x => x.Items).Returns(actorList); var actorManager = actorManagerMock.Object; var monsterGenerator = new MonsterGenerator(schemeService, randomSource, actorManager); var map = await SquareMapFactory.CreateAsync(20); var sectorMock = new Mock <ISector>(); var patrolRoutes = new Dictionary <IActor, IPatrolRoute>(); sectorMock.SetupGet(x => x.PatrolRoutes).Returns(patrolRoutes); var sector = sectorMock.Object; var monsterRegions = new List <MapRegion> { new MapRegion(1, map.Nodes.ToArray()) }; var sectorScheme = new TestSectorSubScheme { RegularMonsterSids = new[] { "regular" }, RareMonsterSids = new[] { "rare" }, ChampionMonsterSids = new[] { "champion" } }; // ACT monsterGenerator.CreateMonsters(sector, new Mock <IBotPlayer>().Object, monsterRegions, sectorScheme); // ASSERT var championCount = actorManager.Items.Count(x => ((MonsterPerson)x.Person).Scheme.Sid == "champion"); championCount.Should().Be(1); var rareCount = actorManager.Items.Count(x => ((MonsterPerson)x.Person).Scheme.Sid == "rare"); rareCount.Should().Be(10); }