Exemplo n.º 1
0
        /// <summary>
        /// 返回了登录的结果
        /// </summary>
        /// <param name="obj"></param>
        private void HandleUserLoginS2C(BufferEntity p)
        {
            UserLoginS2C s2cMSG = ProtobufHelper.FromBytes <UserLoginS2C>(p.proto);

            switch (s2cMSG.Result)
            {
            case 0:
                Debug.Log("登录成功!");
                //保存数据
                if (s2cMSG.RolesInfo != null)
                {
                    //保存数据
                    LoginCtrl.Instance.SaveRolesInfo(s2cMSG.RolesInfo);
                    //打开大厅界面
                    WindowManager.Instance.OpenWindow(WindowType.LobbyWindow);
                }
                else
                {
                    //跳转到角色界面
                    WindowManager.Instance.OpenWindow(WindowType.RolesWindow);
                }
                Close();    //关闭自己
                break;

            case 2:
                Debug.Log("帐号密码不匹配!");
                WindowManager.Instance.ShowTips("帐号密码不匹配!");
                //打开提示窗体
                break;

            default:
                break;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 发送聊天信息
        /// </summary>
        /// <param name="response"></param>
        private void HandleRoomSendMsgS2C(BufferEntity response)
        {
            RoomSendMsgS2C s2cMSG = ProtobufHelper.FromBytes <RoomSendMsgS2C>(response.proto);

            ChatText.text     += $"{RoomCtrl.Instance.GetNickName(s2cMSG.RolesID)}:{s2cMSG.Text}\n";
            ChatVertical.value = 0;
        }
Exemplo n.º 3
0
        /// <summary>
        /// 选择召唤师技能的协议
        /// </summary>
        /// <param name="response"></param>
        private void HandleRoomSelectHeroSkillS2C(BufferEntity response)
        {
            RoomSelectHeroSkillS2C s2cMSG = ProtobufHelper.FromBytes <RoomSelectHeroSkillS2C>(response.proto);

            if (s2cMSG.GridID == 0)
            {
                rolesDIC[s2cMSG.RolesID].transform.Find("Hero_SkillA").GetComponent <Image>().sprite
                    = ResManager.Instance.LoadGeneralSkill(s2cMSG.SkillID);

                if (RoomCtrl.Instance.CheckIsSelfRoles(s2cMSG.RolesID))
                {
                    SkillA.sprite = ResManager.Instance.LoadGeneralSkill(s2cMSG.SkillID);
                    SkillInfo.gameObject.SetActive(false);
                }
            }
            else
            {
                rolesDIC[s2cMSG.RolesID].transform.Find("Hero_SkillB").GetComponent <Image>().sprite
                    = ResManager.Instance.LoadGeneralSkill(s2cMSG.SkillID);

                if (RoomCtrl.Instance.CheckIsSelfRoles(s2cMSG.RolesID))
                {
                    SkillB.sprite = ResManager.Instance.LoadGeneralSkill(s2cMSG.SkillID);
                    //关闭技能选择面板
                    SkillInfo.gameObject.SetActive(false);
                }
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 注册功能
        /// </summary>
        /// <param name="request"></param>
        private void HandleUserRegisterC2S(BufferEntity request)
        {
            UserRegisterC2S c2sMSG = ProtobufHelper.FromBytes <UserRegisterC2S>(request.proto);

            UserRegisterS2C s2cMSG = new UserRegisterS2C();

            if (DBUserInfo.Instance.Select(MySqlCMD.Where("Account", c2sMSG.UserInfo.Account)) != null)
            {
                Debug.Log("帐号已被注册");
                s2cMSG.Result = 3;
            }
            else
            {
                bool result = DBUserInfo.Instance.Insert(c2sMSG.UserInfo);
                if (result == true)
                {
                    s2cMSG.Result = 0;//注册成功
                }
                else
                {
                    s2cMSG.Result = 4;//未知原因导致的失败
                }
            }

            //返回结果
            BufferFactory.CreqateAndSendPackage(request, s2cMSG);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 返回了注册结果
        /// </summary>
        /// <param name="obj"></param>
        private void HandleUserRegisterS2C(BufferEntity p)
        {
            UserRegisterS2C s2cMSG = ProtobufHelper.FromBytes <UserRegisterS2C>(p.proto);

            switch (s2cMSG.Result)
            {
            case 0:
                Debug.Log("注册成功!");
                //打开提示窗体 提示
                WindowManager.Instance.ShowTips("注册成功!");
                break;

            case 1:
                break;

            case 2:
                break;

            case 3:
                Debug.Log("帐号已被注册!");
                WindowManager.Instance.ShowTips("帐号已被注册!");
                //打开提示窗体
                break;

            default:
                break;
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// 加载进度
        /// </summary>
        /// <param name="response"></param>
        private void HandleRoomLoadProgressS2C(BufferEntity response)
        {
            RoomLoadProgressS2C s2cMSG = ProtobufHelper.FromBytes <RoomLoadProgressS2C>(response.proto);

            //更新界面
            if (s2cMSG.IsBattleStart == true)
            {
                ct.Cancel();
                for (int i = 0; i < s2cMSG.RolesID.Count; i++)
                {
                    playerLoadDIC[s2cMSG.RolesID[i]].transform.Find("Progress")
                    .GetComponent <Text>().text
                        = "100%";
                }
                async.allowSceneActivation = true;
                Close();
            }
            else
            {
                //如果还不能进入战斗场景
                for (int i = 0; i < s2cMSG.RolesID.Count; i++)
                {
                    playerLoadDIC[s2cMSG.RolesID[i]].transform.Find("Progress")
                    .GetComponent <Text>().text
                        = $"{s2cMSG.LoadProgress[i]}%";
                }
            }
        }
        public static void Run(Session session, PacketInfo packetInfo)
        {
            ushort opcode  = packetInfo.Opcode;
            Type   t       = Hotfix.Scene.GetComponent <OpcodeTypeComponent>().GetType(opcode);
            object message = ProtobufHelper.FromBytes(t, packetInfo.Bytes, packetInfo.Index, packetInfo.Length);

            Hotfix.Scene.GetComponent <MessageDispatherComponent>().Handle(session, new MessageInfo(packetInfo.RpcId, packetInfo.Opcode, message));
        }
Exemplo n.º 8
0
        /// <summary>
        /// 解散房间
        /// </summary>
        /// <param name="response"></param>
        private void HandleRoomCloseS2C(BufferEntity response)
        {
            RoomCloseS2C s2cMSG = ProtobufHelper.FromBytes <RoomCloseS2C>(response.proto);

            Close();
            RoomCtrl.Instance.RemoveRoomInfo();

            WindowManager.Instance.OpenWindow(WindowType.LobbyWindow);
        }
        public void Run(Session session, PacketInfo packetInfo)
        {
            ushort   opcode  = packetInfo.Opcode;
            Type     t       = SessionHelper.GetMessageType(opcode);
            object   aa      = ProtobufHelper.FromBytes(t, packetInfo.Bytes, packetInfo.Index, packetInfo.Length);
            IMessage message = (IMessage)aa;

            Hotfix.Scene.GetComponent <MessageDispatherComponent>().Handle(session, opcode, message);
        }
Exemplo n.º 10
0
        /// <summary>
        /// 处理用户传输过来的输入
        /// </summary>
        /// <param name="obj"></param>
        private void HandleBattleUserInputC2S(BufferEntity request)
        {
            BattleUserInputC2S c2sMSG     = ProtobufHelper.FromBytes <BattleUserInputC2S>(request.proto);
            RoomEntity         roomEntity = RoomManager.Instance.Get(c2sMSG.RoomID);

            if (roomEntity != null)
            {
                roomEntity.HandleBattleUserInputC2S(c2sMSG);
            }
        }
Exemplo n.º 11
0
    public void FromBytes(int iteration)
    {
#pragma warning disable CS0618
        var binaryBytes = BinaryHelper.ToBytes(_testModel);
#pragma warning restore CS0618
        var dataContractBytes   = DataContractHelper.ToBytes <TestModel>(_testModel);
        var jilBytes            = JilHelper.ToBytes <TestModel>(_testModel);
        var messagePackBytes    = MessagePackHelper.ToBytes <TestModel>(_testModel);
        var msgPackBytes        = MsgPackHelper.ToBytes <TestModel>(_testModel);
        var newtonsoftJsonBytes = NewtonsoftJsonHelper.ToBytes <TestModel>(_testModel);
        var protobufBytes       = ProtobufHelper.ToBytes <TestModel>(_testModel);
        var sharpYamlBytes      = SharpYamlHelper.ToBytes <TestModel>(_testModel);
        var systemTextJsonBytes = SystemTextJsonHelper.ToBytes <TestModel>(_testModel);
        var utf8JsonBytes       = Utf8JsonHelper.ToBytes <TestModel>(_testModel);
        var xmlBytes            = XmlHelper.ToBytes <TestModel>(_testModel);
        var yamlDotNetBytes     = YamlDotNetHelper.ToBytes(_testModel);
        var zeroFormatterBytes  = ZeroFormatterHelper.ToBytes <TestModel>(_testModel);

        Console.WriteLine("FromBytes go!");

        Runner.Initialize();

        Console.WriteLine(Runner.Time("BinaryHelper FromBytes", iteration,
#pragma warning disable CS0618
                                      () => BinaryHelper.FromBytes <TestModel>(binaryBytes)));
#pragma warning restore CS0618
        Console.WriteLine(Runner.Time("DataContractHelper FromBytes", iteration,
                                      () => DataContractHelper.FromBytes <TestModel>(dataContractBytes)));
        Console.WriteLine(Runner.Time("JilHelper FromBytes", iteration,
                                      () => JilHelper.FromBytes <TestModel>(jilBytes)));
        Console.WriteLine(Runner.Time("MessagePackHelper FromBytes", iteration,
                                      () => MessagePackHelper.FromBytes <TestModel>(messagePackBytes)));
        Console.WriteLine(Runner.Time("MsgPackHelper FromBytes", iteration,
                                      () => MsgPackHelper.FromBytes <TestModel>(msgPackBytes)));
        Console.WriteLine(Runner.Time("NewtonsoftJsonHelper FromBytes", iteration,
                                      () => NewtonsoftJsonHelper.FromBytes <TestModel>(newtonsoftJsonBytes)));
        Console.WriteLine(Runner.Time("ProtobufHelper FromBytes", iteration,
                                      () => ProtobufHelper.FromBytes <TestModel>(protobufBytes)));
        Console.WriteLine(Runner.Time("SharpYamlHelper FromBytes", iteration,
                                      () => SharpYamlHelper.FromBytes <TestModel>(sharpYamlBytes)));
        Console.WriteLine(Runner.Time("SystemTextJsonHelper FromBytes", iteration,
                                      () => SystemTextJsonHelper.FromBytes <TestModel>(systemTextJsonBytes)));
        Console.WriteLine(Runner.Time("Utf8JsonHelper FromBytes", iteration,
                                      () => Utf8JsonHelper.FromBytes <TestModel>(utf8JsonBytes)));
        Console.WriteLine(Runner.Time("XmlHelper FromBytes", iteration,
                                      () => XmlHelper.FromBytes <TestModel>(xmlBytes)));
        Console.WriteLine(Runner.Time("YamlDotNetHelper FromBytes", iteration,
                                      () => YamlDotNetHelper.FromBytes <TestModel>(yamlDotNetBytes)));
        Console.WriteLine(Runner.Time("ZeroFormatterHelper FromBytes", iteration,
                                      () => ZeroFormatterHelper.FromBytes <TestModel>(zeroFormatterBytes)));

        Console.WriteLine("\r\nFromBytes complete!\r\n");
    }
Exemplo n.º 12
0
        /// <summary>
        /// 用户选择英雄
        /// </summary>
        /// <param name="request"></param>
        private void HandleRoomSelectHeroC2S(BufferEntity request)
        {
            RoomSelectHeroC2S c2sMSG = ProtobufHelper.FromBytes <RoomSelectHeroC2S>(request.proto);
            RoomSelectHeroS2C s2cMSG = new RoomSelectHeroS2C();

            s2cMSG.HeroID = c2sMSG.HeroID;
            PlayerEntity p = PlayerManager.GetPlayerEntityFromSession(request.session);

            s2cMSG.RolesID = p.rolesInfo.RolesID;

            p.roomEntity.Broadcast(request.messageID, s2cMSG);
        }
Exemplo n.º 13
0
        /// <summary>
        /// 锁定英雄
        /// </summary>
        /// <param name="response"></param>
        private void HandleRoomLockHeroS2C(BufferEntity response)
        {
            RoomLockHeroS2C s2cMSG = ProtobufHelper.FromBytes <RoomLockHeroS2C>(response.proto);

            rolesDIC[s2cMSG.RolesID].transform.Find("Hero_State").GetComponent <Text>().text
                = "已锁定";

            if (RoomCtrl.Instance.CheckIsSelfRoles(s2cMSG.RolesID))
            {
                isLock = true;//已锁定英雄 shift+f12
            }
        }
Exemplo n.º 14
0
        public static async Task <IResponse> Call(this Session session, IRequest request)
        {
            byte[]     bytes      = ProtobufHelper.ToBytes(request);
            ushort     opcode     = GetOpcode(request.GetType());
            PacketInfo packetInfo = await session.Call(opcode, bytes);

            ushort    responseOpcode = packetInfo.Opcode;
            Type      t        = GetMessageType(responseOpcode);
            object    aa       = ProtobufHelper.FromBytes(t, packetInfo.Bytes, packetInfo.Index, packetInfo.Length);
            IResponse response = (IResponse)aa;

            return(response);
        }
Exemplo n.º 15
0
        /// <summary>
        /// 选择了英雄,更新头像
        /// </summary>
        /// <param name="response"></param>
        private void HandleRoomSelectHeroS2C(BufferEntity response)
        {
            RoomSelectHeroS2C s2cMSG = ProtobufHelper.FromBytes <RoomSelectHeroS2C>(response.proto);

            rolesDIC[s2cMSG.RolesID].transform.Find("Hero_Head").GetComponent <Image>().sprite
                = ResManager.Instance.LoadRoundHead(s2cMSG.HeroID.ToString());

            if (RoomCtrl.Instance.CheckIsSelfRoles(s2cMSG.RolesID))
            {
                //lockHeroID 缓存当前选择的英雄ID
                lockHeroID = s2cMSG.HeroID;
            }
        }
Exemplo n.º 16
0
        /// <summary>
        /// 发送聊天信息
        /// </summary>
        /// <param name="request"></param>
        private void HandleRoomSendMsgC2S(BufferEntity request)
        {
            RoomSendMsgC2S c2sMSG = ProtobufHelper.FromBytes <RoomSendMsgC2S>(request.proto);
            RoomSendMsgS2C s2cMSG = new RoomSendMsgS2C();
            PlayerEntity   p      = PlayerManager.GetPlayerEntityFromSession(request.session);

            s2cMSG.RolesID = p.rolesInfo.RolesID;
            s2cMSG.Text    = c2sMSG.Text;

            //指向广播给同个阵营的玩家
            //p.roomEntity.Broadcast(p.TeamID, request.messageID, s2cMSG);

            p.roomEntity.Broadcast(request.messageID, s2cMSG);
        }
Exemplo n.º 17
0
        /// <summary>
        /// 退出匹配的结果
        /// </summary>
        /// <param name="obj"></param>
        private void HandleLobbyQuitMatchS2C(BufferEntity response)
        {
            LobbyQuitMatchS2C s2cMSG = ProtobufHelper.FromBytes <LobbyQuitMatchS2C>(response.proto);

            if (s2cMSG.Result == 0)
            {
                //匹配和排位 激活
                MatchModeBtn.gameObject.SetActive(true);
                QualifyingBtn.gameObject.SetActive(true);
                //停止匹配和匹配提示的物体隐藏掉
                StopMatchBtn.gameObject.SetActive(false);
                MatchTips.gameObject.SetActive(false);
            }
        }
Exemplo n.º 18
0
        /// <summary>
        /// 加载进入战斗
        /// </summary>
        /// <param name="response"></param>
        private void HandleRoomToBattleS2C(BufferEntity response)
        {
            RoomToBattleS2C s2cMSG = ProtobufHelper.FromBytes <RoomToBattleS2C>(response.proto);

            RoomCtrl.Instance.SavePlayerList(s2cMSG.PlayerList);

            transform.Find("LoadBG").gameObject.SetActive(true);
            HeroA_item = transform.Find("LoadBG/L_TeamA/HeroA_item");
            HeroB_item = transform.Find("LoadBG/L_TeamB/HeroB_item");

            for (int i = 0; i < s2cMSG.PlayerList.Count; i++)
            {
                GameObject go;
                //A队伍
                if (s2cMSG.PlayerList[i].TeamID == 0)
                {
                    go = GameObject.Instantiate(HeroA_item.gameObject, HeroA_item.parent, false);
                }
                //B队伍
                else
                {
                    go = GameObject.Instantiate(HeroB_item.gameObject, HeroB_item.parent, false);
                }
                go.transform.GetComponent <Image>().sprite
                    = ResManager.Instance.LoadHeroTexture(s2cMSG.PlayerList[i].HeroID);

                go.transform.Find("NickName").GetComponent <Text>().text
                    = s2cMSG.PlayerList[i].RolesInfo.NickName;

                go.transform.Find("SkillA").GetComponent <Image>().sprite
                    = ResManager.Instance.LoadGeneralSkill(s2cMSG.PlayerList[i].SkillA);

                go.transform.Find("SkillB").GetComponent <Image>().sprite
                    = ResManager.Instance.LoadGeneralSkill(s2cMSG.PlayerList[i].SkillB);

                go.transform.Find("Progress").GetComponent <Text>().text
                    = "0%";

                go.gameObject.SetActive(true);
                //缓存克隆出来的游戏物体 更新进度
                playerLoadDIC[s2cMSG.PlayerList[i].RolesInfo.RolesID] = go;
            }

            async = SceneManager.LoadSceneAsync("Level01");
            async.allowSceneActivation = false;//不要激活场景

            //定时的去发送加载进度
            SendProgeress();
        }
Exemplo n.º 19
0
        /// <summary>
        /// 选择英雄
        /// </summary>
        /// <param name="request"></param>
        private void HandleRoomSelectHeroSkillC2S(BufferEntity request)
        {
            RoomSelectHeroSkillC2S c2sMSG = ProtobufHelper.FromBytes <RoomSelectHeroSkillC2S>(request.proto);
            RoomSelectHeroSkillS2C s2cMSG = new RoomSelectHeroSkillS2C();

            s2cMSG.SkillID = c2sMSG.SkillID;
            s2cMSG.GridID  = c2sMSG.GridID;
            PlayerEntity p = PlayerManager.GetPlayerEntityFromSession(request.session);

            s2cMSG.RolesID = p.rolesInfo.RolesID;

            //缓存角色技能
            p.roomEntity.UpdateSKill(s2cMSG.RolesID, s2cMSG.SkillID, s2cMSG.GridID);

            p.roomEntity.Broadcast(request.messageID, s2cMSG);
        }
Exemplo n.º 20
0
        /// <summary>
        /// 进入匹配的结果
        /// </summary>
        /// <param name="obj"></param>
        private void HandleLobbyToMatchS2C(BufferEntity response)
        {
            LobbyToMatchS2C s2cMSG = ProtobufHelper.FromBytes <LobbyToMatchS2C>(response.proto);

            if (s2cMSG.Result == 0)
            {
                MatchModeBtn.gameObject.SetActive(false);
                QualifyingBtn.gameObject.SetActive(false);
                StopMatchBtn.gameObject.SetActive(true);
                MatchTips.gameObject.SetActive(true);
            }
            else
            {
                //无法进行匹配 可能是被惩罚 需要等待
            }
        }
Exemplo n.º 21
0
        public static object ToActorMessage(this MemoryStream memoryStream)
        {
            ushort opcode = BitConverter.ToUInt16(memoryStream.GetBuffer(), 8);
            Type   type   = OpcodeTypeComponent.Instance.GetType(opcode);

            if (opcode < OpcodeRangeDefine.PbMaxOpcode)
            {
                return(ProtobufHelper.FromBytes(type, memoryStream.GetBuffer(), 10, (int)memoryStream.Length - 10));
            }

            if (opcode >= OpcodeRangeDefine.JsonMinOpcode)
            {
                return(JsonHelper.FromJson(type, memoryStream.GetBuffer().ToStr(10, (int)(memoryStream.Length - 10))));
            }

            return(MongoHelper.FromBson(type, memoryStream.GetBuffer(), 10, (int)memoryStream.Length - 10));
        }
Exemplo n.º 22
0
        /// <summary>
        /// 登录功能
        /// </summary>
        /// <param name="request"></param>
        private void HandleUserLoginC2S(BufferEntity request)
        {
            //反序列化 得到客户端 发送的数据

            UserLoginC2S c2sMSG = ProtobufHelper.FromBytes <UserLoginC2S>(request.proto);
            //主要是看反序列化的功能 是否正常
            //Debug.Log("登录:"+ JsonHelper.SerializeObject(c2sMSG));

            //匹配记录:相同的账号 相同的密码
            string sqlCMD = MySqlCMD.Where("Account", c2sMSG.UserInfo.Account) +
                            MySqlCMD.And("Password", c2sMSG.UserInfo.Password);

            UserLoginS2C s2cMSG   = new UserLoginS2C();
            UserInfo     userInfo = DBUserInfo.Instance.Select(sqlCMD);

            if (userInfo != null)
            {
                s2cMSG.UserInfo = userInfo;
                s2cMSG.Result   = 0;//登录成功

                //保存角色信息到服务器本地
                PlayerManager.Add(request.session, s2cMSG.UserInfo.ID, new PlayerEntity()
                {
                    userInfo = s2cMSG.UserInfo,
                    session  = request.session,
                });

                RolesInfo rolesInfo = DBRolesInfo.Instance.Select(MySqlCMD.Where("ID", s2cMSG.UserInfo.ID));

                if (rolesInfo != null)
                {
                    s2cMSG.RolesInfo = rolesInfo;
                    //获取到了角色信息 缓存起来
                    PlayerEntity playerEntity = PlayerManager.GetPlayerEntityFromSession(request.session);
                    playerEntity.rolesInfo = rolesInfo;
                }
            }
            else
            {
                s2cMSG.Result = 2;//帐号和密码不匹配
            }

            //返回结果
            BufferFactory.CreqateAndSendPackage(request, s2cMSG);
        }
Exemplo n.º 23
0
        public async Task <SMSG_Realm_List> Handle_SMSG_Realm_List()
        {
            var result = await this.MessageChannel.RecvMessage();

            ushort opcode = result.Item1;

            byte[] message = result.Item2;

            if (opcode != MessageOpcode.SMSG_REALM_LIST)
            {
                throw new BossException(string.Format(
                                            "session: {0}, error opcode: {1}", this.ID, opcode));
            }

            var smsgRealmList = ProtobufHelper.FromBytes <SMSG_Realm_List>(message);

            return(smsgRealmList);
        }
Exemplo n.º 24
0
        public async Task <SMSG_Auth_Logon_Proof_M2> Handle_SMSG_Auth_Logon_Proof_M2()
        {
            var result = await this.MessageChannel.RecvMessage();

            ushort opcode = result.Item1;

            byte[] message = result.Item2;

            if (opcode != MessageOpcode.SMSG_AUTH_LOGON_PROOF_M2)
            {
                throw new BossException(string.Format(
                                            "session: {0}, error opcode: {1}", this.ID, opcode));
            }

            var smsgAuthLogonProofM2 = ProtobufHelper.FromBytes <SMSG_Auth_Logon_Proof_M2>(message);

            return(smsgAuthLogonProofM2);
        }
Exemplo n.º 25
0
        public async Task <SMSG_Auth_Response> Handle_SMSG_Auth_Response()
        {
            var result = await this.IMessageChannel.RecvMessage();

            ushort opcode = result.Item1;

            byte[] message = result.Item2;

            if (opcode != MessageOpcode.SMSG_AUTH_RESPONSE)
            {
                throw new BossException(string.Format(
                                            "session: {0}, opcode: {1}", this.ID, opcode));
            }

            var smsgAuthResponse = ProtobufHelper.FromBytes <SMSG_Auth_Response>(message);

            return(smsgAuthResponse);
        }
Exemplo n.º 26
0
        public async Task <SMSG_Auth_Challenge> Handle_SMSG_Auth_Challenge()
        {
            var result = await this.IMessageChannel.RecvMessage();

            ushort opcode = result.Item1;

            byte[] message = result.Item2;
            Logger.Debug("message: {0}", message.ToHex());
            if (opcode != MessageOpcode.SMSG_AUTH_CHALLENGE)
            {
                throw new BossException(string.Format(
                                            "session: {0}, opcode: {1}", this.ID, opcode));
            }

            var smsgAuthChallenge = ProtobufHelper.FromBytes <SMSG_Auth_Challenge>(message);

            return(smsgAuthChallenge);
        }
Exemplo n.º 27
0
        /// <summary>
        /// 更新匹配的状态
        /// </summary>
        /// <param name="obj"></param>
        private void HandleLobbyUpdateMatchStateS2C(BufferEntity response)
        {
            LobbyUpdateMatchStateS2C s2cMSG = ProtobufHelper.FromBytes <LobbyUpdateMatchStateS2C>(response.proto);

            if (s2cMSG.Result == 0)
            {
                MatchModeBtn.gameObject.SetActive(true);
                QualifyingBtn.gameObject.SetActive(true);
                StopMatchBtn.gameObject.SetActive(false);
                MatchTips.gameObject.SetActive(false);

                //房间信息
                RolesCtrl.Instance.SaveRoomInfo(s2cMSG.RoomInfo);

                Close();
                WindowManager.Instance.OpenWindow(WindowType.RoomWindow);
            }
        }
Exemplo n.º 28
0
        public async Task <SMSG_Password_Protect_Type> Handle_SMSG_Password_Protect_Type()
        {
            var result = await this.MessageChannel.RecvMessage();

            ushort opcode = result.Item1;

            byte[] message = result.Item2;

            if (opcode != MessageOpcode.SMSG_PASSWORD_PROTECT_TYPE)
            {
                throw new BossException(string.Format(
                                            "session: {0}, opcode: {1}", this.ID, opcode));
            }

            var smsgPasswordProtectType =
                ProtobufHelper.FromBytes <SMSG_Password_Protect_Type>(message);

            return(smsgPasswordProtectType);
        }
Exemplo n.º 29
0
        protected async Task <T> RecvMessage <T>()
        {
            var result = await this.IMessageChannel.RecvMessage();

            ushort opcode = result.Item1;

            byte[] content = result.Item2;

            try
            {
                var message = ProtobufHelper.FromBytes <T>(content);
                return(message);
            }
            catch (Exception)
            {
                Logger.Trace("parse message fail, opcode: {0}", opcode);
                throw;
            }
        }
Exemplo n.º 30
0
        public void Open(string file)
        {
            this.rootList.Clear();
            this.treeViewModelsDict.Clear();

            var treeDict = new Dictionary <int, List <TreeNodeData> >();

            byte[] bytes       = File.ReadAllBytes(file);
            var    allTreeData = ProtobufHelper.FromBytes <AllTreeData>(bytes);

            this.MaxNodeId = 0;
            this.MaxTreeId = 0;
            foreach (TreeNodeData treeNodeData in allTreeData.TreeNodeDatas)
            {
                List <TreeNodeData> tree;
                treeDict.TryGetValue(treeNodeData.TreeId, out tree);
                if (tree == null)
                {
                    tree = new List <TreeNodeData>();
                    treeDict[treeNodeData.TreeId] = tree;
                }
                tree.Add(treeNodeData);
                if (treeNodeData.Id > this.MaxNodeId)
                {
                    this.MaxNodeId = treeNodeData.Id;
                }
                if (treeNodeData.TreeId > this.MaxTreeId)
                {
                    this.MaxTreeId = treeNodeData.TreeId;
                }
            }

            foreach (KeyValuePair <int, List <TreeNodeData> > pair in treeDict)
            {
                var treeViewModel = new TreeViewModel(pair.Value)
                {
                    AllTreeViewModel = this, TreeId = pair.Key
                };
                this.treeViewModelsDict[pair.Key] = treeViewModel;
                this.RootList.Add(treeViewModel.Root);
            }
        }