EntryEvent2_InitServer.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System;
  2. using System.Net;
  3. using ET;
  4. namespace ET.Server
  5. {
  6. [Event(SceneType.Process)]
  7. public class EntryEvent2_InitServer: BEvent<EventType.EntryEvent2>
  8. {
  9. protected override async ETTask OnEvent(EventType.EntryEvent2 args)
  10. {
  11. Root.Instance.Scene.AddComponent<AIDispatcherComponent>();
  12. // 发送普通actor消息
  13. Root.Instance.Scene.AddComponent<ActorMessageSenderComponent>();
  14. // 发送location actor消息
  15. Root.Instance.Scene.AddComponent<ActorLocationSenderComponent>();
  16. // 访问location server的组件
  17. Root.Instance.Scene.AddComponent<LocationProxyComponent>();
  18. Root.Instance.Scene.AddComponent<ActorMessageDispatcherComponent>();
  19. Root.Instance.Scene.AddComponent<ServerSceneManagerComponent>();
  20. Root.Instance.Scene.AddComponent<RobotCaseComponent>();
  21. // 访问mongodb数据库组件
  22. Root.Instance.Scene.AddComponent<DBManagerComponent>();
  23. StartProcessConfig processConfig = StartProcessConfigCategory.Instance.Get(Options.Instance.Process);
  24. Log.Debug($"AppType: {Options.Instance.AppType}");
  25. switch (Options.Instance.AppType)
  26. {
  27. case AppType.Server:
  28. {
  29. Root.Instance.Scene.AddComponent<NetInnerComponent, IPEndPoint>(
  30. processConfig.InnerIPPort
  31. );
  32. var processScenes = StartSceneConfigCategory.Instance.GetByProcess(Options.Instance.Process);
  33. foreach (StartSceneConfig startConfig in processScenes)
  34. {
  35. await SceneFactory.CreateServerScene(
  36. ServerSceneManagerComponent.Instance, 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 = Root.Instance.Scene.AddComponent<WatcherComponent>();
  45. watcherComponent.Start(Options.Instance.CreateScenes);
  46. Root.Instance.Scene.AddComponent<NetInnerComponent, IPEndPoint>(
  47. NetworkHelper.ToIPEndPoint($"{startMachineConfig.InnerIP}:{startMachineConfig.WatcherPort}")
  48. );
  49. break;
  50. }
  51. case AppType.GameTool:
  52. break;
  53. }
  54. if (Options.Instance.Console == 1)
  55. {
  56. Root.Instance.Scene.AddComponent<ConsoleComponent>();
  57. }
  58. }
  59. }
  60. }