LoginPanel.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873
  1. using LitJson;
  2. using Newtonsoft.Json;
  3. using Newtonsoft.Json.Linq;
  4. using SC.XR.Unity;
  5. using Blue;
  6. using System;
  7. using System.Collections;
  8. using System.Collections.Generic;
  9. using System.IO;
  10. using System.Text.RegularExpressions;
  11. using UnityEngine;
  12. using UnityEngine.UI;
  13. using Vuforia;
  14. using XRTool.Util;
  15. public class LoginPanel : BaseUI
  16. {
  17. private SCInputField m_Account;
  18. private Button m_EmptyAccountBtn;
  19. private Text m_AccountErrorStr;
  20. private Transform m_AccountError;
  21. private string m_AccountStr;
  22. private SCInputField m_Password;
  23. private Button m_EmptyPwdBtn;
  24. //private Button m_LockPwdBtn;
  25. private bool m_Islock;
  26. private Text m_PwdErrorStr;
  27. private Transform m_PwdError;
  28. private string m_PasswordStr;
  29. private Button m_Logn;
  30. private Toggle m_RemenberPwd;
  31. private bool m_IsRemberPwd;
  32. private Button m_SNBtn;
  33. private Text m_SN;
  34. private Text m_Versaion;
  35. Toggle Choose21;
  36. Toggle Choose20;
  37. protected override void OnAwake()
  38. {
  39. base.OnAwake();
  40. Choose21 = CacheTransform.Find("Choose2.1").GetComponent<Toggle>();
  41. Choose21.onValueChanged.AddListener((bool b) => {
  42. UserInfo.Instance.is20 = !b;
  43. });
  44. Choose20 = CacheTransform.Find("Choose2.0").GetComponent<Toggle>();
  45. Choose20.onValueChanged.AddListener((bool b) => {
  46. UserInfo.Instance.is20 = b;
  47. });
  48. UserInfo.Instance.is20 = Choose20.isOn;
  49. m_Account = CacheTransform.Find("Account/SCInputField").GetComponent<SCInputField>();
  50. m_EmptyAccountBtn = CacheTransform.Find("Account/EmptyAccount").GetComponent<Button>();
  51. m_AccountErrorStr = CacheTransform.Find("Error/AccountError/Text").GetComponent<Text>();
  52. m_AccountError = CacheTransform.Find("Error/AccountError");
  53. m_Password = CacheTransform.Find("Password/SCInputField").GetComponent<SCInputField>();
  54. m_EmptyPwdBtn = CacheTransform.Find("Password/EmptyPassword").GetComponent<Button>();
  55. //m_LockPwdBtn = CacheTransform.Find("Password/Icon").GetComponent<Button>();
  56. //m_Islock = false;
  57. m_PwdErrorStr = CacheTransform.Find("Error/PasswordError/Text").GetComponent<Text>();
  58. m_PwdError = CacheTransform.Find("Error/PasswordError");
  59. m_Logn = CacheTransform.Find("LoginBtn").GetComponent<Button>();
  60. m_RemenberPwd = CacheTransform.Find("RememberPwd").GetComponent<Toggle>();
  61. m_RemenberPwd.isOn = false;
  62. m_IsRemberPwd = false;
  63. //m_SNBtn = CacheTransform.Find("SNLoginBtn").GetComponent<Button>();
  64. m_SN = CacheTransform.Find("SNAndVersion/SN/Text").GetComponent<Text>();
  65. m_Versaion = CacheTransform.Find("SNAndVersion/Versaion/Text").GetComponent<Text>();
  66. AddUIListenEvent();
  67. }
  68. Timer times;
  69. /// <summary>
  70. /// 添加UI的监听事件
  71. /// </summary>
  72. private void AddUIListenEvent()
  73. {
  74. m_Account.onEndEdit.AddListener(OnAccountEndEdit);
  75. m_EmptyAccountBtn.onClick.AddListener(OnclickEmptyAccount);
  76. m_Password.onEndEdit.AddListener(OnPasswordEndEdit);
  77. m_EmptyPwdBtn.onClick.AddListener(OnClickEmptyPwd);
  78. //m_LockPwdBtn.onClick.AddListener(OnclickLockPwd);
  79. //m_Password.contentType = SCInputField.ContentType.Standard;
  80. Debug.Log("1111111111111111111111111111111111111111111111111111");
  81. m_Logn.onClick.AddListener(OnClickLogin);
  82. m_RemenberPwd.onValueChanged.AddListener(OnRemPwdValueChange);
  83. m_Versaion.text = Application.version;
  84. //m_SNBtn.onClick.AddListener(OnClickSnBtn);
  85. times = TimerMgr.Instance.CreateTimer(()=> {
  86. if(HttpAction.Instance.baseurl!="")
  87. {
  88. TimerMgr.Instance.DestroyTimer(times);
  89. switch (Application.version)
  90. {
  91. case "2.3.0.1":
  92. m_AccountStr = "1004344@qq.com";
  93. m_PasswordStr = "123456Aa";
  94. OnClickLogin();
  95. break;
  96. case "2.3.0.2":
  97. m_AccountStr = "32927527@qq.com";
  98. m_PasswordStr = "123456Aa";
  99. OnClickLogin();
  100. break;
  101. case "2.3.0.3":
  102. m_AccountStr = "wentan.cal@nfznxr.com";
  103. m_PasswordStr = "123456Aa";
  104. OnClickLogin();
  105. break;
  106. case "2.3.0.4":
  107. m_AccountStr = "88888888@gq.com";
  108. m_PasswordStr = "123456Aa";
  109. OnClickLogin();
  110. break;
  111. default:
  112. // m_AccountStr = "advtest1@1.com";
  113. // m_PasswordStr = "123456Aa";
  114. // OnClickLogin();
  115. break;
  116. }
  117. }
  118. },1,-1);
  119. string path = Application.persistentDataPath + "/Login/";
  120. LoginAcct la = new LoginAcct();
  121. la.acc = "";
  122. la.isre = false;
  123. la.pw = "";
  124. if (File.Exists(path + "Login.txt"))
  125. {
  126. string msg = File.ReadAllText(path + "Login.txt");
  127. la = JsonConvert.DeserializeObject<LoginAcct>(msg);
  128. }
  129. else
  130. {
  131. Directory.CreateDirectory(Application.persistentDataPath + "/Login");
  132. }
  133. m_Account.text = la.acc;
  134. m_Password.text = la.pw;
  135. m_Logn.interactable = la.isre;
  136. m_RemenberPwd.isOn = la.isre;
  137. m_IsRemberPwd = la.isre;
  138. m_AccountStr = la.acc;
  139. m_PasswordStr = la.pw;
  140. }
  141. #region UI监听事件
  142. /// <summary>
  143. /// 账号输入完成
  144. /// </summary>
  145. /// <param name="str"></param>
  146. private void OnAccountEndEdit(string str)
  147. {
  148. m_AccountStr = "";
  149. if (string.IsNullOrWhiteSpace(str))
  150. {
  151. m_AccountError.gameObject.SetActive(true);
  152. m_AccountErrorStr.text = "请输入邮箱账号";
  153. }
  154. else
  155. {
  156. //邮箱名以数字或字母开头;邮箱名可由字母、数字、点号、减号、下划线组成;邮箱名(@前的字符)长度为3~18个字符;邮箱名不能以点号、减号或下划线结尾;不能出现连续两个或两个以上的点号、减号。
  157. //string pattern = @"^[a-zA-Z0-9]((?<!(\.\.|--))[a-zA-Z0-9\._-]){1,16}[a-zA-Z0-9]@([0-9a-zA-Z][0-9a-zA-Z-]{0,62}\.)+([0-9a-zA-Z][0-9a-zA-Z-]{0,62})\.?|((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$";
  158. string pattern = @"^([\w-\.]+)@([\w-\.]+)(\.[a-zA-Z0-9]+)$";
  159. if (Regex.IsMatch(str, pattern))
  160. {
  161. m_AccountStr = str;
  162. m_AccountErrorStr.text = "";
  163. m_AccountError.gameObject.SetActive(false);
  164. }
  165. else
  166. {
  167. m_AccountError.gameObject.SetActive(true);
  168. m_AccountErrorStr.text = "账号不合法";
  169. }
  170. }
  171. if (!string.IsNullOrWhiteSpace(m_AccountStr) && !string.IsNullOrWhiteSpace(m_PasswordStr))
  172. {
  173. m_Logn.interactable = true;
  174. }
  175. }
  176. /// <summary>
  177. /// 清理账号输入
  178. /// </summary>
  179. private void OnclickEmptyAccount()
  180. {
  181. m_AccountErrorStr.text = "账号不能为空";
  182. m_AccountError.gameObject.SetActive(true);
  183. m_AccountStr = "";
  184. m_Account.text = "";
  185. m_Logn.interactable = false;
  186. }
  187. /// <summary>
  188. /// 密码输入完成
  189. /// </summary>
  190. /// <param name="str"></param>
  191. private void OnPasswordEndEdit(string str)
  192. {
  193. m_PasswordStr = "";
  194. if (string.IsNullOrWhiteSpace(str))
  195. {
  196. m_PwdError.gameObject.SetActive(true);
  197. m_PwdErrorStr.text = "请输入密码";
  198. }
  199. else
  200. {
  201. Regex RegCHZN = new Regex("[\u4e00-\u9fa5]");
  202. if (RegCHZN.IsMatch(str))
  203. {
  204. m_PwdError.gameObject.SetActive(true);
  205. m_PwdErrorStr.text = "密码不合法";
  206. return;
  207. }
  208. //int n = 0;
  209. ////必须包含小写字母
  210. //string pattern1 = @"(?=.*[a-z])";
  211. ////必须包含大写字母
  212. //string pattern2 = @"(?=.*[A-Z])";
  213. ////必须包含数字
  214. //string pattern3 = @"(?=.*\d)";
  215. ////string pattern3 = @"(?=.*[0 - 9])";
  216. ////必须包含特殊符号
  217. //string pattern4 = @"(?=.*[ !""#$%&'()*+,-./:;<=>?@\[\]\^_`{|}~])";
  218. //string pattern4 = @"(?=([\x21-\x7e]+)[^a-zA-Z0-9])";
  219. //至少8个字符,最多32个字符
  220. string pattern5 = @"^.{8,32}$";
  221. if (!Regex.IsMatch(str, pattern5))
  222. {
  223. m_PwdError.gameObject.SetActive(true);
  224. m_PwdErrorStr.text = "密码小于8位数或大于32位";
  225. return;
  226. }
  227. m_PasswordStr = str;
  228. m_PwdErrorStr.text = "";
  229. m_PwdError.gameObject.SetActive(false);
  230. //if (Regex.IsMatch(str, pattern1))
  231. //{
  232. // n++;
  233. //}
  234. //if (Regex.IsMatch(str, pattern2))
  235. //{
  236. // n++;
  237. //}
  238. //if (Regex.IsMatch(str, pattern3))
  239. //{
  240. // n++;
  241. //}
  242. //if (Regex.IsMatch(str, pattern4))
  243. //{
  244. // n++;
  245. //}
  246. //if (n >= 3)
  247. //{
  248. // m_PasswordStr = str;
  249. // m_PwdErrorStr.text = "";
  250. // m_PwdError.gameObject.SetActive(false);
  251. //}
  252. //else
  253. //{
  254. // m_PwdError.gameObject.SetActive(true);
  255. // m_PasswordStr = "";
  256. // m_PwdErrorStr.text = "密码不正确,请重新输入";
  257. //}
  258. }
  259. if (!string.IsNullOrWhiteSpace(m_AccountStr) && !string.IsNullOrWhiteSpace(m_PasswordStr))
  260. {
  261. m_Logn.interactable = true;
  262. }
  263. }
  264. /// <summary>
  265. /// 清理密码输入
  266. /// </summary>
  267. private void OnClickEmptyPwd()
  268. {
  269. m_PwdErrorStr.text = "密码不能为空";
  270. m_PwdError.gameObject.SetActive(true);
  271. m_PasswordStr = "";
  272. m_Password.text = "";
  273. m_Logn.interactable = false;
  274. }
  275. /// <summary>
  276. /// 是否可以显示密码
  277. /// </summary>
  278. private void OnclickLockPwd()
  279. {
  280. if (m_Islock)
  281. {
  282. m_Password.contentType = SCInputField.ContentType.Password;
  283. }
  284. else
  285. {
  286. m_Password.contentType = SCInputField.ContentType.Standard;
  287. }
  288. m_Islock = !m_Islock;
  289. }
  290. public class LoginAcct
  291. {
  292. public string acc;
  293. public string pw;
  294. public bool isre;
  295. }
  296. /// <summary>
  297. /// 登录
  298. /// </summary>
  299. private void OnClickLogin()
  300. {
  301. Debug.Log("22222222222222222222222222222222222");
  302. if (string.IsNullOrWhiteSpace(m_AccountStr))
  303. {
  304. //m_AccountError.gameObject.SetActive(true);
  305. m_AccountErrorStr.text = "账号不能为空";
  306. return;
  307. }
  308. if (string.IsNullOrWhiteSpace(m_PasswordStr))
  309. {
  310. //m_PwdError.gameObject.SetActive(true);
  311. m_PwdErrorStr.text = "密码不能为空";
  312. return;
  313. }
  314. if (m_RemenberPwd.isOn)
  315. {
  316. LoginAcct la = new LoginAcct();
  317. la.acc = m_AccountStr;
  318. la.pw = m_PasswordStr;
  319. la.isre = true;
  320. string msg = JsonConvert.SerializeObject(la);
  321. string path = Application.persistentDataPath + "/Login/";
  322. using (System.IO.StreamWriter writer = System.IO.File.CreateText(path + "Login.txt"))
  323. {
  324. writer.Write(msg);
  325. //writer.
  326. }
  327. }
  328. else
  329. {
  330. LoginAcct la = new LoginAcct();
  331. la.acc = "";
  332. la.pw = "";
  333. la.isre = false;
  334. string msg = JsonConvert.SerializeObject(la);
  335. string path = Application.persistentDataPath + "/Login/";
  336. using (System.IO.StreamWriter writer = System.IO.File.CreateText(path + "Login.txt"))
  337. {
  338. writer.Write(msg);
  339. //writer.
  340. }
  341. }
  342. //向服务器发送账号和密码进行验证
  343. // Debug.Log("向服务器发送账号和密码进行登录");
  344. SendLogin sendLogin = new SendLogin();
  345. sendLogin.email = m_AccountStr;
  346. sendLogin.password = m_PasswordStr;
  347. sendLogin.remember = m_IsRemberPwd;
  348. if(DeviceType.type =="Phone")
  349. sendLogin.device = "android";
  350. else
  351. sendLogin.device = "glasses";
  352. UserInfo.Instance.Account = m_AccountStr;
  353. UserInfo.Instance.Password = m_PasswordStr;
  354. string jsonLogin = JsonMapper.ToJson(sendLogin);
  355. // Debug.Log(jsonLogin);
  356. UIManager.Instance.ShowUI(UINameConfig.LoadingPanel, typeof(LoadingPanel), (int)ELoadState.login);
  357. HttpTool.Instance.PostLogin("/user/login", jsonLogin, LoginCallBack);
  358. //if (UserInfo.Instance.is20)
  359. //{
  360. // HttpTool.Instance.PostLogin("/user/login", jsonLogin, LoginCallBack2);
  361. //}
  362. //else
  363. //{
  364. // HttpTool.Instance.PostLogin("/user/login", jsonLogin, LoginCallBack);
  365. //}
  366. }
  367. /// <summary>
  368. /// 登录返回数据
  369. /// </summary>
  370. /// <param name="message"></param>
  371. public void LoginCallBack(string mes)
  372. {
  373. Debug.Log("LoginCallBack++++" + mes);
  374. JObject obj = JObject.Parse(mes);
  375. if (obj["code"].ToString() != "200")
  376. {
  377. m_Logn.interactable = true;
  378. m_AccountError.gameObject.SetActive(true);
  379. m_AccountErrorStr.text = obj["message"].ToString();
  380. UIManager.Instance.HideUI(UINameConfig.LoadingPanel);
  381. return;
  382. }
  383. else
  384. {
  385. UIManager.Instance.ShowUI(UINameConfig.LoadingPanel, typeof(LoadingPanel), (int)ELoadState.getUserInfo);
  386. UserInfo.Instance.Token = obj["data"]["token"].ToString();
  387. COSDownLoad.Instance.Credential();
  388. HttpTool.Instance.Get("/user/getUserInfo", GetUserInfoCallBack);
  389. initMQtt();
  390. // StartCoroutine(LoginCallBackYS(3f));
  391. }
  392. }
  393. private void initMQtt()
  394. {
  395. HttpTool.Instance.Get("/user/emqx/authentication", (msg) =>
  396. {
  397. Debug.Log("DGJ ===> MQTT Callback " + msg);
  398. JsonData data = JsonMapper.ToObject(msg);
  399. if (data["code"].ToString() == "200")
  400. {
  401. MQTTClient.Instance.setData(data["data"]);
  402. MQTTClient.Instance.Connect();
  403. }
  404. else
  405. {
  406. Debug.LogError("MQTT username 请求失败 " + data["code"].ToString());
  407. }
  408. });
  409. }
  410. public void GetUserInfoCallBack(string msg)
  411. {
  412. JObject jobect = JObject.Parse(msg);
  413. Debug.Log("DGJ ===> "+jobect["code"].ToString());
  414. if(int.Parse( jobect["code"].ToString()) == 200)
  415. {
  416. Debug.Log("DGJ ===> " + jobect["data"]["type"].ToString());
  417. if (int.Parse(jobect["data"]["type"].ToString()) == 0)
  418. {
  419. Debug.Log(jobect["data"]["type"].ToString());
  420. UserInfo.Instance.is20 = true;
  421. StartCoroutine( LoginCallBack2YS(2));
  422. }
  423. else if (int.Parse(jobect["data"]["type"].ToString()) == 1)
  424. {
  425. Debug.Log(jobect["data"]["type"].ToString());
  426. UserInfo.Instance.is20 = false;
  427. StartCoroutine( LoginCallBackYS(2));
  428. }
  429. else
  430. return;
  431. }
  432. else
  433. {
  434. UIManager.Instance.ShowUI(UINameConfig.LoadingPanel, typeof(LoadingPanel), "/user/getUserInfo 通讯出错 请尝试重启应用");
  435. }
  436. }
  437. private IEnumerator LoginCallBack2YS( float times)
  438. {
  439. // yield return new WaitForSeconds(times);
  440. yield return new WaitForFixedUpdate();
  441. UserManager.Instance.loginBack(true);
  442. if (DeviceType.type != "Phone")
  443. GameManager.Instance.arcamre.SetActive(true);
  444. else
  445. {
  446. OpenXRCamera.Instance.head.gameObject.AddComponent<VuforiaBehaviour>();
  447. OpenXRCamera.Instance.head.gameObject.AddComponent<DefaultInitializationErrorHandler>();
  448. }
  449. GameManager.Instance.immser.SetActive(false);
  450. }
  451. private IEnumerator LoginCallBackYS(float times)
  452. {
  453. // yield return new WaitForSeconds(times);
  454. yield return new WaitForFixedUpdate();
  455. UIManager.Instance.ShowUI(UINameConfig.LoadingPanel, typeof(LoadingPanel), (int)ELoadState.getMaterialValue);
  456. StartCoroutine(GetAllMaterials(UserInfo.Instance.Token));
  457. if (DeviceType.type =="Phone")
  458. GameManager.Instance.arcamre.SetActive(false);
  459. GameManager.Instance.immser.SetActive(true);
  460. }
  461. /// <summary>
  462. /// 获取账号下的场景返回数据
  463. /// </summary>
  464. /// <param name="message"></param>
  465. private IEnumerator GetAllSceneDataCallBack(string message)
  466. {
  467. Debug.Log("账号下的场景返回数据: " + message);
  468. if (!string.IsNullOrWhiteSpace(message))
  469. {
  470. JObject jobject = JObject.Parse(message);
  471. if (jobject["code"].ToString() == "200")
  472. {
  473. message = jobject["data"]["list"].ToString();
  474. if (!string.IsNullOrWhiteSpace(message))
  475. {
  476. List<SceneValue> listScenesPage = JsonConvert.DeserializeObject<List<SceneValue>>(message);
  477. UIManager.Instance.ShowUI(UINameConfig.LoadingPanel, typeof(LoadingPanel), (int)ELoadState.sninfo);
  478. yield return StartCoroutine(WaitSnInfo(listScenesPage));
  479. }
  480. }
  481. else
  482. {
  483. UIManager.Instance.HideUI(UINameConfig.LoadingPanel);
  484. m_Logn.interactable = true;
  485. m_AccountError.gameObject.SetActive(true);
  486. m_AccountErrorStr.text = "账号下的场景数据获取失败";
  487. }
  488. }
  489. Debug.LogError("获取场景列表失败");
  490. }
  491. /// <summary>
  492. /// 获取账号下的场景返回数据
  493. /// </summary>
  494. /// <param name="message"></param>
  495. private void GetAllSceneDataCallBack2(string message)
  496. {
  497. Debug.Log("账号下的场景返回数据: " + message);
  498. if (!string.IsNullOrWhiteSpace(message))
  499. {
  500. JObject jobject = JObject.Parse(message);
  501. if (jobject["code"].ToString() == "200")
  502. {
  503. message = jobject["data"]["list"].ToString();
  504. if (!string.IsNullOrWhiteSpace(message))
  505. {
  506. List<SceneValue> listScenesPage = JsonConvert.DeserializeObject<List<SceneValue>>(message);
  507. UIManager.Instance.ShowUI(UINameConfig.LoadingPanel, typeof(LoadingPanel), (int)ELoadState.sninfo);
  508. StartCoroutine(WaitSnInfo(listScenesPage));
  509. }
  510. }
  511. else
  512. {
  513. UIManager.Instance.HideUI(UINameConfig.LoadingPanel);
  514. m_Logn.interactable = true;
  515. m_AccountError.gameObject.SetActive(true);
  516. m_AccountErrorStr.text = "账号下的场景数据获取失败";
  517. }
  518. }
  519. Debug.LogError("获取场景列表失败");
  520. }
  521. /// <summary>
  522. /// 绑定设备
  523. /// </summary>
  524. /// <param name="scenes"></param>
  525. /// <returns></returns>
  526. IEnumerator WaitSnInfo(List<SceneValue> scenes)
  527. {
  528. GameManager.Instance.sucessvalues = new List<SceneValue>();
  529. List<SceneValue> failevalues = new List<SceneValue>();
  530. bool finish = false;
  531. for (int i = 0; i < scenes.Count; i++)
  532. {
  533. SendSnInfo sendNet = new SendSnInfo();
  534. sendNet.sn = SendSN.GetSN();
  535. //sendNet.sn = "Nreal-SN";
  536. //API_GSXR_Slam.SlamManager.plugin.SN;
  537. sendNet.projectId = scenes[i].id;
  538. string jsonData = JsonMapper.ToJson(sendNet);
  539. yield return StartCoroutine(HttpTool.Instance.SendHttp("/client/snInfo", jsonData, (message) =>
  540. {
  541. JObject jobject = JObject.Parse(message);
  542. if (jobject["code"].ToString() == "200")
  543. {
  544. GameManager.Instance.sucessvalues.Add(scenes[i]);
  545. }
  546. else
  547. {
  548. failevalues.Add(scenes[i]);
  549. }
  550. finish = true;
  551. }));
  552. }
  553. UIManager.Instance.ShowUI(UINameConfig.LoadingPanel, typeof(LoadingPanel), (int)ELoadState.initscene);
  554. string str = string.Format("{0}个场景绑定成功,{1}个场景绑定失败", GameManager.Instance.sucessvalues.Count, failevalues.Count);
  555. // Debug.Log(str);
  556. ((LoadingPanel)UIManager.Instance.GetUI(UINameConfig.LoadingPanel)).TextStr = str;
  557. yield return new WaitForSeconds(1f);
  558. yield return finish;
  559. UIManager.Instance.ShowUI(UINameConfig.SceneChoose, typeof(SceneChoose), GameManager.Instance.sucessvalues);
  560. UIManager.Instance.HideUI(UINameConfig.LoadingPanel);
  561. Hide();
  562. }
  563. List<DownLoadMaterial> listMaterail = new List<DownLoadMaterial>();
  564. /// <summary>
  565. /// 获取素材库列表
  566. /// </summary>
  567. /// <param name="mes"></param>
  568. /// <returns></returns>
  569. IEnumerator GetAllMaterials(string mes)
  570. {
  571. string message = "";
  572. yield return StartCoroutine(HttpTool.Instance.SendHttp("/material/init", mes, (m) =>
  573. {
  574. message = m;
  575. },false));
  576. yield return null;
  577. if (!string.IsNullOrWhiteSpace(message))
  578. {
  579. JObject jObject = JObject.Parse(message);
  580. if (jObject["code"].ToString() == "200")
  581. {
  582. //处理素材库信息
  583. string data = jObject["data"].ToString();
  584. JObject dataObject = JObject.Parse(data);
  585. string single = dataObject["single"].ToString();
  586. string library = dataObject["library"].ToString();
  587. string combination = dataObject["combination"].ToString();
  588. List<MaterialObl> singleMaterials = new List<MaterialObl>();
  589. List<MaterialObl> libraryMaterials = new List<MaterialObl>();
  590. List<MaterialObl> combinationMaterials = new List<MaterialObl>();
  591. if (!string.IsNullOrWhiteSpace(single))
  592. {
  593. singleMaterials = JsonConvert.DeserializeObject<List<MaterialObl>>(single);
  594. DataManager.Instance.AllMaterials.Add("single", singleMaterials);
  595. yield return null;
  596. }
  597. if (!string.IsNullOrWhiteSpace(library))
  598. {
  599. libraryMaterials = JsonConvert.DeserializeObject<List<MaterialObl>>(library);
  600. DataManager.Instance.AllMaterials.Add("library", libraryMaterials);
  601. yield return null;
  602. }
  603. if (!string.IsNullOrWhiteSpace(combination))
  604. {
  605. combinationMaterials = JsonConvert.DeserializeObject<List<MaterialObl>>(combination);
  606. DataManager.Instance.AllMaterials.Add("combination", combinationMaterials);
  607. yield return null;
  608. }
  609. //CalMat(singleMaterials);
  610. //CalMat(libraryMaterials);
  611. //CalMat(combinationMaterials);
  612. CalMatCOS(singleMaterials);
  613. CalMatCOS(libraryMaterials);
  614. CalMatCOS(combinationMaterials);
  615. DownloadResManager.Instance.DownLoad(listMaterail);
  616. }
  617. UIManager.Instance.ShowUI(UINameConfig.LoadingPanel, typeof(LoadingPanel), (int)ELoadState.getAllScene);
  618. // HttpTool.Instance.Get("/project/index", GetAllSceneDataCallBack2);
  619. // StartCoroutine(HttpTool.Instance.SendHttp("/project/index", "", GetAllSceneDataCallBack2, false));
  620. string indexmsg = "";
  621. //获取账号下的场景数据
  622. yield return StartCoroutine( HttpTool.Instance.SendHttp("/project/index","", (string msg)=> {
  623. indexmsg = msg;
  624. },false));
  625. if(indexmsg =="")
  626. {
  627. UIManager.Instance.ShowUI(UINameConfig.LoadingPanel, typeof(LoadingPanel), "/project/index 通讯出错 请尝试重启应用");
  628. }
  629. else
  630. {
  631. yield return null;
  632. yield return StartCoroutine(GetAllSceneDataCallBack(indexmsg));
  633. }
  634. }
  635. else
  636. {
  637. UIManager.Instance.ShowUI(UINameConfig.LoadingPanel, typeof(LoadingPanel), "/material/init 通讯出错 请尝试重启应用");
  638. }
  639. }
  640. private void CalMat(List<MaterialObl> mats)
  641. {
  642. //for (int i = 0; i < mats.Count; i++)
  643. //{
  644. // var mat = mats[i];
  645. // if (!string.IsNullOrWhiteSpace(mat.icon))
  646. // {
  647. // DownloadData data1 = new DownloadData();
  648. // string filename = Path.GetFileName(mat.icon);
  649. // data1.name = filename;
  650. // data1.type = 1;
  651. // data1.downloadPath = mat.icon;
  652. // data1.updateTime = mat.updateTime;
  653. // data1.localSavePath = DownloadManager.Instance.LocaDataPath + "/Icon/" + filename;
  654. // DownloadManager.Instance.AddDownloadData(data1);
  655. // }
  656. // if (mat.materialList != null)
  657. // {
  658. // for (int m = 0; m < mat.materialList.Count; m++)
  659. // {
  660. // var matObj = mat.materialList[m];
  661. // if (int.Parse(matObj.type) != 4)
  662. // {
  663. // DownloadData data = new DownloadData(matObj);
  664. // DownloadManager.Instance.AddDownloadData(data);
  665. // }
  666. // }
  667. // }
  668. //}
  669. }
  670. private void CalMatCOS(List<MaterialObl> mats)
  671. {
  672. for (int i = 0; i < mats.Count; i++)
  673. {
  674. var mat = mats[i];
  675. if (!string.IsNullOrWhiteSpace(mat.icon))
  676. {
  677. DownLoadMaterial data1 = new DownLoadMaterial();
  678. string filename = Path.GetFileName(mat.icon);
  679. data1.downLoadPath = mat.icon;
  680. data1.updataTime = mat.updateTime;
  681. data1.localLoadPath = Application.persistentDataPath + "/Material/" + filename;
  682. listMaterail.Add(data1);
  683. }
  684. if (mat.materialList != null)
  685. {
  686. for (int m = 0; m < mat.materialList.Count; m++)
  687. {
  688. var matObj = mat.materialList[m];
  689. if (matObj.type != 4 && matObj.type != 0)
  690. {
  691. DownLoadMaterial data1 = new DownLoadMaterial();
  692. string filename = Path.GetFileName(matObj.DownloadPath);
  693. data1.downLoadPath = matObj.DownloadPath;
  694. data1.updataTime = mat.updateTime;
  695. data1.localLoadPath = Application.persistentDataPath + "/Material/" + filename;
  696. listMaterail.Add(data1);
  697. }
  698. }
  699. }
  700. }
  701. }
  702. /// <summary>
  703. /// 是否记住密码
  704. /// </summary>
  705. /// <param name="b"></param>
  706. private void OnRemPwdValueChange(bool b)
  707. {
  708. m_IsRemberPwd = b;
  709. }
  710. /// <summary>
  711. /// 使用SN进行登录
  712. /// </summary>
  713. private void OnClickSnBtn()
  714. {
  715. string sn = SendSN.GetSN();
  716. //string sn = API_GSXR_Slam.SlamManager.plugin.SN;
  717. }
  718. #endregion
  719. protected override void OnInit()
  720. {
  721. base.OnInit();
  722. }
  723. protected override void OnShow(object param)
  724. {
  725. base.OnShow(param);
  726. gameObject.transform.localScale = new Vector3(1, 1, 1);
  727. }
  728. private void Update()
  729. {
  730. if (API_GSXR_Slam.GSXR_Is_SlamInitialized())
  731. {
  732. m_SN.text = SendSN.GetSN();
  733. //m_SN.text = API_GSXR_Slam.SlamManager.plugin.SN;
  734. }
  735. }
  736. protected override void OnHide()
  737. {
  738. base.OnHide();
  739. }
  740. protected override void OnDestroy()
  741. {
  742. base.OnDestroy();
  743. }
  744. }
  745. public class SendInit
  746. {
  747. public string sn { get; set; }
  748. public int projectId { get; set; }
  749. }
  750. public class SendLogin
  751. {
  752. public string email { get; set; }
  753. public string password { get; set; }
  754. public bool remember { get; set; }
  755. public string device { get; set; }
  756. }
  757. public class SendMaterials
  758. {
  759. public string url { get; set; }
  760. }
  761. public class SendSceneDetail
  762. {
  763. public int id { get; set; }
  764. }