120 lines
4.1 KiB
C#
Raw Normal View History

2022-03-10 18:32:53 +08:00
using Assets.Scenes.Ride.Scripts;
using Assets.Scenes.Ride.Scripts.Model;
2022-03-25 09:57:30 +08:00
using DG.Tweening;
2022-03-10 18:32:53 +08:00
using System;
2022-04-01 18:41:31 +08:00
using System.Linq;
2022-03-10 18:32:53 +08:00
using UnityEngine;
namespace Assets.Scripts.Scenes.VideoRide
{
public class VideoPlayer : AbstractVideoPlayer
{
2022-03-24 09:36:59 +08:00
public double EndDistance => totalDistance;
2022-03-10 18:32:53 +08:00
protected override void Start()
{
base.Start();
animator.Play("idle");
UserId = App.CurrentUser.Id;
UserName = App.CurrentUser.Nickname;
2022-03-10 18:32:53 +08:00
}
protected override bool GetStart()
{
return manager.IsStart();
}
protected override void Update()
{
base.Update();
}
2022-03-10 18:32:53 +08:00
public void SetPower(double power)
{
this.power = power;
}
public void SetEndDistance(double distance)
{
this.totalDistance = distance;
}
public void Complete()
{
start = false;
manager.Save(totalDistance);
}
2022-03-24 09:36:59 +08:00
protected override void ComputeAnimator()
{
base.ComputeAnimator();
}
2022-03-10 18:32:53 +08:00
protected override void ComputePlayer()
{
heartRate = manager.UpDateHeart();
2022-03-25 09:57:30 +08:00
power = manager.UpdatePower();
2022-03-10 18:32:53 +08:00
cadance = manager.UpdateCadence();
//#if UNITY_EDITOR
power = 50;
2022-03-25 09:57:30 +08:00
cadance = 150;
heartRate = 160;
//#endif
2022-03-10 18:32:53 +08:00
weight = App.CurrentUser.Weight;
bicycleWeight = App.CurrentUser.BicycleWeight;
2022-03-31 18:40:19 +08:00
wkg = Math.Round(power / weight, 2);
var mainFrame = manager.GetCurrentFrame();
var result = manager.mockDirection.Where(c => c.Start < mainFrame && c.End > mainFrame).FirstOrDefault();
bearing = result?.Value ?? 0;
2022-03-10 18:32:53 +08:00
//发送阻力
manager.TrackResistance(currentSlope);
2022-03-24 09:36:59 +08:00
base.ComputePlayer();
2022-03-10 18:32:53 +08:00
}
//控制视频播放速度
protected override void ComputeVideo()
{
2022-03-31 18:40:19 +08:00
base.ComputeVideo();
2022-03-10 18:32:53 +08:00
}
protected override void ComputeRecord()
{
var mapData = manager.GetMapData();
2022-03-24 09:36:59 +08:00
//Debug.Log($"ticks:{ticks}-{manager.GetCurrentFrame()}-endistance:{totalDistance}-totalDistance:{mapData.TotalDistance}-index:{currentIndex}-speed:{speed}-currentSlope:{currentSlope}-GetCurrentFrame:{manager.GetCurrentFrame()}-currentlatLon:{bearing}");
2022-03-10 18:32:53 +08:00
//记录骑行数据
var recorderData = manager.cyclingController.recorderData;
var targetData = new TargetData
{
Ticks = ticks,
_Power = power,
_Speed = speed,
_Distance = totalDistance,//totalDistance > mapData.TotalDistance ? mapData.TotalDistance : totalDistance,
2022-03-10 18:32:53 +08:00
_Cadence = cadance,
_HeartRate = heartRate,
_Lat = currentlatLon.x,
_Lon = currentlatLon.y,
_TotalClimb = totalClimb,
_FrameRate = manager.GetCurrentFrame()
2022-03-10 18:32:53 +08:00
};
var preDistance = totalDistance >= mapData.TotalDistance ? targetData._Distance : targetData._Distance - distance;
recorderData.PreDistance = Math.Round(preDistance, 6, MidpointRounding.AwayFromZero);
recorderData.EndDistance = Math.Round(targetData._Distance, 6, MidpointRounding.AwayFromZero);
recorderData.RiderDatas.Add(targetData);
//if (totalDistance >= mapData.TotalDistance)
//{
// start = false;
// manager.Save(totalDistance);
//}
2022-03-10 18:32:53 +08:00
}
protected override void Forward()
{
base.Forward();
distance = Math.Round(speed / 3600, 5, MidpointRounding.AwayFromZero);
totalDistance += distance;
}
2022-03-25 09:57:30 +08:00
//保存骑行记录
public void Upload()
{
if (manager.cyclingController.recorderData != null && !manager.cyclingController.recorderData.Saved)//处理重复上传的问题
{
manager.Save(totalDistance);
}
}
2022-03-10 18:32:53 +08:00
}
}