Ejemplo n.º 1
0
        static void OnRegist(byte[] data, Action5001 action)
        {
            int uid = action.GetActionGetter().GetSession().UserId;

            var userInfo = CacheSet.UserInfoCach.FindKey(uid);

            if (userInfo == null)
            {
                return;
            }

            RegistData registData = ProtoBufUtils.Deserialize <RegistData>(data);

            userInfo.ModifyLocked(() =>
            {
                userInfo.NickName = registData.NickName;
            });

            LoginResponse response = new LoginResponse();

            response.UserID   = uid;
            response.NickName = userInfo.NickName;
            byte[] responseData = ProtoBufUtils.Serialize(response);
            action.SetResponseData(responseData);
        }
Ejemplo n.º 2
0
        static void OnLogin(byte[] data, Action5001 action)
        {
            LoginData loginData = null;

            loginData = ProtoBufUtils.Deserialize <LoginData>(data);

            var      listUser = CacheSet.UserInfoCach.FindAll(t => t.Account == loginData.UserName);
            UserInfo userInfo = null;

            if (listUser.Count >= 1)
            {
                userInfo = listUser[0];
            }

            bool          regist   = false;
            LoginResponse response = null;

            if (userInfo == null)
            {
                userInfo               = new UserInfo();
                userInfo.UserId        = (int)CacheSet.UserInfoCach.GetNextNo();
                userInfo.Account       = loginData.UserName;
                userInfo.Platform      = loginData.Platform;
                userInfo.DeviceID      = loginData.DeviceUniqueIdentifier;
                userInfo.DeviceModel   = loginData.DeviceModel;
                userInfo.DeviceType    = loginData.DeviceTypeStr;
                userInfo.RegisterTime  = DateTime.Now;
                userInfo.LastLoginTime = DateTime.Now;
                userInfo.Token         = 1;
                if (!CacheSet.UserInfoCach.Add(userInfo))
                {
                    Console.WriteLine("Regist UserInfo Failed!");
                }
                regist = true;
            }
            else
            {
                response          = new LoginResponse();
                response.NickName = userInfo.NickName;
                response.UserID   = (int)userInfo.UserId;

                userInfo.ModifyLocked(() =>
                {
                    userInfo.Account       = loginData.UserName;
                    userInfo.Platform      = loginData.Platform;
                    userInfo.DeviceID      = loginData.DeviceUniqueIdentifier;
                    userInfo.DeviceModel   = loginData.DeviceModel;
                    userInfo.DeviceType    = loginData.DeviceTypeStr;
                    userInfo.LastLoginTime = DateTime.Now;
                    userInfo.Token         = userInfo.Token + 1;
                });
                regist = false;
                if (string.IsNullOrEmpty(response.NickName))
                {
                    regist = true;
                }
            }

            int uid = (int)userInfo.UserId;

            if (!regist && response != null)
            {
                byte[] responseData = ProtoBufUtils.Serialize(response);
                action.SetResponseData(responseData);
            }
            else
            {
                byte[] responseData = BitConverter.GetBytes(uid);
                action.SetResponseData(responseData);
            }

            SessionUser user = new SessionUser();

            user.UserId = uid;
            GameSession session = action.GetActionGetter().GetSession();

            var OldSession = GameSession.Get(uid);

            if (OldSession != null)
            {
                OldSession.Close();
            }

            session.Bind(user);
        }