예제 #1
0
    /// <summary>
    /// Khi có người chơi bốc bài
    /// </summary>
    /// <param name="index">Người bốc bài</param>
    /// <param name="cardValue">Bài bốc được</param>
    public static void DrawCard(int index, int cardValue)
    {
        if (index != YourController.slotServer)
        {
            if (!Common.CanViewHand)
            {
                cardValue = -1;
            }
        }

        TLMNCard card = new TLMNCard(index, cardValue);

        card.Instantiate();
        GetPlayer(index).mCardHand.Add(card);

        DeckCount--;
        if (YourController.slotServer == index)
        {
            game.canRequestSort = true;
        }
        game.stolen = false;

        MiniState = EGameStateMini.discard;

        if (Common.CanViewHand && YourController.slotServer != index)
        {
            GetPlayer(index).mCardHand.Sort((c1, c2) => c1.CompareTo(c2));
        }

        game.UpdateHand(index, 0.5f);
        game.UpdateHand(GameModelTLMN.IndexLastInTurn, 0.5f);

        card.UpdateParent(index);
    }
예제 #2
0
    /// <summary>
    /// Lấy thông tin card của người chơi
    /// </summary>
    /// <param name="indexPlayer"></param>
    /// <param name="cardId"></param>
    /// <returns></returns>
    public static TLMNCard GetCard_FromHandPlayer(int indexPlayer, int cardId)
    {
        TLMNCard card = (TLMNCard)GetPlayer(indexPlayer).mCardHand.Find(c => c.CardId == cardId);

        if (card == null)
        {
            card = (TLMNCard)GetPlayer(indexPlayer).mCardHand.Find(c => c.CardId == -1);
            if (card != null)
            {
                card.CardId = cardId;
            }
        }
        return(card);
    }
예제 #3
0
 public bool IsNextRank(TLMNCard c)
 {
     return((RankValue / 4) + 1 == c.RankValue / 4);
 }
예제 #4
0
    void _OnDiscard(int index, int[] cardsValue)
    {
        game.allowChatHang  = null;
        game.lbDiscard.Text = "";
        game.ClearEffectCardPair();

        if (game.newTurn)
        {
            //Chờ 0.75s mới thực hiện úp card để thực hiện xong hành động UpdateTrash()
            game.UpdateTrashFaceDown();
            GameModelTLMN.ListPlayerInGame.ForEach(p => { if (p.imageSkip != null)
                                                          {
                                                              GameObject.Destroy(p.imageSkip);
                                                          }
                                                   });
        }

        if (cardsValue.Length == 0)
        {
            //Khi xác định lượt mới
            GameModelTLMN.game.button.UpdateButton();
            game.UpdateTrash(0f);
            return;
        }

        List <ECard> lastDiscard = new List <ECard>();

        foreach (int cardValue in cardsValue)
        {
            TLMNCard card = GetCard_FromHandPlayer(index, cardValue);
            GetPlayer(index).mCardHand.Remove(card);
            GetPlayer(index).mCardTrash.Add(card);
            lastDiscard.Add(card);
            card.UpdateParent(index);
        }
        model.listDiscard[(int)EDiscard.FaceUp].Add(lastDiscard);

        #region DISCARD TEXT && EFFECT PAIR
        CardControllerTLMN.EMultiType typeDiscard = game.cardController.TypeLastDiscard;

        if (lastDiscard.Count > 2)
        {
            lastDiscard.Sort((c1, c2) => c1.CompareTo(c2));
        }

        if (typeDiscard == CardControllerTLMN.EMultiType.Horizontal)
        {
            if (lastDiscard.Count == 2)
            {
                game.lbDiscard.Text = "Đôi " + lastDiscard[lastDiscard.Count - 1].ToString();
            }
            else if (lastDiscard.Count == 3)
            {
                game.lbDiscard.Text = "Sám " + lastDiscard[lastDiscard.Count - 1].parentCard.Rank.iconToString();
            }
            else if (lastDiscard.Count == 4)
            {
                //game.CreateEffectCardPair(lastDiscard);
                game.lbDiscard.Text = "Tứ quý " + lastDiscard[lastDiscard.Count - 1].ToString();
            }
        }
        else if (typeDiscard == CardControllerTLMN.EMultiType.Vertical)
        {
            game.lbDiscard.Text = "Sảnh " + lastDiscard.Count + " lá đến " + lastDiscard[lastDiscard.Count - 1].ToString();
        }
        else if (typeDiscard == CardControllerTLMN.EMultiType.MoreThreePairs || typeDiscard == CardControllerTLMN.EMultiType.FourPairs)
        {
            //game.CreateEffectCardPair(lastDiscard);
            game.lbDiscard.Text = lastDiscard.Count / 2 + " đôi thông";
        }
        #endregion

        #region PLAY SOUND
        if (GetPlayer(index).mCardHand.Count != 0)
        {
            SoundGamePlayTLMN.Instance.PlaySound(model, game, lastDiscard, GetPlayer(index));
        }
        #endregion

        if (YourController.slotServer == index)
        {
            game.canRequestSort = true;
        }

        if (YourController.slotServer == index)
        {
            GameModelTLMN.IndexInTurn     = GetNextPlayer(index).slotServer;
            GameModelTLMN.IndexLastInTurn = index;
        }

        #region CƯỚP LƯỢT DÀNH CHO 4 ĐÔI THÔNG
        //Kiểm tra nếu cây cuối đánh là hai hoặc hàng thì cho phép chặt hàng
        if (
            //Dây vừa đánh ra là "Hai gì đó hoặc là đôi hai"
            (cardsValue.Length <= 2 && cardsValue[0] >= 4 && cardsValue[0] <= 7)
            || //Dây vừa đánh ra là "Tứ quý"
            (cardsValue.Length == 4 && game.cardController.TypeLastDiscard == CardControllerTLMN.EMultiType.Horizontal)
            ||
            //Dây vừa đánh ra là "Ba hoặc 4 đôi thông"
            (cardsValue.Length >= 6 && game.cardController.TypeLastDiscard == CardControllerTLMN.EMultiType.MoreThreePairs)
            )
        {
            game.allowChatHang = false;
            if (IndexInTurn == GameModelTLMN.YourController.slotServer)
            {
                List <ECard> fourPairs = game.cardController.GetFourPairs();
                if (fourPairs.Count > 0)
                {
                    game.allowChatHang = true;
                    GameManager.Instance.FunctionDelay(delegate()
                    {
                        foreach (ECard c in fourPairs)
                        {
                            game.CardClick(c);
                        }
                    }, 0f);
                }
            }
        }
        #endregion

        MiniState = EGameStateMini.discard;

        game.UpdateHand(index, 0.5f);
        game.UpdateTrash(0.5f);

        model.GetCardCollection();
    }