/// <summary> /// 更新玩家的卡牌到玩家的位置 /// </summary> /// <param name="cardInfo"></param> /// <param name="time"></param> public void MoveCard(CardInfo cardInfo, float time) { var endPos = cardInfo.parent.transform.position; var trans = GetCardObject(cardInfo).GetComponent <Transform>(); UnitTool.ToolStartCoroutine(MoveObject(endPos, time, trans)); }
/// <summary> /// 玩家出麻将 /// </summary> /// <param name="cardIndex"></param> /// <param name="cardName"></param> /// <returns></returns> private void PlayerPlay(Card card, bool go) { if (!go) { UnitTool.ToolStartCoroutine(WaitCoroutine(card, false)); return; } //当前玩家的出牌 Debug.Log("Player " + index + " 出 " + card.CardIndex); int n = 0; for (int i = 0; i < CurPlayerCards.Count; i++) { if (CurPlayerCards[i] == card) { n = i; break; } } majiangTable.DropCard(card, CurPlayerCards, index); //保存这个玩家出的牌 pCard = CurPlayerCards[n]; //清除 CurPlayerCards.RemoveAt(n); //当前玩家重新排序 SortCards(CurPlayerCards); majiangTable.FreshCard(CurPlayerCards, index); //当前玩家出牌后,其他三个玩家进行检测胡、碰、杠操作 CheckMajiang(); }
/// <summary> /// 玩家出麻将 /// </summary> /// <param name="cardIndex"></param> /// <param name="cardName"></param> /// <returns></returns> private void _playerPlay(int cardIndex, string cardName, bool go) { if (!go) { UnitTool.ToolStartCoroutine(_waitCoroutine(cardIndex, cardName, false)); return; } //当前玩家的出牌 Debug.Log("Player " + index + " 出 " + cardIndex); int n = 0; for (int i = 0; i < players[index].myCards.Count; i++) { if (players[index].myCards[i].cardName == cardName) { n = i; break; } } _majiangTable.PlayMajiangAnimation(cardName, players[index].myCards, index); //保存这个玩家出的牌 pCard = players[index].myCards[n]; //清除 players[index].myCards.RemoveAt(n); //当前玩家重新排序 _sortCards(players[index].myCards); _majiangTable.ShowMajiang(players[index].myCards, index); //当前玩家出牌后,其他三个玩家进行检测胡、碰、杠操作 _checkMajiang(); }
/// <summary> /// 初始化牌到桌面 /// </summary> public void StartGame() { //重新开始清除数据 ClearDatas(); //第一个发牌的玩家 playerIndex = startIndex % 3; //初始化扑克牌信息 tableCards = InitCards(); //洗牌 tableCards = GetRandomList <CardInfo>(tableCards); //实例化到桌面 tableCards = pokerTable.InstaceCards(tableCards); //发牌协程 UnitTool.ToolStartCoroutine(SendCards()); }
/// <summary> /// 更新卡牌到数据指定的位置 /// </summary> /// <param name="cardInfo"></param> /// <param name="time"></param> public void MoveCard(CardInfo cardInfo, Vector3 endPos, float time) { var trans = GetCardObject(cardInfo).GetComponent <Transform>(); UnitTool.ToolStartCoroutine(MoveObject(endPos, time, trans)); }
/// <summary> /// 开始出牌 /// </summary> public override void StartPlay() { StartPlayEvent(); //开始倒计时 UnitTool.ToolStartCoroutine(Considerating(1)); }
/// <summary> /// 开始叫地主 /// </summary> public override void ToLord() { clickLord = false; //开启思考协程 UnitTool.ToolStartCoroutine(Considerating(0)); }
/// <summary> /// 发牌动画 /// </summary> /// <param name="players"></param> /// <param name="startIndex"></param> /// <returns></returns> public void SendMajiangAnimation(List <MBasePlayer> players) { UnitTool.ToolStartCoroutine(_sendMajiangCoroutine(players)); }
/// <summary> /// 开始出牌 /// </summary> public void StartPlay() { UnitTool.ToolStartCoroutine(StartPlayCoroutine()); }
/// <summary> /// 确定能够出牌 /// </summary> public void CanPlayCards() { //清除桌面上的牌 if (tableCards.Count != 0) { for (int i = 0; i < tableCards.Count; i++) { pokerTable.MoveCard(tableCards[i], new Vector3(0, 0, 0), 0.01f); } } tableCards.Clear(); List <int> list = new List <int>(); list.Clear(); //将要出的牌添加到桌面List中并排序 for (int i = 0; i < players[playerIndex % 3].myCardInfo.Count; i++) { if (players[playerIndex % 3].myCardInfo[i].isSelected) { tableCards.Add(players[playerIndex % 3].myCardInfo[i]); list.Add(players[playerIndex % 3].myCardInfo[i].cardIndex); } } //tableCards = SortCards(tableCards); //保存上个玩家出的牌的信息 lastCards.Clear(); PokerRules.PopEnable(list, out players[playerIndex % 3].myType); lastType = players[playerIndex % 3].myType; for (int i = 0; i < tableCards.Count; i++) { lastCards.Add(tableCards[i]); } //移动要出的牌到指定的位置,并清除myCards中出去的牌 GameObject table = pokerTable.table; Vector3 pos = table.transform.position + new Vector3(-tableCards.Count * 0.48f, 0, 0); for (int i = 0; i < tableCards.Count; i++) { tableCards[i].parent = table.transform; pokerTable.SetCardParent(tableCards[i]); pokerTable.InitImage(tableCards[i], false); pokerTable.MoveCard(tableCards[i], pos += new Vector3(0.78f, 0, 0), 0.5f); players[playerIndex % 3].myCardInfo.Remove(tableCards[i]); } //判断是否获胜 if (players[playerIndex % 3].myCardInfo.Count == 0) { UnitTool.ToolStartCoroutine(Win(players[playerIndex % 3])); return; } //是玩家出牌 if (playerIndex % 3 == 0) { //对当前手牌进行重新显示 pokerTable.ShowCards(players[0].myCardInfo); } //当前玩家轮回结束 players[playerIndex % 3].myTerm = true; //开始下一个玩家的出牌 StartPlay(); }
/// <summary> /// 发牌动画 /// </summary> /// <param name="players"></param> /// <param name="startIndex"></param> /// <returns></returns> public void SendMajiangAnimation(List <Player> players) { UnitTool.ToolStartCoroutine(SendCardCoroutine(players)); }
/// <summary> /// 开始出牌 /// </summary> public virtual void StartPlay() { StartPlayEvent(); //电脑开始思考 UnitTool.ToolStartCoroutine(Considerating(1)); }
/// <summary> /// 叫地主 /// </summary> public virtual void ToLord() { //电脑开始思考 UnitTool.ToolStartCoroutine(Considerating(0)); }