using System; using System.Collections; using UnityEngine; using UnityEngine.Networking; using Newtonsoft.Json; /* Socket组件-用户 */ public class UserComp : JCUnityLib.Singleton { public void getUserInfo(System.Action cb) { UserPlayer.ins.call("userComp.getUserInfo", null, cb); } public void saveUserInfo(UserInfo userInfo) { UserPlayer.ins.call("userComp.saveUserInfo", userInfo); } private string _lastSaveMac; public void saveMac() { string mac = LoginMgr.myUserInfo.mac; if (string.IsNullOrEmpty(mac)) return; _lastSaveMac = mac; int type = AimHandler.ins.DeviceType; if (type > 0) { UserPlayer.ins.call("userComp.saveMac2", mac, type); } else { Action cb = (Newtonsoft.Json.Linq.JToken o) => { string gyrStr = o.Value("gyr"); string magStr = o.Value("mag"); AimHandler.ins.InitGyr(gyrStr); AimHandler.ins.InitMag(magStr); }; UserPlayer.ins.call("userComp.saveMac", new object[]{mac}, cb); } if (CommonConfig.StandaloneMode) { WWWForm form = new WWWForm(); form.AddField("mac", mac); JCUnityLib.CoroutineStarter.Start(Post(CommonConfig.SmartBowSdkURL + "/SmartBowSDK/getCalibrateRecord", form, (res) => { if (res.code == 0) onResumeCalibrateRecord(res.data as string); })); } } public void saveCalibrateRecord(string record) { string mac = BluetoothAim.ins.curMac; if (string.IsNullOrEmpty(mac)) { SideTipView.ShowTip("没有Mac无法上传九轴数据", UnityEngine.Color.yellow); throw new Exception("没有Mac无法上传九轴数据"); } int type = AimHandler.ins.DeviceType; if (type > 0) { Axis9CalibrateRecord.CacheCalibrateRecord(mac, record); Axis9CalibrateRecord.SetCalibrateOkRecord(mac, true); UserPlayer.ins.call("userComp.saveCalibrateRecord2", type, record, mac); if (CommonConfig.StandaloneMode) { WWWForm form = new WWWForm(); form.AddField("mac", mac); form.AddField("record", record); JCUnityLib.CoroutineStarter.Start(Post(CommonConfig.SmartBowSdkURL + "/SmartBowSDK/saveCalibrateRecord", form, null)); } } } public void deleteAccount(Action callback) { if (UserPlayer.ins.isValid && UserPlayer.ins.loginAuthed) { UserPlayer.ins.call("userComp.deleteAccount", null, callback); } else { callback?.Invoke(false); } } #region 被服务端调用的函数 public void onResumeCalibrateRecord(string record) { Axis9CalibrateRecord.CacheCalibrateRecord(_lastSaveMac, record); AimHandler.ins.ResumeCalibrateRecord(record); } #endregion public static IEnumerator Post(string url, WWWForm form, Action callback) { using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { yield return request.SendWebRequest(); if (request.result == UnityWebRequest.Result.Success) callback?.Invoke(JsonConvert.DeserializeObject(request.downloadHandler.text)); else callback?.Invoke(new RequestResult()); } } }