using System.Net; namespace ET { public static class SceneFactory { public static async ETTask Create(Entity parent, string name, SceneType sceneType) { long id = Game.IdGenerater.GenerateId(); return await Create(parent, id, parent.DomainZone(), name, sceneType); } public static async ETTask Create(Entity parent, long id, int zone, string name, SceneType sceneType, StartSceneConfig startSceneConfig = null) { Scene scene = EntitySceneFactory.CreateScene(id, zone, sceneType, name); scene.Parent = parent; Log.Debug($"OuterAddress {startSceneConfig?.InnerOuterAddress}"); scene.AddComponent(MailboxType.UnOrderMessageDispatcher); switch (scene.SceneType) { case SceneType.Realm: scene.AddComponent(startSceneConfig.InnerOuterAddress); break; case SceneType.Gate: scene.AddComponent(startSceneConfig.InnerOuterAddress).AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); break; case SceneType.Map: scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); scene.AddComponent(); break; case SceneType.Location: scene.AddComponent(); break; case SceneType.GameMap: break; } await ETTask.CompletedTask; return scene; } } }