SceneFactory.cs 1.6 KB

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