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);
        }
Exemple #2
0
        // 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);
        }