SceneFactory.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System.Net;
  2. namespace ET.Server
  3. {
  4. public static class SceneFactory
  5. {
  6. public static async ETTask<Scene> Create(Entity parent, string name, SceneType sceneType)
  7. {
  8. long instanceId = IdGenerater.Instance.GenerateInstanceId();
  9. return await Create(parent, instanceId, instanceId, parent.DomainZone(), name, sceneType);
  10. }
  11. public static async ETTask<Scene> Create(Entity parent, long id, long instanceId, int zone, string name, SceneType sceneType, StartSceneConfig startSceneConfig = null)
  12. {
  13. await ETTask.CompletedTask;
  14. Scene scene = EntitySceneFactory.CreateScene(id, instanceId, zone, sceneType, name, parent);
  15. scene.AddComponent<MailBoxComponent, MailboxType>(MailboxType.UnOrderMessageDispatcher);
  16. switch (scene.SceneType)
  17. {
  18. case SceneType.Router:
  19. scene.AddComponent<RouterComponent, IPEndPoint, string>(startSceneConfig.OuterIPPort,
  20. startSceneConfig.StartProcessConfig.InnerIP
  21. );
  22. break;
  23. case SceneType.RouterManager:
  24. scene.AddComponent<HttpComponent, string>($"http://{startSceneConfig.OuterIPPort}/");
  25. break;
  26. case SceneType.Realm:
  27. scene.AddComponent<NetKcpComponent, IPEndPoint, int>(startSceneConfig.InnerIPOutPort, CallbackType.SessionStreamDispatcherServerOuter);
  28. break;
  29. case SceneType.Gate:
  30. scene.AddComponent<NetKcpComponent, IPEndPoint, int>(startSceneConfig.InnerIPOutPort, CallbackType.SessionStreamDispatcherServerOuter);
  31. scene.AddComponent<PlayerComponent>();
  32. scene.AddComponent<GateSessionKeyComponent>();
  33. break;
  34. case SceneType.Map:
  35. scene.AddComponent<UnitComponent>();
  36. scene.AddComponent<AOIManagerComponent>();
  37. break;
  38. case SceneType.Location:
  39. scene.AddComponent<LocationComponent>();
  40. break;
  41. case SceneType.Robot:
  42. scene.AddComponent<RobotManagerComponent>();
  43. break;
  44. }
  45. return scene;
  46. }
  47. }
  48. }