public void TestBattlePhaseWithoutBonuses()
        {
            Player       DummyPlayer1      = new Player("Player 1", "Human", true, false, 0, new Card[0]);
            Player       DummyPlayer2      = new Player("Player 2", "Human", true, false, 0, new Card[0]);
            CreatureCard DummyInvaderCard  = new CreatureCard(40, 20);
            CreatureCard DummyDefenderCard = new CreatureCard(40, 20);

            SorcererStreetMap DummyMap = CreateDummyMap();

            TerrainSorcererStreet DummyTerrain = DummyMap.GetTerrain(DummyPlayer2.GamePiece);

            DummyTerrain.DefendingCreature = DummyDefenderCard;
            DummyTerrain.Owner             = DummyPlayer2;

            ActionPanelBattleStartPhase BattleStartPhase = new ActionPanelBattleStartPhase(DummyMap, DummyPlayer1, DummyInvaderCard);

            BattleStartPhase.Load();

            ActionPanelBattleAttackPhase BattleAttackPhase = new ActionPanelBattleAttackPhase(DummyMap.ListActionMenuChoice, DummyMap);

            BattleAttackPhase.OnSelect();

            Assert.AreEqual(DummyInvaderCard, BattleAttackPhase.FirstAttacker);
            Assert.AreEqual(DummyDefenderCard, BattleAttackPhase.SecondAttacker);

            BattleAttackPhase.ExecuteFirstAttack();

            Assert.AreEqual(40, BattleAttackPhase.FirstAttacker.CurrentHP);
            Assert.AreEqual(20, BattleAttackPhase.SecondAttacker.CurrentHP);

            BattleAttackPhase.ExecuteSecondAttack();

            Assert.AreEqual(20, BattleAttackPhase.FirstAttacker.CurrentHP);
            Assert.AreEqual(20, BattleAttackPhase.SecondAttacker.CurrentHP);
        }
        public void TestBattlePhaseLoad()
        {
            Player       DummyPlayer1      = new Player("Player 1", "Human", true, false, 0, new Card[0]);
            Player       DummyPlayer2      = new Player("Player 2", "Human", true, false, 0, new Card[0]);
            CreatureCard DummyInvaderCard  = new CreatureCard(40, 20);
            CreatureCard DummyDefenderCard = new CreatureCard(40, 20);

            SorcererStreetMap DummyMap = CreateDummyMap();

            TerrainSorcererStreet DummyTerrain = DummyMap.GetTerrain(DummyPlayer2.GamePiece);

            DummyTerrain.DefendingCreature = DummyDefenderCard;
            DummyTerrain.Owner             = DummyPlayer2;

            ActionPanelBattleStartPhase BattleStartPhase = new ActionPanelBattleStartPhase(DummyMap, DummyPlayer1, DummyInvaderCard);

            BattleStartPhase.Load();

            Assert.AreEqual(DummyInvaderCard, DummyMap.GlobalSorcererStreetBattleContext.Invader);
            Assert.AreEqual(DummyDefenderCard, DummyMap.GlobalSorcererStreetBattleContext.Defender);

            Assert.AreEqual(DummyInvaderCard.CurrentHP, DummyMap.GlobalSorcererStreetBattleContext.InvaderFinalHP);
            Assert.AreEqual(DummyDefenderCard.CurrentHP, DummyMap.GlobalSorcererStreetBattleContext.DefenderFinalHP);

            Assert.AreEqual(DummyInvaderCard.CurrentST, DummyMap.GlobalSorcererStreetBattleContext.InvaderFinalST);
            Assert.AreEqual(DummyDefenderCard.CurrentST, DummyMap.GlobalSorcererStreetBattleContext.DefenderFinalST);
        }
        public void TestCreatureModifierPhaseSkillActivation()
        {
            Player       DummyPlayer1      = new Player("Player 1", "Human", true, false, 0, new Card[0]);
            Player       DummyPlayer2      = new Player("Player 2", "Human", true, false, 0, new Card[0]);
            CreatureCard DummyInvaderCard  = new CreatureCard(40, 20);
            CreatureCard DummyDefenderCard = new CreatureCard(40, 20);

            SorcererStreetMap          DummyMap     = CreateDummyMap();
            SorcererStreetBattleParams BattleParams = new SorcererStreetBattleParams(DummyMap.GlobalSorcererStreetBattleContext);

            TerrainSorcererStreet DummyTerrain = DummyMap.GetTerrain(DummyPlayer2.GamePiece);

            DummyTerrain.DefendingCreature = DummyDefenderCard;
            DummyTerrain.Owner             = DummyPlayer2;

            ActionPanelBattleStartPhase BattleStartPhase = new ActionPanelBattleStartPhase(DummyMap, 0, DummyInvaderCard);

            BattleStartPhase.Load();

            BaseEffect               SkillEffect = new IncreaseHPEffect(BattleParams);
            BaseSkillRequirement     Requirement = new SorcererStreetCreaturePhaseRequirement(DummyMap.GlobalSorcererStreetBattleContext);
            AutomaticSkillTargetType Target      = new SorcererStreetSelfTargetType(DummyMap.GlobalSorcererStreetBattleContext);

            BaseAutomaticSkill HPIncreaseSkill = new BaseAutomaticSkill();

            HPIncreaseSkill.Name = "Dummy";
            HPIncreaseSkill.ListSkillLevel.Add(new BaseSkillLevel());
            HPIncreaseSkill.CurrentLevel = 1;

            BaseSkillActivation NewActivation = new BaseSkillActivation();

            HPIncreaseSkill.CurrentSkillLevel.ListActivation.Add(NewActivation);

            NewActivation.ListRequirement.Add(Requirement);

            NewActivation.ListEffect.Add(SkillEffect);
            NewActivation.ListEffectTargetReal.Add(new List <AutomaticSkillTargetType>());
            NewActivation.ListEffectTargetReal[0].Add(Target);

            DummyInvaderCard.ListSkill.Add(HPIncreaseSkill);

            ActionPanelBattleCreatureModifierPhase CreaturePhase = new ActionPanelBattleCreatureModifierPhase(DummyMap.ListActionMenuChoice, DummyMap);

            CreaturePhase.OnSelect();

            Assert.AreEqual(DummyInvaderCard.CurrentHP + 30, DummyMap.GlobalSorcererStreetBattleContext.InvaderFinalHP);
        }
 public Terrain GetTerrain(int X, int Y, int LayerIndex)
 {
     return(ActiveMap.GetTerrain(X, Y, LayerIndex));
 }