AppStart_InitGame.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. namespace ET
  2. {
  3. [Event]
  4. public class AppStart_Init: AEvent<EventType.AppStart>
  5. {
  6. public override void Run(EventType.AppStart args)
  7. {
  8. RunAsync().Coroutine();
  9. }
  10. public async ETVoid RunAsync()
  11. {
  12. Game.Scene.AddComponent<ConfigComponent>();
  13. Options options = Game.Scene.GetComponent<Options>();
  14. StartProcessConfig processConfig = StartProcessConfigCategory.Instance.Get(options.Process);
  15. Game.Scene.AddComponent<TimerComponent>();
  16. Game.Scene.AddComponent<OpcodeTypeComponent>();
  17. Game.Scene.AddComponent<MessageDispatcherComponent>();
  18. Game.Scene.AddComponent<CoroutineLockComponent>();
  19. // 发送普通actor消息
  20. Game.Scene.AddComponent<ActorMessageSenderComponent>();
  21. // 发送location actor消息
  22. Game.Scene.AddComponent<ActorLocationSenderComponent>();
  23. // 访问location server的组件
  24. Game.Scene.AddComponent<LocationProxyComponent>();
  25. Game.Scene.AddComponent<ActorMessageDispatcherComponent>();
  26. // 数值订阅组件
  27. Game.Scene.AddComponent<NumericWatcherComponent>();
  28. // 控制台组件
  29. Game.Scene.AddComponent<ConsoleComponent>();
  30. Game.Scene.AddComponent<NetInnerComponent, string>(processConfig.InnerAddress);
  31. var processScenes = StartSceneConfigCategory.Instance.GetByProcess(IdGenerater.Process);
  32. foreach (StartSceneConfig startConfig in processScenes)
  33. {
  34. await SceneFactory.Create(Game.Scene, startConfig.SceneId, startConfig.Zone, startConfig.Name, startConfig.Type, startConfig);
  35. }
  36. }
  37. }
  38. }