UserComp.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System;
  2. using System.Collections;
  3. using UnityEngine;
  4. using UnityEngine.Networking;
  5. using Newtonsoft.Json;
  6. /* Socket组件-用户 */
  7. public class UserComp : JCUnityLib.Singleton<UserComp>
  8. {
  9. public void getUserInfo(System.Action<UserInfo> cb) {
  10. UserPlayer.ins.call("userComp.getUserInfo", null, cb);
  11. }
  12. public void saveUserInfo(UserInfo userInfo) {
  13. UserPlayer.ins.call("userComp.saveUserInfo", userInfo);
  14. }
  15. private string _lastSaveMac;
  16. public void saveMac()
  17. {
  18. string mac = LoginMgr.myUserInfo.mac;
  19. if (string.IsNullOrEmpty(mac)) return;
  20. _lastSaveMac = mac;
  21. int type = AimHandler.ins.DeviceType;
  22. if (type > 0) {
  23. UserPlayer.ins.call("userComp.saveMac2", mac, type);
  24. } else {
  25. Action<Newtonsoft.Json.Linq.JToken> cb = (Newtonsoft.Json.Linq.JToken o) => {
  26. string gyrStr = o.Value<string>("gyr");
  27. string magStr = o.Value<string>("mag");
  28. AimHandler.ins.InitGyr(gyrStr);
  29. AimHandler.ins.InitMag(magStr);
  30. };
  31. UserPlayer.ins.call("userComp.saveMac", new object[]{mac}, cb);
  32. }
  33. if (CommonConfig.StandaloneMode)
  34. {
  35. WWWForm form = new WWWForm();
  36. form.AddField("mac", mac);
  37. JCUnityLib.CoroutineStarter.Start(Post(CommonConfig.SmartBowSdkURL + "/SmartBowSDK/getCalibrateRecord", form, (res) =>
  38. {
  39. if (res.code == 0) onResumeCalibrateRecord(res.data as string);
  40. }));
  41. }
  42. }
  43. public void saveCalibrateRecord(string record) {
  44. string mac = BluetoothAim.ins.curMac;
  45. if (string.IsNullOrEmpty(mac)) {
  46. SideTipView.ShowTip("没有Mac无法上传九轴数据", UnityEngine.Color.yellow);
  47. throw new Exception("没有Mac无法上传九轴数据");
  48. }
  49. int type = AimHandler.ins.DeviceType;
  50. if (type > 0) {
  51. Axis9CalibrateRecord.CacheCalibrateRecord(mac, record);
  52. Axis9CalibrateRecord.SetCalibrateOkRecord(mac, true);
  53. UserPlayer.ins.call("userComp.saveCalibrateRecord2", type, record, mac);
  54. if (CommonConfig.StandaloneMode)
  55. {
  56. WWWForm form = new WWWForm();
  57. form.AddField("mac", mac);
  58. form.AddField("record", record);
  59. JCUnityLib.CoroutineStarter.Start(Post(CommonConfig.SmartBowSdkURL + "/SmartBowSDK/saveCalibrateRecord", form, null));
  60. }
  61. }
  62. }
  63. public void deleteAccount(Action<bool> callback)
  64. {
  65. if (UserPlayer.ins.isValid && UserPlayer.ins.loginAuthed)
  66. {
  67. UserPlayer.ins.call("userComp.deleteAccount", null, callback);
  68. }
  69. else
  70. {
  71. callback?.Invoke(false);
  72. }
  73. }
  74. #region 被服务端调用的函数
  75. public void onResumeCalibrateRecord(string record) {
  76. Axis9CalibrateRecord.CacheCalibrateRecord(_lastSaveMac, record);
  77. AimHandler.ins.ResumeCalibrateRecord(record);
  78. }
  79. #endregion
  80. public static IEnumerator Post(string url, WWWForm form, Action<RequestResult> callback)
  81. {
  82. using (UnityWebRequest request = UnityWebRequest.Post(url, form))
  83. {
  84. yield return request.SendWebRequest();
  85. if (request.result == UnityWebRequest.Result.Success)
  86. callback?.Invoke(JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text));
  87. else
  88. callback?.Invoke(new RequestResult());
  89. }
  90. }
  91. }