123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- using System;
- using Newtonsoft.Json.Linq;
- namespace ET.Server
- {
- /// <summary>
- /// 登入游戏服.获取角色列表
- /// </summary>
- [MessageHandler(SceneType.Game)]
- public class C2G_LoginGameHandler : AMRpcHandler<C2G_LoginGame, G2C_LoginGame>
- {
- protected override async ETTask Run(Session session, C2G_LoginGame request, G2C_LoginGame response, Action reply)
- {
- if (session.DomainScene().SceneType != SceneType.Game)
- {
- Log.Debug($"Game 请求的Scene错误...SceneType={session.DomainScene().SceneType}");
- session.Dispose();
- return;
- }
- // 移除session自动超时组件
- session.RemoveComponent<SessionAcceptTimeoutComponent>();
- Scene scene = session.DomainScene();
- bool tokenIsNull = string.IsNullOrEmpty(request.Token.Trim()) || "NoToken".Equals(request.Token.Trim());
- scene.GetComponent<GameDouyinComponent>().TokenIsNull = tokenIsNull;
- // 预先创建数据
- PlayerInfo playerInfo = new PlayerInfo();
- playerInfo.Id = IdGenerater.Instance.GenerateUnitId(scene.DomainZone());
- if (tokenIsNull)
- {
- // Token为空初始化信息
- playerInfo.RoomId = playerInfo.Id;
- playerInfo.AnchorOpenId = playerInfo.Id.ToString();
- playerInfo.AvatarUrl = "测试头像";
- playerInfo.Name = "主播-" + playerInfo.Id;
- }
- else
- {
- JObject roomInfo = scene.GetComponent<GameDouyinComponent>().GetRoomInfo(request.Token.Trim());
- if (roomInfo == null)
- {
- Log.Debug($"获取抖音roomInfo失败...");
- response.Error = ErrorCode.ERR_RoomInfoError;
- reply();
- return;
- }
- playerInfo.RoomId = Convert.ToInt64(roomInfo.SelectToken("data").SelectToken("info").SelectToken("room_id"));
- playerInfo.AnchorOpenId = Convert.ToString(roomInfo.SelectToken("data").SelectToken("info").SelectToken("anchor_open_id"));
- playerInfo.AvatarUrl = Convert.ToString(roomInfo.SelectToken("data").SelectToken("info").SelectToken("avatar_url"));
- playerInfo.Name = Convert.ToString(roomInfo.SelectToken("data").SelectToken("info").SelectToken("nick_name"));
- }
- playerInfo.Sex = 0;
- playerInfo.Pro = (int)PlayerProType.CANG_LANG;
- playerInfo.Level = 1;
- playerInfo.Exp = 0;
- // 添加session组件,用于绑定角色
- session.AddComponent<SessionPlayerComponent, PlayerInfo>(playerInfo);
- session.AddComponent<MailBoxComponent, MailboxType>(MailboxType.GateSession);
- response.Player = PlayerHelper.PlayerInfoToPlayerBasicProto(playerInfo);
- reply();
- await ETTask.CompletedTask;
- }
- }
- }
|