Example #1
0
    public void LoginRequest(MessagePack pack)
    {
        //获取到包中的数据
        var data = pack.gameMessage.loginRequest;
        //回应客户端.
        GameMessage message = new GameMessage()
        {
            cmd = (int)CMD.LoginResponse
        };

        //检测当前账号是否已经上线
        //在缓存中查找
        //已上线: 返回错误信息
        if (cacheService.IsOnline(data.Account))
        {
            //返回错误码
            message.err = (int)ErrorCode.AccountOnLine;
        }
        //未上线:
        else
        {
            //账号是否存在
            var playerData = cacheService.GetPlayerData(data.Account, data.Password);
            //如果查找的玩家数据为空, 说明密码有问题, 返回新错误码
            if (playerData == null)
            {  //存在, 密码错误
               //message.err = (int)ErrorCode.WrongPassword;
            }
            else//账号有效, 将获取到的玩家数据添加到回应客户端的数据包中
            {
                //message.loginRespond.playerData = playerData;
                message.loginRespond = new LoginRespond()
                {
                    playerData = playerData
                };
            }
            //当前账号登录后, 把信息缓存
            cacheService.CacheInfo(data.Account, pack.serverSession, playerData);
        }

        pack.serverSession.SendMsg(message);
    }