Ejemplo n.º 1
0
    public void Register(User user)
    {
        Dictionary <byte, object> parameters = new Dictionary <byte, object>();

        ParameterTool.AddSubcode(parameters, SubCode.AccRegister);
        ParameterTool.AddParameter <User>(parameters, ParameterCode.User, user);
        SocketEngine.Instance.SendRequest(OpCode, parameters);
    }
Ejemplo n.º 2
0
        public override void OnHandleMessage(OperationRequest request, OperationResponse response, MasterClientPeer peer, SendParameters sendParameters)
        {
            var user   = ParameterTool.GetParameter <User>(request.Parameters, ParameterCode.User);
            var userDB = manager.GetUserByAccesstoken(user.Accesstoken);

            SubCode subCode = ParameterTool.GetSubcode(request.Parameters);

            ParameterTool.AddSubcode(response.Parameters, subCode);
            switch (subCode)
            {
            case SubCode.AccLogin:
            {
                if (userDB != null && userDB.Password == MD5Tool.GetMD5(user.Password))
                {
                    ParameterTool.AddParameter <User>(response.Parameters, ParameterCode.User, userDB);
                    //用户名和密码正确,登陆成功
                    response.ReturnCode = (short)ReturnCode.Success;
                    peer.User           = userDB;


                    //if (MasterApplication.Instance.TeamCtrl.ContansUser(userDB.ID))//如果之前正在游戏中
                    //{
                    //    peer.Team = MasterApplication.Instance.TeamCtrl.GetTeamByUser(userDB.ID);
                    //}
                }
                else
                {
                    response.ReturnCode   = (short)ReturnCode.Fail;
                    response.DebugMessage = "用户名或密码错误";
                }
                //string username = ParameterTool.GetParameter<string>(request.Parameters, ParameterCode.Username, false);
                // password = ParameterTool.GetParameter<string>(request.Parameters, ParameterCode.Password, false);
                Log("Login:acesstoken=" + user.Accesstoken + ",password="******"用户已存在";
                }
                //string username = ParameterTool.GetParameter<string>(request.Parameters, ParameterCode.Username, false);
                //string password = ParameterTool.GetParameter<string>(request.Parameters, ParameterCode.Password, false);
                Log("Register:acesstoken=" + user.Accesstoken + ",password=" + user.Password);
            } break;
            }
        }
Ejemplo n.º 3
0
    public void Login(User user)
    {
        Dictionary <byte, object> parameters = new Dictionary <byte, object>();

        ParameterTool.AddSubcode(parameters, SubCode.AccLogin);
        ParameterTool.AddParameter <User>(parameters, ParameterCode.User, user);
        foreach (var v in parameters)
        {
            Debug.Log("key=" + v.Key + ",value=" + v.Value);
        }
        SocketEngine.Instance.SendRequest(OpCode, parameters);
    }
Ejemplo n.º 4
0
        void SendEventByPeer(ClientPeer peer, OperationCode opCode, SubCode subCode, List <Role> rolelList, int masterRoleId)
        {
            //OperationResponse response=new OperationResponse();
            //response.Parameters=new Dictionary<byte, object>();
            //ParameterTool.AddSubcode(response.Parameters,subCode);
            //ParameterTool.AddParmeter(response.Parameters,ParameterCode.RoleList,rolelList);
            //response.ReturnCode = (short) ReturnCode.GetTeam;
            //peer.SendOperationResponse(response, sendParameters);

            EventData eventData = new EventData();

            eventData.Parameters = new Dictionary <byte, object>();
            ParameterTool.AddParmeter(eventData.Parameters, ParameterCode.OperationCode, opCode, false);
            ParameterTool.AddSubcode(eventData.Parameters, subCode);
            ParameterTool.AddParmeter(eventData.Parameters, ParameterCode.RoleList, rolelList);
            ParameterTool.AddParmeter(eventData.Parameters, ParameterCode.MasterRoleId, masterRoleId, false);

            peer.SendEvent(eventData, new SendParameters());
        }
Ejemplo n.º 5
0
        public override void OnHandlerMessage(OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters)
        {
            SubCode subcode = ParameterTool.GetSubcode(request.Parameters);

            ParameterTool.AddSubcode(response.Parameters, subcode);
            switch (subcode)
            {
            case SubCode.Add:
                SkillDB skillDB = ParameterTool.GetParameter <SkillDB>(request.Parameters, ParameterCode.SkillDB);
                skillDB.Role = peer.LoginRole;
                skillDBManager.Add(skillDB);
                skillDB.Role = null;
                ParameterTool.AddParameter(response.Parameters, ParameterCode.SkillDB, skillDB);
                break;

            case SubCode.Get:
                List <SkillDB> list = skillDBManager.Get(peer.LoginRole);
                foreach (var temp in list)
                {
                    temp.Role = null;
                }
                ParameterTool.AddParameter(response.Parameters, ParameterCode.SkillDBList, list);
                break;

            case SubCode.Update:
                SkillDB skillDB2 = ParameterTool.GetParameter <SkillDB>(request.Parameters, ParameterCode.SkillDB);
                skillDB2.Role = peer.LoginRole;
                skillDBManager.Update(skillDB2);

                break;

            case SubCode.Upgrade:
                SkillDB skillDB3 = ParameterTool.GetParameter <SkillDB>(request.Parameters, ParameterCode.SkillDB);
                Role    role     = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role);
                role.User     = peer.LoginUser;
                skillDB3.Role = role;
                skillDBManager.Upgrade(skillDB3, role);
                skillDB3.Role = null;
                ParameterTool.AddParameter(response.Parameters, ParameterCode.SkillDB, skillDB3);
                break;
            }
        }
Ejemplo n.º 6
0
        public override void OnHandlerMessage(OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters)
        {
            SubCode subCode = ParameterTool.GetSubcode(request.Parameters);

            ParameterTool.AddSubcode(response.Parameters, subCode);
            switch (subCode)
            {
            case SubCode.SendTeam:
                if (TumoApplication.Instance.clientPeerListFotTeam.Count >= 2)
                {
                    //取得list中的前二个peer 跟当前的peer进行组队  toto
                    ClientPeer peer1 = TumoApplication.Instance.clientPeerListFotTeam[0];
                    ClientPeer peer2 = TumoApplication.Instance.clientPeerListFotTeam[1];
                    Team       t     = new Team(peer1, peer2, peer);
                    TumoApplication.Instance.clientPeerListFotTeam.RemoveRange(0, 2);
                    List <Role> roleList = new List <Role>();
                    foreach (var clientPeer in t.clientPeers)
                    {
                        roleList.Add(clientPeer.LoginRole);
                    }
                    ParameterTool.AddParmeter(response.Parameters, ParameterCode.RoleList, roleList);
                    ParameterTool.AddParmeter(response.Parameters, ParameterCode.MasterRoleId, t.masterRoleId,
                                              false);
                    response.ReturnCode = (short)ReturnCode.GetTeam;

                    SendEventByPeer(peer1, (OperationCode)response.OperationCode, SubCode.GetTeam, roleList, t.masterRoleId);    //不知道对不对?
                    SendEventByPeer(peer2, (OperationCode)response.OperationCode, SubCode.GetTeam, roleList, t.masterRoleId);    //不知道对不对?
                }
                else
                {
                    //当当前的服器可供组队的客户端不足的时候,把自身加到集合中等 等组队
                    TumoApplication.Instance.clientPeerListFotTeam.Add(peer);
                    response.ReturnCode = (short)ReturnCode.WartingTeam;
                }
                break;

            case SubCode.CancelTeam:
                TumoApplication.Instance.clientPeerListFotTeam.Remove(peer);
                response.ReturnCode = (short)ReturnCode.Success;
                break;

            case SubCode.SyncPositionAndRotation:
                object posObj = null;
                request.Parameters.TryGetValue((byte)ParameterCode.Position, out posObj);
                object eulerAnglesObj = null;
                request.Parameters.TryGetValue((byte)ParameterCode.EulerAngles, out eulerAnglesObj);
                foreach (ClientPeer temp in peer.Team.clientPeers)
                {
                    if (temp != peer)
                    {
                        SendEventByPeer(temp, OpCode, SubCode.SyncPositionAndRotation, peer.LoginRole.Id, posObj,
                                        eulerAnglesObj);
                    }
                }
                break;

            case SubCode.SyncMoveAnimation:
                foreach (ClientPeer temp in peer.Team.clientPeers)
                {
                    if (temp != peer)
                    {
                        SendMoveAnimationEvent(temp, OpCode, SubCode.SyncMoveAnimation, peer.LoginRole.Id, request.Parameters);
                    }
                }
                break;

            case SubCode.SyncAnimation:
                request.Parameters.Add((byte)ParameterCode.RoleId, peer.LoginRole.Id);
                RequestTool.TransmitRequst(peer, request, OpCode);
                break;

            case SubCode.SendGameState:
                RequestTool.TransmitRequst(peer, request, OpCode);
                peer.Team.Dismiss();      //解散队伍
                break;
            }
        }