SceneFactory.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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<GateSessionKeyComponent>();
  21. break;
  22. case SceneType.Map:
  23. scene.AddComponent<UnitComponent>();
  24. if (name == "GateMap")
  25. {
  26. return scene;
  27. }
  28. break;
  29. case SceneType.Location:
  30. scene.AddComponent<LocationComponent>();
  31. break;
  32. }
  33. return scene;
  34. }
  35. }
  36. }