using System; using System.Linq; using Assets.Scenes.Ride.Scripts.Model; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using UnityEngine.SceneManagement; using Facebook.Unity; using Assets.Scenes.Ride.Scripts; namespace Assets.Scripts.Scenes.VideoRide { public class VideoResultScript : MonoBehaviour { #region 路书信息 Text date; Text time; Text level; Text mapName; Text distance; RawImage country; RawImage altudeGraph; #endregion #region 骑行结果 Text rideTime; Text rideDistance; Text totalClimbed; Text wkgText; Text avCadence; Text avHeatrate; Text maxPower; Text avPower; Text maxSpeed; Text avSpeed; #endregion #region 功能按钮 GameObject goResultBtn; GameObject cancelBtn; GameObject shareWxBtn; GameObject shareWxGpButton; Transform toolbar; Image DNF; Image newRecord; #endregion VideoGameManager cyclingController; private void Awake() { #region 路书信息 date = transform.Find("MapPanel/Date").GetComponent(); time = transform.Find("MapPanel/Timer").GetComponent(); level = transform.Find("MapPanel/Level/Text").GetComponent(); mapName = transform.Find("MapPanel/MapName").GetComponent(); distance = transform.Find("MapPanel/Distance").GetComponent(); country = transform.Find("MapPanel/Country").GetComponent(); altudeGraph = transform.Find("MapPanel/AltudeGraph").GetComponent(); #endregion #region 骑行记录 rideTime = transform.Find("TimePanel/Timer").GetComponent(); rideDistance = transform.Find("DistancePanel/Distance").GetComponent(); totalClimbed = transform.Find("FitPanel/TotalClimbedView/Value").GetComponent(); wkgText = transform.Find("FitPanel/FTPView/Value").GetComponent(); avCadence = transform.Find("FitPanel/CadenceView/Value").GetComponent(); avHeatrate = transform.Find("FitPanel/HeartView/Value").GetComponent(); maxPower = transform.Find("FitPanel/MaxPowerView/Value").GetComponent(); avPower = transform.Find("FitPanel/AveragePowerView/Value").GetComponent(); maxSpeed = transform.Find("FitPanel/MaxSpeedView/Value").GetComponent(); avSpeed = transform.Find("FitPanel/AverageSpeed/Value").GetComponent(); #endregion goResultBtn = transform.Find("ConFirmButton").gameObject; cancelBtn = transform.Find("CloseButton").gameObject; toolbar = transform.Find("ToolBarPanel"); #if UNITY_ANDROID || UNITY_IOS shareWxBtn = transform.Find("ToolBarPanel/WeChatButton").gameObject; shareWxGpButton = transform.Find("ToolBarPanel/GoogleButton").gameObject; #endif DNF = transform.Find("DNF").GetComponent(); newRecord = transform.Find("TimePanel/NewRecord").GetComponent(); } public void InjectController(VideoGameManager controller) { cyclingController = controller; controller.AddEvent(goResultBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, GoResult); controller.AddEvent(cancelBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, Cancel); #if UNITY_ANDROID || UNITY_IOS cyclingController.AddEvent(shareWxBtn, EventTriggerType.PointerClick, shareToWx); cyclingController.AddEvent(shareWxGpButton, EventTriggerType.PointerClick, shareToWxGp); var fbButton = transform.Find("ToolBarPanel/FaceBookButton").gameObject; cyclingController.AddEvent(fbButton, EventTriggerType.PointerClick, shareToFb); #endif } private void shareToFb(BaseEventData arg0) { FB.ShareLink(contentURL: new Uri($"{App.CurrentUser.WebHost}RoutesRecords/{cyclingController.RankingId}?Token={App.CurrentUser.cookie}"), contentTitle: cyclingController.mapRoute.Name, contentDescription: "By " + App.CurrentUser.Nickname, photoURL: new Uri(cyclingController.mapRoute.CoverImage)); } private void shareToWx(BaseEventData b) { if (App.weChatController.IsWeChatAppInstalled()) { App.weChatController.ShareWebpageToWX(0, $"{App.CurrentUser.WebHost}RoutesRecords/{cyclingController.RankingId}?Token={App.CurrentUser.cookie}", cyclingController.mapRoute.Name, "By " + App.CurrentUser.Nickname, null); } else { Utils.showToast(null, "未安装微信"); } } private void shareToWxGp(BaseEventData b) { if (App.weChatController.IsWeChatAppInstalled()) { App.weChatController.ShareWebpageToWX(1, $"{App.CurrentUser.WebHost}RoutesRecords/{cyclingController.RankingId}?Token={App.CurrentUser.cookie}", cyclingController.mapRoute.Name, "By " + App.CurrentUser.Nickname, null); } else { Utils.showToast(null, "未安装微信"); } } private void GoResult(BaseEventData baseEventData) { if (App.MainSceneParam.ContainsKey("Name")) { App.MainSceneParam["Name"] = "UserInfoPanel"; } else { App.MainSceneParam.Add("Name", "UserInfoPanel"); } Application.OpenURL($"{App.CurrentUser.WebHost}Mine/Detail/{cyclingController.RankingId}?Token={App.CurrentUser.cookie}"); SceneManager.LoadScene("MainScene"); } private void Cancel(BaseEventData baseEventData) { SceneManager.LoadScene("MainScene"); } public void SetDataSource(RecorderDataModel record) { var route = record.CurrentRoute.RouteInstance; var dataformt = App.GetLocalLanguage().Equals("zh") ? "yyyy-MM-dd" : "dd-MM-yyyy"; date.text = record.StartTime.ToString(dataformt); time.text = record.StartTime.ToShortTimeString(); level.text = route.Hard; mapName.text = route.Name; distance.text = route.Distance.ToString("f1") + "KM"; country.texture = cyclingController.GetCountryImageByCode(route.CountryCode); Utils.DisplayImage(altudeGraph, route.AltitudeGraph); //绑定骑行记录结果 rideTime.text = Helper.FormatTicks(record.RiderDatas.Count); rideDistance.text = record.RiderDatas.Last()._Distance.ToString("f1") + "KM"; totalClimbed.text = record.RiderDatas.Last()._TotalClimb.ToString("f1"); var power = Math.Round(record.RiderDatas.Average(c => c._Power), 0); avPower.text = power.ToString(); maxPower.text = record.RiderDatas.Max(c => c._Power).ToString("f0"); avHeatrate.text = record.RiderDatas.Average(c => c._HeartRate.GetValueOrDefault(0)).ToString("f0"); avSpeed.text = record.RiderDatas.Average(c => c._Speed).ToString("f1"); maxSpeed.text = record.RiderDatas.Max(c => c._Speed).ToString("f1"); wkgText.text = Math.Round(power / record.CurrentUser.Weight, 2).ToString(); avCadence.text = record.RiderDatas.Average(c => c._Cadence).GetValueOrDefault(0).ToString("f0"); DNF.gameObject.SetActive(!record.IsCompleted); var recordImagePath = App.GetLocalLanguage().Equals("zh") ? "Images/Ride/img_newrecord_cn" : "img_newrecord"; newRecord.sprite = Resources.Load(recordImagePath); newRecord.gameObject.SetActive(record.IsCompleted); } } }