public void SetUp()
        {
            _fighter = (HumanFighter)FighterFactory.GetFighter(FighterType.HumanControlledPlayer, 1);

            _output  = new MockOutput();
            _printer = new EventHandlerPrinter(_output);

            _printer.Subscribe(_fighter);
        }
示例#2
0
        static void Main()
        {
            FighterFactory.SetGodRelationshipManager(Globals.GodRelationshipManager);
            EventHandlerPrinter printer = new EventHandlerPrinter(Globals.Output);

            const string testBattleOptionText = "Test Battle ('test')";
            const string campaignOptionText   = "Play the \"Campaign\" mode ('campaign')";
            //const string demoOptionText = "Play the \"Demo\" mode (fewer battles per region)";

            List <MenuAction> menuActions = new List <MenuAction>
            {
                new MenuAction(testBattleOptionText, "test"),
                new MenuAction(campaignOptionText, "campaign"),
                new MenuAction("exit")
            };

            Menu selectGameplayModeMenu = new Menu(false, false, false, "What mode would you like to play?", null,
                                                   null, menuActions, Globals.Input, Globals.Output);

            bool continuer = true;

            RegionManager regionManager;

            while (continuer)
            {
                Globals.Output.ClearScreen();
                regionManager = Globals.RegionManager;

                selectGameplayModeMenu.Build(null, null, null, null);
                MenuSelection gameplayModeSelection = selectGameplayModeMenu.GetInput();

                switch (gameplayModeSelection.Description)
                {
                case testBattleOptionText:
                    Foo();
                    break;

                case campaignOptionText:
                    TutorialScreens();

                    SetupPlayers(out var playerOne, out var playerTwo, printer);

                    MenuManager   menuManager = new MenuManager(Globals.Input, Globals.Output, Globals.MenuFactory);
                    var           playerTeam  = new Team(menuManager, playerOne, playerTwo);
                    BattleManager manager     = new BattleManager(Globals.ChanceService, Globals.Input, Globals.Output);

                    Globals.RegionManager.Battle(manager, playerTeam);

                    break;

                case "exit":
                    continuer = false;
                    break;
                }
            }
        }
        public void CorrectlySubscribesToMultipleFighters()
        {
            _output = new MockOutput();
            EventHandlerPrinter printer = new EventHandlerPrinter(_output);

            HumanFighter fighter2 = (HumanFighter)FighterFactory.GetFighter(FighterType.HumanControlledPlayer, 1);
            HumanFighter fighter3 = (HumanFighter)FighterFactory.GetFighter(FighterType.HumanControlledPlayer, 1);

            printer.Subscribe(_fighter, fighter2, fighter3);

            StatBonusAppliedEventArgs e = new StatBonusAppliedEventArgs(StatType.Defense, 2, false);

            _fighter.OnStatBonusApplied(e);
            fighter2.OnStatBonusApplied(e);
            fighter3.OnStatBonusApplied(e);

            MockOutputMessage[] outputs = _output.GetOutputs();

            Assert.AreEqual(3, outputs.Length);
        }
示例#4
0
        /// <summary>
        /// Handles player names and personality quiz stuff
        /// </summary>
        /// <param name="playerOne"></param>
        /// <param name="playerTwo"></param>
        /// <param name="printer"></param>
        private static void SetupPlayers(out HumanFighter playerOne, out HumanFighter playerTwo, EventHandlerPrinter printer)
        {
            string playerOneName = GetName(1);
            string playerTwoName = GetName(2, playerOneName);

            playerOne = (HumanFighter)FighterFactory.GetFighter(FighterType.HumanControlledPlayer, 1, playerOneName);
            playerTwo = (HumanFighter)FighterFactory.GetFighter(FighterType.HumanControlledPlayer, 1, playerTwoName);
            Globals.Output.ClearScreen();

            printer.Subscribe(playerOne, playerTwo);

            Globals.DecisionManager.AssignNameBonuses(playerOne, playerTwo);

            ConfirmationMenu takePersonalityQuizConfirmationMenu = new ConfirmationMenu(false, "To better get to know your characters, would you like to fill out a short personality questionaire?\n(if you decline, the answers will be asigned randomly)\n", Globals.Input, Globals.Output);
            MenuSelection    takePersonalityQuizSelection        = takePersonalityQuizConfirmationMenu.GetInput();

            Globals.DecisionManager.PersonalityQuiz(playerOne, playerTwo, takePersonalityQuizSelection.Description == "no", Globals.ChanceService);
        }
 public void TearDown()
 {
     _fighter = null;
     _output  = null;
     _printer = null;
 }