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(); 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; /// /// 计算数据,父类会在此方法后处理动画 /// 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 } }