| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- using System.Net;
- namespace ET.Server
- {
- public static class SceneFactory
- {
- public static async ETTask<Scene> Create(Entity parent, string name, SceneType sceneType)
- {
- long instanceId = IdGenerater.Instance.GenerateInstanceId();
- return await Create(parent, instanceId, instanceId, parent.DomainZone(), name, sceneType);
- }
-
- public static async ETTask<Scene> Create(Entity parent, long id, long instanceId, int zone, string name, SceneType sceneType, StartSceneConfig startSceneConfig = null)
- {
- await ETTask.CompletedTask;
- Scene scene = EntitySceneFactory.CreateScene(id, instanceId, zone, sceneType, name, parent);
- scene.AddComponent<MailBoxComponent, MailboxType>(MailboxType.UnOrderMessageDispatcher);
- switch (scene.SceneType)
- {
- case SceneType.Router:
- scene.AddComponent<RouterComponent, IPEndPoint, string>(startSceneConfig.OuterIPPort,
- startSceneConfig.StartProcessConfig.InnerIP
- );
- break;
- case SceneType.RouterManager:
- scene.AddComponent<HttpComponent, string>($"http://{startSceneConfig.OuterIPPort}/");
- break;
- case SceneType.Realm:
- scene.AddComponent<NetKcpComponent, IPEndPoint, int>(startSceneConfig.InnerIPOutPort, CallbackType.SessionStreamDispatcherServerOuter);
- break;
- case SceneType.Gate:
- scene.AddComponent<NetKcpComponent, IPEndPoint, int>(startSceneConfig.InnerIPOutPort, CallbackType.SessionStreamDispatcherServerOuter);
- scene.AddComponent<PlayerComponent>();
- scene.AddComponent<GateSessionKeyComponent>();
- break;
- case SceneType.Map:
- scene.AddComponent<UnitComponent>();
- scene.AddComponent<AOIManagerComponent>();
- break;
- case SceneType.Location:
- scene.AddComponent<LocationComponent>();
- break;
- case SceneType.Robot:
- scene.AddComponent<RobotManagerComponent>();
-
- break;
- }
- return scene;
- }
- }
- }
|