SceneFactory.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. namespace ET
  2. {
  3. public static class SceneFactory
  4. {
  5. public static async ETTask<Scene> Create(Entity parent, string name, SceneType sceneType)
  6. {
  7. long id = IdGenerater.GenerateId();
  8. return await Create(parent, id, parent.DomainZone(), name, sceneType);
  9. }
  10. public static async ETTask<Scene> Create(Entity parent, long id, int zone, string name, SceneType sceneType, StartSceneConfig startSceneConfig = null)
  11. {
  12. Scene scene = EntitySceneFactory.CreateScene(id, zone, sceneType, name);
  13. scene.Parent = parent;
  14. scene.AddComponent<MailBoxComponent, MailboxType>(MailboxType.UnOrderMessageDispatcher);
  15. switch (scene.SceneType)
  16. {
  17. case SceneType.Realm:
  18. scene.AddComponent<NetOuterComponent, string>($"{startSceneConfig.OuterPort}:{startSceneConfig.OuterPort}");
  19. break;
  20. case SceneType.Gate:
  21. scene.AddComponent<NetOuterComponent, string>($"{startSceneConfig.OuterPort}:{startSceneConfig.OuterPort}");
  22. scene.AddComponent<PlayerComponent>();
  23. scene.AddComponent<GateSessionKeyComponent>();
  24. break;
  25. case SceneType.Map:
  26. scene.AddComponent<UnitComponent>();
  27. scene.AddComponent<PathfindingComponent>();
  28. break;
  29. case SceneType.Location:
  30. scene.AddComponent<LocationComponent>();
  31. break;
  32. }
  33. return scene;
  34. }
  35. }
  36. }