using System; using System.Collections.Generic; using System.Text; using MongoDB.Bson; namespace ET { public class UnitHelper { public static async ETTask Query(Entity domain, long id) { try { Unit unit = EntityFactory.CreateWithId(domain, id); PlayerData data = await DBComponent.Instance.Query(id); unit.AddComponent(data); Character character = await DBComponent.Instance.Query(id); unit.AddComponent(character); NumericComponent num = await DBComponent.Instance.Query(id); unit.AddComponent(num); UnitSkillComponent unitSkill = await DBComponent.Instance.Query(id); unit.AddComponent(unitSkill); //!玩家设置 UserSetting setting = await DBComponent.Instance.Query(id); unit.AddComponent(setting); //!任务 UnitTask unitTask = await DBComponent.Instance.Query(id); unit.AddComponent(unitTask); //!背包 Bag bag = await DBComponent.Instance.Query(id); unit.AddComponent(bag); UnitScene unitScene = await DBComponent.Instance.Query(id); unit.AddComponent(unitScene); StarSoulBag starSoulBag = await DBComponent.Instance.Query(id); unit.AddComponent(starSoulBag); Pet pet = await DBComponent.Instance.Query(id); unit.AddComponent(pet); unit.AddComponent(); return unit; } catch (Exception e) { Log.Error(e); } return null; } public static async ETTask Query(int zone,long id)where T:Entity { try { long mapInstanceId = StartSceneConfigCategory.Instance.GetBySceneName(zone, SceneType.UserCache.ToString()).SceneId; U2M_GetComponent getComponent= (U2M_GetComponent) await MessageHelper.CallActor(mapInstanceId, new M2U_GetComponent() { UserId = id, type = typeof (T).Name }); if (getComponent.component == null) return null; T t = getComponent.component as T; return t; } catch (Exception e) { Log.Error(e); } return null; } public static void Save(Unit unit) where T : Entity { Entity entity = unit.GetComponent(); long mapInstanceId = StartSceneConfigCategory.Instance.GetBySceneName(entity.DomainZone(), SceneType.UserCache.ToString()).SceneId; MessageHelper.SendActor(mapInstanceId, new M2U_WriteComponent() { Id = entity.Id, type = typeof (T).Name, component =entity }); } public static void SaveComponenet(T t) where T : Entity { // await DBComponent.Instance.Save(t); long mapInstanceId = StartSceneConfigCategory.Instance.GetBySceneName(t.DomainZone(), SceneType.UserCache.ToString()).SceneId; MessageHelper.SendActor(mapInstanceId, new M2U_WriteComponent() { Id = t.Id, type = typeof (T).Name, component =t }); } /// /// 设置位置信息以及人物信息 /// /// /// /// public static void SetUnitInfo(Unit unit, UnitPosInfo unitInfo) { UnitScene unitScene = unit.GetComponent(); if (unitScene == null) { Log.Error($"unitScene == null where id = {unit.Id}"); return; } unitInfo.X = unitScene.X; unitInfo.Y = unitScene.Y; unitInfo.YAngle = unitScene.YAngle; } } }