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); } }
/// <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; } } } }
/// <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); } }
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(); } }
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"); } }
/// <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(); } }
/// <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)); }
/// <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); } }
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); } }
/// <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); }
/// <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(); }