public override string DraggedIntoMinionSlot(PositionVO _target)
 {
     CardTargetStrategy _cardTargetStrategy = new SummonMinionUsingMagicCard("CardSkeleton");
     if (_cardTargetStrategy.Excute(this, _target) == "Summon Minion Success")
     {
         return "Success";
     }
     else
     {
         return "Use Magic Failed";
     }
 }
 public override string DraggedIntoMinionSlot(PositionVO _target)
 {
     CardTargetStrategy _cardTargetStrategy = new SummonMinionUsingMagicCard("CardSkeletonArcher");
     if (_cardTargetStrategy.Excute(this, _target) == "Summon Minion Success")
     {
         return "Success";
     }
     else
     {
         return "Failed";
     }
     //return "Can only summon minion in your minion slot";
 }
 public override string WhenDraggedIntoMinionSlot(PositionVO _target)
 {
     CardTargetStrategy _cardTargetStrategy = new SummonMinionUsingMagicCard("CardUndeadSoldier");
     if (_cardTargetStrategy.Excute(this, _target) == "Summon Minion Success")
     {
         GameManager.Instance.GetPlayerByType(PlayerType).CostEnergy(energyName, EnergyCost);
         return "Use Magic Success";
     }
     else
     {
         return "Use Magic Failed";
     }
     //return "Can only summon minion in your minion slot";
 }
 public override string Pressed()
 {
     int skeletonNum = 3;
     int archerNum = 2;
     int magicianNum = 1;
     CardTargetStrategy summonSkeleton = new SummonMinionUsingMagicCard("CardSkeleton");
     CardTargetStrategy summonSkeletonArcher = new SummonMinionUsingMagicCard("CardSkeletonArcher");
     CardTargetStrategy summonSkeletonMagician = new SummonMinionUsingMagicCard("CardSkeletonMagician");
     List<PositionVO> emptyPositions = MinionController.Instance.GetEmptyPositionsByPlayerType(PlayerType);
     if (emptyPositions.Count == 0)
     {
         return "Use Magic Failed";
     }
     foreach (PositionVO position in emptyPositions)
     {
         if (skeletonNum != 0)
         {
             if (position.MinionSlotPosition == MinionSlotPosition.Foreward)
             {
                 summonSkeleton.Excute(this, position);
                 --skeletonNum;
                 continue;
             }
         }
         if (archerNum != 0)
         {
             summonSkeletonArcher.Excute(this, position);
             --archerNum;
             continue;
         }
         if (magicianNum != 0)
         {
             if (position.MinionSlotPosition == MinionSlotPosition.Backward)
             {
                 summonSkeletonMagician.Excute(this, position);
                 --magicianNum;
                 continue;
             }
         }
     }
     return "Success";
 }
 public override string Pressed()
 {
     List<PositionVO> emptyPositions = MinionController.Instance.GetEmptyPositionsByPlayerType(PlayerType);
     if(emptyPositions.Count == 0)
     {
         return "Use Magic Failed";
     }
     for (int i = 0; i < 2; ++i)
     {
         int randomInt = Random.Range(0, 3);
         string summonName = "";
         PositionVO targetPosition = new PositionVO();
         switch (randomInt)
         {
             case 0:
                 summonName = "CardSkeleton";
                 emptyPositions = MinionController.Instance.GetEmptyPositionsByLine(PlayerType, MinionSlotPosition.Foreward);
                 if (emptyPositions.Count != 0)
                 {
                     randomInt = Random.Range(0, emptyPositions.Count);
                     targetPosition = emptyPositions[randomInt];
                 }
                 else
                 {
                     emptyPositions = MinionController.Instance.GetEmptyPositionsByLine(PlayerType, MinionSlotPosition.Backward);
                     if (emptyPositions.Count == 0)
                         continue;
                     randomInt = Random.Range(0, emptyPositions.Count);
                     targetPosition = emptyPositions[randomInt];
                 }
                 break;
             case 1:
                 summonName = "CardSkeletonArcher";
                 emptyPositions = MinionController.Instance.GetEmptyPositionsByLine(PlayerType, MinionSlotPosition.Backward);
                 if (emptyPositions.Count != 0)
                 {
                     randomInt = Random.Range(0, emptyPositions.Count);
                     targetPosition = emptyPositions[randomInt];
                 }
                 else
                 {
                     emptyPositions = MinionController.Instance.GetEmptyPositionsByLine(PlayerType, MinionSlotPosition.Foreward);
                     if (emptyPositions.Count == 0)
                         continue;
                     randomInt = Random.Range(0, emptyPositions.Count);
                     targetPosition = emptyPositions[randomInt];
                 }
                 break;
             default:
                 summonName = "CardSkeletonMagician";
                 emptyPositions = MinionController.Instance.GetEmptyPositionsByLine(PlayerType, MinionSlotPosition.Backward);
                 if (emptyPositions.Count != 0)
                 {
                     randomInt = Random.Range(0, emptyPositions.Count);
                     targetPosition = emptyPositions[randomInt];
                 }
                 else
                 {
                     emptyPositions = MinionController.Instance.GetEmptyPositionsByLine(PlayerType, MinionSlotPosition.Foreward);
                     if (emptyPositions.Count == 0)
                         continue;
                     randomInt = Random.Range(0, emptyPositions.Count);
                     targetPosition = emptyPositions[randomInt];
                 }
                 break;
         }
         CardTargetStrategy summonSkeleton = new SummonMinionUsingMagicCard(summonName);
         summonSkeleton.Excute(this, targetPosition);
     }
     return "Success";
 }