예제 #1
0
    public bool getBDropped(CardSpider card, Vector2 pos)
    {
        int i     = 0;
        var trans = tTrans[i];

        for (var j = 0; j < trans.childCount; j++)
        {
            var rect = trans.GetChild(j);
            if (i == 0 && rect.childCount > 0)
            {
                rect = rect.GetChild(rect.childCount - 1);
            }
            bool bIn = RectTransformUtility.RectangleContainsScreenPoint((RectTransform)rect, pos);
            if (bIn == true)
            {
                //				if (card.getPos() == i && card.getRow() == j) return false;
                if (i == 0)
                {
                    return(getBSuitCard(card, j));
                }
            }
        }

        return(false);
    }
예제 #2
0
    void setBMove()
    {
        var transP = tTrans[0];

        for (int i = 0; i < IROWCOUNT; i++)
        {
            var trans = transP.GetChild(i);
            var len   = trans.childCount;
            if (len > 0)
            {
                CardSpider preCard = null;
                for (int j = len - 1; j >= 0; j--)
                {
                    var card = trans.GetChild(j).GetComponent <CardSpider>();
                    if (card.getBShowBg() == false && (j == len - 1 ||
                                                       (preCard.getBMove() == true && preCard.getCardType() == card.getCardType() && preCard.getCardNum() + 1 == card.getCardNum())))
                    {
                        card.setBMove(true);
                    }
                    else
                    {
                        card.setBMove(false);
                    }
                    preCard = card;
                }
            }
        }
        setTouchable(true);
    }
예제 #3
0
    void showWin()
    {
        var trans = _transWin;
        var iLen  = trans.childCount;

        if (iLen >= 13)
        {
            int        iCount  = 0;
            bool       bWin    = true;
            CardSpider preCard = null;
            for (var i = iLen - 1; i >= 0; i--)
            {
                var card = trans.GetChild(i).GetComponent <CardSpider> ();
                if (card.getBShowBg() == true)
                {
                    break;
                }
                if (i == iLen - 1)
                {
                    if (card.getCardNum() == 1)
                    {
                        iCount++;
                    }
                    else
                    {
                        bWin = false;
                    }
                }
                else
                {
                    if (preCard.getCardType() == card.getCardType() && preCard.getCardNum() + 1 == card.getCardNum())
                    {
                        iCount++;
                    }
                    else
                    {
                        bWin = false;
                    }
                }
                if (bWin == false)
                {
                    break;
                }
                preCard = card;
            }
            if (iCount == 13)
            {
                adMgr.PlaySound("score");
                _transWin = trans;
                lDesStep.Add(_iStep);
                lDesRow.Add(trans.GetSiblingIndex());
                setTouchable(false);
                Invoke("playWin", 0.5f);
                //}
            }
        }
    }
예제 #4
0
    void showUpCardRotate(CardSpider card)
    {
        var iPos   = 0;
        var transP = tTrans[iPos];

        //优先同色
        for (var i = 0; i < transP.childCount; i++)
        {
            if (card.getPos() == 0 && card.getRow() == i)
            {
                continue;
            }
            var rect = transP.GetChild(i);
            if (rect.childCount > 0)
            {
                var cardUp = rect.GetChild(rect.childCount - 1).gameObject.GetComponent <CardSpider>();
                if (cardUp.getCardType() == card.getCardType() && cardUp.getCardNum() - card.getCardNum() == 1)
                {
                    StopCoroutine(playTipsCard());
                    cardUpTips = cardUp;
                    StartCoroutine(playTipsCard());
                    break;
                }
            }
        }
        //再异色
        for (var i = 0; i < transP.childCount; i++)
        {
            if (card.getPos() == 0 && card.getRow() == i)
            {
                continue;
            }
            var rect = transP.GetChild(i);
            if (rect.childCount > 0)
            {
                var cardUp = rect.GetChild(rect.childCount - 1).gameObject.GetComponent <CardSpider>();
                if (cardUp.getCardNum() - card.getCardNum() == 1)
                {
                    StopCoroutine(playTipsCard());
                    cardUpTips = cardUp;
                    StartCoroutine(playTipsCard());
                    break;
                }
            }
        }
    }
예제 #5
0
    bool getBSuitCard(CardSpider cardDown, int iRow)
    {
        var iPos = 0;
        var rect = getTransP(iPos, iRow);

        if (rect.childCount == 0)
        {
            onCardMove(cardDown, iPos, iRow);
            return(true);
        }
        else
        {
            var cardUp = rect.GetChild(rect.childCount - 1).gameObject.GetComponent <CardSpider>();
            if (cardUp.getCardNum() - cardDown.getCardNum() == 1)
            {
                onCardMove(cardDown, iPos, iRow);
                return(true);
            }
        }
        return(false);
    }
예제 #6
0
    void showInitCards()
    {
        Transform trans;
        int       len;

        for (var i = 0; i < IROWCOUNT; i++)
        {
            trans = getTransP(0, i).transform;
            len   = trans.childCount - 1;
            for (var j = len; j >= 0; j--)
            {
                CardSpider card = trans.GetChild(j).GetComponent <CardSpider>();
                if (j == len)
                {
                    card.setBMove(true);
                }
                else
                {
                    card.showBg(true);
                }
            }
        }
    }
예제 #7
0
    IEnumerator initMediumShow()
    {
        var iLen = lCardDatas.Count;

        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < 10; j++)
            {
                int        idx       = iLen - 1 - (j + 10 * i);
                int        iCard     = lCardDatas[idx];
                int        iCardNum  = iCard % 100;
                int        iCardType = (int)Mathf.Floor(iCard / 100);
                int        iRow      = i;
                CardSpider card      = lCards[idx];
                card.init(iCardNum, iCardType, 1, iRow, this);
                var iPosX = _prx - 30 * (4 - i);
                card.transform.localPosition = new Vector3(iPosX - 30, _ply, 0);
                var pos = card.gameObject.GetComponent <RectTransform>().anchoredPosition;
                card.showMove(iPosX - pos.x, 0, iPosX);
            }
            yield return(new WaitForSeconds(0.2f));
        }
    }
예제 #8
0
    public void addCard(CardSpider card)
    {
        var        iPos       = card.getPos();
        var        iRow       = card.getRow();
        CardSpider upCardTemp = null;

        if (card.transform.parent == _delegate.getTransMove())
        {
            var upTrans = _delegate.getTransP(iPos, iRow);
            var iLen    = upTrans.childCount;
            if (iLen > 0)
            {
                var upCard = upTrans.GetChild(iLen - 1).GetComponent <CardSpider> ();
                if (upCard.getBShowBg() == true)
                {
                    upCardTemp = upCard;
                }
            }
        }
        else
        {
            var idx = card.transform.GetSiblingIndex();
            if (idx > 0)
            {
                var upTrans = card.transform.parent;
                var upCard  = upTrans.GetChild(idx - 1).GetComponent <CardSpider> ();
                if (upCard.getBShowBg() == true)
                {
                    upCardTemp = upCard;
                }
            }
        }
        lPreCard.Add(card);
        lPrePos.Add(iPos);
        lPreRow.Add(iRow);
        lPreUpCard.Add(upCardTemp);
    }
예제 #9
0
    IEnumerator playCards()
    {
        yield return(new WaitForSeconds(1.2f));

        adMgr.PlaySound("start");
        int len = lCardDatas.Count - 50;

        for (var i = 0; i < 6; i++)
        {
            for (int j = 0; j < IROWCOUNT; j++)
            {
                int idx = j + IROWCOUNT * i;
                if (idx >= len)
                {
                    break;
                }
                int        iCard     = lCardDatas[idx];
                int        iCardNum  = iCard % 100;
                int        iCardType = (int)Mathf.Floor(iCard / 100);
                CardSpider card      = lCards[idx];
                card.init(iCardNum, iCardType, 0, j, this);

                var iPosX = _px + 60 * j;
                var iPosY = _py - 30 * i;
                var pos   = card.gameObject.GetComponent <RectTransform>().anchoredPosition;
                card.showMove(iPosX - pos.x, iPosY - pos.y, iPosX);
            }
            yield return(new WaitForSeconds(0.2f));
        }

        showInitCards();
        coPlayTime = StartCoroutine(playTextTime());
        yield return(new WaitForSeconds(0.5f));

        setTouchable(true);
    }
예제 #10
0
    public bool getBMoveToCard(CardSpider card, bool bMove)
    {
        var iPos   = 0;
        var transP = tTrans [iPos];

        //优先同色
        for (var i = 0; i < transP.childCount; i++)
        {
            if (card.getPos() == 0 && card.getRow() == i)
            {
                continue;
            }
            var rect = transP.GetChild(i);
            if (rect.childCount > 0)
            {
                var cardUp = rect.GetChild(rect.childCount - 1).gameObject.GetComponent <CardSpider> ();
                if (cardUp.getCardType() == card.getCardType() && cardUp.getCardNum() - card.getCardNum() == 1)
                {
                    if (bMove == true)
                    {
                        onCardMove(card, iPos, i);
                    }
                    return(true);
                }
            }
        }
        //再异色
        for (var i = 0; i < transP.childCount; i++)
        {
            if (card.getPos() == 0 && card.getRow() == i)
            {
                continue;
            }
            var rect = transP.GetChild(i);
            if (rect.childCount > 0)
            {
                var cardUp = rect.GetChild(rect.childCount - 1).gameObject.GetComponent <CardSpider>();
                if (cardUp.getCardNum() - card.getCardNum() == 1)
                {
                    if (bMove == true)
                    {
                        onCardMove(card, iPos, i);
                    }
                    return(true);
                }
            }
        }
        //空列不提示
        if (bMove == false)
        {
            return(false);
        }
        //再空列
        for (var i = 0; i < transP.childCount; i++)
        {
            if (card.getPos() == 0 && card.getRow() == i)
            {
                continue;
            }
            if (transP.GetChild(i).childCount == 0)
            {
                if (bMove == true)
                {
                    onCardMove(card, iPos, i);
                }
                return(true);
            }
        }
        return(false);
    }
예제 #11
0
    public void moveCards(CardSpider card, int iPos, int iRow)
    {
        adMgr.PlaySound("move");
        bool bAutoMove = true;

        if (card.transform.parent.gameObject == goMove)
        {
            bAutoMove = false;
        }
        if (bAutoMove == true && iPos == 0)
        {
            card.addItems();
        }
        var       items = card.getItems();
        Transform upTrans;

        if (bAutoMove == true)
        {
            var cIdx = card.transform.GetSiblingIndex();
            if (cIdx > 0 && card.getPos() == 0)
            {
                upTrans = card.transform.parent;
                var upCard = upTrans.GetChild(cIdx - 1).GetComponent <CardSpider>();
                if (upCard.getBShowBg() == true)
                {
                    upCard.showBg(false);
                }
            }
        }
        else
        {
            upTrans = getTransP(card.getPos(), card.getRow());
            var iLen = upTrans.childCount;
            if (iLen > 0)
            {
                var upCard = upTrans.GetChild(iLen - 1).GetComponent <CardSpider>();
                if (upCard.getBShowBg() == true)
                {
                    upCard.showBg(false);
                }
            }
        }
        var trans = getTransP(iPos, iRow);

        card.setPos(iPos);
        card.setRow(iRow);
        card.transform.SetParent(trans);
        if (iPos == 0)
        {
            if (items.Count > 0)
            {
                foreach (Transform item in items)
                {
                    var itemCard = item.GetComponent <CardSpider>();
                    itemCard.setPos(iPos);
                    itemCard.setRow(iRow);
                    item.SetParent(trans);
                }
            }
            _transWin = trans;
            setBMove();
            showWin();
            if (bAutoMove == false)
            {
                card.transform.localPosition = new Vector3(0, 0 - 30 * (trans.childCount - 1 - items.Count), 0);
                if (items.Count > 0)
                {
                    var idx = 0;
                    foreach (Transform item in items)
                    {
                        idx++;
                        item.localPosition = new Vector3(0, 0 - 30 * (trans.childCount - 1 - items.Count + idx), 0);
                    }
                }
            }
            else
            {
                card.transform.SetParent(goMove.transform);
                var iPosX = _px + IROWDIS * iRow;
                var iPosY = _py - 30 * (trans.childCount - items.Count);
                var pos   = card.gameObject.GetComponent <RectTransform>().anchoredPosition;
                if (items.Count > 0)
                {
                    foreach (Transform item in items)
                    {
                        item.SetParent(card.transform);
                    }
                }
                card.showMove(iPosX - pos.x, iPosY - pos.y, iPosX);
            }
        }
    }
예제 #12
0
 void onCardMove(CardSpider card, int iPos, int iRow)
 {
     onDrop(card);
     moveCards(card, iPos, iRow);
 }
예제 #13
0
 void onDrop(CardSpider card)
 {
     showTextStep(++_iStep);
     undoMgr.addCard(card);
     //		redoMgr.removeAll ();
 }