コード例 #1
0
 public CallbackObject(byte messageId, MessageCallback callback, CallbackPriority priority)
 {
     MessageId = messageId;
     Callback  = callback;
     Priority  = priority;
     assembly  = callback.Method.Module.Assembly;
 }
コード例 #2
0
        public async Task WaitUntilAsync(Predicate <TEventArgs> condition, CallbackPriority priority = CallbackPriority.Normal)
        {
            TaskCompletionSource <object> tcs = new TaskCompletionSource <object> (null);
            var callback = new Callback(condition, tcs);

            subscribe(callback, priority);
            await tcs.Task;

            unsubscribe(callback, priority);
        }
コード例 #3
0
        public async Task WaitUntilAsync(Predicate <TEventArgs> condition, CallbackPriority priority = CallbackPriority.Normal)
        {
            var ev = getEvent();

            if (ev == null)
            {
                return;
            }
            if (!await approachHotspot(ev))
            {
                return;
            }
            await ev.WaitUntilAsync(condition, priority);
        }
コード例 #4
0
        public void Remove(Callback callback, CallbackPriority priority)
        {
            switch (priority)
            {
            case CallbackPriority.High:
                _high.Remove(callback);
                break;

            case CallbackPriority.Normal:
                _normal.Remove(callback);
                break;

            case CallbackPriority.Low:
                _low.Remove(callback);
                break;

            default:
                throw new NotSupportedException($"Unsupported callback priority: ${priority}");
            }
        }
コード例 #5
0
        public void Add(byte id, MessageCallback callback, CallbackPriority priority)
        {
            lock (syncRoot) {
                if (list[id] == null)
                {
                    list[id] = new CallbacksCollection();
                }

                CallbackObject obj = new CallbackObject(id, callback, priority);

                if (list[id].Contains(obj))
                {
                    throw new ArgumentException("Callback is already registered for this message.");
                }

                RuntimeCore.AddAssemblyObject(obj, this);
                list[id].Add(obj);

                list[id].SortByPriority();

                Debug.WriteLine(callbacksName + " callback added (0x" + id.ToString("X2") + ", " + priority.ToString() + ")", "Phoenix");
            }
        }
コード例 #6
0
ファイル: AGSEvent.cs プロジェクト: tzachshabtay/MonoAGS
 public void Unsubscribe(ClaimableCallback callback, CallbackPriority priority = CallbackPriority.Normal) => unsubscribe(new Callback(callback), priority);
コード例 #7
0
ファイル: Core.cs プロジェクト: greeduomacro/phoenix
 public static void RegisterServerMessageCallback(byte id, MessageCallback callback, CallbackPriority priority)
 {
     serverMsgCallbacks.Add(id, callback, priority);
 }
コード例 #8
0
ファイル: Core.cs プロジェクト: greeduomacro/phoenix
 public static void RegisterClientMessageCallback(byte id, MessageCallback callback, CallbackPriority priority)
 {
     clientMsgCallbacks.Add(id, callback, priority);
 }
コード例 #9
0
 public void UnsubscribeToAsync(Func <Task> callback, CallbackPriority priority = CallbackPriority.Normal) => unsubscribe(new Callback(callback), priority);
コード例 #10
0
 public void Unsubscribe(ClaimableCallbackWithArgs <TEventArgs> callback, CallbackPriority priority = CallbackPriority.Normal) => unsubscribe(new Callback(callback), priority);
コード例 #11
0
 public void Subscribe(Action <TEventArgs> callback, CallbackPriority priority = CallbackPriority.Normal) => subscribe(new Callback(callback), priority);
コード例 #12
0
 public void Unsubscribe(Action callback, CallbackPriority priority = CallbackPriority.Normal)
 {
     _ev.Unsubscribe(callback, priority);
 }
コード例 #13
0
 public void Subscribe(Action <TEventArgs> callback, CallbackPriority priority = CallbackPriority.Normal)
 {
     _ev.Subscribe(callback, priority);
 }
コード例 #14
0
 public static void RegisterClientMessageCallback(byte id, MessageCallback callback, CallbackPriority priority)
 {
     clientMsgCallbacks.Add(id, callback, priority);
 }
コード例 #15
0
 public static void RegisterServerMessageCallback(byte id, MessageCallback callback, CallbackPriority priority)
 {
     serverMsgCallbacks.Add(id, callback, priority);
 }
コード例 #16
0
 public MessageHandlerAttributeBase(byte id)
 {
     this.id = id;
     priority = CallbackPriority.Normal;
 }
コード例 #17
0
    public void AddFixedUpadateCallback(PHSceneBehaviourCallback phSceneBehaviourCallback, CallbackPriority callbackPriority, int subPriority = 0)
    {
        var newItem = new PHSceneBehaviourCallbackItem(subPriority, phSceneBehaviourCallback);

        fixedUpdateCallbacks[callbackPriority].Add(newItem);
        fixedUpdateCallbacks[callbackPriority].Sort((a, b) => a.subPriority - b.subPriority);
    }
コード例 #18
0
 private void subscribe(Callback callback, CallbackPriority priority)
 {
     _invocationList.Add(callback, priority);
 }
コード例 #19
0
 private void unsubscribe(Callback callback, CallbackPriority priority)
 {
     _invocationList.Remove(callback, priority);
 }
コード例 #20
0
 public void SubscribeToAsync(Func <TEventArgs, Task> callback, CallbackPriority priority = CallbackPriority.Normal)
 {
     _ev.SubscribeToAsync(callback, priority);
 }
コード例 #21
0
 public void Unsubscribe(Action callback, CallbackPriority priority = CallbackPriority.Normal) => unsubscribe(new Callback(callback), priority);
コード例 #22
0
 public void UnsubscribeToAsync(Func <Task> callback, CallbackPriority priority = CallbackPriority.Normal)
 {
     _ev.UnsubscribeToAsync(callback, priority);
 }
コード例 #23
0
 public void SubscribeToAsync(Func <TEventArgs, Task> callback, CallbackPriority priority = CallbackPriority.Normal) => subscribe(new Callback(callback), priority);
コード例 #24
0
 public MessageHandlerAttributeBase(byte id)
 {
     this.id  = id;
     priority = CallbackPriority.Normal;
 }
コード例 #25
0
 public void WaitUntil(Predicate <TEventArgs> condition, CallbackPriority priority = CallbackPriority.Normal)
 {
     Task.Run(async() => await WaitUntilAsync(condition, priority)).Wait();
 }
コード例 #26
0
    public void DeleteFixedUpadateCallback(PHSceneBehaviourCallback phSceneBehaviourCallback, CallbackPriority callbackPriority, int subPriority = 0)
    {
        var callBackItems = fixedUpdateCallbacks[callbackPriority];
        PHSceneBehaviourCallbackItem deleteCallBackItem = null;

        foreach (var item in callBackItems)
        {
            if (item.subPriority == subPriority && item.callback == phSceneBehaviourCallback)
            {
                deleteCallBackItem = item;
                break;
            }
        }
        callBackItems.Remove(deleteCallBackItem);
    }