using System; using ETModel; namespace ETHotfix { [ObjectSystem] public class LocationProxyComponentSystem : AwakeSystem { public override void Awake(LocationProxyComponent self) { self.Awake(); } } public static class LocationProxyComponentEx { public static void Awake(this LocationProxyComponent self) { LocationProxyComponent.Instance = self; } public static async ETTask Add(this LocationProxyComponent self, long key, long instanceId) { await MessageHelper.CallActor( StartConfigComponent.Instance.GetInstanceId(SceneType.Location), new ObjectAddRequest() { Key = key, InstanceId = instanceId }); } public static async ETTask Lock(this LocationProxyComponent self, long key, long instanceId, int time = 1000) { await MessageHelper.CallActor( StartConfigComponent.Instance.GetInstanceId(SceneType.Location), new ObjectLockRequest() { Key = key, InstanceId = instanceId, Time = time }); } public static async ETTask UnLock(this LocationProxyComponent self, long key, long oldInstanceId, long instanceId) { await MessageHelper.CallActor( StartConfigComponent.Instance.GetInstanceId(SceneType.Location), new ObjectUnLockRequest() { Key = key, OldInstanceId = oldInstanceId, InstanceId = instanceId }); } public static async ETTask Remove(this LocationProxyComponent self, long key) { await MessageHelper.CallActor( StartConfigComponent.Instance.GetInstanceId(SceneType.Location), new ObjectRemoveRequest() { Key = key }); } public static async ETTask Get(this LocationProxyComponent self, long key) { if (key == 0) { throw new Exception($"get location key 0"); } ObjectGetResponse response = (ObjectGetResponse)await MessageHelper.CallActor( StartConfigComponent.Instance.GetInstanceId(SceneType.Location), new ObjectGetRequest() { Key = key }); return response.InstanceId; } public static async ETTask AddLocation(this Entity self) { await Game.Scene.GetComponent().Add(self.Id, self.InstanceId); } public static async ETTask RemoveLocation(this Entity self) { await Game.Scene.GetComponent().Remove(self.Id); } } }