You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

74 lines
3.2 KiB

using System;
using System.Net;
namespace ET
{
public class AppStart_Init: AEvent<EventType.AppStart>
{
protected override void Run(EventType.AppStart args)
{
RunAsync(args).Coroutine();
}
private async ETTask RunAsync(EventType.AppStart args)
{
Game.Scene.AddComponent<ConfigComponent>();
await ConfigComponent.Instance.LoadAsync();
StartProcessConfig processConfig = StartProcessConfigCategory.Instance.Get(Game.Options.Process);
Game.Scene.AddComponent<TimerComponent>();
Game.Scene.AddComponent<OpcodeTypeComponent>();
Game.Scene.AddComponent<MessageDispatcherComponent>();
Game.Scene.AddComponent<SessionStreamDispatcher>();
Game.Scene.AddComponent<CoroutineLockComponent>();
// 发送普通actor消息
Game.Scene.AddComponent<ActorMessageSenderComponent>();
// 发送location actor消息
Game.Scene.AddComponent<ActorLocationSenderComponent>();
// 访问location server的组件
Game.Scene.AddComponent<LocationProxyComponent>();
Game.Scene.AddComponent<ActorMessageDispatcherComponent>();
// 数值订阅组件
Game.Scene.AddComponent<NumericWatcherComponent>();
Game.Scene.AddComponent<NetThreadComponent>();
Game.Scene.AddComponent<NavmeshComponent, Func<string, byte[]>>(RecastFileReader.Read);
Game.Scene.AddComponent<DBManagerComponent>();
//Game.Scene.AddComponent<HttpComponent,string>("http://127.0.0.1:10086/");
switch (Game.Options.AppType)
{
case AppType.Server:
{
Game.Scene.AddComponent<NetInnerComponent, IPEndPoint, int>(processConfig.InnerIPPort, SessionStreamDispatcherType.SessionStreamDispatcherServerInner);
var processScenes = StartSceneConfigCategory.Instance.GetByProcess(Game.Options.Process);
foreach (StartSceneConfig startConfig in processScenes)
{
await SceneFactory.Create(Game.Scene, startConfig.Id, startConfig.InstanceId, startConfig.Zone, startConfig.Name,
startConfig.Type, startConfig);
}
break;
}
case AppType.Watcher:
{
StartMachineConfig startMachineConfig = WatcherHelper.GetThisMachineConfig();
WatcherComponent watcherComponent = Game.Scene.AddComponent<WatcherComponent>();
watcherComponent.Start(Game.Options.CreateScenes);
Game.Scene.AddComponent<NetInnerComponent, IPEndPoint, int>(NetworkHelper.ToIPEndPoint($"{startMachineConfig.InnerIP}:{startMachineConfig.WatcherPort}"), SessionStreamDispatcherType.SessionStreamDispatcherServerInner);
break;
}
case AppType.GameTool:
break;
}
if (Game.Options.Console == 1)
{
Game.Scene.AddComponent<ConsoleComponent>();
}
}
}
}