EntryEvent2_InitServer.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System;
  2. using System.Net;
  3. namespace ET.Server
  4. {
  5. [Event(SceneType.Main)]
  6. public class EntryEvent2_InitServer: AEvent<Scene, EntryEvent2>
  7. {
  8. protected override async ETTask Run(Scene root, EntryEvent2 args)
  9. {
  10. int sceneType = SceneTypeSingleton.Instance.GetSceneType(Options.Instance.SceneName);
  11. switch (sceneType)
  12. {
  13. case SceneType.Server:
  14. {
  15. int process = root.Fiber.Process;
  16. StartProcessConfig startProcessConfig = StartProcessConfigCategory.Instance.Get(process);
  17. if (startProcessConfig.Port != 0)
  18. {
  19. await FiberManager.Instance.Create(SchedulerType.ThreadPool, ConstFiberId.NetInner, 0, SceneType.NetInner, "NetInner");
  20. }
  21. // 根据配置创建纤程
  22. var processScenes = StartSceneConfigCategory.Instance.GetByProcess(process);
  23. foreach (StartSceneConfig startConfig in processScenes)
  24. {
  25. await FiberManager.Instance.Create(SchedulerType.ThreadPool, startConfig.Id, startConfig.Zone, startConfig.Type, startConfig.Name);
  26. }
  27. break;
  28. }
  29. case SceneType.Watcher:
  30. {
  31. root.AddComponent<WatcherComponent>();
  32. break;
  33. }
  34. case SceneType.GameTool:
  35. {
  36. break;
  37. }
  38. }
  39. if (Options.Instance.Console == 1)
  40. {
  41. root.AddComponent<ConsoleComponent>();
  42. }
  43. }
  44. }
  45. }