/// <summary> /// 翻牌 /// </summary> /// <param name="cards"></param> public void TurnCards(List <string> cards) { showCard = true; if (cards.Count == 5) { mHandCard = cards; } List <Transform> list = mHandCardGid.GetChildList(); for (int i = 0; i < list.Count; i++) { TenHandCard handCard = list[i].GetComponent <TenHandCard>(); if (handCard != null) { handCard.SetCard(cards[i]); if (mHandCardGid.cellWidth > 0) { handCard.SetCardDeepsByIndex(i); } else { handCard.SetCardDeepsByIndex(list.Count - i); } handCard.TurnCard(0.3f, true); } } }
/// <summary> /// 直接添加一张手牌 /// </summary> /// <param name="value"></param> /// <param name="show"></param> private void DirectAddOneHandCard(int seatId, int index, string value, bool show = false) { GameObject obj = obj = NGUITools.AddChild(mHandCardGid.gameObject, mHandCardItem); TenHandCard card = obj.GetComponent <TenHandCard>(); obj.gameObject.SetActive(true); if (seatId == TenModel.Inst.mMySeatId) { obj.transform.localScale = new Vector3(2f, 2f, 2f); } if (value != "0" && !string.IsNullOrEmpty(value)) { card.SetCard(value); } if (show) { card.ShowCardNum(value); } else { card.ShowCardBg(); } mHandCard.Add(value); mHandCardGid.Reposition(); }
/// <summary> /// 发牌 /// </summary> /// <param name="seatId"></param> /// <param name="cards"></param> /// <param name="show"></param> /// <param name="type"></param> /// <returns></returns> private IEnumerator IECastCardWithAnim(int seatId, List <string> cards, bool show, eNNCardsType type = eNNCardsType.Nil) { if (cards != null) { for (int i = 0; i < cards.Count; i++) { GameObject obj = NGUITools.AddChild(mHandCardGid.gameObject, mHandCardItem); obj.transform.localScale = Vector3.one; obj.SetActive(true); TenHandCard card = obj.GetComponent <TenHandCard>(); if (show) { card.ShowCardNum(cards[i]); //显示牌正面 card.SetCardDeepsByIndex(GetCardsIndex()); ////设置牌背层级 } else { card.ShowCardBg(); //显示牌背 card.SetCardBgDeepsByIndex(GetCardsIndex()); ////设置牌背层级 } obj.transform.position = mDealCardStartPos.position; Vector3 dpos = new Vector3(mHandCardGid.cellWidth * GetCardsIndex(), 0, 0); bool large = seatId == TenModel.Inst.mMySeatId ? true : false; DealCardMove(card, dpos, 0.2f, large); mHandCard.Add(cards[i]); yield return(new WaitForSeconds(0.1f)); } } }
/// <summary> /// 翻牌后移动牌 /// </summary> /// <param name="cards"></param> public void SeparateCards(List <int> three) { Vector3 finalPos = Vector3.zero; if (three == null || three.Count <= 0) { for (int i = 0; i < mHandCard.Count; i++) { if (SeatId == TenModel.Inst.mMySeatId) { finalPos = new Vector3(100 * i * (mHandCardGid.cellWidth / Mathf.Abs(mHandCardGid.cellWidth)), 0, 0); } else { finalPos = new Vector3(50 * i * (mHandCardGid.cellWidth / Mathf.Abs(mHandCardGid.cellWidth)), 0, 0); } TenHandCard card = mHandCardGid.transform.GetChild(i).GetComponent <TenHandCard>(); card.Move(finalPos, .5f);//移动到最终位置 } } else { List <int> newThree = new List <int>(); List <int> newTwo = new List <int>(); List <int> result = new List <int>(); for (int i = 0; i < three.Count; i++) { newThree.Add(three[i] - 1); if (SeatId == TenModel.Inst.mMySeatId) { finalPos = new Vector3(100 * i * (mHandCardGid.cellWidth / Mathf.Abs(mHandCardGid.cellWidth)), 0, 0); } else { finalPos = new Vector3(50 * i * (mHandCardGid.cellWidth / Mathf.Abs(mHandCardGid.cellWidth)), 0, 0); } TenHandCard card = mHandCardGid.transform.GetChild(newThree[i]).GetComponent <TenHandCard>(); card.Move(finalPos, .5f);//移动到最终位置 } int temp = 0; for (int i = 0; i < mHandCard.Count; i++) { if (!newThree.Contains(i)) { newTwo.Add(i); if (SeatId == TenModel.Inst.mMySeatId) { finalPos = new Vector3(100 * (newThree.Count + 1 + temp) * (mHandCardGid.cellWidth / Mathf.Abs(mHandCardGid.cellWidth)), 0, 0); } else { finalPos = new Vector3(50 * (newThree.Count + 1 + temp) * (mHandCardGid.cellWidth / Mathf.Abs(mHandCardGid.cellWidth)), 0, 0); } TenHandCard card = mHandCardGid.transform.GetChild(newTwo[temp]).GetComponent <TenHandCard>(); card.Move(finalPos, .5f);//移动到最终位置 temp++; } } } }
/// <summary> /// 发牌延迟移动 /// </summary> /// <param name="card"></param> /// <param name="dpos"></param> /// <param name="time"></param> /// <param name="delayTime"></param> /// <param name="isEnlarge"></param> private void DealCardMove(TenHandCard card, Vector3 dpos, float time, bool isEnlarge) { card.Move(dpos, time, isEnlarge);//移动到目标位置 }