CTT/Server/Hotfix/Scene/SceneFactory.cs

81 lines
3.6 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00
using System.Net;
namespace ET
{
public static class SceneFactory
{
public static async ETTask<Scene> 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<Scene> 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<MailBoxComponent, MailboxType>(MailboxType.UnOrderMessageDispatcher);
switch (scene.SceneType)
{
case SceneType.Realm:
scene.AddComponent<NetKcpComponent, IPEndPoint>(startSceneConfig.InnerOuterAddress);
break;
case SceneType.Gate:
2021-04-24 17:39:11 +08:00
scene.AddComponent<NetKcpComponent, IPEndPoint>(startSceneConfig.InnerOuterAddress).AddComponent<SessionCountCheckComponent>();
2021-04-08 20:09:59 +08:00
scene.AddComponent<GateSessionKeyComponent>();
scene.AddComponent<OnLineComponent>();
scene.AddComponent<GateUserComponent>();
scene.AddComponent<PlayerConfigComponent>();
break;
case SceneType.Map:
scene.AddComponent<RunTimeComponent>();
scene.AddComponent<UserComponent>();
2021-05-05 13:36:19 +08:00
scene.AddComponent<ActiveComponent>();
2021-04-08 20:09:59 +08:00
scene.AddComponent<MapUnitComponent>();
scene.AddComponent<MaintainRewardComponent>();
scene.AddComponent<MapSceneComponent>();
scene.AddComponent<StatisticComponent>();
scene.AddComponent<VoucherLogComponent>();
scene.AddComponent<YuanBaoLogComponent>();
scene.AddComponent<TeamComponent>();
scene.AddComponent<DelaySendSyncAttributeComponent>();
scene.AddComponent<SkillConfigComponent>();
scene.AddComponent<SkillOptionFactoryComponent>();
scene.AddComponent<BuffBrocastComponent>();
scene.AddComponent<BuffLibComponent>();
scene.AddComponent<GoodsEffectComponent>();
scene.AddComponent<OffLinePlayerBuffComponent>();
scene.AddComponent<ItemComponent>();
scene.AddComponent<OnlineRewardComponent>();
scene.AddComponent<TaskComponent>();
scene.AddComponent<Chat>();
scene.AddComponent<Shop>();
scene.AddComponent<ConsignmentComponent>();
scene.AddComponent<MailComponent>();
scene.AddComponent<FriendComponent>();
scene.AddComponent<StoreComponent>();
scene.AddComponent<Ranking>();
scene.AddComponent<FamilyComponent>();
scene.AddComponent<FamilyBossComponent>();
scene.AddComponent<QuestComponent>();
break;
case SceneType.Location:
scene.AddComponent<LocationComponent>();
break;
case SceneType.GameMap:
break;
}
await ETTask.CompletedTask;
return scene;
}
}
}