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; }
/// <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; } }
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(); }
/// <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; }
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)); } }
/// <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); } }
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)); } }
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)); } }
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); } }
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)); } }
//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(); }
//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(); }