Example #1
0
        public void Setup()
        {
            _input         = new MockInput();
            _output        = new MockOutput();
            _chanceService = new MockChanceService();
            _menuManager   = new TestMenuManager(_input, _output);
            _battleManager = new TestBattleManager(_chanceService, _input, _output);

            TestFighterFactory.SetChanceService(_chanceService);

            _humanFighter = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            _humanTeam    = new Team(_menuManager, _humanFighter);

            _level1ShieldGuy = (ShieldGuy)FighterFactory.GetFighter(FighterType.ShieldGuy, 1);
            _ally1           = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1);
            _ally2           = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1);
            _shieldGuyTeam   = new Team(_menuManager, _level1ShieldGuy, _ally1, _ally2);
        }
Example #2
0
        public static IFighter GetFighter(FighterType type,
                                          int level,
                                          string name               = null,
                                          MagicType magicType       = MagicType.None,
                                          FighterClass fighterClass = FighterClass.None,
                                          IMenuFactory menuFactory  = null)
        {
            IFighter ret;

            switch (type)
            {
            case FighterType.Goblin:
                ret = new Goblin(level, ChanceService);
                break;

            case FighterType.Golem:     //high defense, low attack, low speed, low health
                ret = new Golem(level, ChanceService);
                break;

            case FighterType.Ogre:     //high attack, low speed, low defense
                ret = new Ogre(level, ChanceService);
                break;

            case FighterType.Fairy:     //high speed, high evade, low attack, low defense
                ret = new Fairy(level, ChanceService);
                break;

            case FighterType.HumanControlledPlayer:
                ret = new HumanFighter(name ?? "Player", level);
                GodRelationshipManager?.InitializeForFighter((HumanFighter)ret);
                break;

            case FighterType.HumanControlledEnemy:
                ret = new HumanControlledEnemyFighter(name ?? "Player", Input, Output, menuFactory ?? Globals.MenuFactory);
                break;

            case FighterType.MegaChicken:
                ret = new MegaChicken(level, ChanceService);
                break;

            case FighterType.Egg:
                if (magicType == MagicType.None)
                {
                    int magicIndex = ChanceService.WhichEventOccurs(Globals.EggMagicTypes.Length);
                    magicType = Globals.EggMagicTypes[magicIndex];
                }
                ret = new Egg(magicType);
                break;

            case FighterType.DancerBoss:
                ret = new DancerBoss(fighterClass, level, ChanceService);
                break;

            case FighterType.Zombie:
                ret = new Zombie(level, ChanceService);
                break;

            case FighterType.Warrior:
                ret = new Warrior(level, ChanceService);
                break;

            case FighterType.ShieldGuy:
                ret = new ShieldGuy(level, ChanceService);
                break;

            case FighterType.Barbarian:
                ret = new Barbarian(level, ChanceService);
                break;

            case FighterType.Shade:
                ret = GetShade(level, name);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type,
                                                      "The specified type is invalid for FighterFactory to initialize!");
            }

            return(ret);
        }