2022-03-25 09:57:30 +08:00

179 lines
7.9 KiB
C#

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<Text>();
time = transform.Find("MapPanel/Timer").GetComponent<Text>();
level = transform.Find("MapPanel/Level/Text").GetComponent<Text>();
mapName = transform.Find("MapPanel/MapName").GetComponent<Text>();
distance = transform.Find("MapPanel/Distance").GetComponent<Text>();
country = transform.Find("MapPanel/Country").GetComponent<RawImage>();
altudeGraph = transform.Find("MapPanel/AltudeGraph").GetComponent<RawImage>();
#endregion
#region
rideTime = transform.Find("TimePanel/Timer").GetComponent<Text>();
rideDistance = transform.Find("DistancePanel/Distance").GetComponent<Text>();
totalClimbed = transform.Find("FitPanel/TotalClimbedView/Value").GetComponent<Text>();
wkgText = transform.Find("FitPanel/FTPView/Value").GetComponent<Text>();
avCadence = transform.Find("FitPanel/CadenceView/Value").GetComponent<Text>();
avHeatrate = transform.Find("FitPanel/HeartView/Value").GetComponent<Text>();
maxPower = transform.Find("FitPanel/MaxPowerView/Value").GetComponent<Text>();
avPower = transform.Find("FitPanel/AveragePowerView/Value").GetComponent<Text>();
maxSpeed = transform.Find("FitPanel/MaxSpeedView/Value").GetComponent<Text>();
avSpeed = transform.Find("FitPanel/AverageSpeed/Value").GetComponent<Text>();
#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<Image>();
newRecord = transform.Find("TimePanel/NewRecord").GetComponent<Image>();
}
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<Sprite>(recordImagePath);
newRecord.gameObject.SetActive(record.IsCompleted);
}
}
}