/// <summary> /// 刷新玩家数据 /// </summary> /// <param name="panel"></param> /// <param name="user"></param> private void RefreshSomeone(DuifenPlayerPanel panel, ISFSObject user) { if (panel.ReadyState) { if (user.ContainsKey("state") && user.GetBool("state")) { int localSeat = panel.LocalSeat; ReadyLocalSeatList.Add(localSeat); } } panel.ConnectMark.SetActive(!(user.ContainsKey("network") && user.GetBool("network"))); panel.ShowUserInfo(); if (user.ContainsKey("systemAuto")) { bool isAuto = user.GetBool("systemAuto"); panel.OnGetAutoInfo(isAuto); } if (!App.GetGameData <DuifenGlobalData>().IsGameing) //如果游戏结束,不接受数据 { return; } ShowOnesState(panel, user); ShowOnesBetVal(panel, user); ShowOnesCards(panel, user); }
public override void UserOut(int localSeat, ISFSObject responseData) { base.UserOut(localSeat, responseData); YxDebug.Log("seat[" + localSeat + "]离开了游戏!"); var playerPanel = App.GetGameData <DuifenGlobalData>().GetPlayer <DuifenPlayerPanel>(localSeat); playerPanel.Info = null; playerPanel.gameObject.SetActive(false); if (ReadyLocalSeatList.Contains(localSeat)) { ReadyLocalSeatList.Remove(localSeat); } }
public override void UserReady(int localSeat, ISFSObject responseData) { base.UserReady(localSeat, responseData); var readyPanel = App.GameData.GetPlayer <DuifenPlayerPanel>(localSeat); if (App.GameData.SelfLocalSeat == localSeat) { Reset(); } if (!ReadyLocalSeatList.Contains(localSeat)) { ReadyLocalSeatList.Add(localSeat); } readyPanel.OnUserReady(); }
public override void BeginNewGame(ISFSObject sfsObject) { base.BeginNewGame(sfsObject); var gdata = App.GetGameData <DuifenGlobalData>(); gdata.CurRound++; //初始化房间信息 CurTurn = 1; RoomInfo.SetCurTurn(1); RoomInfo.SetCurRound(gdata.CurRound); RoomInfo.HideInvitBtn(); // 游戏开始,刷新房间信息 gdata.IsGameing = true; PlayBeginAnim(); HistoryResultMgr.CreateHistoryItem(ReadyLocalSeatList.ToArray()); }
public override void GameResponseStatus(int type, ISFSObject data) { YxDebug.Log("Request == " + (GameRequestType)type); var gdata = App.GetGameData <DuifenGlobalData>(); if (!gdata.IsGameInfo) { YxDebug.LogError("GameInfo还没有初始化!!"); return; } if (data.ContainsKey("fpround")) { int turn = data.GetInt("fpround"); if (CurTurn != turn) { CurTurn = turn; RoomInfo.SetCurTurn(turn); SetTurnBet(0); } } var selfPanel = gdata.GetPlayer <DuifenPlayerPanel>(); int selfSeat = gdata.SelfSeat; switch ((GameRequestType)type) { case GameRequestType.Bet: int betGold = data.GetInt("gold"); if (data.ContainsKey("seat")) { int betseat = data.GetInt("seat"); var betPanel = gdata.GetPlayer <DuifenPlayerPanel>(betseat, true); YxDebug.Log(" === 玩家 " + betseat + " 下注 " + betGold + " === "); if (data.ContainsKey("kaipai") && data.GetBool("kaipai")) { betPanel.ShowGameType(PlayerGameType.KaiPai); PlayOnesSound("kaipai", betseat); if (betseat == selfSeat) { SpeakMgr.ShowNothing(); } } else { if (betGold > 0) { PlayOnesSound(SpeakMgr.TurnBet > 0 ? "call" : "bet", betseat); SetTurnBet(betGold); int lastBetVal = SpeakMgr.MinBetValue; if (lastBetVal > 0) { betPanel.ShowGameType(betGold > lastBetVal ? PlayerGameType.AddBet : PlayerGameType.Call); } SpeakMgr.UpdateBetInfo(betGold); } else { if (!_qiliPlayed) { PlayOnesSound("qili", betseat); _qiliPlayed = true; } betPanel.ShowGameType(PlayerGameType.QiLi); } } BetMgr.PlayerBet(betPanel, betGold, 110); betPanel.PlayerBet(betGold); betPanel.StopCountDown(); LaddyMgr.AllBetMoney += betGold; //总下注额 if (betseat == selfSeat) { SpeakMgr.HideSpeak(GameRequestType.Bet); } if (data.ContainsKey("card") && CurTurn < 3) { DealerMgr.BeginBigDeal(data.GetInt("card"), betseat, CurTurn + 2, selfPanel.ShowSelfPointLabel); } } if (data.ContainsKey("speaker")) { int speakerSeat = data.GetInt("speaker"); Speaker(speakerSeat, data.GetInt("cd"), betGold > 0 ? GameRequestType.Bet : GameRequestType.QiLi); if (speakerSeat == selfSeat) { _sendSpaceTimer = double.MinValue; selfPanel.HideGameType(); } } break; case GameRequestType.Fold: DealerMgr.FastDeal(); int fseat = data.GetInt("seat"); var foldPanel = App.GameData.GetPlayer <DuifenPlayerPanel>(fseat, true); foldPanel.StopCountDown(); foldPanel.ReadyState = false; foldPanel.ShowGameType(PlayerGameType.Fold); foldPanel.PlayerFold(); PlayOnesSound("fold", fseat); if (fseat == selfSeat) { _sendSpaceTimer = double.MinValue; SpeakMgr.ShowNothing(); } if (data.ContainsKey("speaker")) { Speaker(data.GetInt("speaker"), rt: GameRequestType.Fold); } YxDebug.Log("玩家 " + fseat + " 弃牌!!"); break; case GameRequestType.Start: _qiliPlayed = false; foreach (int seat in ReadyLocalSeatList) { var startPanel = gdata.GetPlayer <DuifenPlayerPanel>(seat); startPanel.OnGameStart(); BetMgr.PlayerBet(startPanel, gdata.GuoBet, 100); LaddyMgr.AllBetMoney += gdata.GuoBet; } SpeakMgr.RefreshBetSpeakBtns(); if (data.ContainsKey("hiden")) { //初始化玩家自己的手牌 DealerMgr.SetFirstTwoPokersValue(data.GetIntArray("hiden")); } break; case GameRequestType.Cards: HideAllPlayerGameType(false); if (data.ContainsKey("speaker")) { int speaker = data.GetInt("speaker"); if (speaker != selfSeat && selfPanel.PlayerType != 3) { SpeakMgr.CouldFold = true; SpeakMgr.RefreshBetSpeakBtns(); } else { SpeakMgr.CouldFold = false; } Speaker(speaker, data.GetInt("cd"), GameRequestType.Cards); } if (data.ContainsKey("cards")) { int[] cards = data.GetIntArray("cards"); int[] cardsSeats = data.GetIntArray("users"); HideAllPlayerGameType(false); //隐藏所有游戏状态 if (CurTurn <= 1) { DealerMgr.DealFirstTwoPoker(cardsSeats, selfSeat); } DealerMgr.BeginBigDeal(cards, cardsSeats, CurTurn + 1, selfPanel.ShowSelfPointLabel); } break; case GameRequestType.Request: _qiliPlayed = false; SpeakMgr.ShowNothing(); gdata.IsGameing = false; gdata.GStatus = YxEGameStatus.Normal; DealerMgr.FastDeal(); StopCountDown(); int selfWinGold = 0; if (data.ContainsKey("players")) { ISFSArray requestPlayers = data.GetSFSArray("players"); for (int i = 0; i < requestPlayers.Count; i++) { ISFSObject playerInfo = requestPlayers.GetSFSObject(i); if (!playerInfo.ContainsKey("isPlayed") && !playerInfo.GetBool("isPlayed")) { continue; } int requestSeat = playerInfo.GetInt("seat"); var requestPlayer = gdata.GetPlayer <DuifenPlayerPanel>(requestSeat, true); int winGold = playerInfo.ContainsKey("wgold") ? playerInfo.GetInt("wgold") : playerInfo.GetInt("gold"); if (playerInfo.GetBool("isGiveUp")) { requestPlayer.PlayerType = 3; } if (requestPlayer.Info != null) { requestPlayer.Coin = playerInfo.GetLong("ttgold"); } if (winGold > 0) { requestPlayer.WinAnimation.SetActive(true); BetMgr.Winner = requestPlayer.transform; } if (requestSeat == selfSeat) { selfWinGold = winGold; } } HistoryResultMgr.GetHistoryInfo(data); //获取历史记录信息 } bool noSpecial = true; if (CurTurn >= 3) { if (data.ContainsKey("rslist")) { ISFSArray rslistPlayers = data.GetSFSArray("rslist"); for (int i = 0; i < rslistPlayers.Count; i++) { ISFSObject player = rslistPlayers.GetSFSObject(i); int rsSeat = player.GetInt("seat"); var pp = gdata.GetPlayer <DuifenPlayerPanel>(rsSeat, true); if (pp.PlayerType == 3) { continue; } int point = player.GetInt("value"); int[] cards = player.GetIntArray("cards"); pp.TurnCard(0, cards[0], false); pp.TurnCard(1, cards[1], false); if (cards[0] != 0 && cards[1] != 0) { pp.ShowPointLabel(point); } if (point >= 100) { PlayOverHundredAnim(selfWinGold); noSpecial = false; SpecialSeats.Add(rsSeat); } else if (pp.UserBetPoker.HaveBomb) { PlayBoomAnim(selfWinGold); noSpecial = false; SpecialSeats.Add(rsSeat); } } } } if (noSpecial) { if (selfWinGold > 0) { PlayWinAnim(); } else if (selfWinGold < 0) { PlayLostAnim(); } } ReadyLocalSeatList.Clear(); break; case GameRequestType.AllowReady: ReadyLocalSeatList.Clear(); var playerList = gdata.PlayerList; foreach (var item in playerList) { item.ReadyState = false; } var self = selfPanel as SelfPanel; if (self != null) { self.ReadyBtn.gameObject.SetActive(true); } break; case GameRequestType.CouldStart: if (!gdata.IsRoomGame) { break; } if (selfSeat == 0) { selfPanel.CouldStart(); } break; case GameRequestType.SystemAuto: int autoSeat = data.GetInt("seat"); var panel = gdata.GetPlayer <DuifenPlayerPanel>(autoSeat, true); bool isAuto = data.GetBool("systemAuto"); panel.OnGetAutoInfo(isAuto); break; } }