Ejemplo n.º 1
0
 private bool HandleSelectCard(int area, int rank, bool isMy)
 {
     selectGroup.AddCard(GetCard(area, rank, isMy));
     curSelectNum++;
     if (curMaxSelectNum == curSelectNum)
     {
         eventSys.SendEvent(DuelEvent.duelEvent_RecordOperate, RecordEvent.recordEvent_SelectFieldCard, selectGroup);
         if (duel.IsNetWork && !isMySelect)
         {
             WaitTip.GetInstance().HideWaitTip();
         }
         EndSelect();
         Duel.GetInstance().SetNotSelect();
         curDele(selectGroup);
     }
     return(true);
 }
Ejemplo n.º 2
0
    private Group GetCanReleaseGroup(IDuel duel, Card card)
    {
        Group resultG   = new Group();
        Group g         = duel.GetIncludeNameCardFromArea("", false, card.controller, ComVal.CardType_Monster_Synchro, ComVal.Area_Monster);
        Group mainDeckG = duel.GetIncludeNameCardFromArea("爆裂体", false, card.controller, ComVal.cardType_Monster, ComVal.Area_MainDeck, Fiter);

        foreach (var item in g.cardList)
        {
            foreach (var mainDeckCard in mainDeckG.cardList)
            {
                if (mainDeckCard.cardName.Contains(item.cardName) && !resultG.ContainCard(item))
                {
                    resultG.AddCard(item);
                }
            }
        }
        return(resultG);
    }
Ejemplo n.º 3
0
        public MeldMessage(byte [] b, GameRules rules) : base(b)
        {
            Validate(rules);
            _phazeNumber = (int)msg[1];
            Group g = null;
            Card  c;
            int   gk, gcr, gc;
            int   ptr = 3;

            _groups = new List <Group>((int)msg[2]);
            for (int ctr = 0; ctr < (int)msg[2]; ctr++)
            {
                gk  = (int)msg[ptr];
                gcr = (int)msg[ptr + 1];
                gc  = (int)msg[ptr + 2];

                g = Group.Create((GroupType)gk, gcr);

                ptr += 3;

                for (int ctr2 = 0; ctr2 < gc; ctr2++)
                {
                    int id = (int)msg[ptr];
                    id <<= 8;
                    id  += (int)msg[ptr + 1];
                    int col  = (int)msg[ptr + 2];
                    int num  = (int)msg[ptr + 3];
                    int wild = (int)msg[ptr + 4];

                    if (wild == 1)
                    {
                        c        = new Card(CardNumber.Wild, (CardColor)col, id);
                        c.Number = (CardNumber)num;
                    }
                    else
                    {
                        c = new Card((CardNumber)num, (CardColor)col, id);
                    }
                    g.AddCard(c);
                    ptr += 5;
                }
                _groups.Add(g);
            }
        }
Ejemplo n.º 4
0
    private static Group GetTarget(IDuel duel, Card card)
    {
        Group deckG  = duel.GetIncludeNameCardFromArea(ComStr.KeyWord_SixSamurai, false, card.controller, ComVal.cardType_Monster, ComVal.Area_MainDeck);
        Group fieldG = duel.GetIncludeNameCardFromArea(ComStr.KeyWord_SixSamurai, false, card.controller, ComVal.cardType_Monster, ComVal.Area_Monster);

        Group result = new Group();

        foreach (var item in deckG.cardList)
        {
            foreach (var fieldCard in fieldG.cardList)
            {
                if (!result.ContainCard(fieldCard) && fieldCard.GetCurAfk() == item.GetCurAfk() && fieldCard.cardName != item.cardName)
                {
                    result.AddCard(fieldCard);
                }
            }
        }
        return(result);
    }
Ejemplo n.º 5
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Card c = group.GetCard(0);

        if (!c.curArea.IsBind(ComVal.Area_Graveyard))
        {
            duel.FinishHandle();
            return;
        }

        normalDele d = delegate
        {
            Group g = duel.GetIncludeNameCardFromArea("", false, duel.GetOpsitePlayer(card.controller), ComVal.cardType_Monster,
                                                      ComVal.Area_Monster);
            Group targetG = new Group();
            for (int i = 0; i < g.cardList.Count; i++)
            {
                if (g.cardList[i].GetCurAfk() <= c.GetBaseAfk())
                {
                    targetG.AddCard(g.cardList[i]);
                }
            }
            if (targetG.GroupNum == 0)
            {
                duel.FinishHandle();
                return;
            }

            GroupCardSelectBack callBack = delegate(Group val)
            {
                duel.AddFinishHandle();
                duel.SendToGraveyard(ComVal.Area_Monster, val, card, ComVal.reason_EffectDestroy, effect);
            };

            duel.SelectCardFromGroup(targetG, callBack, 1, card.controller);
        };

        duel.AddDelegate(d, true);
        duel.AddCardToHandFromArea(ComVal.Area_Graveyard, c, card.controller, card, effect);
    }
Ejemplo n.º 6
0
    private Group GettargetGroup(IDuel duel, Card card)
    {
        Group g  = duel.GetIncludeNameCardFromArea(ComStr.KeyWord_Hero, false, card.ownerPlayer, ComVal.cardType_Monster, ComVal.Area_Monster, filter, false, null, null);
        Group g1 = duel.GetIncludeNameCardFromArea(ComStr.KeyWord_MaskHERO, false, card.ownerPlayer, ComVal.CardType_Monster_Fusion, ComVal.Area_Extra);

        g1 = card.ownerPlayer.GetCanSpSummonGroup(g1);
        Group g2  = new Group();
        int   val = 0;

        foreach (var item in g1.cardList)
        {
            val = ComVal.Add(item.GetCurAttribute(), val);
        }
        foreach (var item in g.cardList)
        {
            if (ComVal.isBind(item.GetCurAttribute(), val))
            {
                g2.AddCard(item);
            }
        }
        return(g2);
    }
Ejemplo n.º 7
0
    private void HandleApplyButton()
    {
        if (isMax)
        {
            if (curSelectNum < curMaxSelectNum)
            {
                return;
            }
        }

        Tweener a = rectTransform.DOScaleY(0, 0.15f);

        a.SetEase(Ease.Linear);

        a.onComplete = delegate
        {
            Group      theGroup   = new Group();
            List <int> recordList = new List <int>();
            for (int i = 0; i < choseList.Count; i++)
            {
                if (choseList[i])
                {
                    Card card = currentCardGroup.GetCard(i);
                    theGroup.AddCard(card);
                    recordList.Add(i);
                }
            }
            this.gameObject.SetActive(false);
            Duel.GetInstance().SetNotSelect();

            eventSys.SendEvent(DuelEvent.duelEvent_RecordOperate, RecordEvent.recordEvent_SelectCardGroup, recordList);

            if (curCallBack != null)
            {
                curCallBack(theGroup);
            }
        };
    }
Ejemplo n.º 8
0
 public Group GetGroupList(Group group, Card card)
 {
     if (cardFilter1(card) && cardFilter2(card))
     {
         return(group);
     }
     else if (cardFilter1(card))
     {
         Group a = new Group();
         for (int i = 0; i < group.GroupNum; i++)
         {
             Card c = group.GetCard(i);
             if (cardFilter2(c))
             {
                 a.AddCard(c);
             }
         }
         return(a);
     }
     else if (cardFilter2(card))
     {
         Group a = new Group();
         for (int i = 0; i < group.GroupNum; i++)
         {
             Card c = group.GetCard(i);
             if (cardFilter1(c))
             {
                 a.AddCard(c);
             }
         }
         return(a);
     }
     else
     {
         Debug.Log("奇怪的错误");
         return(Group.Empty());
     }
 }
Ejemplo n.º 9
0
    public void SelectCardFromGroup(Group group, GroupCardSelectBack dele, int num, bool isMy, bool isMax)
    {
        Duel.GetInstance().SetSelect();
        curDele         = dele;
        curMaxSelectNum = num;
        curSelectNum    = 0;
        curGroup        = group;
        this.isMax      = isMax;
        isInSelect      = true;
        selectGroup     = new Group();
        Group mg  = new Group();
        Group og  = new Group();
        Group mhg = new Group();
        Group ohg = new Group();

        isMySelect = isMy;

        for (int i = 0; i < group.GroupNum; i++)
        {
            Card card = group.GetCard(i);
            if (card.isMy)
            {
                if (card.curArea == ComVal.Area_Hand)
                {
                    mhg.AddCard(card);
                }
                else
                {
                    mg.AddCard(card);
                }
            }
            else
            {
                if (card.curArea == ComVal.Area_Hand)
                {
                    ohg.AddCard(card);
                }
                else
                {
                    og.AddCard(card);
                }
            }
        }
        if (mg.GroupNum != 0)
        {
            mFieldMgr.SelectFieldCard(mg, isMy);
        }
        if (og.GroupNum != 0)
        {
            oFieldMgr.SelectFieldCard(og, isMy);
        }
        if (mhg.GroupNum != 0)
        {
            mHandCardUI.SelectFieldCard(mhg.GetRankList(), isMy);
        }
        if (ohg.GroupNum != 0)
        {
            oHandCardUI.SelectFieldCard(ohg.GetRankList(), isMy);
        }

        if (duel.IsNetWork && !isMySelect)
        {
            WaitTip.GetInstance().ShowWaitTip();
        }
    }
Ejemplo n.º 10
0
 public void AddCardToExtra(string id)
 {
     Card card = CardFactroy.GenerateCard(id);
     extraDeck.AddCard(card);
 }
Ejemplo n.º 11
0
 public void AddCardToMain(Card card)
 {
     mainDeck.AddCard(card);
 }