public void RoundEngine_GetNextPlayerInList_Mike_Should_Return_Doug() { Engine.MonsterList.Clear(); // Arrange var CharacterPlayerMike = new PlayerInfoModel( new BaseCharacter { Speed = 200, Level = 1, CurrHealth = 1, //ExperienceTotal = 1, Name = "Mike", ListOrder = 1, }); var CharacterPlayerDoug = new PlayerInfoModel( new BaseCharacter { Speed = 20, Level = 1, CurrHealth = 1, //ExperienceTotal = 1, Name = "Doug", ListOrder = 2, }); var CharacterPlayerSue = new PlayerInfoModel( new BaseCharacter { Speed = 2, Level = 1, CurrHealth = 1, //ExperienceTotal = 1, Name = "Sue", ListOrder = 3, }); var MonsterPlayer = new PlayerInfoModel( new BaseMonster { Speed = 1, Level = 1, CurrHealth = 1, //ExperienceTotal = 1, Name = "Monster", ListOrder = 4, }); // Add each model here to warm up and load it. Game.Helpers.DataSetsHelper.WarmUp(); Engine.CharacterList.Clear(); Engine.CharacterList.Add(CharacterPlayerMike); Engine.CharacterList.Add(CharacterPlayerDoug); Engine.CharacterList.Add(CharacterPlayerSue); Engine.MonsterList.Clear(); Engine.MonsterList.Add(MonsterPlayer); // Make the List Engine.PlayerList = Engine.MakePlayerList(); // Set Mike as the Player Engine.CurrentAttacker = CharacterPlayerMike; // Act var result = Engine.GetNextPlayerInList(); // Reset // Assert Assert.AreEqual("Doug", result.Name); }
// If UI is enabled, there will be popups that guide you through battle as you click the next turn button // If not, it will drop you straight to the result page public async void BattleEngineStart_Command(object sender, EventArgs e) { #if !EnableUI do { // If the round is over start a new one... if (RoundResult == RoundEnum.NewRound) { myBattleEngine.NewRound(); } PlayerInfo currentPlayer = myBattleEngine.GetNextPlayerInList(); // Check if character or monster if (currentPlayer.PlayerType == PlayerTypeEnum.Character) { string id = null; RoundResult = myBattleEngine.RoundNextTurn(id); } // else monster turn else { RoundResult = myBattleEngine.RoundNextTurn(); } Debug.WriteLine(myBattleEngine.TurnMessage); } while (RoundResult != RoundEnum.GameOver); #endif #if EnableUI if (RoundResult != RoundEnum.GameOver) { // If the round is over start a new one... if (RoundResult == RoundEnum.NewRound) { myBattleEngine.NewRound(); var answer = await DisplayAlert("New Round", "Begin", "Start", "Cancel"); if (answer) { await Navigation.PushAsync(new ManualBattlePage(myBattleEngine, RoundResult)); return; } } PlayerInfo currentPlayer = myBattleEngine.GetNextPlayerInList(); // Check if character or monster if (currentPlayer.PlayerType == PlayerTypeEnum.Character) { string id = null; var dataset = myBattleEngine.MonsterList.Where(a => a.Alive).ToList(); string[] names = new string[dataset.Count]; string[] IDs = new string[dataset.Count]; int ctr = 0; foreach (var data in dataset) { names[ctr] = data.Name; IDs[ctr] = data.Guid; ctr++; } var action = await DisplayActionSheet("Select Monster", null, null, names); ctr = 0; foreach (var data in dataset) { if (action == data.Name) { id = IDs[ctr]; break; } ctr++; } RoundResult = myBattleEngine.RoundNextTurn(id); } // else monster turn else { RoundResult = myBattleEngine.RoundNextTurn(); } var response = await DisplayAlert("Turn Result", myBattleEngine.TurnMessage, "Continue", "Quit"); if (!response) { await Navigation.PushAsync(new OpeningPage()); } } #endif if (RoundResult == RoundEnum.GameOver) { myBattleEngine.EndBattle(); string result = "Battle Ended" + " Total Experience :" + myBattleEngine.BattleScore.ExperienceGainedTotal + " Rounds :" + myBattleEngine.BattleScore.RoundCount + " Turns :" + myBattleEngine.BattleScore.TurnCount + " Monster Kills :" + myBattleEngine.BattleScore.MonstersKilledList; var answer = await DisplayAlert("Game Result", result, "Set Name", "Restart"); if (answer) { // Link to enter name await Navigation.PushAsync(new EditScorePage(new ScoreDetailViewModel(myBattleEngine.BattleScore))); } else { await Navigation.PushAsync(new OpeningPage()); } } }
public void RoundEngine_GetNextEntityInList_Mike_Should_Return_Doug() { // Arrange var CharacterPlayerMike = new CharacterModel { Speed = 200, Level = 1, CurrentHealth = 1, TotalExperience = 1, Name = "Mike" }; var CharacterPlayerDoug = new CharacterModel { Speed = 20, Level = 1, CurrentHealth = 1, TotalExperience = 1, Name = "Doug" }; var CharacterPlayerSue = new CharacterModel { Speed = 2, Level = 1, CurrentHealth = 1, TotalExperience = 1, Name = "Sue" }; var MonsterPlayer = new MonsterModel { Speed = 1, Level = 1, CurrentHealth = 1, ExperienceGiven = 1, Name = "Monster" }; // Add each model here to warm up and load it. Game.Helpers.DataSetsHelper.WarmUp(); Engine.CharacterList.Clear(); Engine.CharacterList.Add(CharacterPlayerMike); Engine.CharacterList.Add(CharacterPlayerDoug); Engine.CharacterList.Add(CharacterPlayerSue); Engine.MonsterList.Clear(); Engine.MonsterList.Add(MonsterPlayer); // Make the List Engine.EntityList = Engine.MakeEntityList(); // List is Mike, Doug, Monster, Sue Engine.CurrentEntity = new BattleEntityModel(CharacterPlayerMike); // Act var result = Engine.GetNextPlayerInList(); // Reset // Assert Assert.AreEqual("Doug", result.Name); }