UserComp.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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. //onResumeCalibrateRecord(PlayerPrefs.GetString(GetCalibrateDataStorageLocalKey(mac), ""));
  42. string key = GetCalibrateDataStorageLocalKey(mac);
  43. if (PlayerPrefs.HasKey(key))
  44. {
  45. // 存储值存在,获取并处理
  46. string calibrateData = PlayerPrefs.GetString(key, "");
  47. if(calibrateData.Length >0)
  48. onResumeCalibrateRecord(calibrateData);
  49. }
  50. }
  51. }
  52. public void saveCalibrateRecord(string record) {
  53. string mac = BluetoothAim.ins.curMac;
  54. if (string.IsNullOrEmpty(mac)) {
  55. SideTipView.ShowTip("没有Mac无法上传九轴数据", UnityEngine.Color.yellow);
  56. throw new Exception("没有Mac无法上传九轴数据");
  57. }
  58. int type = AimHandler.ins.DeviceType;
  59. if (type > 0) {
  60. Axis9CalibrateRecord.CacheCalibrateRecord(mac, record);
  61. Axis9CalibrateRecord.SetCalibrateOkRecord(mac, true);
  62. UserPlayer.ins.call("userComp.saveCalibrateRecord2", type, record, mac);
  63. if (CommonConfig.StandaloneMode)
  64. {
  65. //WWWForm form = new WWWForm();
  66. //form.AddField("mac", mac);
  67. //form.AddField("record", record);
  68. //JCUnityLib.CoroutineStarter.Start(Post(CommonConfig.SmartBowSdkURL + "/SmartBowSDK/saveCalibrateRecord", form, null));
  69. PlayerPrefs.SetString(GetCalibrateDataStorageLocalKey(mac), record == null ? "" : record);
  70. }
  71. }
  72. }
  73. private string GetCalibrateDataStorageLocalKey(string mac)
  74. {
  75. string key = "CalibrateDataStorage";
  76. string version = "1.0.0";
  77. return key + "_" + mac + "_" + version;
  78. }
  79. public void deleteAccount(Action<bool> callback)
  80. {
  81. if (UserPlayer.ins.isValid && UserPlayer.ins.loginAuthed)
  82. {
  83. UserPlayer.ins.call("userComp.deleteAccount", null, callback);
  84. }
  85. else
  86. {
  87. callback?.Invoke(false);
  88. }
  89. }
  90. #region 被服务端调用的函数
  91. public void onResumeCalibrateRecord(string record) {
  92. Axis9CalibrateRecord.CacheCalibrateRecord(_lastSaveMac, record);
  93. AimHandler.ins.ResumeCalibrateRecord(record);
  94. }
  95. #endregion
  96. //public static IEnumerator Post(string url, WWWForm form, Action<RequestResult> callback)
  97. //{
  98. // using (UnityWebRequest request = UnityWebRequest.Post(url, form))
  99. // {
  100. // yield return request.SendWebRequest();
  101. // if (request.result == UnityWebRequest.Result.Success)
  102. // callback?.Invoke(JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text));
  103. // else
  104. // callback?.Invoke(new RequestResult());
  105. // }
  106. //}
  107. }