void OnRespPlazaList(Message msg) { // msgRespPlazaList plazaList = msgRespPlazaList.deserialize(msg); Lobby.Lobby.plazaList.Clear(); //首先清空 // 转换存数据 for (int i = 0; i < plazaList.plazaList.Count; i++) { LobbyEvent.Plaza plaza = new LobbyEvent.Plaza(); plaza.lmtType = (LobbyEvent.Plaza.LMT_TYPE)plazaList.plazaList[i].lmt_type; plaza.des = plazaList.plazaList[i].des; plaza.star = plazaList.plazaList[i].star; plaza.name = plazaList.plazaList[i].name; plaza.plazaid = plazaList.plazaList[i].plazaid; plaza.rule = plazaList.plazaList[i].rule; plaza.roomType = plazaList.plazaList[i].room_type; plaza.plazaLevel = new List <LobbyEvent.PlazaLevel> (); for (int j = 0; j < plazaList.plazaList [i].plazaLevel.Count; j++) { LobbyEvent.PlazaLevel pl = new LobbyEvent.PlazaLevel(); pl.base_score = plazaList.plazaList [i].plazaLevel[j].base_score; pl.levelid = plazaList.plazaList [i].plazaLevel[j].levelid; pl.minsr = plazaList.plazaList [i].plazaLevel[j].minsr; pl.maxsr = plazaList.plazaList [i].plazaLevel[j].maxsr; plaza.plazaLevel.Add(pl); } Lobby.Lobby.plazaList.Add(plaza); } //刷新界面 onEventShowPlaza(null); }
void onEnterRoomFinish(object data) { //刷新房间规则显示 RoomEvent.sC2V_RoomRule rr; rr.playerNum = Room.Room.roomRule.playerNum; rr.gameTime = Room.Room.roomRule.gameTime; rr.gridLevel = Room.Room.roomRule.gridLevel; rr.rule = Room.Room.roomRule.rule; rr.lmtRound = Room.Room.roomRule.lmtRound; rr.lmtTurnTime = Room.Room.roomRule.lmtTurnTime; rr.roomLevel = Room.Room.roomLevel; rr.roomID = 0; //此处不需要,填0 rr.plazaName = Room.Room.plazaName; rr.tag = Room.Room.tagId; rr.type = (CommonDefine.eCreateRoomType)Room.Room.roomType; if (Room.Room.plazaid != 0) { LobbyEvent.Plaza plaza = getPlazaById(Room.Room.plazaid); rr.star = plaza.star; } else { rr.star = 0; } RoomEvent.EM().InvokeEvent(RoomEvent.EVENT.UPDATE_ROOMRULE, (object)rr); if (Room.Room.roomType == CommonDefine.eCreateRoomType.ROOM_CLASSIC_PLAZA || Room.Room.roomType == CommonDefine.eCreateRoomType.ROOM_PLAZA || Room.Room.isRelink) { //完全进入游戏界面后,需要通知服务器可以发用户enter信息了,原则上来说,需要界面真正加载完成后再发,这里暂时直接发送 msgNotifyEnterRoomFinish efmsg = new msgNotifyEnterRoomFinish(); efmsg.isRelink = Room.Room.isRelink; ProtocolManager.getInstance().sendMsg(GameProtocol.P_GAME_ENTER_ROOM_FINISH, efmsg); } else { // 因为房间和组队模式,用户相关信息已经下发,所以需要手动驱动相关消息刷新游戏界面 for (int i = 0; i < Room.Room.playerList.Count; i++) { /////////////////////////////enter///////////////////////////////// RoomEvent.EM().InvokeEvent(RoomEvent.EVENT.PLAER_ENTER, Room.Room.playerList[i]); ///////////////////////state///////////////////////////////// RoomEvent.sC2V_PlayerState ps; ps.state = (CommonDefine.PLAYER_STATE)Room.Room.playerList[i].state; ps.local = Room.Room.getLocalBySeat(Room.Room.playerList[i].seat); ps.ifAllReady = true; RoomEvent.EM().InvokeEvent(RoomEvent.EVENT.UPDATE_PLAER_STATE, (object)ps); } //进入游戏后的start game onEventStartGame(true); } }
//----------------一些接口------------------------------------- public Plaza createPlaza(int index, LobbyEvent.Plaza data) { Plaza plaza = Instantiate(_plazaPrefab, new Vector3(0, 0, 0), Quaternion.identity); plaza.transform.SetParent(_plazaRoot.transform); plaza.transform.localPosition = new Vector3(index * _plazaInteral + _plazaInteral / 2, 0, 0); CommonUtil.RoomRule roomRule = CommonUtil.RoomRule.deserialize(data.rule); string rr; if (roomRule.lmtRound != 0) { rr = "回合限制" + roomRule.lmtRound; } else { rr = "回合无限制"; } if (roomRule.lmtTurnTime != 0) { rr = rr + " 思考时间" + roomRule.lmtTurnTime + "秒"; } else { rr = rr + " 思考时间无限制"; } plaza.updatePlaza(index, data.plazaid, data.name, data.star, data.des, rr, this); plaza.transform.localScale = plaza.transform.localScale * CommonUtil.Util.getScreenScale(); return(plaza); }
void OnRespJoinRoom(Message msg) { ViewManagerEvent.EM().InvokeEvent(ViewManagerEvent.EVENT.SHOW_LOADING_ANI, false); msgRespJoinRoom resp = msgRespJoinRoom.deserialize(msg); //此处需要根据各种响应值,来给出友好提示 string tip = "加入房间失败"; //RESP_JOINROOM_FLAG if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_SUCCESS || resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINGROOM_ALREADY_IN_ROOM) { //规则应该一定不会为空的 if (resp.rule == null || resp.rule.Length == 0) { // return; } if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINGROOM_ALREADY_IN_ROOM) { //原则上此处可以直接进入房间,也可以是弹窗提示用户是否重新进入房间 // } // 设置相关数据 Room.Room.setRoomData(resp.roomId, resp.levelId, resp.plazaid, resp.roomType, resp.owner, resp.rule, resp.baseScore); Room.Room.isRelink = resp.isRelink; //这里需要判断是哪种类型的房间 if (Room.Room.roomType == CommonDefine.eCreateRoomType.ROOM_ROOM) { msgNotifyEnterRoomFinish efmsg = new msgNotifyEnterRoomFinish(); efmsg.isRelink = Room.Room.isRelink; ProtocolManager.getInstance().sendMsg(GameProtocol.P_GAME_ENTER_ROOM_FINISH, efmsg); if (!Room.Room.isRelink) { //刷新房间规则显示 RoomEvent.sC2V_RoomRule rr; rr.playerNum = Room.Room.roomRule.playerNum; rr.gameTime = Room.Room.roomRule.gameTime; rr.gridLevel = Room.Room.roomRule.gridLevel; rr.rule = Room.Room.roomRule.rule; rr.lmtRound = Room.Room.roomRule.lmtRound; rr.lmtTurnTime = Room.Room.roomRule.lmtTurnTime; rr.roomLevel = resp.levelId; rr.roomID = resp.roomId; rr.plazaName = Room.Room.plazaName; if (Room.Room.plazaid != 0) { LobbyEvent.Plaza plaza = getPlazaById(Room.Room.plazaid); rr.star = plaza.star; } else { rr.star = 0; } rr.tag = Room.Room.tagId; rr.type = Room.Room.roomType; RoomEvent.EM().InvokeEvent(RoomEvent.EVENT.UPDATE_ROOMRULE, (object)rr); } else { ////// ViewManagerEvent.sShowView data; data.fromView = ViewManagerEvent.VIEW_TYPE.LOBBY_VIEW; data.toView = ViewManagerEvent.VIEW_TYPE.GAME_VIEW; ViewManagerEvent.EM().InvokeEvent(ViewManagerEvent.EVENT.SHOW_VIEW, (object)data); } } else if (Room.Room.roomType == CommonDefine.eCreateRoomType.ROOM_TEAM) { } else { //另外需要显示房间规则相关的信息在房间某个位置 //进入房间成功,切换到游戏场景,这里应为主动操作,不需要事件通知请访问GameController来切换 //或者这里直接切换也行 //也可以事件通知,为了统一起见 ViewManagerEvent.sShowView data; data.fromView = ViewManagerEvent.VIEW_TYPE.LOBBY_VIEW; data.toView = ViewManagerEvent.VIEW_TYPE.GAME_VIEW; ViewManagerEvent.EM().InvokeEvent(ViewManagerEvent.EVENT.SHOW_VIEW, (object)data); } //结束处理 return; } else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINGROOM_FAIL_ROOM_NOT_EXIST) { tip = "房间不存在,请重试"; } else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_ACCOUNT_ERR) { tip = "加入失败,用户异常"; } else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_FAIL_NO_FREE_ROOM) { tip = "加入失败,没有可用的房间"; } else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_FIAL_SYSERR) { tip = "加入失败,系统错误"; } else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_GOLD_LESS) { tip = "加入失败,您的积分不足,请充值"; } else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_GOLD_MORE) { tip = "加入失败,您太有钱了,请到其他模式游戏"; } else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_LEVEL_LESS) { tip = "加入失败,您的级别太高了"; } else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_LEVEL_MORE) { tip = "加入失败,您的级别太低了"; } else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_PLAZA_ERR) { tip = "加入失败,参数错误"; } else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_PWD_ERR) { tip = "加入失败,密码错误"; } CommonUtil.Util.showDialog("系统提示", tip); }