AppStart_Init.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. using System.Net;
  3. namespace ET
  4. {
  5. public class AppStart_Init: AEvent<EventType.AppStart>
  6. {
  7. protected override async ETTask Run(EventType.AppStart args)
  8. {
  9. Game.Scene.AddComponent<ConfigComponent>();
  10. await ConfigComponent.Instance.LoadAsync();
  11. StartProcessConfig processConfig = StartProcessConfigCategory.Instance.Get(Game.Options.Process);
  12. Game.Scene.AddComponent<TimerComponent>();
  13. Game.Scene.AddComponent<OpcodeTypeComponent>();
  14. Game.Scene.AddComponent<MessageDispatcherComponent>();
  15. Game.Scene.AddComponent<SessionStreamDispatcher>();
  16. Game.Scene.AddComponent<CoroutineLockComponent>();
  17. // 发送普通actor消息
  18. Game.Scene.AddComponent<ActorMessageSenderComponent>();
  19. // 发送location actor消息
  20. Game.Scene.AddComponent<ActorLocationSenderComponent>();
  21. // 访问location server的组件
  22. Game.Scene.AddComponent<LocationProxyComponent>();
  23. Game.Scene.AddComponent<ActorMessageDispatcherComponent>();
  24. // 数值订阅组件
  25. Game.Scene.AddComponent<NumericWatcherComponent>();
  26. Game.Scene.AddComponent<NetThreadComponent>();
  27. Game.Scene.AddComponent<NavmeshComponent, Func<string, byte[]>>(RecastFileReader.Read);
  28. switch (Game.Options.AppType)
  29. {
  30. case AppType.Server:
  31. {
  32. Game.Scene.AddComponent<NetInnerComponent, IPEndPoint, int>(processConfig.InnerIPPort, SessionStreamDispatcherType.SessionStreamDispatcherServerInner);
  33. var processScenes = StartSceneConfigCategory.Instance.GetByProcess(Game.Options.Process);
  34. foreach (StartSceneConfig startConfig in processScenes)
  35. {
  36. await SceneFactory.Create(Game.Scene, startConfig.Id, startConfig.InstanceId, startConfig.Zone, startConfig.Name,
  37. startConfig.Type, startConfig);
  38. }
  39. break;
  40. }
  41. case AppType.Watcher:
  42. {
  43. StartMachineConfig startMachineConfig = WatcherHelper.GetThisMachineConfig();
  44. WatcherComponent watcherComponent = Game.Scene.AddComponent<WatcherComponent>();
  45. watcherComponent.Start(Game.Options.CreateScenes);
  46. Game.Scene.AddComponent<NetInnerComponent, IPEndPoint, int>(NetworkHelper.ToIPEndPoint($"{startMachineConfig.InnerIP}:{startMachineConfig.WatcherPort}"), SessionStreamDispatcherType.SessionStreamDispatcherServerInner);
  47. break;
  48. }
  49. case AppType.GameTool:
  50. break;
  51. }
  52. if (Game.Options.Console == 1)
  53. {
  54. Game.Scene.AddComponent<ConsoleComponent>();
  55. }
  56. }
  57. }
  58. }