AfterScenesAdd_CreateScene.cs 1.8 KB

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