public void StopPlayingVoice() { MahjongCommonMethod mc = MahjongCommonMethod.Instance;//开静音 PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; if (VoiceFlag == 1) { int err = m_voiceengine.StopPlayFile(); if (err != 0) { ErroOccur(err, null); } } else { YunVaImSDK.instance.RecordStopPlayRequest(); } UIMainView.Instance.PlayerPlayingPanel._playingHead[pppd.GetOtherPlayerShowPos(pppd.GetOtherPlayerPos(voices[0].iUserId)) - 1].GetChild(4).GetComponent <Animator>().SetBool("isPlayOthers", false); isPlayingState = false; //关闭播放状态 // mc.isMusicShut = false; if (voices.Count > 0) { voices.RemoveAt(0); } // SystemMgr.Instance.BgmSystem.UpdateVolume(); }
/// <summary> /// 找到同桌其他玩家要删除的打出的手牌 /// </summary> /// <param name="parent">要找的玩家的对应的父物体</param> public Mahjong GetOtherPlayerHandCard(Transform parent, int index) { Mahjong mah = null; if (parent == null) { return(null); } PlayerPlayingPanelData pppd = MahjongGame_AH.GameData.Instance.PlayerPlayingPanelData; Mahjong[] maharray = parent.GetComponentsInChildren <Mahjong>(); string name = ""; if (index == 1 || index == 3) { name = PlayerPlayingPanelData.currentHCardPre; } else { name = PlayerPlayingPanelData.currentUCardPre; } //从最后一个寻找要删除的刚才摸得手牌 for (int i = maharray.Length - 1; i >= 0; i--) { if (maharray[i].name == name && maharray[i].enabled) { mah = maharray[i]; break; } } return(mah); }
/// <summary> /// 平移麻将 /// </summary> /// <param name="movestatus">表示麻将的平移状态,1表示左移,2表示右移</param> /// <param name="movelength">表示要平移的麻将的个数,乘以麻将的宽度,</param> public void MoveSelf(int movestatus, int movelength) { if (movelength >= 3) { movelength = 3; } float distance = movelength * length; Tweener tweener; //左移 if (movestatus == 1) { tweener = transform.DOLocalMoveX(transform.localPosition.x - distance, 0.15f); } //右移 else { tweener = transform.DOLocalMoveX(transform.localPosition.x + distance, 0.15f); } tweener.SetEase(Ease.Linear); PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; //在这之后处理用户的碰杠之后,处理牌的位置 if (pppd.isGangToPeng_Put) { pppd.isGangToPeng_Put = false; //pppd.CurrentCradSort(2); } }
public void PlayVoice(string urlLocal) { AudioListener.volume = 0f; //找到对应位置的语音动画播放 PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; // Debug.LogWarning("玩家index:" + (pppd.GetOtherPlayerShowPos(pppd.GetOtherPlayerPos(voices[0].iUserId)) - 1)); int index = pppd.GetOtherPlayerShowPos(pppd.GetOtherPlayerPos(voices[0].iUserId)) - 1; UIMainView.Instance.PlayerPlayingPanel._playingHead[index].GetChild(4).GetComponent <Animator>().SetBool("isPlayOthers", true); //Debug.LogWarning("动画没问题"); string ext = DateTime.Now.ToFileTime().ToString(); if (VoiceFlag == 1) { string[] pathSplit = voices[0].szRecordUrlPath.Split('/'); string localFilePath = isExistGvoiceFile(MahjongLobby_AH.SDKManager.DataPath) + pathSplit[pathSplit.Length - 1]; int downLoadErr = m_voiceengine.DownloadRecordedFile(ByteArrayToHexString(voices[0].id), localFilePath, 6000); ShortTalkData std = GameData.Instance.ShortTalkData; if (!std._DownLoadFilePath.ContainsKey(voices[0].szRecordUrlPath)) { std._DownLoadFilePath.Add(voices[0].szRecordUrlPath, localFilePath); Debug.LogWarning("下载地址1:" + voices[0].szRecordUrlPath); } Debug.LogWarning("下载地址2:" + localFilePath); m_voiceengine.OnPlayRecordFilComplete += (code, filePath) => { if (code != IGCloudVoice.GCloudVoiceCompleteCode.GV_ON_PLAYFILE_DONE) { Debug.Log("OnPlayRecordFilComplete error" + code); } else { Chenggong = true; StartCoroutine(CompeletPlay()); } }; ErroOccur(downLoadErr, () => { StartCoroutine(CompeletPlay()); }); } else { YunVaImSDK.instance.RecordStartPlayRequest(urlLocal, voices[0].szRecordUrlPath, ext, (data2) => { Debug.LogWarning("data2.result:" + data2.result + "Chenggong:" + Chenggong); if (data2.result == 0) { Chenggong = true; StartCoroutine(CompeletPlay()); } else { VoiceInit(); // StartCoroutine(CompeletPlay()); //Debug.LogWarning("播放失败");//关静音 Debug.LogWarning(voices[0].szRecordUrlPath); MahjongCommonMethod.Instance.ShowRemindFrame("语音播放失败", true); } }); } }
/// <summary> /// 改变玩家的解散房间的状态 /// </summary> /// <param name="seatNum">1--4玩家座位号</param> /// <param name="status">1表示同意,2表示拒绝</param> public void UpdateShow(int seatNum, int status) { PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; //更新别人的状态,出去发起人按照其他三个用户的座位号大小按顺序显示状态 StringBuilder str_1 = new StringBuilder(); //改变状态 if (status == 1) { str_1.Append("<color=#" + color[0] + ">已同意</color>"); } else { str_1.Append("<color=#" + color[1] + ">等待选择</color>"); } PlayerDissolveMessage[seatNum - 1].text = str_1.ToString(); if (seatNum == iseatNum) { Initiator[seatNum - 1].gameObject.SetActive(true); } else { Initiator[seatNum - 1].gameObject.SetActive(false); } }
//IEnumerator DownLoadVoice() //{ // yield return new WaitUntil(() => // { // bool aa = false; // aa = DownVoice(); // Debug.LogError("是否下载完" + aa); // return aa; // }); // Debug.LogError("----------下载完播放"); // PlayRecordVoice(); //} /// <summary> /// 播放声音 /// </summary> public void PlayRecordVoice() { ShortTalkData std = GameData.Instance.ShortTalkData; if (!std._DownLoadFilePath.ContainsKey(_url))//如果未下载 { Debug.LogWarning("未下载"); DownVoice(); //StartCoroutine(DownLoadVoice()); return; } PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; Debug.LogWarning("开播"); string ext = DateTime.Now.ToFileTime().ToString(); if (VoiceManegerMethord.Instance.isPlayingState) { VoiceManegerMethord.Instance.StopPlayingVoice(); } AudioListener.pause = true; if (VoiceManegerMethord.VoiceFlag == 1) { int downLoadErr = VoiceManegerMethord.Instance.m_voiceengine.PlayRecordedFile(std._DownLoadFilePath[_url]); VoiceManegerMethord.Instance.ErroOccur(downLoadErr, null); VoiceManegerMethord.Instance.m_voiceengine.OnPlayRecordFilComplete += (code, filePath) => { if (code != IGCloudVoice.GCloudVoiceCompleteCode.GV_ON_PLAYFILE_DONE) { Debug.Log("OnPlayRecordFilComplete error" + code); } else { Debug.LogError("播放失败:" + code);//关静音 //MahjongCommonMethod.Instance.ShowRemindFrame("语音播放失败"); } AudioListener.pause = false; }; } else { YunVaImSDK.instance.RecordStartPlayRequest(std._DownLoadFilePath[_url], "", ext, (data2) => { if (data2.result == 0) { // PanlePlayers[panelNum].FindChild("P" + pwpd.GetOtherPlayerShowPos(pwpd.GetOtherPlayerPos(voices[0].iUserId)).ToString()).FindChild("VoicePic").GetComponent<SpriteRenderer>().enabled = false; Debug.Log("播放成功"); } else { Debug.LogError("播放失败");//关静音 anhui.MahjongCommonMethod.Instance.ShowRemindFrame("语音播放失败"); } // UIMainView.Instance.PlayerPlayingPanel._playingHead[pppd.GetOtherPlayerShowPos(pppd.GetOtherPlayerPos(voices[0].iUserId)) - 1].GetChild(4).GetComponent<Animator>().SetBool("isPlayOthers", false); AudioListener.pause = false; }); } }
public void ShowAllPlayerMessage() { PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; StringBuilder str = new StringBuilder(); //显示玩家头像 for (int i = 0; i < 4; i++) { anhui.MahjongCommonMethod.Instance.GetPlayerAvatar(HeadImage[i], pppd.usersInfo[i + 1].szHeadimgurl); } str.Append("玩家【"); str.Append(pppd.usersInfo[iseatNum].szNickname); str.Append("】申请解散房间"); Title.text = str.ToString(); for (int i = 0; i < 4; i++) { StringBuilder str_0 = new StringBuilder(); if (i == iseatNum - 1) { PlayerDissolveMessage[i].text = "<color=#" + color[0] + ">已同意</color>"; Initiator[i].gameObject.SetActive(true); } else { PlayerDissolveMessage[i].text = "<color=#" + color[1] + ">等待选择</color>"; Initiator[i].gameObject.SetActive(false); } } if (iseatNum == pppd.bySeatNum) { HideBtn(); } else { Agree.gameObject.SetActive(true); Canel.gameObject.SetActive(true); } for (int i = 0; i < pppd.DisConnectStatus.Length; i++) { if (pppd.DisConnectStatus[i] == 1) { DisConnect[i].gameObject.SetActive(true); } else { DisConnect[i].gameObject.SetActive(false); } } }
//如果处于托管状态,30s后自动处于准备状态 void AutoReady() { PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; if (pppd.iPlayerHostStatus > 0) { //初始化面板 UIMainView.Instance.PlayerPlayingPanel.InitPanel(); StartCoroutine(ThirSecondDelay()); } }
//初始化牌的值和位置 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> /// <returns></returns> public Mahjong[] GetWillMoveCard() { PlayerPlayingPanelData pppd = MahjongGame_AH.GameData.Instance.PlayerPlayingPanelData; List <Mahjong> go_ = new List <Mahjong>(); Mahjong[] mah = GetSelfCard(); //如果要插入到牌在打出的牌的后边 if (insertCardIndex > iputCardIndex) { MoveStatus = 1; for (int i = iputCardIndex; i < insertCardIndex; i++) { if (i > pppd.usersCardsInfo[0].listCurrentCards.Count - 1) { continue; } for (int j = 0; j < mah.Length; j++) { if (pppd.usersCardsInfo[0].listCurrentCards[i].cardNum == mah[j].bMahjongValue && pppd.usersCardsInfo[0].listCurrentCards[i].MahId == mah[j].iMahId) { go_.Add(mah[j]); continue; } } } } else if (insertCardIndex < iputCardIndex) { MoveStatus = 2; for (int i = insertCardIndex + 1; i <= iputCardIndex; i++) { if (i > pppd.usersCardsInfo[0].listCurrentCards.Count - 1) { continue; } for (int j = 0; j < mah.Length; j++) { if (pppd.usersCardsInfo[0].listCurrentCards[i].cardNum == mah[j].bMahjongValue && pppd.usersCardsInfo[0].listCurrentCards[i].MahId == mah[j].iMahId) { go_.Add(mah[j]); } } } } return(go_.ToArray()); }
System.Collections.IEnumerator Delay_Pong() { yield return(new WaitForSeconds(0.15f)); PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; MahjongManger.Instance.iniAnimationStatus++; InitMahjongPos(); if (pppd.isGangToPeng_Later) { pppd.isGangToPeng_Later = false; //pppd.CurrentCradSort(2); //处理碰杠之后,摸得牌 pppd.DelayDiscardTileNotice(pppd.DiscardTileNotice); } }
public void VoiceLogin() { /// // return; // Debug.LogError("云哇登录serverID " + MahjongCommonMethod.Instance.serverID); string ttFormat = "{{\"nickname\":\"{0}\",\"uid\":\"{1}\"}}"; string nickName = GameData.Instance.PlayerNodeDef.szNickname; int id = GameData.Instance.PlayerNodeDef.iUserId; if (string.IsNullOrEmpty(nickName)) { nickName = "szNickname"; } if (id <= 0) { id = GameData.Instance.PlayerNodeDef.iUserId; } string tt = string.Format(ttFormat, nickName, id); Debug.LogWarning("语音:" + tt); // return; string[] wildcard = new string[2]; wildcard[0] = "0x001"; wildcard[1] = "0x002"; PlayerPlayingPanelData ppd = GameData.Instance.PlayerPlayingPanelData; // Debug.LogWarning("====================================0"); YunVaImSDK.instance.YunVaOnLogin(tt, MahjongCommonMethod.Instance.serverID, wildcard, 0, (data) => { if (data.result == 0) { Debug.Log("语音登录成功"); ppd.isVoiceLogin = true; //YunVaImSDK.instance.RecordSetInfoReq(true);//开启录音的音量大小回调 } else { Debug.LogError("语音登录失败"); ppd.isVoiceLogin = false; VoiceInit(); MahjongCommonMethod.Instance.ShowRemindFrame("语音登录失败,请重新进入房间"); } }); // Debug.LogError("====================================1"); }
//第二段移动完成 void Oncomplete_1(int seatNum, int starus) { transform.GetChild(0).gameObject.SetActive(false); //产生桌面麻将。删除自己 UIMainView.Instance.PlayerPlayingPanel.SpwanTableCrad(seatNum, bMahjongValue); // if (!GameData.Instance.PlayerPlayingPanelData.isGangToPeng_Later) // { //开始接受消息 NetworkMgr.Instance.GameServer.Unlock(); // } MahjongManger.Instance.isEndPutAnimation = true; SystemMgr.Instance.AudioSystem.PlayManual(AudioSystem.AudioMenel.card_sound, false, false); //Debug.LogError("开始准备删除麻将预置体,starus:" + starus); if (starus == 1 || starus == 4) { Init(); if (transform.GetComponent <PoolAgent>()) { PoolManager.Unspawn(gameObject); } else { Destroy(gameObject); } } else { Destroy(gameObject); } if (starus != 3) { PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; if (seatNum == pppd.bySeatNum) { MahjongManger.Instance.iniAnimationStatus++; InitMahjongPos(); } } }
public void OnClick() { if (isDrag) { return; } if (MahjongManger.Instance.hasCardDarg) { return; } // Debug.LogError("点击Onclick"); if (iState == 1) { iState = 0; PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; if (pppd.isCanHandCard) { PutCard(1); } else { MoveDown(bMahjongValue); } } else if (iState == 0) { iState = 1; SystemMgr.Instance.AudioSystem.PlayManual(AudioSystem.AudioMenel.pick_card, false, false); for (int i = 0; i < transform.parent.GetComponentsInChildren <Mahjong>(false).Length; i++) { Mahjong mj = transform.parent.GetComponentsInChildren <Mahjong>(false)[i]; if (mj != this) { if (mj.iState == 1) { // Debug.LogError("有牌上去了"); mj.iState = 0; mj.MoveDown(mj.bMahjongValue); } } } MoveUp(); } }
/// <summary> /// 获取第一个麻将的位置 /// </summary> /// <param name="status">0表示正常状态,1表示插入到第一个位置</param> /// <returns></returns> public Vector3 GetFirstMahjongPos(int status) { PlayerPlayingPanelData pppd = MahjongGame_AH.GameData.Instance.PlayerPlayingPanelData; Vector3 vec = new Vector3(-557f, 0, 0); float length = 0; if (pppd.usersCardsInfo[0].listSpecialCards.Count > 0) { if (pppd.usersCardsInfo[0].listSpecialCards[0].type == 5 || pppd.usersCardsInfo[0].listSpecialCards[0].type == 6) { length = 85f; } else { length = 247f; } } vec += new Vector3(pppd.usersCardsInfo[0].listSpecialCards.Count * length, 0, 0); //Mahjong[] mah = GetSelfCard(); //if (mah.Length == 0) //{ // return new Vector3(-557f, 0, 0); //} ////通过冒泡排序找到x轴最小的那个麻将,就是第一个麻将 //for(int i=0;i<mah.Length;i++) //{ // //Debug.LogError("pos:" + mah[i].transform.localPosition + ",value:" + mah[i].bMahjongValue); // if(vec.x>=mah[i].transform.localPosition.x) // { // vec = mah[i].transform.localPosition; // } //} FirstPos = vec; return(vec); }
/// <summary> /// 点击高级设置 /// </summary> public void BtnAdvanceSetting() { PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; if (AnvanceSettingStatus == 1) { SettingText.text = "收起"; SettingImage.transform.localEulerAngles = new Vector3(0, 0, 180f); AdvanceSetting[0].SetActive(true); AdvanceSetting[1].SetActive(true); SpecialSetting.minHeight = 145f; AnvanceSettingStatus = 2; } else { SettingText.text = "展开"; SettingImage.transform.localEulerAngles = Vector3.zero; AdvanceSetting[0].SetActive(false); AdvanceSetting[1].SetActive(false); SpecialSetting.minHeight = 55f; AnvanceSettingStatus = 1; } float height = 0; for (int i = 0; i < LayoutMent_All.Length; i++) { height += LayoutMent_All[i].minHeight; } if (height > 375f) { Rect.GetComponent <ScrollRect>().enabled = true; } else { Rect.GetComponent <ScrollRect>().enabled = false; } }
IEnumerator CompeletPlay(float time = -1) { yield return(new WaitForSeconds(0)); if (voices.Count > 0) { PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; int index_pH = pppd.GetOtherPlayerShowPos(pppd.GetOtherPlayerPos(voices[0].iUserId)) - 1; Debug.LogWarning("播放完成" + voices[0].iUserId + "index_pH:" + index_pH); if (index_pH >= 0 && index_pH <= 3) { UIMainView.Instance.PlayerPlayingPanel._playingHead[index_pH].GetChild(4).GetComponent <Animator>().SetBool("isPlayOthers", false); } isPlayingState = false;//关闭播放状态 voices.RemoveAt(0); } AudioListener.volume = 1; if (time > 0) { StopCoroutine(DealNoReasult(time)); } }
/// <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; }
/// <summary> /// 产生玩法数量的预置体 /// </summary> /// <param name="index"></param> void SpwanPayNum(int index) { if (MethodParent.GetComponentsInChildren <Transform>().Length > 1) { return; } int AllCol = 0; // Debug.Log("玩法" + index); anhui.MahjongCommonMethod mcm = anhui.MahjongCommonMethod.Instance; PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; MahjongLobby_AH.Data.CreatRoomMessagePanelData cd = MahjongLobby_AH.GameData.Instance.CreatRoomMessagePanelData; #region 分数 GameObject fenshu = Instantiate(Method) as GameObject; fenshu.transform.SetParent(MethodParent.transform); fenshu.transform.localPosition = Vector3.zero; fenshu.transform.localRotation = Quaternion.identity; fenshu.transform.localScale = Vector3.one; MainViewGameRulePlayMethod method_fenshu = fenshu.GetComponent <MainViewGameRulePlayMethod>(); method_fenshu.transform.GetChild(1).GetComponent <GridLayoutGroup>().cellSize = new Vector2(66.0f, method_fenshu.transform.GetChild(1).GetComponent <GridLayoutGroup>().cellSize.y); method_fenshu.Name.text = "分数:"; //分数 GameObject method_fenshu_Select = Instantiate(method_fenshu.GameRuleName) as GameObject; method_fenshu_Select.transform.SetParent(method_fenshu.Parent); method_fenshu_Select.transform.localPosition = Vector3.zero; method_fenshu_Select.transform.localRotation = Quaternion.identity; method_fenshu_Select.transform.localScale = Vector3.one; string str_method_fenshu_Select = ""; if (pppd.playingMethodConf.byBillingMode == 1) { str_method_fenshu_Select = pppd.playingMethodConf.byBillingNumber + "圈"; } else if (pppd.playingMethodConf.byBillingMode == 2) { str_method_fenshu_Select = pppd.playingMethodConf.byBillingNumber + "局"; } else if (pppd.playingMethodConf.byBillingMode == 3) { str_method_fenshu_Select = pppd.playingMethodConf.byBillingNumber + "分"; } //Debug.LogError("局"+pppd.playingMethodConf.byBillingNumber); method_fenshu_Select.transform.GetChild(0).gameObject.SetActive(false); method_fenshu_Select.GetComponentsInChildren <Text>()[0].text = str_method_fenshu_Select; //需要的金币 GameObject method_fenshu_Gold = Instantiate(method_fenshu.GameRuleGold) as GameObject; method_fenshu_Gold.transform.SetParent(method_fenshu.Parent); method_fenshu_Gold.transform.localPosition = Vector3.zero; method_fenshu_Gold.transform.localRotation = Quaternion.identity; method_fenshu_Gold.transform.localScale = Vector3.one; method_fenshu_Gold.GetComponentsInChildren <Text>()[0].text = "X" + pppd.playingMethodConf.byBillingPrice.ToString(); AllCol++; #endregion #region 支付方式 GameObject zhifufangshi = Instantiate(Method) as GameObject; zhifufangshi.transform.SetParent(MethodParent.transform); zhifufangshi.transform.localPosition = Vector3.zero; zhifufangshi.transform.localRotation = Quaternion.identity; zhifufangshi.transform.localScale = Vector3.one; MainViewGameRulePlayMethod method_zhifufangshi = zhifufangshi.GetComponent <MainViewGameRulePlayMethod>(); method_zhifufangshi.Name.text = "房费:"; //支付方式 GameObject method_zhifufangshi_Select = Instantiate(method_zhifufangshi.GameRuleName) as GameObject; method_zhifufangshi_Select.transform.SetParent(method_zhifufangshi.Parent); method_zhifufangshi_Select.transform.localPosition = Vector3.zero; method_zhifufangshi_Select.transform.localRotation = Quaternion.identity; method_zhifufangshi_Select.transform.localScale = Vector3.one; method_zhifufangshi_Select.transform.GetChild(0).gameObject.SetActive(false); if (anhui.MahjongCommonMethod.Instance.ReadColumnValue(cd.roomMessage_, 2, 39) <= 1) { method_zhifufangshi_Select.GetComponentsInChildren <Text>()[0].text = "四家支付"; } else if (anhui.MahjongCommonMethod.Instance.ReadColumnValue(cd.roomMessage_, 2, 39) == 2) { method_zhifufangshi_Select.GetComponentsInChildren <Text>()[0].text = "房主支付"; } AllCol++; #endregion #region 玩法 if (mcm._dicMethodCardType.ContainsKey(index)) { int count = 0; int count_jibu = 5; GameObject wanfa = Instantiate(Method) as GameObject; wanfa.transform.SetParent(MethodParent.transform); wanfa.transform.localPosition = Vector3.zero; wanfa.transform.localRotation = Quaternion.identity; wanfa.transform.localScale = Vector3.one; MainViewGameRulePlayMethod method_wanfa = wanfa.GetComponent <MainViewGameRulePlayMethod>(); method_wanfa.transform.GetChild(1).GetComponent <GridLayoutGroup>().padding.left = 8; method_wanfa.Name.text = "玩法:"; AllCol++; for (int i = 0; i < mcm._dicMethodCardType[index].Count; i++) { // Debug.LogWarning("规则:" + mcm._dicmethodToCardType[index][i].RuleId); if (mcm.JudgeIsShow(mcm._dicmethodToCardType[index][i].RuleId)) { string name = mcm._cardType_[mcm._dicmethodToCardType[index][i].RuleId].card_type; // Debug.Log(mcm._cardType_[mcm._dicmethodToCardType[index][i].RuleId].card_type); GameObject method_wanfa_Select = Instantiate(method_wanfa.GameRuleName) as GameObject; method_wanfa_Select.transform.SetParent(method_wanfa.Parent); method_wanfa_Select.transform.localPosition = Vector3.zero; method_wanfa_Select.transform.localRotation = Quaternion.identity; method_wanfa_Select.transform.localScale = Vector3.one; method_wanfa_Select.GetComponentsInChildren <Text>()[0].text = name; count++; if (count == count_jibu) { GameObject wanfa_1 = Instantiate(Method) as GameObject; wanfa_1.transform.SetParent(MethodParent.transform); wanfa_1.transform.localPosition = Vector3.zero; wanfa_1.transform.localRotation = Quaternion.identity; wanfa_1.transform.localScale = Vector3.one; MainViewGameRulePlayMethod method_wanfa_1 = wanfa_1.GetComponent <MainViewGameRulePlayMethod>(); method_wanfa_1.Name.text = ""; AllCol++; count_jibu += 4; } } } } #endregion #region 托管 if (cd.roomMessage_[5] > 0) { GameObject tuoguan = Instantiate(Method) as GameObject; tuoguan.transform.SetParent(MethodParent.transform); tuoguan.transform.localPosition = Vector3.zero; tuoguan.transform.localRotation = Quaternion.identity; tuoguan.transform.localScale = Vector3.one; MainViewGameRulePlayMethod method_tuoguan = tuoguan.GetComponent <MainViewGameRulePlayMethod>(); method_tuoguan.Name.text = "托管:"; //托管 GameObject method_tuoguan_Select = Instantiate(method_tuoguan.GameRuleName) as GameObject; method_tuoguan_Select.transform.SetParent(method_tuoguan.Parent); method_tuoguan_Select.transform.localPosition = Vector3.zero; method_tuoguan_Select.transform.localRotation = Quaternion.identity; method_tuoguan_Select.transform.localScale = Vector3.one; method_tuoguan_Select.transform.GetChild(0).gameObject.SetActive(false); method_tuoguan_Select.GetComponentsInChildren <Text>()[0].text = (cd.roomMessage_[5] * 60) + "秒"; AllCol++; } #endregion if (AllCol >= 4) { int leng = 20; leng = ((AllCol - 4) + 1) * 25; //背景框面板 m_imMoveBGLeft.rectTransform.offsetMin = new Vector2(m_imMoveBGLeft.rectTransform.offsetMin.x, m_imMoveBGLeft.rectTransform.offsetMin.y - leng); m_imMoveBGLeft.transform.localPosition = new Vector3(m_imMoveBGLeft.transform.localPosition.x, 0); m_imMoveBGRight.rectTransform.offsetMin = new Vector2(m_imMoveBGRight.rectTransform.offsetMin.x, m_imMoveBGRight.rectTransform.offsetMin.y - leng); m_imMoveBGRight.transform.localPosition = new Vector3(m_imMoveBGRight.transform.localPosition.x, 0); //其他面板 m_gAllMoveUp.transform.localPosition = new Vector3(m_gAllMoveUp.transform.localPosition.x, leng, m_gAllMoveUp.transform.localPosition.z); m_gAllMoveDown.transform.localPosition = new Vector3(m_gAllMoveUp.transform.localPosition.x, -(leng - leng / 4), m_gAllMoveUp.transform.localPosition.z); } }
/// <summary> /// 产生对应的手牌 /// </summary> public void SpwanPlayerCard() { GameResultPanelData grpd = GameData.Instance.GameResultPanelData; Vector3 initpos_0 = initPos.transform.localPosition; //普通麻将的初始位置 PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; int index = pppd.GetOtherPlayerShowPos(iseatNum + 1) - 1; if (initpos_0.y > 80) { initpos_0 = new Vector3(initpos_0.x, 80, 0); } int mahjongNum_0 = 0; //麻将产生数量 byte bLastTile = 0; //最后一张得到的牌 int winNum = 0; //显示胡牌的数量 //存储玩家的手牌 List <byte> mahvalue = new List <byte>(); for (int i = 0; i < 14; i++) { if (grpd.bHandleTiles[iseatNum - 1, i] != 0) { mahvalue.Add(grpd.bHandleTiles[iseatNum - 1, i]); } } //添加玩家最后获取的一张牌,会添加一个胡牌的标志图片 if (grpd.resultType[iseatNum - 1].lastTile.bySuit != 0 && grpd.byaWinSrat[iseatNum - 1] > 0) { bLastTile = (byte)(grpd.resultType[iseatNum - 1].lastTile.bySuit * 16 + grpd.resultType[iseatNum - 1].lastTile.byValue); if (!bSelfWin) { mahvalue.Add(bLastTile); } } mahvalue.Sort(iCompareList); //产生手牌 for (int i = 0; i < mahvalue.Count; i++) { if (mahvalue[i] != 0) { GameObject go = null; go = PoolManager.Spawn("Game/Ma/", PlayerPlayingPanelData.showVCardPre); go.transform.SetParent(playerCard.transform); go.transform.SetAsFirstSibling(); go.transform.localScale = Vector3.one; go.transform.localEulerAngles = Vector3.zero; go.transform.Find("Image/num").transform.localEulerAngles = Vector3.zero; go.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 0); go.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 0); go.transform.localPosition = initpos_0 + new Vector3(mahjongNum_0 * 42f, 0, 0); mahjongNum_0++; if (bLastTile == mahvalue[i] && winNum == 0 && grpd.byaWinSrat[iseatNum - 1] > 0) { go.transform.Find("win").gameObject.SetActive(true); winNum++; } go.transform.Find("point").gameObject.SetActive(false); UIMainView.Instance.PlayerPlayingPanel.ChangeCardNum(go.transform.Find("Image/num").GetComponent <Image>(), mahvalue[i]); } else { break; } } Vector3 initpos_1 = initPos_special.transform.localPosition; //特殊麻将的初始位置 int mahjongNum_1 = 0; //产生顺子牌 //Debug.LogError("产生顺子牌:" + grpd.resultType[iseatNum - 1].bySequenceNum); for (int i = 0; i < grpd.resultType[iseatNum - 1].bySequenceNum; i++) { GameObject go = null; byte value = 0; //顺子的第一个值 go = PoolManager.Spawn("Game/Ma/", PlayerPlayingPanelData.pegaUCardsPre); go.transform.SetParent(playerCard.transform); go.transform.SetAsFirstSibling(); go.transform.localScale = Vector3.one; go.transform.localEulerAngles = Vector3.zero; go.transform.localPosition = initpos_1 + new Vector3(mahjongNum_0 * 42f + 20f + mahjongNum_1 * 145f, 0, 0); //更新牌面 value = (byte)(grpd.resultType[iseatNum - 1].sequenceType[i].bySuit * 16 + grpd.resultType[iseatNum - 1].sequenceType[i].byFirstValue); UpdateCard(go, value, 0); mahjongNum_1++; } // Debug.LogError("grpd.resultType[iseatNum - 1].byTripletNum" + grpd.resultType[iseatNum - 1].byTripletNum); //产生刻子牌 for (int i = 0; i < grpd.resultType[iseatNum - 1].byTripletNum; i++) { GameObject go = null; byte value = 0; //对应牌的花色值 go = PoolManager.Spawn("Game/Ma/", PlayerPlayingPanelData.pegaUCardsPre); go.transform.SetParent(playerCard.transform); go.transform.SetAsFirstSibling(); go.transform.localScale = Vector3.one; go.transform.localEulerAngles = Vector3.zero; go.transform.localPosition = initpos_1 + new Vector3(mahjongNum_0 * 42f + 20f + mahjongNum_1 * 145f, 0, 0); //更新牌面的花色值 value = (byte)(grpd.resultType[iseatNum - 1].tripletType[i].bySuit * 16 + grpd.resultType[iseatNum - 1].tripletType[i].byValue); // Debug.LogError("刻子牌的花色值:" + value.ToString("X2")); UpdateCard(go, value, grpd.resultType[iseatNum - 1].tripletType[i].byPongKongType); mahjongNum_1++; } //Debug.LogError("吃抢的牌的数量:" + grpd.resultType[iseatNum - 1].byThirteenOrphansNum); //产生吃抢的牌 for (int i = 0; i < grpd.resultType[iseatNum - 1].byThirteenOrphansNum; i++) { byte value = 0; //对应牌的花色值 //更新牌面的花色值 value = (byte)(grpd.resultType[iseatNum - 1].thirteenOrphansType[i].bySuit * 16 + grpd.resultType[iseatNum - 1].thirteenOrphansType[i].byValue); GameObject go = null; go = PoolManager.Spawn("Game/Ma/", PlayerPlayingPanelData.showVCardPre); go.transform.SetParent(playerCard.transform); go.transform.SetAsFirstSibling(); go.transform.localScale = Vector3.one; go.transform.localEulerAngles = Vector3.zero; go.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 0); go.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 0); go.transform.localPosition = initpos_0 + new Vector3(mahjongNum_0 * 42f + 20f, 0, 0); UIMainView.Instance.PlayerPlayingPanel.ChangeCardNum(go.transform.Find("Image/num").GetComponent <Image>(), value, index); mahjongNum_0++; } }
/// <summary> /// 更新面板数据 /// </summary> public void UpdateShow() { GameResultPanelData grpd = GameData.Instance.GameResultPanelData; PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; if (grpd.isPanelShow) { gameObject.SetActive(true); if (MahjongLobby_AH.SDKManager.Instance.IOSCheckStaus == 1) { #if UNITY_IOS || UNITY_IPONE for (int i = 0; i < _btnShare.Length; i++) { _btnShare[i].SetActive(false); } #endif } else { for (int i = 0; i < _btnShare.Length; i++) { _btnShare[i].SetActive(true); } } //修改确定按钮的图片 //if(grpd.HandDissolve==0) //{ // okImage.sprite = ok_sprite[0]; //} //else //{ // okImage.sprite = ok_sprite[1]; //} //产生一局结算的结果 if (grpd.isShowRoundGameResult) { RoundGameReult.SetActive(true); GameBtn[0].SetActive(true); } else { RoundGameReult.SetActive(false); GameBtn[0].SetActive(false); } //产生房间游戏结算的结果 if (grpd.isShowRoomGameResult) { AllGameResult.SetActive(true); Title[0].SetActive(false); Title[1].SetActive(false); GameBtn[1].SetActive(true); RPButton.SetActive(true); } else { Title[0].SetActive(true); Title[1].SetActive(true); AllGameResult.SetActive(false); GameBtn[1].SetActive(false); RPButton.SetActive(false); } } else { gameObject.SetActive(false); } }
/// <summary> /// 产生四家的结算的预置体 /// </summary> public void SpwanGameReult_Round() { GameResultPanelData grpd = GameData.Instance.GameResultPanelData; //在每次产生之前先删除之前的预置体 GameResultPrefab[] prefab = RoundGameReult.transform.GetComponentsInChildren <GameResultPrefab>(); if (prefab.Length > 0) { for (int i = 0; i < prefab.Length; i++) { Destroy(prefab[i].gameObject); } } for (int i = 1; i < 5; i++) { GameObject go = null; //通过座位号判断玩家信息是否是赢家 if (grpd.byaWinSrat[i - 1] > 0) { go = Instantiate(Resources.Load <GameObject>("Game/GameResult/RoundPlayerResult_Win")); go.transform.SetParent(RoundGameReult.transform); go.transform.SetAsFirstSibling(); } else { go = Instantiate(Resources.Load <GameObject>("Game/GameResult/RoundPlayerResult_Normal")); go.transform.SetParent(RoundGameReult.transform); } go.transform.localScale = Vector3.one; go.transform.localEulerAngles = Vector3.zero; go.transform.localPosition = new Vector3(go.transform.localPosition.x, go.transform.localPosition.y, 0); GameResultPrefab gameRes = go.GetComponent <GameResultPrefab>(); gameRes.iseatNum = i; gameRes.MessageVlaue(); gameRes.SpwanPlayerCard(); } bool isHuangZhuang = true; //如果本次是荒庄,产生荒庄的图标 for (int i = 0; i < 4; i++) { if (grpd.byaWinSrat[i] > 0) { isHuangZhuang = false; } } //在这里处理如果玩家处于托管状态,30s后自动准备 PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; pppd.isAllAutoStatus = true; //是否是四个人的托管状态 for (int i = 0; i < pppd.iAllPlayerHostStatus.Length; i++) { if (pppd.iAllPlayerHostStatus[i] == 0) { pppd.isAllAutoStatus = false; break; } } if (!pppd.isAllAutoStatus) { AutoReady(); } if (isHuangZhuang) { UIMainView.Instance.PlayerPlayingPanel.SpwanSpeaiclTypeRemind(4, 9, false); } }
bool bSelfWin; //是否自摸的标志位 #region 处理玩家一局结算 /// <summary> /// 更新界面的玩家信息 /// </summary> /// <param name="index"></param> public void MessageVlaue() { PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; GameResultPanelData grpd = GameData.Instance.GameResultPanelData; MahjongCommonMethod.Instance.GetPlayerAvatar(headImage, pppd.usersInfo[iseatNum].szHeadimgurl); NickName.text = pppd.usersInfo[iseatNum].szNickname; if (grpd.bResultPoint[iseatNum - 1] > 0) { PlayerScore.font = font[0]; PlayerScore.text = "+" + grpd.bResultPoint[iseatNum - 1].ToString(); } else if (grpd.bResultPoint[iseatNum - 1] < 0) { PlayerScore.font = font[1]; PlayerScore.text = grpd.bResultPoint[iseatNum - 1].ToString(); } else { PlayerScore.font = font[1]; PlayerScore.text = grpd.bResultPoint[iseatNum - 1].ToString(); } StringBuilder str = new StringBuilder(); //确定是否显示庄家标志图片 if (iseatNum == pppd.byDealerSeat) { Banker.gameObject.SetActive(true); } else { Banker.gameObject.SetActive(false); } #region 处理明暗杠 //获取明杠暗杠数量 for (int i = 0; i < grpd.resultType[iseatNum - 1].byTripletNum; i++) { if (grpd.resultType[iseatNum - 1].tripletType[i].byPongKongType == 2) { iMingGongNum++; } else if (grpd.resultType[iseatNum - 1].tripletType[i].byPongKongType == 3) { iAnGangGongNum++; } } //添加明杠 if (grpd.resultType[iseatNum - 1].cExposedKongPoint != 0) { str.Append("明杠"); int point = grpd.resultType[iseatNum - 1].cExposedKongPoint; if (point > 0) { str.Append("+"); } //添加被杠,额外扣分 if (pppd.playingMethodConf.byFanExtraExposedExtra > 0) { str.Append(point); } else { str.Append(point); } str.Append(" "); } //添加暗杠 if (grpd.resultType[iseatNum - 1].cConcealedKongPoint != 0) { str.Append("暗杠"); if (grpd.resultType[iseatNum - 1].cConcealedKongPoint > 0) { str.Append("+"); } str.Append(grpd.resultType[iseatNum - 1].cConcealedKongPoint); str.Append(" "); } #endregion int winCount_ = 0; //赢家的数量 //添加自摸 for (int i = 0; i < 4; i++) { // Debug.LogWarning(i + "自摸检测byaWinSrat[i]" + grpd.byaWinSrat[i]); if (grpd.byaWinSrat[i] > 0) { winCount_++; winSeat = i + 1; iDrawSeatNum = i + 1; } } //判断一局结束是否是自摸 没有放炮 有赢家 if (winCount_ > 0 && grpd.byShootSeat <= 0) { bSelfWin = true; } else { iDrawSeatNum = 0; } if (iDrawSeatNum == iseatNum) { winMessage_Image.gameObject.SetActive(true); winMessage_Image.sprite = image_round[1]; } //判断自己接炮胡 if (grpd.byaWinSrat[iseatNum - 1] > 0 && !bSelfWin) { winMessage_Image.gameObject.SetActive(true); winMessage_Image.sprite = image_round[0]; } //如果玩家点炮显示点炮信息 if (grpd.byShootSeat == iseatNum) { winMessage_Image.gameObject.SetActive(true); winMessage_Image.sprite = image_round[2]; } int iKongWin = 0; //判断是否荒庄 for (int i = 0; i < 4; i++) { // Debug.LogError(i + "grpd.byaWinSrat[i]" + grpd.byaWinSrat[i]); if (grpd.byaWinSrat[i] > 0) { iKongWin++; } } //判断抢杠胡收几家 bool isRobbingWin = false; if (iDrawSeatNum == 0 && pppd.playingMethodConf.byFanRobbingKongWin > 0) { for (int i = 0; i < 4; i++) { if (grpd.byaWinSrat[i] > 0 && grpd.resultType[i].lastTile.byRobbingKong == 1) { isRobbingWin = true; } } } //如果不是荒庄 显示底分倍数 if (iKongWin > 0) { str.Append(ShowSpecialWinType(iseatNum - 1, grpd.caFanResult)); if (iDrawSeatNum > 0)//自摸 { } else//放炮 { #region 放炮 //一炮多响 放炮收三家 //if (pppd.playingMethodConf.byWinPointMultiPay > 0 || pppd.playingMethodConf.byWinPointMultiShoot > 0) //{ // if (iseatNum == grpd.byShootSeat) // { // str.Append(ShowSpecialWinType(iseatNum - 1, grpd.caFanResult)); // for (int i = 0; i < 4; i++) // { // if (grpd.byaWinSrat[i] > 0) // { // str.Append(ShowSpecialWinType(i, grpd.caFanResult)); // } // } // } // else // { // if (grpd.byaWinSrat[iseatNum - 1] > 0) // { // str.Append(ShowSpecialWinType(iseatNum - 1, grpd.caFanResult)); // } // else // { // for (int i = 0; i < 4; i++) // { // if (grpd.byaWinSrat[i] > 0) // { // str.Append(ShowSpecialWinType(i, grpd.caFanResult)); // break; // } // } // } // } //}//放炮收一家 //else //{ // if (grpd.byaWinSrat[iseatNum - 1] > 0) // { // str.Append(ShowSpecialWinType(iseatNum - 1, grpd.caFanResult)); // } // if (iseatNum == grpd.byShootSeat) // { // for (int i = 0; i < 4; i++) // { // if (grpd.byaWinSrat[i] > 0) // { // str.Append(ShowSpecialWinType(i, grpd.caFanResult)); // break; // } // } // } //} #endregion 放炮 #region 点 if (pppd.playingMethodConf.byWinPoint > 0 && grpd.byShootSeat == 0) { int iValue = grpd.resultType[iseatNum - 1].lastTile.bySuit; int point = 0; if (iValue != 0 && grpd.byaWinSrat[iseatNum - 1] > 0) { int suit = iValue / 16; int value = iValue % 16; if (suit < 4) { if (value < 4) { point = 1; } else if (value > 3 && value < 7) { point = 2; } else { point = 3; } } else { point = 3; } } str.Append("点+"); str.Append(point); str.Append(" "); } #endregion #region 坎(三张一样的算一坎) //int kong_count = 0; //坎的数量 ////如果设置了坎,则计算坎的分数 //if (pppd.playingMethodConf.byWinKong > 0 && grpd.byaWinSrat[iseatNum - 1] > 0) //{ // byte[] temp = new byte[14]; // for (int i = 0; i < 14; i++) // { // temp[i] = grpd.bHandleTiles[winSeat - 1, i]; // } // byte[,] value = MahjongHelper.Instance.SwitchArray(temp); // for (int i = 0; i < 5; i++) // { // for (int j = 1; j < 10; j++) // { // //如果玩家手牌有三张相同的记为1坎 // if (value[i, j] > 2) // { // kong_count++; // } // } // } // //如果下地的三张是不是也要算入坎中 // //if (pppd.playingMethodConf.byWinKongFlagNum > 0) // //{ // // for (int i = 0; i < pppd.usersCardsInfo[0].listSpecialCards.Count; i++) // // { // // if (pppd.usersCardsInfo[0].listSpecialCards[i].type == 2 && pppd.usersCardsInfo[0].listSpecialCards[i].mahValue[0] / 16 > 3) // // { // // kong_count++; // // } // // } // //} // if (kong_count > 0) // { // str.Append("坎+" + kong_count); // str.Append(" "); // } //} #endregion #region 庄闲倍数 if (pppd.playingMethodConf.byWinPointDealerMultiple > 1 && pppd.playingMethodConf.byWinPointPlayerMultiple > 1) { string sZhuangContent = ""; if (pppd.lcDealerMultiple == 1) { sZhuangContent = "庄*3"; } else { sZhuangContent = "庄*" + pppd.playingMethodConf.byWinPointDealerMultiple; } string sXianContent = "闲*1"; //添加庄闲倍数 if (iDrawSeatNum > 0) { if (iDrawSeatNum == pppd.byDealerSeat) { str.Append(sZhuangContent); str.Append(" "); } else { if (iseatNum == pppd.byDealerSeat) { str.Append(sZhuangContent); str.Append(" "); } else { str.Append(sXianContent); str.Append(" "); } } } else { //如果接炮收三家 或者 抢杠胡收三家 if (pppd.playingMethodConf.byWinPointMultiPay == 1 || isRobbingWin) { if (iseatNum == pppd.byDealerSeat) { str.Append(sZhuangContent); } else { //如果庄家胡牌 if (grpd.byaWinSrat[pppd.byDealerSeat - 1] > 0) { str.Append(sZhuangContent); } else { str.Append(sXianContent); } } str.Append(" "); } else { if (grpd.byaWinSrat[iseatNum - 1] > 0 || iseatNum == grpd.byShootSeat) { if (iseatNum == pppd.byDealerSeat) { str.Append(sZhuangContent); } else { if (winSeat == pppd.byDealerSeat || grpd.byShootSeat == pppd.byDealerSeat) { str.Append(sZhuangContent); } else { str.Append(sXianContent); } } str.Append(" "); } } } } #endregion #region 自摸 if (iDrawSeatNum > 0 && MahjongCommonMethod.Instance.iPlayingMethod != 20001) { //平顺自摸不翻倍 if (pppd.playingMethodConf.byWinPointSelfDrawnMultiple == 1) { str.Append("自摸*" + pppd.playingMethodConf.byWinPointSelfDrawnMultiple); } else { str.Append("自摸*" + pppd.playingMethodConf.byWinPointSelfDrawnMultiple); } str.Append(" "); } #endregion #endregion #region 添加额外接炮放炮信息 Debug.Log("添加额外接炮放炮信息" + pppd.playingMethodConf.byWinPointMultiPay + "__" + pppd.playingMethodConf.byWinPointMultiPayExtraMode); //添加接炮的信息 if (pppd.playingMethodConf.byWinPointMultiPay > 0 && pppd.playingMethodConf.byWinPointMultiPayExtraMode > 0) { if (pppd.playingMethodConf.byWinPointMultiPayExtra > 0) { if (grpd.byaWinSrat[iseatNum - 1] > 0 && iDrawSeatNum == 0 && grpd.resultType[iseatNum - 1].cRobbingKongPoint == 0) { str.Append("接炮+" + pppd.playingMethodConf.byWinPointMultiPayExtra); str.Append(" "); } if (grpd.byShootSeat == iseatNum && grpd.resultType[iseatNum - 1].cRobbingKongPoint == 0) { str.Append("放炮-" + pppd.playingMethodConf.byWinPointMultiPayExtra); str.Append(" "); } } } #endregion #region 抢杠胡的额外杠分 ////添加抢杠胡的额外杠分 //if (isContainRob) //{ // if (pppd.playingMethodConf.byFanRobbingKongWin > 0 && grpd.byShootSeat != 0) // { // if (iseatNum == grpd.byShootSeat) // { // str.Append("抢杠胡-" + pppd.playingMethodConf.byFanRobbingKongWin * basePoint); // str.Append(" "); // } // if (iseatNum == winSeat) // { // str.Append("抢杠胡+" + pppd.playingMethodConf.byFanRobbingKongWin * basePoint); // str.Append(" "); // } // } //} #endregion } // Debug.LogError("补杠" + grpd.resultType[iseatNum - 1].cTripletToKongPoint); if (grpd.resultType[iseatNum - 1].cTripletToKongPoint != 0) { str.Append("补杠"); if (grpd.resultType[iseatNum - 1].cTripletToKongPoint > 0) { str.Append("+"); } str.Append(grpd.resultType[iseatNum - 1].cTripletToKongPoint); str.Append(" "); } } // Debug.Log("num" + num); //改变显示特殊牌型文字说明的长度 if (str.Length > 0) { winMessage.gameObject.SetActive(true); winMessage_text.gameObject.SetActive(true); winMessage_text.text = str.ToString(); if (winMessage_text.preferredWidth > 605f) { winMessage.rectTransform.sizeDelta = new Vector2(625f, 31f); } else { winMessage.rectTransform.sizeDelta = new Vector2(winMessage_text.preferredWidth + 20f, 31f); } winMessage.transform.localPosition = new Vector3(winMessage.transform.localPosition.x + (winMessage.rectTransform.rect.width - 60f) / 2f, 8f, 0); } }
/// <summary> /// 点击继续按钮 /// </summary> void HandleBtnNextRound(int status) { PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; GameResultPanelData grpd = GameData.Instance.GameResultPanelData; //如果是手动点击继续,自动解除托管 if (status == 1) { if (pppd.iPlayerHostStatus > 0) { GameData.Instance.GameResultPanelData.iHandClick = 1; NetMsg.ClientCancleAutoStatusReq msg = new NetMsg.ClientCancleAutoStatusReq(); msg.iUserId = GameData.Instance.PlayerNodeDef.iUserId; msg.iSeatNum = (byte)pppd.bySeatNum; Network.NetworkMgr.Instance.GameServer.SendClientCancleAutoStatusReq(msg); } } else { GameData.Instance.GameResultPanelData.iHandClick = 2; } //如果玩家是托管,这个时候检测解散信息 if (pppd.iDissolveFlag == 1) { pppd.iDissolveFlag = 0; NetMsg.ClientDismissRoomRes msg = pppd.DismissRoomRes; //显示解散界面 int seatNum = pppd.GetOtherPlayerPos(msg.iUserId); //显示玩家发起解散房间 if (msg.cType == 1) { if (pppd.isBeginGame || pppd.iMethodId == 11) { //显示界面 UIMainView.Instance.PlayerPlayingPanel.DissolvePanel.SetActive(true); UIMainView.Instance.PlayerPlayingPanel.DissolvePanel.transform.localPosition = Vector3.zero; UIMainView.Instance.PlayerPlayingPanel.DissolvePanel.transform.localScale = Vector3.one; if (pppd.isBeginGame || pppd.isWatingPlayerDownOrUp) { //更新界面 UIMainView.Instance.PlayerPlayingPanel.DissolvePanel.GetComponent <DissvloeNoticePanel>().iseatNum = seatNum; UIMainView.Instance.PlayerPlayingPanel.DissolvePanel.GetComponent <DissvloeNoticePanel>().ShowAllPlayerMessage(); } } } else if (msg.cType == 3) { UIMainView.Instance.PlayerPlayingPanel.DissolvePanel.SetActive(false); System.Text.StringBuilder str = new System.Text.StringBuilder(); str.Append("由于玩家【"); str.Append(pppd.usersInfo[seatNum].szNickname); str.Append("】拒绝,房间解散失败,继续游戏"); UIMgr.GetInstance().GetUIMessageView().Show(str.ToString(), Ok); } } //判断玩家是解散结束还是正常结束 if (grpd.HandDissolve == 0 && !grpd.isEndGame) { if (!pppd.isAllAutoStatus && pppd.iDissolveStatus != 1) { //发送准备请求 NetMsg.ClientReadyReq msg = new NetMsg.ClientReadyReq(); msg.iUserId = GameData.Instance.PlayerPlayingPanelData.iUserId; Debug.Log("点击继续按钮,发送准备请求"); Network.NetworkMgr.Instance.GameServer.SendReadyReq(msg); } GameData.Instance.GameResultPanelData.isPanelShow = false; if (pppd.isBeginGame) { UIMainView.Instance.PlayerPlayingPanel.InitPanel(); } } //如果玩家是解散结束的 else { //关闭玩家的单局结算界面 grpd.isShowRoundGameResult = false; //显示总的结算数据 grpd.isShowRoomGameResult = true; UIMainView.Instance.GameResultPanel.SpwanAllGameResult(); UpdateShow(); } SystemMgr.Instance.GameResultSystem.UpdateShow(); }
string nickNameColor_outline = "206774"; //失败玩家的昵称颜色描边 /// <summary> /// 更新玩家的信息 /// </summary> public void UpdatePlayerMessage() { StringBuilder str = new StringBuilder(); PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; GameResultPanelData grpd = GameData.Instance.GameResultPanelData; //更新玩家头像 MahjongCommonMethod.Instance.GetPlayerAvatar(headImage, pppd.usersInfo[iseatNum].szHeadimgurl); int Score = 0; if (pppd.playingMethodConf.byBillingMode == 3) { Score = pppd.playingMethodConf.byBillingNumber; } int multiple = 1; //分数是否要放大100倍 // if (pppd.playingMethodConf.byWinLimitBeginFan > 0) // { // multiple = 100; //} if (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].sTotalPoint * multiple > Score) { //更新玩家的分数 PlayerScore.font = font[0]; PlayerScore.text = "+" + (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].sTotalPoint * multiple).ToString(); winBg.sprite = RoomResultBg_sprite[0]; //更新玩家的昵称 NickName.text = pppd.usersInfo[iseatNum].szNickname; //更新玩家的id iuserid.text = "ID:" + pppd.usersInfo[iseatNum].iUserId.ToString(); } else { PlayerScore.font = font[1]; PlayerScore.text = (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].sTotalPoint * multiple).ToString(); winBg.sprite = RoomResultBg_sprite[1]; //更新玩家的昵称 NickName.text = pppd.usersInfo[iseatNum].szNickname; NickName.color = new Color(0.86f, 1, 0.95f, 1); NickName.GetComponent <Outline>().effectColor = new Color(0.125f, 0.404f, 0.455f, 1f); //更新玩家的id iuserid.text = "<color=#206774>" + "ID:" + pppd.usersInfo[iseatNum].iUserId + "</color>"; } //更新玩家的具体数据 RoomResult[0].text = grpd.roomResultNotice.aRoomResultType[iseatNum - 1].wSelfDrawn.ToString(); RoomResult[1].text = grpd.roomResultNotice.aRoomResultType[iseatNum - 1].wExposedKong.ToString(); RoomResult[2].text = grpd.roomResultNotice.aRoomResultType[iseatNum - 1].wConcealedKong.ToString(); RoomResult[3].text = grpd.roomResultNotice.aRoomResultType[iseatNum - 1].wShoot.ToString(); RoomResult[4].text = grpd.roomResultNotice.aRoomResultType[iseatNum - 1].wTakeShoot.ToString(); //根据玩家的分数确定显示玩家的赢牌信息 bool score = true; //玩家分数 bool NormalWinCount = true; //接炮次数 for (int i = 0; i < 4; i++) { //如果玩家选择的是打锅玩法,玩法要大于最低的分数 if (pppd.playingMethodConf.byBillingMode == 2 || pppd.playingMethodConf.byBillingMode == 3) { if (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].sTotalPoint * multiple <= pppd.playingMethodConf.byBillingNumber) { score = false; } } //判断得分是不是最高 if (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].sTotalPoint * multiple <= 0 || grpd.roomResultNotice.aRoomResultType[iseatNum - 1].sTotalPoint * multiple < grpd.roomResultNotice.aRoomResultType[i].sTotalPoint * multiple) { score = false; } //判断点炮次数最多 if (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].wShoot < grpd.roomResultNotice.aRoomResultType[i].wShoot || grpd.roomResultNotice.aRoomResultType[iseatNum - 1].wShoot < 2) { NormalWinCount = false; } } if (score) { multiply[1].gameObject.SetActive(false); roomWinMessage.gameObject.SetActive(true); if (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBigWinnerCount < 4) { //大赢家 if (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBigWinnerCount == 1) { multiply[0].gameObject.SetActive(false); Count.gameObject.SetActive(false); } else { multiply[0].gameObject.SetActive(true); Count.gameObject.SetActive(true); Count.text = grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBigWinnerCount.ToString(); } roomWinMessage.sprite = image_room[0]; } else if (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBigWinnerCount < 7) { //雀王 if (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBigWinnerCount == 4) { multiply[0].gameObject.SetActive(false); Count.gameObject.SetActive(false); } else { multiply[0].gameObject.SetActive(true); Count.gameObject.SetActive(true); Count.text = (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBigWinnerCount - 3).ToString(); } roomWinMessage.sprite = image_room[2]; } else { //雀神 if (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBigWinnerCount == 7) { multiply[0].gameObject.SetActive(false); Count.gameObject.SetActive(false); } else { multiply[0].gameObject.SetActive(true); Count.gameObject.SetActive(true); Count.text = (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBigWinnerCount - 6).ToString(); } roomWinMessage.sprite = image_room[3]; } if (iseatNum == MahjongCommonMethod.Instance.mySeatid) { GameData.Instance.GameResultPanelData.isWinner = true; } } if (!score && NormalWinCount) { roomWinMessage.gameObject.SetActive(true); multiply[0].gameObject.SetActive(false); Count.text = grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBestGunnerCount.ToString(); if (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBestGunnerCount < 4) { //最佳炮手 if (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBestGunnerCount == 1) { multiply[1].gameObject.SetActive(false); Count.gameObject.SetActive(false); } else { multiply[1].gameObject.SetActive(true); Count.gameObject.SetActive(true); Count.text = (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBestGunnerCount).ToString(); } roomWinMessage.sprite = image_room[1]; } else if (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBestGunnerCount < 7) { //炮王 if (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBestGunnerCount == 4) { multiply[1].gameObject.SetActive(false); Count.gameObject.SetActive(false); } else { multiply[1].gameObject.SetActive(true); Count.gameObject.SetActive(true); Count.text = (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBestGunnerCount - 3).ToString(); } roomWinMessage.sprite = image_room[4]; } else { //炮神 if (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBestGunnerCount == 7) { multiply[1].gameObject.SetActive(false); Count.gameObject.SetActive(false); } else { multiply[1].gameObject.SetActive(true); Count.gameObject.SetActive(true); Count.text = (grpd.roomResultNotice.aRoomResultType[iseatNum - 1].byBestGunnerCount - 6).ToString(); } roomWinMessage.sprite = image_room[5]; } if (iseatNum == MahjongCommonMethod.Instance.mySeatid) { GameData.Instance.GameResultPanelData.isWinner = true; } } roomWinMessage.GetComponent <Image>().SetNativeSize(); }
/// <summary> /// 产生玩法数量的预置体 /// </summary> /// <param name="index">玩法id</param> /// <param name="ChoiceIndex">玩家选择的下标</param> void SpwanPayNum(int index) { int ChoiceIndex = -1; MahjongCommonMethod mcm = MahjongCommonMethod.Instance; PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; //玩法局或圈的数量 int[] sum = new int[5]; //玩法数量对应支付的房卡数量 int[] pay = new int[5]; //获取对应的游戏局或者圈的数量 if (mcm._dicMethodConfig[index].sum.Contains("|")) { string[] str_0 = mcm._dicMethodConfig[index].sum.Split('|')[0].Split('_'); string[] str_1 = mcm._dicMethodConfig[index].sum.Split('|')[1].Split('_'); for (int i = 0; i < 3; i++) { sum[i] = Convert.ToInt16(str_0[i]); } for (int i = 0; i < 2; i++) { sum[i + 3] = Convert.ToInt16(str_1[i]); } } else { string[] str_0 = mcm._dicMethodConfig[index].sum.Split('_'); for (int i = 0; i < 3; i++) { if (i < str_0.Length) { sum[i] = Convert.ToInt16(str_0[i]); } else { sum[i] = 0; } } sum[3] = 0; sum[4] = 0; } //获取玩家对应的支付数量 if (mcm._dicMethodConfig[index].pay.Contains("|")) { string[] str_0 = mcm._dicMethodConfig[index].pay.Split('|')[0].Split('_'); string[] str_1 = mcm._dicMethodConfig[index].pay.Split('|')[1].Split('_'); for (int i = 0; i < 3; i++) { pay[i] = Convert.ToInt16(str_0[i]); } for (int i = 0; i < 2; i++) { pay[i + 3] = Convert.ToInt16(str_1[i]); } } else { string[] str_0 = mcm._dicMethodConfig[index].pay.Split('_'); for (int i = 0; i < 3; i++) { if (i < str_0.Length) { pay[i] = Convert.ToInt16(str_0[i]); } else { pay[i] = 0; } } pay[3] = 0; pay[4] = 0; } //if (index == 17) //{ // sum[3] = 4; pay[3] = pay[0]; // sum[4] = 8; pay[4] = pay[1]; // sum[5] = 12; pay[5] = pay[2]; //} //int addChoiceIndex = 0; if (index == 17) { if (pppd.playingMethodConf.byBillingMode == 2) { sum[0] = 4; sum[1] = 8; sum[2] = 12; //addChoiceIndex = 3; } } int count = 0; //根据付费数量,判断出玩家的信息 for (int i = 0; i < 5; i++) { if (index == 2 && pppd.playingMethodConf.byBillingPrice == pay[i] && pppd.playingMethodConf.byBillingMode == 2) { ChoiceIndex = i; //pppd.playingMethodConf.byBillingMode = 1; } else if (pppd.playingMethodConf.byBillingNumber == sum[i] && pppd.playingMethodConf.byBillingPrice == pay[i]) { ChoiceIndex = i; } } MahjongLobby_AH.Data.CreatRoomMessagePanelData cd = MahjongLobby_AH.GameData.Instance.CreatRoomMessagePanelData; if (MahjongCommonMethod.Instance.ReadColumnValue(cd.roomMessage_, 2, 39) <= 1) { for (int pay_index = 0; pay_index < pay.Length; pay_index++) { if (pay[pay_index] != 0) { pay[pay_index] = pay[pay_index] / 4; Debug.LogError(pay[pay_index]); } } } //删除自己的之前的房间规则信息 CreatRoomChoiceMethod[] method = PayNumParent.Find("GameNumbers").GetComponentsInChildren <CreatRoomChoiceMethod>(); if (method.Length > 0) { for (int i = 0; i < method.Length; i++) { Destroy(method[i].gameObject); } } //产生对应的玩法数据 for (int i = 0; i < sum.Length; i++) { if (sum[i] == 0) { continue; } GameObject go = Instantiate(Resources.Load <GameObject>("Lobby/PlayerMethodPanel/CreatRoomChoiceMethod")); go.name = "CreatRoomChoiceMethod"; go.transform.SetParent(PayNumParent.Find("GameNumbers")); go.transform.localPosition = new Vector3(go.transform.localPosition.x, go.transform.localPosition.y, 0); go.transform.localScale = Vector3.one; if (i == ChoiceIndex) { go.transform.GetComponent <Toggle>().isOn = true; } else { go.transform.GetComponent <Toggle>().isOn = false; } go.transform.GetComponent <Toggle>().interactable = false; CreatRoomChoiceMethod crcm = go.GetComponent <CreatRoomChoiceMethod>(); crcm.type = pppd.playingMethodConf.byBillingMode; crcm.num = sum[i]; crcm.pay = pay[i]; crcm.UpdateShow(); count++; } if (pppd.playingMethodConf.byBillingMode == 1) { PayNumParent.GetChild(1).GetComponent <Text>().text = "圈数:"; } else if (pppd.playingMethodConf.byBillingMode == 2) { PayNumParent.GetChild(1).GetComponent <Text>().text = "局数:"; } else if (pppd.playingMethodConf.byBillingMode == 3) { PayNumParent.GetChild(1).GetComponent <Text>().text = "分数:"; } PayNumParent.GetComponent <LayoutElement>().minHeight = 60f; //PayNumParent.GetComponent<LayoutElement>().minHeight = 60f + ((int)(count / 3f + 0.5f) - 1f) * 45; }
/// <summary> /// 处理点击吃碰杠胡的按钮 /// </summary> /// <param name="index"></param> void HandleBtnSpecialCard(int index) { PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; //Debug.LogError("下标:" + index); //处理听牌的消息 if (index == 7) { NetMsg.ClientReadHandReq msgg = new NetMsg.ClientReadHandReq(); msgg.iUserId = GameData.Instance.PlayerNodeDef.iUserId; NetworkMgr.Instance.GameServer.SendClientReadHandReq(msgg); MahjongHelper.Instance.specialValue_ = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 }; UIMainView.Instance.PlayerPlayingPanel.ShowSpecialTileNoticeRemind(MahjongHelper.Instance.specialValue_); return; } if (index == 0) { //如果玩家听牌之后点击过,直接把所有听牌的显示取消 if (MahjongHelper.Instance.specialValue_[6] == 1) { Debug.LogError("如果玩家听牌之后点击过,直接把所有听牌的显示取消"); MahjongHelper.Instance.mahjongTing = new Dictionary <byte, MahjongHelper.TingMessage[]>(); MahjongManger.Instance.HideTingLogo(); } //如果点击了过胡 if (index == 0 && MahjongHelper.Instance.specialValue_[3] == 1 && pppd.isNeedSendPassMessage) { //显示过胡信息 UIMainView.Instance.PlayerPlayingPanel.ShowSkipWin(true); } if (!pppd.isSendPlayerPass) { MahjongHelper.Instance.specialValue_ = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 }; UIMainView.Instance.PlayerPlayingPanel.ShowSpecialTileNoticeRemind(MahjongHelper.Instance.specialValue_); pppd.isSendPlayerPass = true; if (!pppd.isNeedSendPassMessage) { return; } } } if (index == 1) { pppd.isGangToPeng_Sort = true; } if (index == 2) { if (pppd.isGangAndPengEnable) { pppd.isGangToPeng_Sort = true; pppd.isGangToPeng_Put = true; } } if (index == 2 || index == 3) { pppd.iTirState = 1; } if (index == 1 || index == 6) { pppd.iTirState = 2; } byte[] mah = new byte[2]; //处理杠 if (index == 3) { mah = new byte[] { pppd.bkongValue, pppd.bkongValue }; } else { mah = new byte[] { pppd.bLastCard, pppd.bLastCard }; } if (!pppd.isSendPlayerPass) { pppd.isSendPlayerPass = true; } NetMsg.ClientSpecialTileReq msg = new NetMsg.ClientSpecialTileReq(); msg.byPongKong = (byte)pppd.IsPongKong(); msg.iUserId = GameData.Instance.PlayerNodeDef.iUserId; msg.byaTiles = mah; msg.bySpecial = (byte)index; NetworkMgr.Instance.GameServer.SendSpecialTileReq(msg); //处理玩家点击吃碰杠胡之后,直接删除按钮图标 MahjongHelper.Instance.specialValue_ = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 }; UIMainView.Instance.PlayerPlayingPanel.ShowSpecialTileNoticeRemind(MahjongHelper.Instance.specialValue_); }