예제 #1
0
    /// <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);
        }
    }
예제 #2
0
    /// <summary>
    /// 客户端请求进入房间服务器的响应
    /// </summary>
    /// <param name="dto"></param>
    private void EnterRoomSRES(MatchRoomDto2 dto)
    {
        Models.GameModel.matchRoomDto = dto;
        ResetPosition();

        //刷新界面左右边玩家的UI显示
        EventCenter.Broadcast(EventDefine.RefreshUI);
    }
예제 #3
0
    /// <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);
    }
예제 #4
0
    /// <summary>
    /// 给房间内的玩家排序
    /// </summary>
    private void ResetPosition()
    {
        MatchRoomDto2 dto = Models.GameModel.matchRoomDto;

        dto.ResetPosition(Models.GameModel.userDto.UserId);
    }