Exemple #1
0
        public virtual void ParseData(ISFSObject data)
        {
            if (data.ContainsKey(RequestKeyOther.KeyTType))
            {
                _type = data.GetInt(RequestKeyOther.KeyTType);
            }
            else if (data.ContainsKey(RequestKey.KeyType))
            {
                _type = data.GetInt(RequestKey.KeyType);
            }

            if (data.ContainsKey(RequestKey.KeyOpCard))
            {
                Card = data.GetInt(RequestKey.KeyOpCard);
            }
            else if (data.ContainsKey(RequestKey.KeyCard))
            {
                Card = data.GetInt(RequestKey.KeyCard);
            }

            if (data.ContainsKey("from"))
            {
                _fromSeat = data.GetInt("from");
            }

            if (data.ContainsKey("dan"))
            {
                _dan = true;
            }

            if (data.ContainsKey(RequestKey.KeySeat))
            {
                _seat = data.GetInt(RequestKey.KeySeat);
            }

            if (data.ContainsKey(RequestKey.KeyCards))
            {
                int[] values = data.GetIntArray(RequestKey.KeyCards);
                foreach (int value in values)
                {
                    CardDatas.Add(value);
                }
                UtilFunc.OutPutList(CardDatas, "吃碰杠 " + _type);
            }

            SetCard();
            SetCardDatas();
            SetAllCardDatas();
        }
Exemple #2
0
        public virtual void SetShowInfo(TableData table, Texture[] defineArray)
        {
            gameObject.SetActive(true);

            if (RoomID != null)
            {
                RoomID.text = table.RoomInfo.RoomID + "";
            }
            if (RoundImg != null)
            {
                RoundImg.sprite = table.RoomInfo.GameLoopType == EnGameLoopType.round ? JuImg : QuanImg;
            }
            if (Round != null)
            {
                Round.text = table.RoomInfo.CurrRound + "/" + table.RoomInfo.MaxRound;
            }
            if (TimeData != null)
            {
                TimeData.text = DateTime.Now.ToString("yyyy年MM月dd日   HH:mm:ss");
            }
            foreach (OnRoudResultItem item in Items)
            {
                item.SetVisible = false;
                item.Chair      = -1;
            }

            var seatList = new List <int>();

            for (int i = 0; i < UtilData.CurrGamePalyerCnt; i++)
            {
                seatList.Add(i);
            }
            //根据胡牌玩家排序
            seatList.Sort((a, b) =>
            {
                bool isAHu = table.Result.HuSeat.Contains(a);
                bool isBHu = table.Result.HuSeat.Contains(b);
                if (isAHu && !isBHu)
                {
                    return(-1);
                }
                if (!isAHu && isBHu)
                {
                    return(1);
                }
                if (isAHu && isBHu)
                {
                    int aScore = table.Result.HuGold[a];
                    int bScore = table.Result.HuGold[b];
                    if (aScore < bScore)
                    {
                        return(-1);
                    }
                    if (aScore > bScore)
                    {
                        return(1);
                    }
                }
                return(0);
            });

            UtilFunc.OutPutList(seatList, "游戏结束 玩家胡牌排序后");
            if (BaoArea != null)
            {
                int bao = table.Result.bao;

                if (bao > 0)
                {
                    GameObject baoItem = D2MahjongMng.Instance.GetMj(bao, EnD2MjType.Up, bao);
                    baoItem.transform.parent        = BaoArea;
                    baoItem.transform.localPosition = Vector3.zero;
                    baoItem.transform.localScale    = Vector3.one;
                }
            }
            int huCnt = 1;

            for (int i = 0; i < seatList.Count; i++)
            {
                int seat = seatList[i];
                Items[i].SetVisible   = true;
                Items[i].Name         = table.UserDatas[seat].name;
                Items[i].UserID       = table.UserDatas[seat].id.ToString();
                Items[i].StrHuInfo    = table.Result.HuName[seat];
                Items[i].IntHuScore   = table.Result.HuGold[seat];
                Items[i].IntGangScore = table.Result.GangGlod[seat];
                Items[i].IntScore     = table.Result.Gold[seat];
                Items[i].IsHu         = false;
                Items[i].SetPiaoScore = table.Result.PiaoGlod[seat];
                Items[i].IsBanker     = seat == table.BankerSeat;
                // 码分
                Items[i].SetNiaoScore = table.Result.NiaoGold[seat];
                //吃碰杠加入
                Items[i].SetCpgCard(table.UserCpg[seat]);
                Items[i].SetHardCard(table.UserHardCard[seat].ToArray(), table.Laizi);
                //设置胡牌信息
                if (huCnt++ <= table.Result.HuSeat.Count)
                {
                    Items[i].IsHu = true;
                    Items[i].SetHardCard(new[] { table.Result.HuCard }, table.Laizi);
                }

                Items[i].SortCardGroup();

                Items[i].HuTypeValue = table.Result.UserHuType[seat];

                int sex = table.UserDatas[seat].Sex;
                sex = sex >= 0 ? sex : 0;
                Items[i].SetHeadImg(table.UserDatas[seat].HeadImage, defineArray[sex % 2]);
            }

            if (UtilData.RoomType == EnRoomType.YuLe)
            {
                _startCall = () =>
                {
                    Hide();
                    EventDispatch.Dispatch((int)NetEventId.OnGameRestart, new EventData());
                };
            }

            bool isMeWin = table.Result.HuSeat.Contains(table.PlayerSeat);

            if (isMeWin)
            {
                if (Gril != null)
                {
                    Gril.sprite = GrilWin;
                    Facade.Instance <MusicManager>().Play("win");
                    Gril.SetNativeSize();
                }
                if (Result != null)
                {
                    Result.sprite = WinSpr;
                }
            }
            else
            {
                if (Gril != null)
                {
                    Gril.sprite = GrilLost;
                    Facade.Instance <MusicManager>().Play("loss");
                    Gril.SetNativeSize();
                }
                if (Result != null)
                {
                    Result.sprite = LostSpr;
                }
            }

            if (table.Result.HuType == MjRequestData.MJReqTypeLastCd) //流局
            {
                if (Result != null)
                {
                    Result.sprite = HeSpr;
                }
            }
        }
        public override void SetShowInfo(TableData table, Texture[] defineArray)
        {
            ShareScoreUiGob.SetActive(false);
            ShareLianZhuangUiGob.SetActive(false);
            ShareFlowerUiGob.SetActive(false);
            Btns.SetActive(false);
            foreach (var ewgob in ErweiGobs)
            {
                ewgob.SetActive(false);
            }
            BackToHallBtn.SetActive(table.RoomInfo.RoomType == EnRoomType.YuLe);

            gameObject.SetActive(true);

            MahjongManager.Instance.Reset();

            if (RoomID != null)
            {
                RoomID.text = table.RoomInfo.RoomID + "";
            }
            if (RoundImg != null)
            {
                RoundImg.sprite = table.RoomInfo.GameLoopType == EnGameLoopType.round ? JuImg : QuanImg;
            }
            if (Round != null)
            {
                Round.text = table.RoomInfo.CurrRound + "/" + table.RoomInfo.MaxRound;
            }

            foreach (OnRoudResultItem item in Items)
            {
                item.SetVisible = false;
            }

            var seatList = new List <int>();

            for (int i = 0; i < UtilData.CurrGamePalyerCnt; i++)
            {
                seatList.Add(i);
            }
            //根据胡牌玩家排序
            seatList.Sort((a, b) =>
            {
                bool isAHu = table.Result.HuSeat.Contains(a);
                bool isBHu = table.Result.HuSeat.Contains(b);
                if (isAHu && !isBHu)
                {
                    return(-1);
                }

                if (!isAHu && isBHu)
                {
                    return(1);
                }

                if (isAHu && isBHu)
                {
                    int aScore = table.Result.HuGold[a];
                    int bScore = table.Result.HuGold[b];

                    if (aScore < bScore)
                    {
                        return(-1);
                    }
                    if (aScore > bScore)
                    {
                        return(1);
                    }
                }

                return(0);
            });

            UtilFunc.OutPutList(seatList, "游戏结束 玩家胡牌排序后");
            if (BaoArea != null)
            {
                int bao = table.Result.bao;

                if (bao > 0)
                {
                    GameObject baoItem = D2MahjongMng.Instance.GetMj(bao, EnD2MjType.Up, bao);
                    baoItem.transform.parent        = BaoArea;
                    baoItem.transform.localPosition = Vector3.zero;
                    baoItem.transform.localScale    = Vector3.one;
                }
            }
            //是否赢
            bool isMeWin = table.Result.HuSeat.Contains(table.PlayerSeat);
            //是否流局
            bool isLiuJu = table.Result.HuType == MjRequestData.MJReqTypeLastCd;

            int huCnt = 1;

            for (int i = 0; i < seatList.Count; i++)
            {
                int seat = seatList[i];
                Items[i].SetVisible = true;
                Items[i].Name       = table.UserDatas[seat].name;


                var hunameInfo = table.Result.HuName[seat];


                Items[i].StrHuInfo    = hunameInfo;
                Items[i].IntHuScore   = table.Result.HuGold[seat];
                Items[i].IntGangScore = table.Result.GangGlod[seat];
                Items[i].IntScore     = table.Result.Gold[seat];
                Items[i].IsHu         = false;
                Items[i].IsBanker     = seat == table.BankerSeat;
                // 码分
                Items[i].SetNiaoScore = table.Result.NiaoGold[seat];
                //吃碰杠加入
                Items[i].SetCpgCardJp(table.UserCpg[seat], table.Laizi);
                Items[i].SetHardCard(table.UserHardCard[seat].ToArray(), table.Laizi);

                bool ishu = false;
                //设置胡牌信息
                if (huCnt++ <= table.Result.HuSeat.Count)
                {
                    ishu          = true;
                    Items[i].IsHu = true;
                    Items[i].SetHardCard(new[] { table.Result.HuCard }, table.Laizi);
                }

                Items[i].SortCardGroup();

                Items[i].HuTypeValue = table.Result.UserHuType[seat];

                Items[i].SetHeadImg(table.UserDatas[seat].HeadImage, defineArray[table.UserDatas[seat].Sex % 2]);

                if (OnerdExtraMsgItems[i] != null)
                {
                    var bgimg = OnerdExtraMsgItems[i].GetComponent <Image>();
                    if (bgimg != null)
                    {
                        if (!isLiuJu)
                        {
                            bgimg.sprite = isMeWin ? WinbgImg : LosebgImg;
                        }
                        else
                        {
                            bgimg.sprite = HebgImg;
                        }
                    }

                    var buzhangList = new int[] {};
                    var buzhangLen  = table.Result.BuZhangList.Count;
                    if (buzhangLen >= seat && buzhangLen > 0)
                    {
                        buzhangList = table.Result.BuZhangList[seat];
                    }
                    OnerdExtraMsgItems[i].SetExtraInfo(table.Result.Huaname[seat],
                                                       table.Result.Taicnt[seat], table.Result.Huacnt[seat], CheckLaiziGroup(table.UserHardCard[seat].ToArray(), table.Result.HuCard,
                                                                                                                             ishu, table.Laizi), buzhangList, table.Laizi,
                                                       table.Result.IsBaoPai[seat], table.Result.LianZhuangInfo[seat], table.Fanpai);
                }


                #region  添加分享信息
                var shareGoldScore = table.Result.ShareShowGold[seat];
                if (seat == table.PlayerSeat)
                {
                    var jptabledata = table as JpTableData;

                    if (jptabledata != null)
                    {
                        //胡了,且分数足够分享
                        var ishuAndShareScore = ishu && shareGoldScore >= jptabledata.ShareHuScoreValue;
                        //没胡,但花数足够分享
                        var nohuAndShareHua = !ishu && table.Result.Huacnt[seat] >= jptabledata.ShareHuHuaNumValue;
                        if (ishuAndShareScore || nohuAndShareHua)
                        {
                            ShareScoreUiGob.SetActive(true);

                            //分数信息
                            if (ishuAndShareScore)
                            {
                                SelfPlayerHuScoreText.text  = YxUtiles.GetShowNumber(shareGoldScore).ToString(CultureInfo.InvariantCulture) + "分";
                                SelfPlayerHuScoreText1.text = "总积分:" + YxUtiles.GetShowNumber(shareGoldScore).ToString(CultureInfo.InvariantCulture) + "分";
                                HurawImgBg.SetActive(true);
                                HuaShareRawImgBg.SetActive(false);
                            }
                            else if (nohuAndShareHua)
                            {
                                HuaNumtext.text  = "花:" + table.Result.Huacnt[seat];
                                HuaNumtext1.text = "花:" + table.Result.Huacnt[seat];
                                HurawImgBg.SetActive(false);
                                HuaShareRawImgBg.SetActive(true);
                            }


                            //头像信息
                            SetShareHeadImg(table.UserDatas[seat].HeadImage, ShareHeadImgScore,
                                            defineArray[table.UserDatas[seat].Sex % 2]);

                            //按钮
                            Btns.SetActive(true);



                            var cdinfoOnrditem = CardsInfoZone.GetComponent <OnRoudResultItem>();
                            cdinfoOnrditem.Cleare();
                            cdinfoOnrditem.SetCpgCardJp(table.UserCpg[seat], table.Laizi);
                            cdinfoOnrditem.SetHardCard(table.UserHardCard[seat].ToArray(), table.Laizi);
                            if (ishu)
                            {
                                cdinfoOnrditem.SetHardCard(new[] { table.Result.HuCard }, table.Laizi);
                            }
                            cdinfoOnrditem.SortCardGroup();

                            cdinfoOnrditem.StrHuInfo = hunameInfo;

                            var onrdextramessage = CardsInfoZone.GetComponent <OneRdExtraMessShow>();
                            onrdextramessage.SetExtraInfo(table.Result.Huaname[seat],
                                                          table.Result.Taicnt[seat], table.Result.Huacnt[seat], CheckLaiziGroup(table.UserHardCard[seat].ToArray(), table.Result.HuCard,
                                                                                                                                ishu, table.Laizi), table.Result.BuZhangList[seat], table.Laizi,
                                                          table.Result.IsBaoPai[seat], table.Result.LianZhuangInfo[seat], table.Fanpai);
                            onrdextramessage.SetEstraCds();
                        }
                        else if (table.Result.LianZhuangNumInfo[seat] >= jptabledata.LianzhuangNum)
                        {
                            //连庄数信息
                            SelfPlayerlianzhuangZhuangText.text = table.Result.LianZhuangNumInfo[seat].ToString(CultureInfo.InvariantCulture);
                            //连庄信息
                            SelfPlayerlianzhuanInfoText.text = table.Result.LianZhuangInfo[seat];

                            ShareLianZhuangUiGob.SetActive(true);

                            SetShareHeadImg(table.UserDatas[seat].HeadImage, ShareHeadImgLianzhuang,
                                            defineArray[table.UserDatas[seat].Sex % 2]);

                            Btns.SetActive(true);
                        }
                    }
                }
                #endregion
            }

            if (UtilData.RoomType == EnRoomType.YuLe)
            {
                _startCall = () =>
                {
                    Hide();
                    EventDispatch.Dispatch((int)NetEventId.OnGameRestart, new EventData());
                };
            }

            if (isMeWin)
            {
                if (Gril != null)
                {
                    Gril.sprite = GrilWin;
                }
                if (Result != null)
                {
                    Result.sprite = WinSpr;
                }
            }
            else
            {
                if (Gril != null)
                {
                    Gril.sprite = GrilLost;
                }
                if (Result != null)
                {
                    Result.sprite = LostSpr;
                }
            }

            if (isLiuJu) //流局
            {
                if (Result != null)
                {
                    Result.sprite = HeSpr;
                }
            }

            if (_laterUnfoldCor != null)
            {
                StopCoroutine(_laterUnfoldCor);
            }
            _laterUnfoldCor = StartCoroutine(LaterUnfoldingInfo());
        }