AppStart_Init.cs 3.3 KB

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