internal static int checkDelegate(IntPtr l,int p,out UEventListener.EventListenerDelegate ua)
        {
            int op = extractFunction(l,p);
            if(LuaDLL.lua_isnil(l,p)) {
                ua=null;
                return op;
            }
            else if (LuaDLL.lua_isuserdata(l, p)==1)
            {
                ua = (UEventListener.EventListenerDelegate)checkObj(l, p);
                return op;
            }
            LuaDelegate ld;
            checkType(l, -1, out ld);
            if(ld.d!=null)
            {
                ua = (UEventListener.EventListenerDelegate)ld.d;
                return op;
            }
            LuaDLL.lua_pop(l,1);

            l = LuaState.get(l).L;
            ua = (UEvent a1) =>
            {
                int error = pushTry(l);

                pushValue(l,a1);
                ld.pcall(1, error);
                LuaDLL.lua_settop(l, error-1);
            };
            ld.d=ua;
            return op;
        }
예제 #2
0
	/// <summary>
	/// 移除事件
	/// </summary>
	/// <param name="eventType">事件类别</param>
	/// <param name="callback">回调函数</param>
	public void removeEventListener(string eventType, UEventListener.EventListenerDelegate callback)
	{
		UEventListener eventListener = this.getListener(eventType);
		if (eventListener != null) 
		{
			eventListener.OnEvent -= callback;
		}
	}
예제 #3
0
    /// <summary>
    /// 移除事件
    /// </summary>
    /// <param name="eventType">事件类别</param>
    /// <param name="callback">回调函数</param>
    public void removeEventListener(string eventType, UEventListener.EventListenerDelegate callback)
    {
        UEventListener eventListener = this.getListener(eventType);

        if (eventListener != null)
        {
            eventListener.OnEvent -= callback;
        }
    }
예제 #4
0
    public static void OnDownloadBytes(string url, string scontent, Action <byte[]> actionResult, Action <string> actionFailed = null)
    {
        UICommonWait.Show();
        new Thread(new ThreadStart(() =>
        {
            try
            {
                if (!string.IsNullOrEmpty(scontent))
                {
                    url = $"{url}?{scontent}";
                }
                var req    = (HttpWebRequest)HttpWebRequest.Create(url);
                req.Method = "GET";
                using (var wr = req.GetResponse() as HttpWebResponse)
                {
                    var resStream = wr.GetResponseStream();                              //获得Response的流

                    int count  = (int)resStream.Length;
                    int offset = 0;
                    var buf    = new byte[count];
                    while (count > 0)
                    {
                        int n = resStream.Read(buf, offset, count);
                        if (n == 0)
                        {
                            break;
                        }
                        count  -= n;
                        offset += n;
                    }

                    UEventListener.OnAddProducingAction(() =>
                    {
                        if (actionResult != null)
                        {
                            actionResult(buf);
                        }
                    });
                }
            }
            catch (Exception ex)
            {
                Debug.Log($"web sender error:{ex.Message}\r\n{ex.StackTrace}");
                //lock (lockObj)
                {
                    UEventListener.OnAddProducingAction(() =>
                    {
                        if (actionFailed != null)
                        {
                            actionFailed(ex.Message);
                        }
                    });
                }
            }
        }
                                   )).Start();
    }
예제 #5
0
	/// <summary>
	/// 侦听事件
	/// </summary>
	/// <param name="eventType">事件类别</param>
	/// <param name="callback">回调函数</param>
	public void addEventListener(string eventType, UEventListener.EventListenerDelegate callback)
	{
		UEventListener eventListener = this.getListener(eventType);
		if (eventListener == null)
		{
			eventListener = new UEventListener(eventType);
			eventListenerList.Add(eventListener);
		}

		eventListener.OnEvent += callback;
	}
예제 #6
0
    /// <summary>
    /// 侦听事件
    /// </summary>
    /// <param name="eventType">事件类别</param>
    /// <param name="callback">回调函数</param>
    public void addEventListener(string eventType, UEventListener.EventListenerDelegate callback)
    {
        UEventListener eventListener = this.getListener(eventType);

        if (eventListener == null)
        {
            eventListener = new UEventListener(eventType);
            eventListenerList.Add(eventListener);
        }

        eventListener.OnEvent += callback;
    }
예제 #7
0
 static public int get_eventType(IntPtr l)
 {
     try {
         UEventListener self = (UEventListener)checkSelf(l);
         pushValue(l, true);
         pushValue(l, self.eventType);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
예제 #8
0
    /// <summary>
    /// 发送事件
    /// </summary>
    /// <param name="evt">Evt.</param>
    /// <param name="gameObject">Game object.</param>
    public void dispatchEvent(UEvent evt, object gameObject)
    {
        if (eventListenerDict.ContainsKey(evt.eventType))
        {
            UEventListener eventListener = eventListenerDict[evt.eventType];
            if (eventListener == null)
            {
                return;
            }

            evt.target = gameObject;
            eventListener.Excute(evt);
        }
    }
예제 #9
0
 static public int set_eventType(IntPtr l)
 {
     try {
         UEventListener self = (UEventListener)checkSelf(l);
         System.String  v;
         checkType(l, 2, out v);
         self.eventType = v;
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
예제 #10
0
 static public int Excute(IntPtr l)
 {
     try {
         UEventListener self = (UEventListener)checkSelf(l);
         UEvent         a1;
         checkType(l, 2, out a1);
         self.Excute(a1);
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
예제 #11
0
 public static int constructor(IntPtr l)
 {
     try {
         UEventListener o;
         System.String a1;
         checkType(l,2,out a1);
         o=new UEventListener(a1);
         pushValue(l,true);
         pushValue(l,o);
         return 2;
     }
     catch(Exception e) {
         return error(l,e);
     }
 }
예제 #12
0
 static public int constructor(IntPtr l)
 {
     try {
         UEventListener o;
         System.String  a1;
         checkType(l, 2, out a1);
         o = new UEventListener(a1);
         pushValue(l, true);
         pushValue(l, o);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
예제 #13
0
 //private static object lockObj = new object();
 private void DoRequest(string url, string scontent, Action <Newtonsoft.Json.Linq.JObject> actionResult, Action <string> actionFailed, bool bSortArguments, bool bShowCommonWait)
 {
     if (bShowCommonWait)
     {
         UICommonWait.Show();
     }
     new Thread(new ThreadStart(() =>
     {
         try
         {
             var uri = $"{url}?{scontent}";
             Debug.Log($"request {uri}");
             var req    = (HttpWebRequest)HttpWebRequest.Create(uri);
             req.Method = "GET";
             using (WebResponse wr = req.GetResponse())
             {
                 var result = new StreamReader(wr.GetResponseStream(), Encoding.UTF8).ReadToEnd();
                 if (string.IsNullOrEmpty(result))
                 {
                     UIAlert.Show($"{url}请求返回空。");
                     return;
                 }
                 Debug.Log($"url {uri} result {result}");
                 //lock (lockObj)
                 {
                     UEventListener.OnAddProducingAction(() =>
                     {
                         actionResult(JsonConvert.DeserializeObject(result) as JObject);
                     });
                 }
             }
         }
         catch (WebException ex)
         {
             Debug.Log($"web sender WebException:{ex.Message}\r\n{ex.StackTrace}");
             //lock (lockObj)
             {
                 UEventListener.OnAddProducingAction(() =>
                 {
                     UIAlert.Show($"请求失败:{url} Web崩溃信息:{ex.Message}");
                     if (actionFailed != null)
                     {
                         actionFailed(ex.Message);
                     }
                 });
             }
         }
         catch (Exception ex)
         {
             Debug.Log($"web sender error:{ex.Message}\r\n{ex.StackTrace}");
             //lock (lockObj)
             {
                 UEventListener.OnAddProducingAction(() =>
                 {
                     UIAlert.Show($"请求失败:{url} 崩溃信息:{ex.Message}");
                     if (actionFailed != null)
                     {
                         actionFailed(ex.Message);
                     }
                 });
             }
         }
     }
                                )).Start();
 }
예제 #14
0
 //private static object lockObj = new object();
 private void DoGet(string url, Action <Newtonsoft.Json.Linq.JObject> actionResult, Action <string> actionFailed)
 {
     UICommonWait.Show();
     new Thread(new ThreadStart(() =>
     {
         try
         {
             var req    = (HttpWebRequest)HttpWebRequest.Create(url);
             req.Method = "GET";
             using (WebResponse wr = req.GetResponse())
             {
                 var result = new StreamReader(wr.GetResponseStream(), Encoding.UTF8).ReadToEnd();
                 if (string.IsNullOrEmpty(result))
                 {
                     UIAlert.Show($"{url}请求返回空。");
                     return;
                 }
                 Debug.Log($"url {url} result {result}");
                 //lock (lockObj)
                 {
                     UEventListener.OnAddProducingAction(() =>
                     {
                         //result = FilterResult(result);
                         Debug.Log($"url {url} FilterResult {result.URLDecode()}");
                         var jres = JsonConvert.DeserializeObject(result) as Newtonsoft.Json.Linq.JObject;
                         actionResult?.Invoke(jres);
                     });
                 }
             }
         }
         catch (WebException ex)
         {
             Debug.Log($"web sender WebException:{ex.Message}\r\n{ex.StackTrace}");
             //lock (lockObj)
             {
                 UEventListener.OnAddProducingAction(() =>
                 {
                     UIAlert.Show($"请求失败:{url} Web崩溃信息:{ex.Message}");
                     if (actionFailed != null)
                     {
                         actionFailed(ex.Message);
                     }
                 });
             }
         }
         catch (Exception ex)
         {
             Debug.Log($"web sender error:{ex.Message}\r\n{ex.StackTrace}");
             //lock (lockObj)
             {
                 UEventListener.OnAddProducingAction(() =>
                 {
                     UIAlert.Show($"请求失败:{url} 崩溃信息:{ex.Message}");
                     if (actionFailed != null)
                     {
                         actionFailed(ex.Message);
                     }
                 });
             }
         }
     }
                                )).Start();
 }