/// <summary> /// 登录到大厅 /// </summary> public void LoginToMainServer(string ip, int port) { LoginSR.SendLogin req = new LoginSR.SendLogin(); req.token = PlayerModel.Inst.Token; if (string.IsNullOrEmpty(req.token)) { return; } NetProcess.SendRequest <LoginSR.SendLogin>(req, ProtoIdMap.CMD_Login, (msg) => { LoginSR.LoginBack data = msg.Read <LoginSR.LoginBack>(); if (data.code == 1) { Scene now = SceneManager.GetActiveScene(); if (now.name != "HALL" && now.name != "Start") { SceneManager.LoadScene("HALL"); GC.Collect(); Resources.UnloadUnusedAssets(); } MainViewModel.Inst.mNowIp = ip; MainViewModel.Inst.mNowPort = port; PlayerModel.Inst.Token = data.data.userInfo.token; PlayerModel.Inst.UserInfo = data.data.userInfo; SendGetNotice(); OpenWindow(); List <string> names = new List <string>(); names.Add(typeof(MainView).Name); BaseView.CloseAllViewBut(names); } else { if (data.code == 2) { Global.Inst.GetController <CommonTipsController>().ShowTips("您的登录已过期,请重新登录", "确定", true, () => { Global.Inst.GetController <LoginController>().LoginOut(); }, null, null, "登录异常"); } else { GameUtils.ShowErrorTips(data.code); } } }); }
/// <summary> /// 进入游戏 /// </summary> /// <param name="data"></param> public void ServerCreateJoinGame(GoldFlowerCreateRoomData data) { #if YYVOICE //登陆呀呀语音(step=2) YYsdkManager.instance.LoginVoiceServer(PlayerModel.Inst.UserInfo.userId); #endif if (PlayerModel.Inst.address != null) { NetProcess.SendRequest <SendAddrReq>(PlayerModel.Inst.address, GoldFlowerProtoIdMap.CMD_SendAddress, (msgData) => { SQDebug.Log("gps 返回"); }, false); } XXGoldFlowerGameModel.Inst.mRoomRules = data.roomInfo.rule; XXGoldFlowerGameModel.Inst.mDichi = data.roomInfo.dichi; XXGoldFlowerGameModel.Inst.mDiFen = data.roomInfo.difen; XXGoldFlowerGameModel.Inst.mSubGameId = data.roomInfo.gameId; XXGoldFlowerGameModel.Inst.mRoomId = data.roomInfo.roomId; XXGoldFlowerGameModel.Inst.mMySeatId = data.roomInfo.mySeatId; XXGoldFlowerGameModel.Inst.mTurnSeatId = data.roomInfo.turnSeatId; XXGoldFlowerGameModel.Inst.mZhuangSeatId = data.roomInfo.zhuangSeatId; XXGoldFlowerGameModel.Inst.mRound = data.roomInfo.round; XXGoldFlowerGameModel.Inst.mStartInfo = new OnGoldFlowerGameStart(); XXGoldFlowerGameModel.Inst.mStartInfo.lookRate = data.roomInfo.lookRate; XXGoldFlowerGameModel.Inst.mStartInfo.menRate = data.roomInfo.menRate; XXGoldFlowerGameModel.Inst.mGoldPattern = data.roomInfo.goldPattern; XXGoldFlowerGameModel.Inst.RoomState = (eGFGameState)data.roomInfo.gameState;//房间状态 for (int i = 0; i < data.roomInfo.playerList.Count; i++) { PlayerSeatDown(data.roomInfo.playerList[i]); } OpenWindow(); List <string> names = new List <string>(); names.Add(typeof(XXGoldFlowerGameView).Name); BaseView.CloseAllViewBut(names); mView.ServerCreateJoinGame(data); if (mView != null) { mView.mSelfPlayer.SetChanagDeskBtnState(true); mView.mSelfPlayer.SetReadyBtnState(true); } }
/// <summary> /// 关闭其他界面,回到登录界面 /// </summary> private void CloseOtherViewOpenLogin() { Scene now = SceneManager.GetActiveScene(); if (now.name != "HALL" && now.name != "Start") { SceneManager.LoadScene("HALL"); System.GC.Collect(); Resources.UnloadUnusedAssets(); } OpenWindow(); List <string> view = new List <string>(); view.Add("LoginView"); view.Add("CommonTipsView"); BaseView.CloseAllViewBut(view); }
public void ShowRecord() { SQSceneLoader.It.LoadScene("PlayBackScene", () => { List <string> views = new List <string>(); views.Add("MJGameBackUI"); views.Add("NetLoadingView"); views.Add("SceneLoadingView"); StartGameRespone data = new StartGameRespone(); data.roomInfo = mModel.CurRecordDetailData.roomInfo; data.startInfo = mModel.CurRecordDetailData.startInfo; HandleStartGameData(data);//初始化数据 BaseView.CloseAllViewBut(views); mGameUI = OpenWindow() as MJGameBackUI; mGameUI.InfoAllPlayerData(data); }); }
/// <summary> /// 获取房间列表 /// </summary> public void SendGetRoomList(CallBack <GamePatternView> call = null) { CommonSendProto req = new CommonSendProto(); NetProcess.SendRequest <CommonSendProto>(req, ProtoIdMap.CMD_SendGetRoomList, (msg) => { SendGetRoomListAck ack = msg.Read <SendGetRoomListAck>(); if (ack.code == 1) { //打开界面 OpenWindow(); List <string> names = new List <string>(); names.Add(typeof(GamePatternView).Name); BaseView.CloseAllViewBut(names); GamePatternModel.Inst.mChouCheng = ack.data.chouCheng; GamePatternModel.Inst.mClubId = ack.data.clubId; PlayerModel.Inst.UserInfo.gold = ack.data.gold; PlayerModel.Inst.UserInfo.roomCard = ack.data.roomCard; //刷新界面 if (ack.data.roomInfoList == null || ack.data.roomInfoList.Count == 0) { GamePatternModel.Inst.mRoomList.Clear(); } else { GamePatternModel.Inst.mRoomList = ack.data.roomInfoList; } mView.SetData(ack.data.clubId, ack.data.totalNum, ack.data.onLineNum, ack.data.chouCheng, ack.data.clubName); if (call != null) { call(mView); } } }); }
private void HandleStartGameData(StartGameRespone data, bool isStart = false) { MJGameModel.Inst.mStartGameData = data; SQDebug.Log("准备房间 玩家数据移植:" + Time.deltaTime); MJGameModel.Inst.ReadyCountDownTime = 0; //准备倒计时 mModel.mPlayCount = data.roomInfo.maxGameCount; //最大局数 mModel.mCurPlayCount = data.roomInfo.currGameCount; //当前局数 MJGameModel.Inst.mRoomId = data.roomInfo.roomId; //房间号 MJGameModel.Inst.mMySeatId = data.roomInfo.mySeatId; //我自己的座位号 MJGameModel.Inst.mZhuangSeatId = data.startInfo.zhuangSeatId; //庄家座位号 MJGameModel.Inst.TurnFixedTime = data.roomInfo.turnFixedTime; //操作固定时间 MJGameModel.Inst.mRoomMgSeatId = 1; //房主座位号 int totalPlayerCount = data.roomInfo.maxPlayer; //房间总共人数 MJGameModel.Inst.totalPlayerCount = totalPlayerCount; totalPlayerCount = totalPlayerCount == 2 ? 4 : totalPlayerCount; MJGameModel.Inst.mnewSeatToIndex = new int[totalPlayerCount + 1]; //玩家座位号 数组 MJGameModel.Inst.mSeatToDirectionIndex = new int[5]; //所有玩家座位号对应桌面东南西北高亮显示的index MJGameModel.Inst.mRoomPlayers = new PlayerInfoStruct[totalPlayerCount + 1]; //玩家 数据缓存数组 foreach (var itemRoomPlayer in data.roomInfo.playerList) //玩家信息数据 { MJGameModel.Inst.mRoomPlayers[itemRoomPlayer.seatId] = itemRoomPlayer; MJGameModel.Inst.mnewSeatToIndex[itemRoomPlayer.seatId] = SeatIdToIndex(MJGameModel.Inst.mMySeatId, itemRoomPlayer.seatId, totalPlayerCount); MJGameModel.Inst.mSeatToDirectionIndex[itemRoomPlayer.seatId] = SeatIdToDirectionIndex(MJGameModel.Inst.mMySeatId, itemRoomPlayer.seatId, data.roomInfo.maxPlayer); } #endregion MJGameModel.Inst.isGetStartGameData = true; MJGameModel.Inst.totalCardNum = data.startInfo.totalCardNum; //总共有多少张牌 MJGameModel.Inst.leaveCardNum = data.startInfo.leaveCardNum; //剩余多少张牌 MJGameModel.Inst.mCurInsSeatId = data.startInfo.currTurnSeatId; //当前指针 指的玩家座位号 MJGameModel.Inst.isMyHit = data.startInfo.currTurnSeatId == MJGameModel.Inst.mMySeatId; //是否轮到我操作 MJGameModel.Inst.allPlayersCardsInfoStruct = new CardsInfoStruct[totalPlayerCount + 1]; //可操作列表 if (data.roomInfo.optList != null) { for (int i = 0; i < data.roomInfo.optList.Count; i++) { if (data.roomInfo.optList[i].ins == eMJInstructionsType.HIT) { GetCanHuList(data.roomInfo.optList[i]); } } } //手牌信息 if (data.startInfo.cardsInfoList != null) { foreach (var item in data.startInfo.cardsInfoList) { MJGameModel.Inst.allPlayersCardsInfoStruct[item.seatId] = item; //找出我定缺的类型 if (item.seatId == MJGameModel.Inst.mMySeatId) //我自己 { if (item.isFixedColor) //已经定缺 { MJGameModel.Inst.SetMyFixedType(item.fixedType); if (item.handList != null)//手牌排序 { item.handList = MJGameModel.Inst.ChangList(item.handList, item.fixedType); } } else { MJGameModel.Inst.SetMyFixedType(0); } } if (item.handList != null) { foreach (var VARIABLE in item.handList) { MJGameModel.Inst.mySelfCards.Add(VARIABLE); } if (item.isHasCurrCard) { MJGameModel.Inst.mySelfCards.Add(item.currCard); } foreach (var oneItem in MJGameModel.Inst.mySelfCards) { if (oneItem < 10) { MJGameModel.Inst.handCardsTiao.Add(oneItem); } else if (oneItem < 20) { MJGameModel.Inst.handCardsTong.Add(oneItem); } else if (oneItem < 30) { MJGameModel.Inst.handCardsWan.Add(oneItem); } } } } } //MJGameModel.Inst.UpdataModelDada(data); if (isStart && !MJGameModel.Inst.IsContainsDingque && !MJGameModel.Inst.IsContainsChange)//如果开始发牌且没有定缺也没有换三张,房间状态改为开始 { MJGameModel.Inst.mState = eMJRoomStatus.STARTE; MJGameModel.Inst.mStartGameData.roomInfo.roomState = eRoomState.START;//改变房间状态 } ; if (mGameUI != null) { List <string> view = new List <string>(); view.Add("GameUI"); BaseView.CloseAllViewBut(view); mGameUI.GetGameStartFormCtr(); } else { SQSceneLoader.It.LoadScene("mahjong_scenes", () => { mGameUI = OpenWindow() as MJGameUI; List <string> view = new List <string>(); view.Add("GameUI"); BaseView.CloseAllViewBut(view); mGameUI.GetGameStartFormCtr(); }); } }
/// <summary> /// 进入游戏 /// </summary> /// <param name="data"></param> private void ServerCreateJoinRoom(TenCreateJoinRoomData data) { #if YYVOICE //登陆呀呀语音(step=2) YYsdkManager.instance.LoginVoiceServer(PlayerModel.Inst.UserInfo.userId); #endif if (PlayerModel.Inst.address != null) { NetProcess.SendRequest <SendAddrReq>(PlayerModel.Inst.address, TenProtoIdMap.CMD_SendAddress, (msgData) => { SQDebug.Log("gps 返回"); }, false); } Debug.Log("进入游戏"); TenModel.Inst.mGameId = (eGameType)data.roomInfo.gameId; TenModel.Inst.mSubGameId = data.roomInfo.subGameId; TenModel.Inst.mRoomRules = data.roomInfo.rule; TenModel.Inst.mZhuangSeatId = data.roomInfo.zhuangSeatId; TenModel.Inst.mMySeatId = data.roomInfo.mySeatId; TenModel.Inst.mGoldPattern = data.roomInfo.pt; TenModel.Inst.mGameState = (eTenGameState)data.roomInfo.gameState; TenModel.Inst.mRoomId = data.roomInfo.roomId; TenModel.Inst.mRoomState = data.roomInfo.roomState; if (data.roomInfo.playerList != null) { for (int i = 0; i < data.roomInfo.playerList.Count; i++) { PlayerSeatDown(data.roomInfo.playerList[i]); } } if (data.roomInfo.handCardsList != null) { if (data.roomInfo.handCardsList.myCardsInfo != null) { TenModel.Inst.mQzListValue = data.roomInfo.handCardsList.myCardsInfo.qzListValue; TenModel.Inst.mXzListValue = data.roomInfo.handCardsList.myCardsInfo.xzListValue; if (data.roomInfo.handCardsList.myCardsInfo.qzListValue != null || data.roomInfo.handCardsList.myCardsInfo.xzListValue != null) { TenModel.Inst.mGameed = true; TenModel.Inst.mGameedSeatIdList.Add(data.roomInfo.mySeatId); } } if (data.roomInfo.handCardsList.otherCardsInfo != null) { for (int i = 0; i < data.roomInfo.handCardsList.otherCardsInfo.Count; i++) { if (data.roomInfo.handCardsList.otherCardsInfo[i].qzListValue != null || data.roomInfo.handCardsList.otherCardsInfo[i].xzListValue != null) { TenModel.Inst.mGameedSeatIdList.Add(data.roomInfo.handCardsList.otherCardsInfo[i].seatId); } } } } Debug.Log("进入游戏222"); OpenWindow(); Debug.Log("进入游戏3333"); mView.ServerCreateJoinRoom(data); if (mView != null) { mView.mSelfPlayer.SetChanagDeskBtnState(true); mView.mSelfPlayer.SetReadyBtnState(true); } List <string> names = new List <string>(); names.Add(typeof(TenGameView).Name); BaseView.CloseAllViewBut(names); }