InitSceneStartEvent_InitGame.cs 1.2 KB
Newer Older
1 2
using System;
using Base;
3
using Model;
4 5 6 7 8 9 10 11 12 13 14

namespace Controller
{
	/// <summary>
	/// 初始化游戏
	/// </summary>
	[Event(EventIdType.InitSceneStart)]
	public class InitSceneStartEvent_InitGame: IEvent
	{
		public async void Run()
		{
15
			Game.Scene.AddComponent<MessageDispatherComponent, string>("Client");
16
			NetworkComponent networkComponent = Game.Scene.AddComponent<NetworkComponent, NetworkProtocol>(NetworkProtocol.TCP);
17
			Entity session = networkComponent.Get("127.0.0.1:8888");
18 19 20

			try
			{
21
				// 订阅服务端日志, 服务端收到这个消息会将之后的日志转发给客户端
22 23 24 25 26 27 28
				await session.GetComponent<MessageComponent>().Call<C2R_SubscribeLog, R2C_SubscribeLog>(new C2R_SubscribeLog());
				R2C_Login s2CLogin = await session.GetComponent<MessageComponent>().Call<C2R_Login, R2C_Login>(new C2R_Login {Account = "111", Password = "111111"});

				// 连接Gate
				Entity gateSession = networkComponent.Get(s2CLogin.Address);
				await gateSession.GetComponent<MessageComponent>().Call<C2G_LoginGate, G2C_LoginGate>(new C2G_LoginGate(s2CLogin.Key));
				Log.Info("连接Gate验证成功!");
29 30 31 32 33 34 35 36 37 38 39 40
			}
			catch (RpcException e)
			{
				Log.Error(e.ToString());
			}
			catch (Exception e)
			{
				Log.Error(e.ToString());
			}
		}
	}
}