/// <summary> /// 当有新玩家进来时、有玩家离开时或自身玩家进来时调用这个方法,刷新一下界面显示 /// </summary> private void RefreshUI() { MatchRoomDto2 room = Models.GameModel.matchRoomDto; if (room.RightPlayerId != -1) { UserDto dto = room.userIdUserDtoDic[room.RightPlayerId]; img_HeadIcon.gameObject.SetActive(true); img_HeadIcon.sprite = ResourcesManager.GetSprite(dto.IconName); go_Coin.SetActive(true); txt_CoinCount.text = dto.CoinCount.ToString(); go_StakesSum.SetActive(true); txt_UserName.gameObject.SetActive(true); txt_UserName.text = dto.UserName; //右边玩家在准备中 if (room.readyUserIdList.Contains(room.RightPlayerId)) { txt_Hint.text = "已准备"; txt_Hint.gameObject.SetActive(true); } else { txt_Hint.gameObject.SetActive(false); } } else { txt_Hint.gameObject.SetActive(false); img_HeadIcon.gameObject.SetActive(false); go_Coin.SetActive(false); go_StakesSum.SetActive(false); txt_UserName.gameObject.SetActive(false); } }
/// <summary> /// 客户端请求进入房间服务器的响应 /// </summary> /// <param name="dto"></param> private void EnterRoomSRES(MatchRoomDto2 dto) { Models.GameModel.matchRoomDto = dto; ResetPosition(); //刷新界面左右边玩家的UI显示 EventCenter.Broadcast(EventDefine.RefreshUI); }
/// <summary> /// 反序列化 /// @author wangfw /// @time 2019-4-4 /// </summary> /// <param name="data"></param> /// <returns></returns> public static object NewDecodeoObj(int opcode, int subcode, byte[] data) { //函数可以扩展参数,subcode和supcode来判断data的类型 //value为userDto if ((OpCode.Account == opcode && AccountCode.GetUserInfo_SRES == subcode) || (OpCode.Match == opcode && MatchCode.Enter_BRO == subcode)) //GetUserInfo_SRES UserDto { //最终格式为 len+value格式(id+ len + name + len + InconName + jinbi)len为uint32 // List<byte> mysrc = new List<byte>(data); UserDto dto = NewUpackUserDto(data); return(dto); } else if (OpCode.Match == opcode && MatchCode.Enter_SRES == subcode) { //格式:len+map+ len+list+ len+list byte[] arr1 = new byte[4]; arr1[0] = data[0]; arr1[1] = data[1]; arr1[2] = data[2]; arr1[3] = data[3]; if (BitConverter.IsLittleEndian) { Array.Reverse(arr1); } int lenmap = (int)BitConverter.ToUInt32(arr1, 0); byte[] dataMAP = data.Skip(4).Take(4 + lenmap).ToArray(); data = data.Skip(4 + lenmap).ToArray(); Dictionary <int, UserDto> userIdUserDtoDic = NewUpackuserIdUserDtoDic(dataMAP); byte[] arr2 = new byte[4]; arr2[0] = data[0]; arr2[1] = data[1]; arr2[2] = data[2]; arr2[3] = data[3]; if (BitConverter.IsLittleEndian) { Array.Reverse(arr2); } int lenList = (int)BitConverter.ToUInt32(arr2, 0); byte[] dataList = data.Skip(4).Take(4 + lenList).ToArray(); data = data.Skip(4 + lenList).ToArray(); List <int> readyUserIdList = NewUpackListInt(dataList, lenList / 4); byte[] arr3 = new byte[4]; arr3[0] = data[0]; arr3[1] = data[1]; arr3[2] = data[2]; arr3[3] = data[3]; if (BitConverter.IsLittleEndian) { Array.Reverse(arr3); } int lenList2 = (int)BitConverter.ToUInt32(arr2, 0); byte[] dataList2 = data.Skip(4).Take(4 + lenList2).ToArray(); List <int> enterOrderUserIdList = NewUpackListInt(dataList2, lenList2 / 4); MatchRoomDto2 Room = new MatchRoomDto2(); Room.readyUserIdList = enterOrderUserIdList; Room.userIdUserDtoDic = userIdUserDtoDic; Room.enterOrderUserIdList = enterOrderUserIdList; return(Room); } //value为一个int object value = new object(); if (BitConverter.IsLittleEndian) { Array.Reverse(data); } value = BitConverter.ToInt32(data, 0); return(value); }
/// <summary> /// 给房间内的玩家排序 /// </summary> private void ResetPosition() { MatchRoomDto2 dto = Models.GameModel.matchRoomDto; dto.ResetPosition(Models.GameModel.userDto.UserId); }