namespace ET { public class ServerInfoManagerComponentAwakeSystem : AwakeSystem { public override void Awake(ServerInfoManagerComponent self) { self.Awake().Coroutine(); } } public class ServerInfoManagerComponentDestroySystem : DestroySystem { public override void Destroy(ServerInfoManagerComponent self) { foreach (var serverInfo in self.ServerInfos) { serverInfo?.Dispose(); } self.ServerInfos.Clear(); } } public class ServerInfoManagerComponentLoadSystem : LoadSystem { public override void Load(ServerInfoManagerComponent self) { self.Awake().Coroutine(); } } [FriendClass(typeof(ServerInfo))] [FriendClass(typeof(ServerInfoManagerComponent))] public static class ServerInfoManagerComponentSystem { public static async ETTask Awake(this ServerInfoManagerComponent self) { var serverInfoList = await DBManagerComponent.Instance.GetZoneDB(self.DomainZone()).Query(d => true); if (serverInfoList == null || serverInfoList.Count <= 0) { Log.Error("serverInfo count is zero"); self.ServerInfos.Clear(); var serverInfoConfigs = ServerInfoConfigCategory.Instance.GetAll(); foreach (var info in serverInfoConfigs.Values) { ServerInfo newServerInfo = self.AddChildWithId(info.Id); newServerInfo.ServerName = info.ServerName; newServerInfo.Status = (int) ServerStaus.Normal; self.ServerInfos.Add(newServerInfo); await DBManagerComponent.Instance.GetZoneDB(self.DomainZone()).Save(newServerInfo); } return; } self.ServerInfos.Clear(); foreach (var serverInfo in serverInfoList) { self.AddChild(serverInfo); self.ServerInfos.Add(serverInfo); } await ETTask.CompletedTask; } } }