FloatPanel.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.Networking;
  6. using Newtonsoft.Json.Linq;
  7. namespace LoyalSoftSDK
  8. {
  9. public class FloatPanel : BaseUIForm
  10. {
  11. private GameObject btnPanl;
  12. private GameObject mainImg;
  13. private GameObject img0;
  14. private GameObject img1;
  15. private GameObject img2;
  16. private GameObject img3;
  17. private DragUtils dragUtils;
  18. private RectTransform btnPanlRectTrm;
  19. private Vector3 leftPoint;
  20. private Vector3 rightPoint;
  21. private Vector3 centerPoint;
  22. private Vector3 starPoint;
  23. // Use this for initialization
  24. private Animator animator;
  25. private bool isOnLeft;
  26. private bool isOpenPanl;
  27. private AndroidJavaObject jo;
  28. float curTime = 0;
  29. float spaceTime = 15;
  30. bool upLoad = true;
  31. public override void Init()
  32. {
  33. upLoad = true;
  34. curUIType = UIType.Float;
  35. btnPanl = this.transform.Find("ButtonPanel").gameObject;
  36. animator = btnPanl.transform.GetComponent<Animator>();
  37. btnPanlRectTrm = btnPanl.transform.GetComponent<RectTransform>();
  38. mainImg = this.transform.Find("ButtonPanel/MainImage").gameObject;
  39. dragUtils = mainImg.transform.GetComponent<DragUtils>();
  40. dragUtils.OnEndDragHandler = OnMainImgEndDrag;
  41. dragUtils.OnClickHandler = OnMainImgClick;
  42. dragUtils.OnBeginDragHandler = OnMainImgBeginDrag;
  43. img0 = this.transform.Find("ButtonPanel/Image0").gameObject;
  44. img1 = this.transform.Find("ButtonPanel/Image1").gameObject;
  45. img2 = this.transform.Find("ButtonPanel/Image2").gameObject;
  46. img3 = this.transform.Find("ButtonPanel/Image3").gameObject;
  47. EventTriggerListener.Get(img0).onClick = SoftClick;
  48. EventTriggerListener.Get(img1).onClick = PayInfoClick;
  49. EventTriggerListener.Get(img2).onClick = ResetPassClick;
  50. EventTriggerListener.Get(img3).onClick = CloseClick;
  51. //Debug.Log(UIFormManager.GetInstance().canvasTransform.localScale.x);
  52. //Debug.Log(35 / UIFormManager.GetInstance().canvasTransform.localScale.x);
  53. Canvas canvas = UIFormManager.GetInstance().canvasTransform.GetComponent<Canvas>();
  54. RectTransform cavasRectTransform = UIFormManager.GetInstance().canvasTransform.GetComponent<RectTransform>();
  55. Camera camera = UIFormManager.GetInstance().canvasTransform.Find("Camera").GetComponent<Camera>();
  56. Vector2 helpPoint0 = new Vector2(((btnPanlRectTrm.rect.width) * canvas.scaleFactor * 0.5f), (Screen.height * 0.8f));
  57. if (!RectTransformUtility.ScreenPointToWorldPointInRectangle(cavasRectTransform, helpPoint0, camera, out starPoint))
  58. {
  59. Debug.LogError("悬浮框初始定位点获取失败!应该看不到悬浮框了");
  60. }
  61. btnPanlRectTrm.position = new Vector3(starPoint.x, starPoint.y, btnPanlRectTrm.position.z);
  62. isOnLeft = true;
  63. IsOpenPanl = false;
  64. Vector2 helpPoint1 = new Vector2(Screen.width - ((btnPanlRectTrm.rect.width) * canvas.scaleFactor * 0.5f), 0f);
  65. if (!RectTransformUtility.ScreenPointToWorldPointInRectangle(cavasRectTransform, helpPoint1, camera, out rightPoint))
  66. {
  67. Debug.LogError("悬浮框右定位点获取失败!应该看不到悬浮框了");
  68. }
  69. Vector2 helpPoint2 = new Vector2(((btnPanlRectTrm.rect.width) * canvas.scaleFactor * 0.5f), 0f);
  70. if (!RectTransformUtility.ScreenPointToWorldPointInRectangle(cavasRectTransform, helpPoint2, camera, out leftPoint))
  71. {
  72. Debug.LogError("悬浮框左定位点获取失败!应该看不到悬浮框了");
  73. }
  74. Vector2 helpPoint3 = new Vector2(Screen.width * 0.5f, 0f);
  75. if (!RectTransformUtility.ScreenPointToWorldPointInRectangle(cavasRectTransform, helpPoint3, camera, out centerPoint))
  76. {
  77. Debug.LogError("悬浮框屏幕中点获取失败!");
  78. }
  79. if (LoyalGameSDK.platform == Platform.Android)
  80. {
  81. using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
  82. {
  83. jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  84. }
  85. }
  86. }
  87. private bool IsOpenPanl
  88. {
  89. get
  90. {
  91. return isOpenPanl;
  92. }
  93. set
  94. {
  95. isOpenPanl = value;
  96. if (!isOpenPanl)
  97. {
  98. if (isOnLeft)
  99. {
  100. animator.Play("CloseAnimationOnLeft");
  101. }
  102. else
  103. {
  104. animator.Play("CloseAnimationOnRight");
  105. //if(animator.GetCurrentAnimatorStateInfo(1).speed == -1)
  106. //{
  107. // animator.speed = -1;
  108. //}
  109. }
  110. }
  111. else
  112. {
  113. if (isOnLeft)
  114. {
  115. animator.Play("OpenAnimationOnLeft");
  116. }
  117. else
  118. {
  119. animator.Play("OpenAnimationOnRight");
  120. }
  121. }
  122. }
  123. }
  124. private void Update()
  125. {
  126. if(upLoad == false)
  127. {
  128. return;
  129. }
  130. curTime += Time.deltaTime;
  131. if (curTime >= spaceTime)
  132. {
  133. curTime = 0;
  134. string url = "addTs=0&" + "pid=" + UserManager.GetInstance().GetCurUser().Account;
  135. string sign = Config.CalcReportSgin(url);
  136. // 协同获取游戏时长
  137. StartCoroutine(NetRequest(Config.realReport_url, url + "&sign=" + sign, (status, msg) =>
  138. {
  139. if (status == "succees")
  140. {
  141. JObject jobj = JObject.Parse(msg);
  142. RealInfo_ret realInfo_Ret = jobj.ToObject<RealInfo_ret>();
  143. if (realInfo_Ret.ret == 0)
  144. {
  145. if (realInfo_Ret.data.ageType != "00")
  146. {
  147. int time = realInfo_Ret.data.todayGameTime / 60;
  148. if (time >= 90)
  149. {
  150. UI_CueDialog.Instance().Open("根据国家相关规定,未成年玩家每日游戏时间不得超过1.5小时。", "", E_DialogType.OneButton, () =>
  151. {
  152. Application.Quit();
  153. });
  154. }
  155. }
  156. else
  157. {
  158. upLoad = false;
  159. }
  160. }
  161. }
  162. }));
  163. }
  164. }
  165. /// <summary>
  166. /// 网络请求(就一个协成方法不再单独写了)
  167. /// </summary>
  168. /// <returns></returns>
  169. public IEnumerator NetRequest(string url, string packet, Action<string, string> callback)
  170. {
  171. WWW www = null;
  172. DateTime maxTs = DateTime.Now.AddSeconds(25);
  173. byte[] bytedata = System.Text.Encoding.UTF8.GetBytes(packet);
  174. www = new WWW(url, bytedata);
  175. if (null == www || www.error != null)
  176. {
  177. callback("err", "wwwerror@:@" + www.error);
  178. yield break;
  179. }
  180. // 超时检测
  181. while (false == www.isDone)
  182. {
  183. TimeSpan span = DateTime.Now - maxTs;
  184. if (span.TotalMilliseconds < 0)
  185. {
  186. yield return null;
  187. }
  188. else
  189. {
  190. Debug.LogError("超时");
  191. callback("err", "timeout@:@网络超时");
  192. yield break;
  193. }
  194. }
  195. // 网络错误检测
  196. if (www.error != null || www.text == null)
  197. {
  198. // Debug.Log("www error:" + www.error);
  199. callback("err", "wwwerror@:@" + www.error);
  200. yield break;
  201. }
  202. callback("succees", www.text);
  203. }
  204. private void OnMainImgBeginDrag()
  205. {
  206. if (IsOpenPanl)
  207. {
  208. IsOpenPanl = false;
  209. }
  210. }
  211. private void OnMainImgEndDrag()
  212. {
  213. if (btnPanlRectTrm.position.x > centerPoint.x)
  214. {
  215. btnPanlRectTrm.position = new Vector3(rightPoint.x, btnPanlRectTrm.position.y, btnPanlRectTrm.position.z);
  216. isOnLeft = false;
  217. }
  218. else
  219. {
  220. btnPanlRectTrm.position = new Vector3(leftPoint.x, btnPanlRectTrm.position.y, btnPanlRectTrm.position.z);
  221. isOnLeft = true;
  222. }
  223. }
  224. private void OnMainImgClick()
  225. {
  226. IsOpenPanl = !IsOpenPanl;
  227. }
  228. private void ResetPassClick(GameObject go)
  229. {
  230. UIFormManager.GetInstance().ShowUIForm("ResetPassPanel", null, null);
  231. IsOpenPanl = false;
  232. }
  233. private void CloseClick(GameObject go)
  234. {
  235. UIFormManager.GetInstance().ShowUIForm("CloseFloatPanel", null, null);
  236. IsOpenPanl = false;
  237. }
  238. private void PayInfoClick(GameObject go)
  239. {
  240. Dictionary<string, object> sendPostDic = new Dictionary<string, object>();
  241. string senStr;
  242. sendPostDic.Add("uid", UserManager.GetInstance().GetCurUser().UserId);
  243. string sign = RegexInspection.GetMD5Hash(UserManager.GetInstance().GetCurUser().UserId + "ylsj");
  244. sendPostDic.Add("sign", sign);
  245. senStr = MiniJSON.Json.Serialize(sendPostDic);
  246. StartCoroutine(UserManager.GetInstance().NetRequest("http://115.159.121.129/ylsj/Gameserver/Amfphp/service_call/pay/charge_info.php", senStr, GetInfoCallBack));
  247. }
  248. private void SoftClick(GameObject go)
  249. {
  250. if (LoyalGameSDK.platform == Platform.Android)
  251. {
  252. try
  253. {
  254. jo.Call("openUrl", "http://www.game7000.com");
  255. }
  256. catch (Exception e)
  257. {
  258. Debug.LogError(e);
  259. }
  260. }
  261. IsOpenPanl = false;
  262. }
  263. private void GetInfoCallBack(string code, string data)
  264. {
  265. Dictionary<string, string> dataInfo = new Dictionary<string, string>();
  266. dataInfo.Add("code", code);
  267. dataInfo.Add("data", data);
  268. UIFormManager.GetInstance().ShowUIForm("PayInfoPanel", null, dataInfo);
  269. IsOpenPanl = false;
  270. }
  271. }
  272. }