SceneFactory.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using ETModel;
  2. namespace ETHotfix
  3. {
  4. public static class SceneFactory
  5. {
  6. public static async ETTask<Scene> Create(Entity parent, string name, SceneType sceneType)
  7. {
  8. return await Create(parent, IdGenerater.GenerateSceneId(), name, sceneType);
  9. }
  10. public static async ETTask<Scene> Create(Entity parent, long id, string name, SceneType sceneType)
  11. {
  12. Scene scene = EntityFactory.CreateScene(id, name, sceneType);
  13. scene.Parent = parent;
  14. scene.AddComponent<MailBoxComponent, MailboxType>(MailboxType.UnOrderMessageDispatcher);
  15. switch (scene.SceneType)
  16. {
  17. case SceneType.Realm:
  18. break;
  19. case SceneType.Gate:
  20. scene.AddComponent<PlayerComponent>();
  21. scene.AddComponent<GateSessionKeyComponent>();
  22. break;
  23. case SceneType.Map:
  24. scene.AddComponent<UnitComponent>();
  25. scene.AddComponent<PathfindingComponent>();
  26. break;
  27. case SceneType.Location:
  28. scene.AddComponent<LocationComponent>();
  29. break;
  30. }
  31. return scene;
  32. }
  33. }
  34. }