Esempio n. 1
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. 2
0
        public async Task CreateDebtAsync(Debt debt, DebtType debtType)
        {
            var classInstallments = new InstallmentsContext();

            if (debtType == DebtType.Card)
            {
                debt.Date = CardRules.CardDateRule(debt.Card.ClosureDate, debt.Card.DueDate, debt).Date;
            }

            // TODO ver forma de fazer isso melhor

            if (debt.DebtInstallmentType == DebtInstallmentType.Simple)
            {
                classInstallments.SetStrategy(new CreateSimpleInstallments());
            }
            else if (debt.DebtInstallmentType == DebtInstallmentType.Fixed)
            {
                classInstallments.SetStrategy(new CreateFixedInstallments());
            }
            else if (debt.DebtInstallmentType == DebtInstallmentType.Installment)
            {
                classInstallments.SetStrategy(new CreateInstallments());
            }

            var installments = classInstallments.CreateInstallments(debt);

            debt.Installments = installments;
            debt.Id           = Guid.NewGuid();
            debt.CreatedAt    = DateTime.Now;
            debt.DebtType     = debtType;

            await _debtRepository.AddAsync(debt);
        }
Esempio n. 3
0
    private void CheckIsTingPai(List <Int64> list, Int64 choseCardID)
    {
        List <Int64> tingPaiList;

        tingPaiList = CardRules.CheckIsTing(list, laizi, gameRule, choseCardID);
        EventDispatcher.GetInstance().UIFrameWorkEventManager.TriggerEvent <List <Int64> >(EventId.UIFrameWork_Tingpai, tingPaiList);
    }
Esempio n. 4
0
    private void CheckSelfAddCardFunc(List <Int64> list, List <Int64> RevealCardList, Int64 mopai)
    {
        Int64 cardID      = 0;
        int   num         = 3;
        int   canGangCard = CardRules.CheckBySelfAddCardIsCanGang(list, mopai, laizi, GetLaizipi(laizi));

        if (canGangCard != 0)
        {
            num++;
            cardID = canGangCard;
        }

        if (CardRules.PopEnable(RevealCardList, mopai, GetLaizipi(laizi)) == 3)//检测回头笑的情况
        {
            num++;
            cardID = mopai;
        }

        if (CardRules.IsHupai(list, laizi, mopai, gameRule))
        {
            num += 2;;
        }
        if (num != 3)
        {
            EventDispatcher.GetInstance().UIFrameWorkEventManager.TriggerEvent <Int64, Int64>(EventId.SelfCanPengOrGang, num, cardID);//自己摸牌判断是否可以用杠
        }
    }
Esempio n. 5
0
    public void Inits(List <Card> cards)
    {
        CardsType cardsType = CardsType.None;

        CardRules.PopEnable(cards.ToArray(), out cardsType);
        Layout(cardsType, cards);
    }
Esempio n. 6
0
    /// <summary>
    /// 激活叫分按钮
    /// </summary>
    void ActiviteCallFenButton()
    {
        onefenBtn.gameObject.SetActive(true);
        twofenBtn.gameObject.SetActive(true);
        threefenBtn.gameObject.SetActive(true);
        noCallBtn.gameObject.SetActive(true);

        //检测是否有炸弹和王炸
        List <Card>            cards = new List <Card>();
        LandkirdsHandCardModel my    = LandlordsModel.Instance.MyInfo;

        for (int i = 0; i < my.CardsCount; i++)
        {
            cards.Add(my[i]);
        }
        cards = CardRules.FindBoom(cards, 0, true);
        if (cards == null || cards.Count == 0)
        {
            //设置分值按钮置灰
            List <int> list = LandlordsModel.Instance.GetCanCallLandlordNum();
            onefenBtn.interactable   = list.Contains(1);
            twofenBtn.interactable   = list.Contains(2);
            threefenBtn.interactable = list.Contains(3);
        }
        else
        {
            //只能叫3分或者不叫
            onefenBtn.interactable   = false;
            twofenBtn.interactable   = false;
            threefenBtn.interactable = true;
            noCallBtn.interactable   = true;
        }
    }
Esempio n. 7
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. 8
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. 9
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. 10
0
    /// <summary>
    /// 排序 只需要给自己的排序
    /// </summary>
    /// <param name="index"></param>
    public void SortCard()
    {
        PlayerData data = _infoList[(Int32)selfOrderIndex - 1];

        CardRules.SortCardsForInt(data.HandCardList, laizi);
        data.HandCardList.Reverse();
        EventDispatcher.GetInstance().UIFrameWorkEventManager.TriggerEvent <List <PlayerData> >(EventId.UIFrameWork_Deal_Card_First, _infoList);
    }
Esempio n. 11
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. 12
0
    public void ReconnectionShowSelfCard(Int64 index)
    {
        PlayerData data = _infoList[(Int32)index - 1];

        CheckIsTingPai(data.HandCardList, 0);
        CardRules.SortCardsForInt(data.HandCardList, TableController.Instance.laizi);
        data.HandCardList.Reverse();
        EventDispatcher.GetInstance().UIFrameWorkEventManager.TriggerEvent <List <PlayerData> >(EventId.UIFrameWork_Reconnection, _infoList);
    }
Esempio n. 13
0
    /// <summary>
    /// 检测玩家出牌
    /// </summary>
    bool CheckPlayCards(List <Card> selectedCardsLists, out CardsType type)
    {
        bool isCanPlayCard = false;

        Card[] selectedCardsArray = selectedCardsLists.ToArray();
        //检测是否符合出牌规则
        //CardsType type;
        if (CardRules.PopEnable(selectedCardsArray, out type))
        {
            CardsType rule = DeskCardsCache.Instance.Rule;
            if (OrderController.Instance.BiggestUid == OrderController.Instance.TypeUid)
            {
                isCanPlayCard = true;
            }
            else if (DeskCardsCache.Instance.Rule == CardsType.None)
            {
                isCanPlayCard = true;
            }
            else if (type == rule && selectedCardsLists.Count == DeskCardsCache.Instance.CardsCount && LandlordsModel.Instance.GetWeight(selectedCardsArray, type) > DeskCardsCache.Instance.TotalWeight)
            {
                isCanPlayCard = true;
            }
            //飞机带1
            else if (type == rule && type == CardsType.TripleStraightDaiOne)
            {
                if (selectedCardsLists.Count == DeskCardsCache.Instance.CardsCount && LandlordsModel.Instance.GetWeight(selectedCardsArray, type) > DeskCardsCache.Instance.TotalWeight)
                {
                    isCanPlayCard = true;
                }
            }
            //飞机带2
            else if (type == rule && type == CardsType.TripleStraightDaiTwo)
            {
                if (selectedCardsLists.Count == DeskCardsCache.Instance.CardsCount && LandlordsModel.Instance.GetWeight(selectedCardsArray, type) > DeskCardsCache.Instance.TotalWeight)
                {
                    isCanPlayCard = true;
                }
            }
            //炸弹
            else if (type == CardsType.Boom && rule != CardsType.Boom)
            {
                isCanPlayCard = true;
            }
            else if (type == CardsType.JokerBoom)
            {
                isCanPlayCard = true;
            }
            else if (type == CardsType.Boom && rule == CardsType.Boom &&
                     LandlordsModel.Instance.GetWeight(selectedCardsArray, type) > DeskCardsCache.Instance.TotalWeight)
            {
                isCanPlayCard = true;
            }
        }

        return(isCanPlayCard);
    }
Esempio n. 14
0
    /// <summary>
    /// 自己碰了后检测自己是否可以杠
    /// </summary>
    public void CheckSelfCanAnGang()
    {
        PlayerData data        = _infoList[(int)selfOrderIndex - 1];
        int        canGangCard = CardRules.CheckBySelfAddCardIsCanGang(data.HandCardList, 0, laizi, GetLaizipi(laizi));

        if (canGangCard != 0)
        {
            EventDispatcher.GetInstance().UIFrameWorkEventManager.TriggerEvent <Int64, Int64>(EventId.SelfCanPengOrGang, 4, canGangCard);
        }
    }
Esempio n. 15
0
    /// <summary>
    /// 断线重连的时候,自己的手牌里面包括当前摸的牌,为了走摸牌的流程,把自己当前的摸牌从手牌中剔除
    /// </summary>
    public void ReconnectionRemoveMopai(Int64 mopai)
    {
        int        index = (int)selfOrderIndex;
        PlayerData item  = _infoList[index - 1];

        item.RemoveAppointMj(mopai);
        CardRules.SortCardsForInt(item.HandCardList, TableController.Instance.laizi);
        item.HandCardList.Reverse();
        EventDispatcher.GetInstance().UIFrameWorkEventManager.TriggerEvent <List <PlayerData> >(EventId.UIFrameWork_Reconnection, _infoList);
    }
Esempio n. 16
0
    /// <summary>
    /// 检测自己杠或者碰了以后,自己打什么牌可以听
    /// </summary>
    public void CheckSelfPutOutCardCantingTips()
    {
        PlayerData   data        = _infoList[(int)selfOrderIndex - 1];
        List <Int64> tingPaiList = CardRules.CheckPutOutCanTingpai(data.HandCardList, laizi, gameRule);

        if (tingPaiList.Count > 0)
        {
            EventDispatcher.GetInstance().UIFrameWorkEventManager.TriggerEvent <List <Int64> >(EventId.UIFrameWork_Putout_Can_Tingpai, tingPaiList);
        }
    }
Esempio n. 17
0
    /// <summary>
    /// 如果赖子没有做配牌使用,也是硬胡,那么也就是没赖子
    /// </summary>
    /// <returns></returns>
    public bool CheckSelfIsHaveLaizi()
    {
        int        index = (int)selfOrderIndex;
        PlayerData item  = _infoList[index - 1];

        if (CardRules.CheckIsYingHu(item.HandCardList))
        {
            return(false);
        }
        return(item.HandCardList.Contains(laizi));
    }
Esempio n. 18
0
    /// <summary>
    /// 遍历选中的牌
    /// </summary>
    void CheckSelectCards()
    {
        //排好序
        CardRules.SortCards(selectedCardsList, true);

        CardsType type = CardsType.None;

        //出牌
        CheckPlayCards(selectedCardsList, out type);//这里不用判断能否出牌,因为selectedCardsList是服务器已经判断过能出的牌
        PlayCards(type);
    }
Esempio n. 19
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. 20
0
    /// <summary>
    /// 检测玩家出牌
    /// </summary>
    /// <param name="selectedCardsList"></param>
    /// <param name="selectedSpriteList"></param>
    bool CheckPlayCards(List <Card> selectedCardsList, List <CardSprite> selectedSpriteList)
    {
        GameController controller = GameObject.Find("GameController").GetComponent <GameController>();

        Card[] selectedCardsArray = selectedCardsList.ToArray();
        //检测是否符合出牌规则
        CardsType type;

        if (CardRules.PopEnable(selectedCardsArray, out type))
        {
            CardsType rule = DeskCardsCache.Instance.Rule;
            if (OrderController.Instance.Biggest == OrderController.Instance.Type)
            {
                PlayCards(selectedCardsList, selectedSpriteList, type);
                return(true);
            }
            else if (DeskCardsCache.Instance.Rule == CardsType.None)
            {
                PlayCards(selectedCardsList, selectedSpriteList, type);
                return(true);
            }
            //炸弹
            else if (type == CardsType.Boom && rule != CardsType.Boom)
            {
                controller.Multiples = 2;
                PlayCards(selectedCardsList, selectedSpriteList, type);
                return(true);
            }
            else if (type == CardsType.JokerBoom)
            {
                controller.Multiples = 4;
                PlayCards(selectedCardsList, selectedSpriteList, type);
                return(true);
            }
            else if (type == CardsType.Boom && rule == CardsType.Boom &&
                     GameController.GetWeight(selectedCardsArray, type) > DeskCardsCache.Instance.TotalWeight)
            {
                controller.Multiples = 2;
                PlayCards(selectedCardsList, selectedSpriteList, type);
                return(true);
            }
            else if (GameController.GetWeight(selectedCardsArray, type) > DeskCardsCache.Instance.TotalWeight)
            {
                PlayCards(selectedCardsList, selectedSpriteList, type);
                return(true);
            }
        }
        return(false);
    }
Esempio n. 21
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. 22
0
    /// <summary>
    /// 激活出牌按钮
    /// </summary>
    void ActivePopButton(bool canReject)
    {
        if (LandlordsModel.Instance.IsTuoGuan || LandlordsMainPlayer.CheckIsLastCanAutoPop())
        {
            return;
        }
        List <Card> cards = CardRules.DelayDiscardCard(UserInfoModel.userInfo.userId.ToString());

        chongxuanBtn.gameObject.SetActive(true);
        chongxuanBtn.interactable = cards.Count > 0;
        tipsBtn.SetActive(true);
        playBtn.gameObject.SetActive(true);
        noPlayBtn.gameObject.SetActive(true);
        noPlayBtn.interactable = canReject;
        playBtn.interactable   = cards.Count > 0;
    }
Esempio n. 23
0
    /// <summary>
    /// 起牌
    /// </summary>
    /// <param name="cardID"></param>
    public void AddCard(Int64 cardID, Int64 index)
    {
        PlayerData data = _infoList[(Int32)index - 1];

        data.AddHandCard(cardID);
        EventDispatcher.GetInstance().UIFrameWorkEventManager.TriggerEvent <PlayerData>(EventId.UIFrameWork_Player_Draw_Card, data);
        if (index == selfOrderIndex)
        {
            List <Int64> tingPaiList;
            tingPaiList = CardRules.CheckPutOutCanTingpai(data.HandCardList, laizi, gameRule);
            if (tingPaiList.Count > 0)
            {
                EventDispatcher.GetInstance().UIFrameWorkEventManager.TriggerEvent <List <Int64> >(EventId.UIFrameWork_Putout_Can_Tingpai, tingPaiList);
            }
        }
    }
Esempio n. 24
0
    public override void RoundEnter(bool isCanNoPlay)
    {
        base.RoundEnter(isCanNoPlay);
        switch (OrderController.Instance.CurInterationType)
        {
        case InterationType.CallLandlords:
            clock.Init(LandlordsPage.wait_CallLandlordsTime, 10, 5, null, true);
            break;

        case InterationType.QiangLandlords:
            clock.Init(LandlordsPage.wait_QiangTime, 10, 5, null, true);
            break;

        case InterationType.CallFen:
            clock.Init(LandlordsPage.wait_CallFenTime, 10, 5, () => AutoCallLandlord(), true);
            break;

        case InterationType.PopCard:
            if (LandlordsModel.Instance.IsTuoGuan)
            {
                //如果是托管状态
                return;
            }
            List <Card> cards = CardRules.DelayDiscardCard(UserInfoModel.userInfo.userId.ToString());
            if (CheckIsLastCanAutoPop())
            {
                SetTimeout.add(1.5f, () =>
                {
                    AutoPop();
                });
                return;
            }
            if (cards.Count == 0)
            {
                clock.Init(LandlordsPage.wait_canNotPopTime, 4, 5, () => AutoPop(), true);
            }
            else
            {
                clock.Init(LandlordsPage.wait_PopTime, 10, 5, () => AutoPop(), true);
            }
            break;

        default:
            break;
        }
    }
Esempio n. 25
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. 26
0
    /// <summary>
    /// 出牌
    /// </summary>
    /// <param name="cardID"></param>
    public void PopCard(Int64 cardID, Int64 index, Int64 laizipi, Int64 laizi)
    {
        List <Int64> tingPaiList;
        int          flag = 0;
        PlayerData   data = _infoList[(Int32)index - 1];

        if (index == selfOrderIndex)
        {
            if (cardID == laizi)
            {
                selfPutOutLaiziNum++;
            }
            data.HandCardList.Remove(cardID);
            if (laizi == cardID)
            {
                EventDispatcher.GetInstance().UIFrameWorkEventManager.TriggerEvent <EffectPrompt>(EventId.UIFrameWork_Effect_Prompt, EffectPrompt.lai);
            }
        }
        else
        {
            data.HandCardList.Remove(0);
        }

        if (index != selfOrderIndex)
        {
            if (!TableController.Instance.canNotPengMjList.Contains(cardID))
            {
                // flag = CheckOtherPlayCard(cardID, laizipi
                flag = CheckOtherPlayCard(cardID, laizipi);
            }
        }
        else
        {
            tingPaiList = CardRules.CheckIsTing(data.HandCardList, laizi, gameRule);
            if (tingPaiList.Count > 0)
            {
                EventDispatcher.GetInstance().UIFrameWorkEventManager.TriggerEvent <List <Int64> >(EventId.UIFrameWork_Tingpai, tingPaiList);
            }
        }
        EventDispatcher.GetInstance().UIFrameWorkEventManager.TriggerEvent <PlayerData, int>(EventId.UIFrameWork_Player_Out_Card, data, flag);
    }
Esempio n. 27
0
    /// <summary>
    /// 别人出牌后,检测自己是否可以碰或者点杠
    /// </summary>
    public int CheckOtherPlayCard(Int64 cardID, Int64 laizipi)
    {
        int        temp = 0;
        int        flag = 0;;
        PlayerData data;

        data = _infoList[(Int32)selfOrderIndex - 1];
        if (CardRules.PopEnable(data.HandCardList, cardID, laizipi) == 2)
        {
            flag = 2;
        }
        else if (CardRules.PopEnable(data.HandCardList, cardID, laizipi) == 3)
        {
            flag = 3;
            if (cardID == laizipi)
            {
                flag = 4;
            }
            // EventDispatcher.GetInstance().UIFrameWorkEventManager.TriggerEvent<Int64, Int64>(EventId.SelfCanPengOrGang, 3, cardID);
        }
        if (CardRules.IsHupai(data.HandCardList, laizi, cardID, gameRule))
        {
            // temp = 5;
            if (flag == 2)
            {
                flag = 7;
            }
            else if (flag == 3)
            {
                flag = 8;
            }
            else if (flag == 0)
            {
                flag = 9;
            }
        }

        // CheckSelfAddCard(cardID, laizi, laizipi);
        //  CheckSelfByAddCard();
        return(flag);
    }
Esempio n. 28
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. 29
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. 30
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));
    }