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();
        }
Beispiel #2
0
    /// <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);
    }
Beispiel #3
0
    /// <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);
                    }
                });
            }
        }
Beispiel #5
0
        /// <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);
            }
        }
Beispiel #6
0
        //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;
                });
            }
        }
Beispiel #7
0
        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());
            }
        }
Beispiel #9
0
    //初始化牌的值和位置
    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);
    }
Beispiel #10
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());
    }
Beispiel #11
0
    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);
        }
    }
Beispiel #12
0
        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");
        }
Beispiel #13
0
    //第二段移动完成
    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();
            }
        }
    }
Beispiel #14
0
 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();
     }
 }
Beispiel #15
0
    /// <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);
    }
Beispiel #16
0
        /// <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;
            }
        }
Beispiel #17
0
        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));
            }
        }
Beispiel #18
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;
    }
Beispiel #19
0
        /// <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);
            }
        }
Beispiel #20
0
        /// <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);
            }
        }
Beispiel #23
0
        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);
            }
        }
Beispiel #24
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();
        }
Beispiel #25
0
        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();
        }
Beispiel #26
0
        /// <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;
        }
Beispiel #27
0
        /// <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_);
        }