1234567891011121314151617181920212223242526272829303132333435363738 |
- using System;
- namespace ET.Server
- {
- [MessageHandler(SceneType.Game)]
- public class C2G_LoginGameHandler : AMRpcHandler<C2G_LoginGate, G2C_LoginGate>
- {
- protected override async ETTask Run(Session session, C2G_LoginGate request, G2C_LoginGate response)
- {
- Scene scene = session.DomainScene();
- string account = scene.GetComponent<GameSessionKeyComponent>().Get(request.Key);
- if (account == null)
- {
- response.Error = ErrorCore.ERR_ConnectGateKeyError;
- response.Message = "Game key验证失败!";
- return;
- }
-
- // 重复请求
- if (session.GetComponent<SessionLockComponent>() != null)
- {
- response.Error = ErrorCode.ERR_RequestRepeatedly;
- return;
- }
-
- session.RemoveComponent<SessionAcceptTimeoutComponent>();
- PlayerComponent playerComponent = scene.GetComponent<PlayerComponent>();
- Player player = playerComponent.AddChild<Player, string>(account);
- playerComponent.Add(player);
- session.AddComponent<SessionPlayerComponent>().PlayerId = player.Id;
- session.AddComponent<MailBoxComponent, MailboxType>(MailboxType.GateSession);
- response.PlayerId = player.Id;
- await ETTask.CompletedTask;
- }
- }
- }
|