/// <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); }
/// <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); }
public bool IsNextRank(TLMNCard c) { return((RankValue / 4) + 1 == c.RankValue / 4); }
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(); }