コード例 #1
0
        void ResetDismissRoom()
        {
            int index = 0;

            //            PaiJiuPlayer[] users =App.GetGameManager<PaiJiuGameManager>().SeatSort;

            var userList = App.GetGameData <PaiJiuGameData>().PlayerList;

            // ReSharper disable once ForCanBeConvertedToForeach
            for (int i = 0; i < userList.Length; i++)
            {
                PaiJiuPlayer user = (PaiJiuPlayer)userList[i];
                if (user == null || user.Info == null || user.Info.Id <= 0)
                {
                    continue;
                }

                DismissMsgItem item = DismissItems[index++];
                item.PlayerName = user.Info.NickM;
                item.PlayerId   = user.Info.Id;
                item.PlayerType = 2;
            }

            for (int i = 0; i < DismissItems.Length; i++)
            {
                DismissItems[i].gameObject.SetActive(i < index);
            }
        }
コード例 #2
0
        /// <summary>
        /// 设置玩家GPS信息
        /// </summary>
        /// <param name="data"></param>
        public void CheckGpsInfo(ISFSObject data)
        {
            int userId = data.GetInt("uid");
            var users  = App.GetGameData <PaiJiuGameData>().PlayerList;

            for (int i = 0, max = users.Length; i < max; i++)
            {
                PaiJiuPlayer paiJiuPlayer = (PaiJiuPlayer)users[i];
                if (paiJiuPlayer == null)
                {
                    continue;
                }
                if (paiJiuPlayer.Info != null && paiJiuPlayer.Info.Id == userId && paiJiuPlayer.gameObject.activeInHierarchy)
                {
                    if ((data.ContainsKey("gpsx") && data.ContainsKey("gpsy")) || (data.ContainsKey("x") && data.ContainsKey("y")))
                    {
                        paiJiuPlayer.GpsX       = data.ContainsKey("gpsx") ? data.GetFloat("gpsx") : data.GetFloat("x");
                        paiJiuPlayer.GpsY       = data.ContainsKey("gpsy") ? data.GetFloat("gpsy") : data.GetFloat("y");
                        paiJiuPlayer.HasGpsInfo = true;

                        if (data.ContainsKey("country") && paiJiuPlayer.Info != null)
                        {
                            paiJiuPlayer.Info.Country = data.GetUtfString("country");
                        }
                    }
                    else
                    {
                        paiJiuPlayer.GpsX       = -1f;
                        paiJiuPlayer.GpsY       = -1f;
                        paiJiuPlayer.HasGpsInfo = false;
                    }
                }
            }
        }
コード例 #3
0
ファイル: DealerMgr.cs プロジェクト: narakai/chessgame
        /// <summary>
        /// 发送一个人的手牌,无过程
        /// </summary>
        /// <param name="pokerValues"></param>
        /// <param name="panel"></param>
        public void DealOnesPokers(int[] pokerValues, PaiJiuPlayer panel)
        {
            Transform[] pokerTrans = panel.PokersTrans;

            for (int i = 0; i < pokerValues.Length; i++)
            {
                var cardValue = pokerValues[i];
                var pokerCard = DealOnes(pokerTrans[i], cardValue, i, panel.Equals(App.GetGameData <PaiJiuGameData>().GetPlayer()));
                panel.UserBetPoker.AddPoker(pokerCard);
            }
        }
コード例 #4
0
        internal void OnCompare(ISFSObject data)
        {
            DealerMgr.OnCompare();

            //隐藏不需要的内容
            SpeakMgr.ShowNothing();

            var gdata = App.GetGameData <PaiJiuGameData>();

            var userList = gdata.PlayerList;

            //刷新玩家比牌数据
            if (data.ContainsKey("compare"))
            {
                foreach (var sort in userList)
                {
                    var user = (PaiJiuPlayer)sort;
                    user.FinishSelect();
                }

                ISFSArray users = data.GetSFSArray("compare");
                foreach (ISFSObject user in users)
                {
                    int seat = user.GetInt("seat");
                    CompareMgr.AddSeat(seat);
                    SetUserCompareVal(user, seat);
                    AddShowedCards(user);
                }
                CompareMgr.StartCompare();
            }

            //刷新玩家手上筹码
            if (!data.ContainsKey("ttgold"))
            {
                return;
            }

            long[] ttgoldArr = data.GetLongArray("ttgold");
            YxDebug.LogArray(ttgoldArr, "Result Score ");

            //YxDebug.Log(" ==== 玩家总筹码刷新数据 ===== ");
            for (int i = 0; i < userList.Length; i++)
            {
                PaiJiuPlayer panel = gdata.GetPlayer <PaiJiuPlayer>(i, true);
                if (panel.Info == null)
                {
                    continue;
                }
                panel.ShowWinVal(ttgoldArr[i]);     //显示输赢(要在Gold赋值之前)
                panel.Info.CoinA = ttgoldArr[i];    //刷新数据
                panel.RefreshPanel();
            }
        }
コード例 #5
0
        void GetPlayerGPSInfo(PaiJiuPlayer panel, ISFSObject data)
        {
            if (data.ContainsKey("gpsx") && data.ContainsKey("gpsy"))
            {
                panel.GpsX       = data.GetFloat("gpsx");
                panel.GpsY       = data.GetFloat("gpsy");
                panel.HasGpsInfo = true;
            }

            if (data.ContainsKey("ip"))
            {
                panel.Ip = data.GetUtfString("ip");
            }
        }
コード例 #6
0
 /// <summary>
 /// 显示玩家手牌信息
 /// </summary>
 /// <param name="panel"></param>
 /// <param name="user"></param>
 private void ShowOnesCards(PaiJiuPlayer panel, ISFSObject user)
 {
     if (App.GetGameData <PaiJiuGameData>().Status != 2)
     {
         return;
     }
     int[] cards = user.ContainsKey("card") ? user.GetIntArray("card") : new int[4];
     //YxDebug.Log(" ====== 打印手牌 ===== seat == " + panel.CurPaiJiuUserInfo.Seat);
     //Tool.Tools.TestDebug(cards);
     panel.UserBetPoker.SetBetPokerInfo(cards);
     if ((user.ContainsKey("isput") && user.GetInt("isput") > 0))
     {
         panel.FinishSelect();
     }
 }
コード例 #7
0
        /// <summary>
        /// 显示玩家下注信息
        /// </summary>
        /// <param name="panel"></param>
        /// <param name="user"></param>
        private void ShowOnesBetVal(PaiJiuPlayer panel, ISFSObject user)
        {
            if (!user.ContainsKey("beat"))
            {
                return;
            }
            int betVal = user.GetInt("beat");

            if (betVal <= 0)
            {
                return;
            }
            panel.PlayerBet(betVal);

            panel.ShowBetLabel();
            panel.CoinLabel.Text(YxUtiles.ReduceNumber(user.GetLong("ttgold") - betVal));
        }
コード例 #8
0
ファイル: DealerMgr.cs プロジェクト: narakai/chessgame
        /// <summary>
        /// 发出接受到的所有牌
        /// </summary>
        public void FastDeal()
        {
            if (_dealingCards.Count <= 0)
            {
                return;
            }
            int selfSeat = App.GameData.SelfSeat;

            var gdata = App.GetGameData <PaiJiuGameData>();

            int cardCount = _dealingCards.Count;

            for (int i = 0; i < cardCount; i++)
            {
                PaiJiuCardInfo pokerInfo = _dealingCards.Dequeue();

                PaiJiuPlayer panel = gdata.GetPlayer <PaiJiuPlayer>(pokerInfo.Seat, true);
                PaiJiuCard   card  = DealOnes(panel.PokersTrans[pokerInfo.CardIndex], pokerInfo.PokerVal, pokerInfo.CardIndex, pokerInfo.Seat == selfSeat);
                panel.AddPoker(card);
            }
        }
コード例 #9
0
ファイル: DealerMgr.cs プロジェクト: narakai/chessgame
        private void BigDeal()
        {
            var main  = App.GetGameManager <PaiJiuGameManager>();
            var gdata = App.GetGameData <PaiJiuGameData>();

            Debug.Log("===== dealcount == " + _dealCount + " , length = " + _dealingCards.Count + " ===== ");
            for (int i = 0; i < _dealCount; i++)
            {
                PaiJiuCardInfo pokerInfo    = _dealingCards.Dequeue();      //弹出要发的牌
                int            cardIndex    = pokerInfo.CardIndex;          //发到了第几张手牌
                int            cardSeat     = pokerInfo.Seat;               //发牌人座位号
                PaiJiuPlayer   paiJiuPlayer = gdata.GetPlayer <PaiJiuPlayer>(cardSeat, true);
                Transform      toPos        = paiJiuPlayer.PokersTrans[cardIndex % paiJiuPlayer.PokersTrans.Length];

                GameObject dealPoker = DealOnes(BigBirth, toPos, pokerInfo.PokerVal, cardSeat == App.GameData.SelfSeat, cardIndex);  //发牌
                PaiJiuCard pokerCard = dealPoker.GetComponent <PaiJiuCard>();
                pokerCard.SetCardFront();
                paiJiuPlayer.AddPoker(pokerCard);
                Facade.Instance <MusicManager>().Play("dealer");
                main.PublicPokers.Add(pokerCard);
            }
        }
コード例 #10
0
        /// <summary>
        /// 刷新玩家数据
        /// </summary>
        /// <param name="panel"></param>
        /// <param name="user"></param>
        private void RefreshSomeone(PaiJiuPlayer panel, ISFSObject user)
        {
            //刷新数据
            panel.RefreshUserInfo();
            if (panel.IsReady)
            {
                var readyList = ReadyList;
                int seat      = panel.Info.Seat;
                if (!readyList.Contains(seat))
                {
                    readyList.Add(seat);
                }
            }

            GetPlayerGPSInfo(panel, user);

            if (!App.GetGameData <PaiJiuGameData>().IsGameing)   //如果游戏结束,不接受数据
            {
                return;
            }

            ShowOnesBetVal(panel, user);
            ShowOnesCards(panel, user);
        }
コード例 #11
0
        /// <summary>
        /// 人数大于3个人时,通过玩家名字进行处理
        /// </summary>
        public void ShowLine(PaiJiuPlayer panel)
        {
            if (!panel.HasGpsInfo)
            {
                return;
            }
            int        index     = 0;
            List <int> indexList = new List <int>();

            var gdata  = App.GetGameData <PaiJiuGameData>();
            var panels = gdata.PlayerList;

            //显示红点
            for (int i = 0; i < panels.Length; i++)
            {
                if (panels[i] == null)
                {
                    continue;
                }
                var player = (PaiJiuPlayer)panels[i];
                if (panels[i].Equals(panel))
                {
                    index = i;
                    string format = string.Format("Point{0}", index);

                    PointList.Find(obj => obj.name.Equals(format)).SetActive(true);
                }
                else if (!panels[i].Equals(gdata.GetPlayer <PaiJiuPlayerSelf>()) && panels[i].gameObject.activeSelf && player.HasGpsInfo)
                {
                    if (i == 0)
                    {
                        continue;
                    }
                    indexList.Add(i);
                    string format = string.Format("Point{0}", i);

                    PointList.Find(obj => obj.name.Equals(format)).SetActive(true);
                }
            }

            if (indexList.Count > 0)
            {
                foreach (int ind in indexList)
                {
                    foreach (GameObject line in LineList)
                    {
                        bool active = line.activeSelf || (line.name.Contains(index.ToString()) && line.name.Contains(ind.ToString()));
                        line.SetActive(active);
                        if (active)
                        {
                            UILabel desLabel = line.transform.GetChild(1).GetComponent <UILabel>() ??
                                               line.transform.Find("Label").GetComponent <UILabel>();
                            if (desLabel == null || desLabel.gameObject.activeSelf)
                            {
                            }
                            else
                            {
                                var p1 = (PaiJiuPlayer)panels[index];
                                var p2 = (PaiJiuPlayer)panels[ind];

                                if (p1.HasGpsInfo && p2.HasGpsInfo)
                                {
                                    int    distance = (int)GetDistince(p1.GpsX, p1.GpsY, p2.GpsX, p2.GpsY);
                                    string des;
                                    if (distance < 1000)
                                    {
                                        des = distance < 100 ? "间距小于100m" : string.Format("间距 : {0}m", distance);
                                    }
                                    else
                                    {
                                        des = string.Format("间距 : {0}Km", distance / 1000);
                                    }
                                    desLabel.text = des;
                                    desLabel.gameObject.SetActive(true);
                                    _desLabelList.Add(desLabel);
                                }
                            }
                        }
                    }
                }
            }

            indexList.Clear();
        }