Esempio n. 1
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. 2
0
    public void Inits(List <Card> cards)
    {
        CardsType cardsType = CardsType.None;

        CardRules.PopEnable(cards.ToArray(), out cardsType);
        Layout(cardsType, cards);
    }
Esempio n. 3
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. 4
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. 5
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. 6
0
    protected void DiscardCards(List <Card> selectedCardsList, List <CardSprite> selectedSpriteList)
    {
        Card[] selectedCardsArray = selectedCardsList.ToArray();
        //检测是否符合出牌规则
        CardsType type;

        if (CardRules.PopEnable(selectedCardsArray, out type))
        {
            HandCards player = gameObject.GetComponent <HandCards>();
            //如果符合将牌从手牌移到出牌缓存区
            DeskCardsCache.Instance.Clear();
            DeskCardsCache.Instance.Rule = type;

            for (int i = 0; i < selectedSpriteList.Count; i++)
            {
                DeskCardsCache.Instance.AddCard(selectedSpriteList[i].Poker);
                selectedSpriteList[i].transform.parent = GameObject.Find("Desk").transform.Find("StartPoint");
                selectedSpriteList[i].Poker            = selectedSpriteList[i].Poker;
            }

            DeskCardsCache.Instance.Sort();
            GameController.AdjustCardSpritsPosition(CharacterType.Desk);
            GameController.AdjustCardSpritsPosition(player.cType);

            GameController.UpdateLeftCardsCount(player.cType, player.CardsCount);

            if (player.CardsCount == 0)
            {
                Debug.Log("Game OVer!");
                //GameObject.Find("GameController").GetComponent<GameController>().GameOver();
            }
            else
            {
                OrderController.Instance.Biggest = player.cType;
                OrderController.Instance.Turn();
            }
        }
    }