显示当前路线在线的人

This commit is contained in:
lishuo committed 2021-05-08 18:36:59 +08:00
1 parent 6645310601
commit 8ca32cd1ae
13 files changed
+311 -375

No files matched your search

+59 -10
View File
@@ -1,6 +1,9 @@
using UnityEngine;
using Assets.Scenes.Ride.Scripts.Model;
using UnityEngine.SceneManagement;
using System.Collections.Generic;
using System.Linq;
using Assets.Scenes.Ride.Scripts.Model.RiderModels;
namespace Assets.Scenes.Ride.Scripts
{
@@ -8,10 +11,15 @@ namespace Assets.Scenes.Ride.Scripts
{
#region 骑行逻辑
TrailRenderer trail;
GameObject onlineUserPrefab;
GameObject miniMapPlayerPrefab;
protected override void Init()
{
base.Init();
{
base.Init();
onlineUserPrefab = Resources.Load<GameObject>("UI/Prefab/Ride/OnlinePlayer");
miniMapPlayerPrefab = Resources.Load<GameObject>("UI/Prefab/Ride/MiniMapPlayer");
totalDistance = mainController.selectParamModel.EndDistance;
currentlatlong = mainController.GetCenterCoordinate();
trail = FindObjectOfType<TrailRenderer>();
@@ -28,22 +36,22 @@ namespace Assets.Scenes.Ride.Scripts
/// 计算数据,父类会在此方法后处理动画
/// </summary>
protected override void Compute()
{
{
//计算数据
//speed = mainController.UpDateSpeed();
heartRate = mainController.UpDateHeart()??0;
heartRate = mainController.UpDateHeart() ?? 0;
power = mainController.UpdatePower();
cadance = mainController.UpdateCadence();
weight = App.CurrentUser.Weight;
bicycleWeight = App.CurrentUser.BicycleWeight;
#if UNITY_EDITOR
power = 2000;//测试功率
power = 2380;//测试功率
#endif
mainController.TrackResistance(currentSlope * App.rideSetting.sensitivity/100);
mainController.TrackResistance(currentSlope * App.rideSetting.sensitivity / 100);
speed = Helper.CalculateSpeed(elevation, currentSlope, power, weight, bicycleWeight);
distance = mainController.UpdateDistance(speed);
totalDistance += distance;
if (!stopRecord)
{
//记录骑行数据
@@ -61,17 +69,58 @@ namespace Assets.Scenes.Ride.Scripts
_Lon = currentlatlong.y,
_TotalClimb = totalClimb,
};
recorderData.PreDistance = TotalDistance-Distance;
recorderData.PreDistance = TotalDistance - Distance;
recorderData.EndDistance = TotalDistance;
recorderData.RiderDatas.Add(targetData);
}
}
protected override void SendTcp()
{
protected override void SendTcp()
{
if (mainController.cyclingController != null)
{
mainController.cyclingController.Run(null);
ShowOnlineUsers();
}
}
List<OnlinePlayerController> otherList = new List<OnlinePlayerController>();
private void ShowOnlineUsers()
{
var onlineRiders = mainController.cyclingController.riders;
List<OnlinePlayerController> currentOnlineUserList = new List<OnlinePlayerController>();
currentOnlineUserList.AddRange(FindObjectsOfType<OnlinePlayerController>());
if (onlineRiders.Count > 0)
{
foreach (var item in onlineRiders)
{
var onlineRider = item as OnlineRiderModel;
var currentUser = currentOnlineUserList.Where(c => c.UserId == item.UserId).FirstOrDefault();
var onlineDistance = onlineRider.EndDistance - onlineRider.PreDistance;
var onlineTotalDistance = onlineRider.EndDistance;
if (currentUser == null)
{
//大地图人物
GameObject otherPlayerObj = (GameObject)Instantiate(onlineUserPrefab, transform.parent);
var onlinePlayerController = otherPlayerObj.GetComponent<OnlinePlayerController>();
otherList.Add(onlinePlayerController);
onlinePlayerController.UserId = onlineRider.UserId;
onlinePlayerController.SetDistance(onlineDistance);
onlinePlayerController.SetTotalDistance(onlineTotalDistance);
onlinePlayerController.SetHead(onlineRider.WxHeadImg);
//小地图人物
GameObject miniPlayer = (GameObject)Instantiate(miniMapPlayerPrefab, transform.parent);
var miniController = miniPlayer.GetComponent<MiniMapPlayerController>();
miniController.SetController(onlinePlayerController);
}
else
{
currentUser.SetDistance(onlineDistance);
currentUser.SetTotalDistance(onlineTotalDistance);
}
}
}
}