Files
PemukulPaku/GameServer/Handlers/GetPlayerTokenReqHandler.cs
2023-05-30 21:13:20 +07:00

51 lines
1.9 KiB
C#

using Common.Resources.Proto;
using Common.Database;
using Common;
namespace PemukulPaku.GameServer.Handlers
{
[PacketCmdId(CmdId.GetPlayerTokenReq)]
internal class GetPlayerTokenReqHandler : IPacketHandler
{
public void Handle(Session session, Packet _packet)
{
GetPlayerTokenReq Packet = _packet.GetDecodedBody<GetPlayerTokenReq>();
GetPlayerTokenRsp Rsp = new () { };
UserScheme? CurrentUser = User.FromToken(Packet.AccountToken);
if (CurrentUser is null || CurrentUser.Uid != uint.Parse(Packet.AccountUid))
{
Rsp.retcode = GetPlayerTokenRsp.Retcode.AccountVerifyError;
Rsp.Msg = "Account verification failed, please re-login!";
}
else
{
session.Player = new Game.Player(CurrentUser);
if(session.Player.User.IsFirstLogin)
{
AvatarScheme avatar = Common.Database.Avatar.Create(101, session.Player.User.Uid, session.Player.Equipment);
session.Player.AvatarList = session.Player.AvatarList.Append(avatar).ToArray();
if ((int)Global.config.VerboseLevel > 0)
session.c.Log($"Automatically created avatar with id: {avatar.AvatarId}");
}
Rsp = new()
{
retcode = GetPlayerTokenRsp.Retcode.Succ,
Uid = CurrentUser.Uid,
Token = CurrentUser.Token,
AccountType = Packet.AccountType,
AccountUid = Packet.AccountUid,
UserType = 4,
HoyolabAccountUid = Packet.AccountUid,
FightserverIp = 186782306,
FightserverPort = 2096693423
};
}
session.Send(GameServer.Packet.FromProto(Rsp, CmdId.GetPlayerTokenRsp));
}
}
}