/// <summary> /// 随从进场位置 /// </summary> /// <param name="game"></param> /// <returns></returns> private int GetMinionPos(BattleFieldInfo battleInfo) { var frm = new PutMinion(battleInfo); frm.ShowDialog(); return(frm.MinionPos); }
public void CorrectlyGeneratesBattlefield_ShadeGroupingAndBellTerrainConfiguration() { const int fighterLevel = 1; FighterGroupingConfiguration groupingConfig = new ShadeGroupingConfiguration(3, fighterLevel); BellType[] bellTypes = { BellType.Copper, BellType.Silver }; TerrainInteractablesConfiguration terrainConfiguration = new BellTerrainConfiguration(bellTypes); BattlefieldConfiguration config = new BattlefieldConfiguration(groupingConfig, terrainConfiguration); BattleFieldInfo returnedBattleFieldInfo = _factory.GetBattleFieldSetUp(config); List <IFighter> fighters = returnedBattleFieldInfo.EnemyTeam.Fighters; Assert.AreEqual(3, fighters.Count); Assert.True(fighters.TrueForAll(f => f is Shade), "the returned fighters should be Shades!"); Assert.True(fighters.TrueForAll(f => f.Level == fighterLevel), $"the returned fighters should all be level {fighterLevel}!"); List <TerrainInteractable> terrainInteractables = returnedBattleFieldInfo.TerrainInteractables.ToList(); Assert.AreEqual(2, terrainInteractables.Count); Assert.True(terrainInteractables.TrueForAll(b => b is Bell)); List <Bell> bells = terrainInteractables.OfType <Bell>().ToList(); for (var i = 0; i < bellTypes.Length; ++i) { Assert.AreEqual(bellTypes[i], bells[i].BellType); } }
public BattleFieldInfo GetBattleFieldInfo(SubRegion region, int round) { BattleFieldInfo generatedBattleFieldInfo = null; if (round < region.NumberRegularBattles) { BattlefieldConfiguration battlefieldConfig = region.ScriptedBattlefieldConfigurations.FirstOrDefault(script => script.BattleIndex == round)? .BattlefieldConfig; if (battlefieldConfig == null) { Team generatedTeam = _teamFactory.GetTeam(region); generatedBattleFieldInfo = new BattleFieldInfo(generatedTeam, new List <TerrainInteractable>()); } else { generatedBattleFieldInfo = _battlefieldFactory.GetBattleFieldSetUp(battlefieldConfig); } } else { generatedBattleFieldInfo = _battlefieldFactory.GetBattleFieldSetUp(region.BossConfiguration); } return(generatedBattleFieldInfo); }
public void CorrectlyGeneratesEmptyListOfTerrainInteractables_FromNullInput() { TeamConfiguration teamInfo = new TeamConfiguration(new EnemyConfiguration(FighterType.Goblin, 1), new EnemyConfiguration(FighterType.Fairy, 1)); BattlefieldConfiguration battlefieldConfig = new BattlefieldConfiguration(teamInfo); BattleFieldInfo returnedBattleFieldInfo = _factory.GetBattleFieldSetUp(battlefieldConfig); Assert.NotNull(returnedBattleFieldInfo.TerrainInteractables); Assert.AreEqual(0, returnedBattleFieldInfo.TerrainInteractables.ToList().Count); }
private BattleEndStatus BattleThroughSubRegion(SubRegion subRegion, BattleManager manager, Team playerTeam) { bool continuer = true; BattleEndStatus battleEndStatus = BattleEndStatus.None; int numberRegularBattles = subRegion.NumberRegularBattles; for (var i = 0; i <= numberRegularBattles && continuer; ++i) { //var enemyTeam = GetEnemies(subRegion, i); BattleFieldInfo battlefiendInfo = GetBattleFieldInfo(subRegion, i); BattleManagerBattleConfiguration config = GetBattleConfiguration(subRegion, i); if (i == numberRegularBattles) { PrintBossIntro(subRegion.AreaId); } battleEndStatus = manager.Battle(playerTeam, battlefiendInfo.EnemyTeam, battlefiendInfo.TerrainInteractables.ToList(), config); if (battleEndStatus != BattleEndStatus.Victory) { continuer = false; } else { foreach (IFighter player in playerTeam.Fighters) { if (!player.IsAlive()) { player.Revive(1); } player.Heal(player.MaxHealth); player.RestoreMana(player.MaxMana); } _output.WriteLine("HP and Mana fully restored!"); _input.WaitAndClear(_output); } } return(battleEndStatus); }
public void CorrectlyGeneratesBattlefield_TeamConfiguration_NoTerrainConfiguration() { TeamConfiguration teamInfo = new TeamConfiguration(new EnemyConfiguration(FighterType.Goblin, 1), new EnemyConfiguration(FighterType.Fairy, 1)); BattlefieldConfiguration battlefieldConfig = new BattlefieldConfiguration(teamInfo); BattleFieldInfo returnedBattleFieldInfo = _factory.GetBattleFieldSetUp(battlefieldConfig); List <IFighter> fighters = returnedBattleFieldInfo.EnemyTeam.Fighters; Assert.AreEqual(2, fighters.Count); IFighter firstFighter = fighters[0]; Assert.True(firstFighter is Goblin, $"first fighter should be a Goblin but was {firstFighter.GetType()}"); Assert.True(firstFighter.Level == 1, "first fighter should be level 1"); IFighter secondFighter = fighters[1]; Assert.True(secondFighter is Fairy, $"second fighter should be a fairy but was {secondFighter.GetType()}"); Assert.True(secondFighter.Level == 1, "second fighter should be level 1"); }
public PutMinion(BattleFieldInfo _playerInfo) { InitializeComponent(); playerInfo = _playerInfo; }