using ET; using ET.EventType; using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; namespace ET { public class UserComponentAwakeSystem : AwakeSystem { public override void Awake(UserComponent self) { self.Awake(); } } public static class UserComponentSystem { /// /// 查询缓存或数据库 /// /// /// /// public static async ETTask Query(this UserComponent self, long id) { User player = self.Get(id); if (player == null) { player = await self.QueryUserByCache(id); if (player == null) { Log.Error($"[ERROR] user == null where id = {id}"); return null; } return player; } return player; } private static async ETTask QueryUserByCache(this UserComponent self,long id) { long mapInstanceId = StartSceneConfigCategory.Instance.GetBySceneName(self.DomainZone(), SceneType.UserCache.ToString()).SceneId; U2M_GetComponent getComponent= (U2M_GetComponent) await MessageHelper.CallActor(mapInstanceId, new M2U_GetComponent() { UserId = id, type = nameof (User) }); if (getComponent.component == null) return null; User user = getComponent.component as User; return user; } public static void Save(this UserComponent self, User player) { long mapInstanceId = StartSceneConfigCategory.Instance.GetBySceneName(self.DomainZone(), SceneType.UserCache.ToString()).SceneId; MessageHelper.SendActor(mapInstanceId, new M2U_WriteComponent() { Id = player.Id, type = nameof (User), component =player }); } } }