Esempio n. 1
0
    /// <summary>
    /// 获取所有手牌
    /// </summary>
    /// <returns></returns>
    protected List <Card> GetAllCards(List <Card> exclude = null)
    {
        List <Card> cards      = new List <Card>();
        HandCards   allCards   = gameObject.GetComponent <HandCards>();
        bool        isContinue = false;

        for (int i = 0; i < allCards.CardsCount; i++)
        {
            isContinue = false;
            if (exclude != null)
            {
                for (int j = 0; j < exclude.Count; j++)
                {
                    if (allCards[i] == exclude[j])
                    {
                        isContinue = true;
                        break;
                    }
                }
            }

            if (!isContinue)
            {
                cards.Add(allCards[i]);
            }
        }
        //从小到大排序
        CardRules.SortCards(cards, true);
        return(cards);
    }
Esempio n. 2
0
    /// <summary>
    /// 获取所有手牌
    /// </summary>
    /// <returns></returns>
    static List <Card> GetAllCards(string uid, List <Card> exclude = null)
    {
        List <Card>            cards    = new List <Card>();
        LandkirdsHandCardModel allCards = LandlordsModel.Instance.GetHandCardMode(uid);

        bool isContinue = false;

        for (int i = 0; i < allCards.CardsCount; i++)
        {
            isContinue = false;
            if (exclude != null)
            {
                for (int j = 0; j < exclude.Count; j++)
                {
                    if (allCards[i] == exclude[j])
                    {
                        isContinue = true;
                        break;
                    }
                }
            }
            if (!isContinue)
            {
                cards.Add(allCards[i]);
            }
        }
        //从小到大排序
        CardRules.SortCards(cards, true);
        return(cards);
    }
Esempio n. 3
0
    // 自动出牌
    void AutoPop()
    {
        List <Card> cards    = CardRules.DelayDiscardCard(UserInfoModel.userInfo.userId.ToString());
        bool        isCanPop = cards.Count > 0;

        if (isCanPop)
        {
            List <Card>   select    = new List <Card>();
            List <CardUI> selectUis = new List <CardUI>();
            for (int i = 0; i < GetSpriteUIs().Length; i++)
            {
                if (GetSpriteUIs()[i].Select)
                {
                    select.Add(GetSpriteUIs()[i].Card);
                    selectUis.Add(GetSpriteUIs()[i]);
                }
            }
            //先检测已选择的牌可以出不
            if (PlayCard.IsCanPop(select))
            {
                LandlordsNet.C2G_PopReq(1, select, null, null);
            }
            else
            {
                CardRules.SortCards(cards, true);
                LandlordsNet.C2G_PopReq(1, cards, null, null);
            }
        }
        else
        {
            Interaction.Instance.NoPlayCard(0);
        }
        LandlordsModel.Instance.TimeOutAudioPopCount++;
    }
Esempio n. 4
0
    public bool CheckSelectCardsEx(int[] pai, out int num)
    {
        CardSprite[] sprites = this.GetComponentsInChildren <CardSprite>();

        //找出所有选中的牌
        //List<Card> selectedCardsList = new List<Card>();
        //List<CardSprite> selectedSpriteList = new List<CardSprite>();

        selectedCardsList.Clear();
        selectedSpriteList.Clear();
        for (int i = 0; i < sprites.Length; i++)
        {
            if (sprites[i].Select)
            {
                pai[selectedCardsList.Count] = sprites[i].Poker.GetId;


                selectedSpriteList.Add(sprites[i]);
                selectedCardsList.Add(sprites[i].Poker);
            }
        }

        num = selectedCardsList.Count;
        //排好序
        CardRules.SortCards(selectedCardsList, true);
        //出牌
        //return CheckPlayCards(selectedCardsList, selectedSpriteList);
        return(true);
    }
Esempio n. 5
0
    public void SetTablePai(int[] pai, int num)
    {
        ClearTable();
        //保存当前出的牌,以便清除
        m_nPaiNum = num;
        m_nPai    = pai;

        //m_bflash = true;
        //m_nPai = pai;
        //m_nPaiNum = num;

        //DeskCardsCache.Instance.Clear();
        //for (int i = 0; i < m_nPaiNum; i++)
        //{
        //    DeskCardsCache.Instance.AddCard(m_Cardlist[i]);
        //}


        GameObject deskobj = GameObject.Find("Desk");
        Transform  desktf  = deskobj.transform;


        List <Card>       tmpcard       = new List <Card>();
        List <CardSprite> tmpcardsprite = new List <CardSprite>();

        for (int i = 0; i < num; i++)
        {
            if (!m_Pokerlist.ContainsKey(pai[i]))
            {
                Debug.LogError(string.Format("SetTablePai, pai id:[{0}] is error", pai[i]));
                continue;
            }
            CardSprite cp = m_Pokerlist[pai[i]].GetComponent <CardSprite>();

            tmpcardsprite.Add(cp);
            tmpcard.Add(cp.Poker);

            cp.Poker.Attribution = CharacterType.Desk;
            cp.transform.SetParent(desktf);

            cp.transform.localScale = new Vector3(1, 1, 1);

            m_Pokerlist[pai[i]].SetActive(true);
        }

        //排序所出的牌
        CardRules.SortCards(tmpcard, true);
        for (int i = 0; i < tmpcard.Count; i++)
        {
            for (int j = 0; j < tmpcardsprite.Count; j++)
            {
                if (tmpcardsprite[j].Poker == tmpcard[i])
                {
                    tmpcardsprite[j].GoToPosition(deskobj, i);
                }
            }
        }
    }
Esempio n. 6
0
    /// <summary>
    /// 遍历选中的牌
    /// </summary>
    void CheckSelectCards()
    {
        //排好序
        CardRules.SortCards(selectedCardsList, true);

        CardsType type = CardsType.None;

        //出牌
        CheckPlayCards(selectedCardsList, out type);//这里不用判断能否出牌,因为selectedCardsList是服务器已经判断过能出的牌
        PlayCards(type);
    }
Esempio n. 7
0
    public void SetDiPai(int[] pai, int num)
    {
        //clear di pai
        m_nPaiNum = 0;

        GameObject deskobj = GameObject.Find("Player");
        Transform  desktf  = deskobj.transform;

        CUser me = m_UserlistById[CPlayer.Instance().m_nUid];

        //  pai.CopyTo(me.m_nPai, 17);



        for (int i = 0; i < 3; i++)
        {
            me.m_nPai.Add(pai[i]);
        }

        List <Card>       tmpcard       = new List <Card>();
        List <CardSprite> tmpcardsprite = new List <CardSprite>();

        for (int i = 0; i < me.m_nPai.Count; i++)
        {
            CardSprite cp = m_Pokerlist[me.m_nPai[i]].GetComponent <CardSprite>();


            tmpcardsprite.Add(cp);
            tmpcard.Add(cp.Poker);


            cp.SetActvie(true);
            cp.Poker.Attribution = CharacterType.Player;
            cp.transform.SetParent(desktf);

            cp.transform.localScale = new Vector3(1, 1, 1);
            m_Pokerlist[me.m_nPai[i]].SetActive(true);
        }

        CardRules.SortCards(tmpcard, true);
        for (int i = 0; i < tmpcard.Count; i++)
        {
            for (int j = 0; j < tmpcardsprite.Count; j++)
            {
                if (tmpcardsprite[j].Poker == tmpcard[i])
                {
                    tmpcardsprite[j].GoToPosition(deskobj, i);
                }
            }
        }
    }
Esempio n. 8
0
    /// <summary>
    /// 主角是否能出牌
    /// </summary>
    public static bool IsCanPop(List <Card> cards)
    {
        //排好序
        CardRules.SortCards(cards, true);

        CardsType type = CardsType.None;

        bool isCanPlayCard = PlayCard.Instance.CheckPlayCards(cards, out type);

        if (!isCanPlayCard)
        {
            UIUtils.Log("不能大过场上的牌或者和场上的牌型不一致");
        }
        return(isCanPlayCard);
    }
Esempio n. 9
0
    /// <summary>
    /// 主角请求出牌
    /// </summary>
    public bool MainRolePopReq(CallBack call)
    {
        CardUI[] sprites = GetSpriteUIs();

        //找出所有选中的牌
        List <Card> selectedCardsLists = new List <Card>();

        for (int i = 0; i < sprites.Length; i++)
        {
            if (sprites[i].Select)
            {
                selectedCardsLists.Add(sprites[i].Card);
            }
        }
        //排好序

        CardRules.SortCards(selectedCardsLists, true);
        bool isCanPop = PlayCard.IsCanPop(selectedCardsLists);

        if (isCanPop)
        {
            LandlordsNet.C2G_PopReq(1, selectedCardsLists, call, null);
        }
        else
        {
            List <Card> exclude = new List <Card>();
            for (int i = 0; i < sprites.Length; i++)
            {
                if (!sprites[i].Select)
                {
                    exclude.Add(sprites[i].Card);
                }
            }
            List <Card> popCard = LandlordsModel.Instance.TipsModel.Tips2(exclude);
            isCanPop = popCard.Count > 0;
            if (isCanPop)
            {
                LandlordsNet.C2G_PopReq(1, popCard, call, null);
            }
        }
        return(isCanPop);
    }
Esempio n. 10
0
    public void SetPlayerPai(int[] pai, int num)
    {
        GameObject deskobj = GameObject.Find("Player");
        Transform  desktf  = deskobj.transform;


        List <Card>       tmpcard       = new List <Card>();
        List <CardSprite> tmpcardsprite = new List <CardSprite>();

        for (int i = 0; i < num; i++)
        {
            m_UserlistById[CPlayer.Instance().m_nUid].m_nPai[i] = pai[i];
            if (!m_Pokerlist.ContainsKey(pai[i]))
            {
                Debug.LogError(string.Format("SetTablePai, pai id:[{0}] is error", pai[i]));
                continue;
            }
            CardSprite cp = m_Pokerlist[pai[i]].GetComponent <CardSprite>();


            tmpcardsprite.Add(cp);
            tmpcard.Add(cp.Poker);

            cp.Poker.Attribution = CharacterType.Player;
            cp.transform.SetParent(desktf);
            cp.transform.localScale = new Vector3(1, 1, 1);
            m_Pokerlist[pai[i]].SetActive(true);
        }

        CardRules.SortCards(tmpcard, true);
        for (int i = 0; i < tmpcard.Count; i++)
        {
            for (int j = 0; j < tmpcardsprite.Count; j++)
            {
                if (tmpcardsprite[j].Poker == tmpcard[i])
                {
                    tmpcardsprite[j].GoToPosition(deskobj, i);
                }
            }
        }
    }
Esempio n. 11
0
    /// <summary>
    /// 遍历选中的牌和牌精灵
    /// </summary>
    public bool CheckSelectCards()
    {
        CardSprite[] sprites = this.GetComponentsInChildren <CardSprite>();

        //找出所有选中的牌
        List <Card>       selectedCardsList  = new List <Card>();
        List <CardSprite> selectedSpriteList = new List <CardSprite>();

        for (int i = 0; i < sprites.Length; i++)
        {
            if (sprites[i].Select)
            {
                selectedSpriteList.Add(sprites[i]);
                selectedCardsList.Add(sprites[i].Poker);
            }
        }
        //排好序
        CardRules.SortCards(selectedCardsList, true);
        //出牌
        return(CheckPlayCards(selectedCardsList, selectedSpriteList));
    }
Esempio n. 12
0
    public bool CheckSelectCards()
    {
        CardSprite[] sprites = gameObject.transform.Find("StartPoint").GetComponentsInChildren <CardSprite>();
        // 找出所有选中的
        List <Card>       selectedCardsList  = new List <Card>();
        List <CardSprite> selectedSpriteList = new List <CardSprite>();

        for (int i = 0; i < sprites.Length; i++)
        {
            if (sprites[i].Select)
            {
                selectedSpriteList.Add(sprites[i]);
                selectedCardsList.Add(sprites[i].Poker);
            }
        }

        //排序
        CardRules.SortCards(selectedCardsList, true);

        return(CheckPlayCards(selectedCardsList, selectedSpriteList));
    }
Esempio n. 13
0
 /// <summary>
 /// 手牌排序
 /// </summary>
 public void Sort()
 {
     CardRules.SortCards(library, false);
 }
Esempio n. 14
0
 public void Sort()
 {
     CardRules.SortCards(library, true);
 }