powerfun-unity/Assets/Scenes/Ride/Scripts/PlayerController.cs

91 lines
3.1 KiB
C#

using UnityEngine;
using Assets.Scripts.Apis.Models;
using System;
using Assets.Scripts.Apis;
using System.Linq;
using System.Collections.Generic;
using System.Globalization;
using Assets.Scenes.Ride.Scripts.Model;
using System.IO;
using System.Threading;
namespace Assets.Scenes.Ride.Scripts
{
public class PlayerController : AbstractPlayer
{
#region
protected override void Init()
{
base.Init();
totalDistance = mainController.selectParamModel.EndDistance;
currentlatlong = mainController.GetCenterCoordinate();
TrailRenderer trail = FindObjectOfType<TrailRenderer>();
trail.startWidth = 0.6f;
trail.endWidth = 0.6f;
trail.startColor = new Color(0.9764706f, 0.1882353f, 0.5254902f, 0.65f);
trail.endColor = new Color(0.9764706f, 0.1882353f, 0.5254902f, 0.65f);
}
TargetData targetData;
/// <summary>
/// 计算数据,父类会在此方法后处理动画
/// </summary>
protected override void Compute()
{
//计算数据
//speed = mainController.UpDateSpeed();
heartRate = mainController.UpDateHeart()??0;
power = mainController.UpdatePower();
cadance = mainController.UpdateCadence();
weight = App.CurrentUser.Weight;
bicycleWeight = App.CurrentUser.BicycleWeight;
#if UNITY_EDITOR
power = 2000;//测试功率
#endif
mainController.TrackResistance(currentSlope);//TODO
speed = Helper.CalculateSpeed(elevation, currentSlope, power, weight, bicycleWeight);
distance = mainController.UpdateDistance(speed);
totalDistance += distance;
//记录骑行数据
var recorderData = mainController.cyclingController.recorderData;
targetData = new TargetData
{
Ticks = ticks,
_Power = power,
_Speed = speed,
_Distance = totalDistance > mapData.TotalDistance ? mapData.TotalDistance : totalDistance,
_Cadence = cadance,
_HeartRate = heartRate,
_Lat = currentlatlong.x,
_Lon = currentlatlong.y
};
recorderData.RiderDatas.Add(targetData);
}
protected override void SendTcp()
{
if (mainController.cyclingController != null)
{
mainController.cyclingController.Run(null);
}
}
//上传数据
public override void Upload()
{
mainController.isStart = false;
string imageFileName = base.CaptureCamera(Camera.main, new Rect(Screen.width * 0f, Screen.height * 0f, Screen.width * 0.5f, Screen.height * 0.5f));
mainController.cyclingController.recorderData.StartTime = startTime;
mainController.cyclingController.recorderData.IsCompleted = totalDistance == mapData.TotalDistance;
mainController.cyclingController.recorderData.EndDistance = totalDistance;
mainController.cyclingController.recorderData.AntModelId = mainController.AntModelId;
mainController.cyclingController.recorderData.ManufacturerId = mainController.ManufacturerId;
mainController.cyclingController.recorderData.DeviceNumber = mainController.DeviceNumber;
mainController.cyclingController.recorderData.SaveData(mainController.cyclingModel, mainController.selectParamModel, imageFileName);
}
#endregion
}
}