//初始化牌的值和位置 void InitMahjongPos() { if (MahjongManger.Instance.iniAnimationStatus < 2 && !MahjongManger.Instance.bPongGang) { return; } MahjongManger.Instance.bPongGang = false; // Debug.LogError("iniAnimationStatus:================:" + MahjongManger.Instance.iniAnimationStatus); MahjongManger.Instance.iniAnimationStatus = 0; PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; pppd.CurrentCradSort(2); MahjongManger.Instance.GetFirstMahjongPos(0); }
/// <summary> /// 打出牌之后的操作 /// </summary> /// <param name="status">1表示正常打出牌,2表示碰杠的处理</param> public void PutCard(int status) { #region 关闭提示 showM[] show = transform.parent.parent.parent.GetComponentsInChildren <showM>(); //Debug.LogError("down" + show.Length); for (int i = 0; i < show.Length; i++) { if (show[i].isOpen) { show[i].Stop(); for (int j = 0; j < show[i].m.Length; j++) { show[i].m[j].enabled = false; } show[i].isOpen = false; } } #endregion 关闭提示 Vector3 firstPos = Vector3.zero; //第一张麻将的位置 PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; pppd.isCanHandCard = false; if (status == 1 && pppd.iPlayerHostStatus == 0) { //发送出牌请求 byte value = Convert.ToByte(bMahjongValue.ToString("x8")); NetMsg.ClientDiscardTileReq msg = new NetMsg.ClientDiscardTileReq(); msg.iUserId = GameData.Instance.PlayerNodeDef.iUserId; msg.byDrawSeaBottom = bMahjongValue; MahjongManger.Instance.TingFirstValue = msg.byDrawSeaBottom; NetworkMgr.Instance.GameServer.SendDiscardTileReq(msg); MahjongManger.Instance.isEndPutAnimation = false; UIMainView.Instance.PlayerPlayingPanel.TingShow.SetActive(false); MahjongManger.Instance.HideTingLogo(); } //隐藏该麻将 //transform.localScale = Vector3.one * 0.001f; iState = 0; //获取第一张麻将的位置 //firstPos = MahjongManger.Instance.GetFirstMahjongPos(0); firstPos = MahjongManger.Instance.FirstPos; //获取打出牌的下标 for (int i = 0; i < pppd.usersCardsInfo[0].listCurrentCards.Count; i++) { if (bMahjongValue == pppd.usersCardsInfo[0].listCurrentCards[i].cardNum && iMahId == pppd.usersCardsInfo[0].listCurrentCards[i].MahId) { pppd.usersCardsInfo[0].listCurrentCards.RemoveAt(i); MahjongManger.Instance.iputCardIndex = i; break; } } int deadcardValue = -1; int mahid = -1; if (MahjongManger.Instance.PlayerDealHandCrad != null) { deadcardValue = MahjongManger.Instance.PlayerDealHandCrad.bMahjongValue; mahid = MahjongManger.Instance.PlayerDealHandCrad.iMahId; } //判断打出的牌是不是摸到的手牌 if (isDealCard) { isDealCard = false; } else { //对list进行排序,获取手牌的下标 pppd.CurrentCradSort(0); pppd.CurrentCradSort(0); //处理玩家吃碰之后的打牌操作 if (deadcardValue == -1 && mahid == -1) { if (pppd.isSpwanSpecialCard) { pppd.isSpwanSpecialCard = false; MahjongManger.Instance.insertCardIndex = pppd.usersCardsInfo[0].listCurrentCards.Count; } else { MahjongManger.Instance.insertCardIndex = -1; MahjongManger.Instance.iputCardIndex -= 1; } } else { for (int i = 0; i < pppd.usersCardsInfo[0].listCurrentCards.Count; i++) { if (deadcardValue == pppd.usersCardsInfo[0].listCurrentCards[i].cardNum && mahid == pppd.usersCardsInfo[0].listCurrentCards[i].MahId) { MahjongManger.Instance.insertCardIndex = i; break; } } } Mahjong[] mah = new Mahjong[Mathf.Abs(MahjongManger.Instance.insertCardIndex - MahjongManger.Instance.iputCardIndex)]; if (Mathf.Abs(MahjongManger.Instance.insertCardIndex - MahjongManger.Instance.iputCardIndex) > 0) { mah = MahjongManger.Instance.GetWillMoveCard(); } //调用移动方法插入手牌 if (mah.Length > 0) { for (int i = 0; i < mah.Length; i++) { mah[i].MoveSelf(MahjongManger.Instance.MoveStatus, 1); } } //Debug.LogError("这张麻将的信息,deadcardValue:" + deadcardValue + ",mahid:" + mahid); if (deadcardValue != -1 && mahid != -1) { MahjongManger.Instance.flyMahjongIndexPos(firstPos); } else { MahjongManger.Instance.GetFirstMahjongPos(0); } } int index = pppd.GetOtherPlayerShowPos(pppd.bySeatNum + 1) - 1; if (status == 1) { byte value = bMahjongValue; //if (PlayerPrefs.HasKey("TingOneCard")) //{ // if (PlayerPrefs.GetInt("TingOneCard") == 1 && pppd.playingMethodConf.byDiscardSeeReadHandTile == 0) // { // value = 255; // } //} pppd.iSpwanCardNum--; //先在同一个位置产生一个对应的预置体,然后移动 transform.localScale = Vector3.zero; GameObject go = Instantiate(Resources.Load <GameObject>("Game/Ma/TabelBigCard")); go.transform.SetParent(UIMainView.Instance.PlayerPlayingPanel._Cards[0].transform.Find("currentGroup")); go.name = "TabelBigCard"; go.transform.localPosition = transform.localPosition; go.transform.localScale = Vector3.one * 1.2f; go.transform.localEulerAngles = Vector3.zero; UIMainView.Instance.PlayerPlayingPanel.ChangeCardNum(go.transform.Find("Image/num").GetComponent <Image>(), value, index); go.GetComponent <Mahjong>().bMahjongValue = value; go.GetComponent <Mahjong>().PutCardAnimator(pppd.bySeatNum, value, 1); PoolManager.Unspawn(gameObject); } else { } isDealCard = false; }