显示当前路线在线的人
This commit is contained in:
1 parent
6645310601
commit
8ca32cd1ae
13 files changed
+311
-375
No files matched your search
@@ -38,7 +38,7 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
//public bool isQuit;//true 中途退出 或者到达终点
|
||||
protected bool isMajor;//是否是主人公
|
||||
protected MapDataModel mapData;
|
||||
protected int userId;
|
||||
//protected int userId;
|
||||
protected DateTime startTime;//开始骑行时间
|
||||
protected DateTime endTime;//结束骑行时间
|
||||
protected double weight;//体重
|
||||
@@ -59,7 +59,7 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
protected double totalClimb;
|
||||
|
||||
public double TotalClimb { get => totalClimb; }
|
||||
public int UserId { get => userId; }
|
||||
public int UserId { set; get; }//{ get => userId; }
|
||||
public double Speed { get => speed; }
|
||||
public double Power { get => power; }
|
||||
public double Cadance { get => cadance; }
|
||||
|
||||
@@ -323,7 +323,7 @@ public class CyclingController : DeviceServiceMonoBase
|
||||
if (!isPause || DateTime.MinValue == startTime)
|
||||
{
|
||||
isStart = true;
|
||||
startTime = DateTime.Now;
|
||||
startTime = UIManager.Now.GetDateTime();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -18,13 +18,13 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
{
|
||||
//rankings = service.GetMapRecordRankingsFromServe(param.RankingsId);
|
||||
riders = new List<BaseRider>();
|
||||
riders.Add(new OnlineRiderModel()
|
||||
{
|
||||
NickName = App.CurrentUser.Nickname,
|
||||
UserId = App.CurrentUser.Id,
|
||||
WxHeadImg = App.CurrentUser.WxHeadImg,
|
||||
Point = new GeoJSON.Net.Geometry.GeographicPosition(this.route.RouteInstance.Point[0], this.route.RouteInstance.Point[1])
|
||||
});
|
||||
//riders.Add(new OnlineRiderModel()
|
||||
//{
|
||||
// NickName = App.CurrentUser.Nickname,
|
||||
// UserId = App.CurrentUser.Id,
|
||||
// WxHeadImg = App.CurrentUser.WxHeadImg,
|
||||
// Point = new GeoJSON.Net.Geometry.GeographicPosition(this.route.RouteInstance.Point[0], this.route.RouteInstance.Point[1])
|
||||
//});
|
||||
//foreach (var item in rankings)
|
||||
//{
|
||||
// riders.Add(new ReviewRiderModel()
|
||||
@@ -64,21 +64,21 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
public override void Run(TargetData targetData)
|
||||
{
|
||||
|
||||
riders.RemoveAll(r => r.IsSelf == false);
|
||||
var onlineUsers = MapUDPService.GetOnlineUsers(recorderData.CurrentRoute.RouteInstance.Id).Where(d => d.IsSelf == false)
|
||||
.ToList();
|
||||
foreach (var item in onlineUsers)
|
||||
{
|
||||
riders.Add(new OnlineRiderModel()
|
||||
{
|
||||
NickName = item.Name,
|
||||
UserId = item.Id,
|
||||
WxHeadImg = item.HeadImage,
|
||||
Point = new GeoJSON.Net.Geometry.GeographicPosition(item.Point[0], item.Point[1]),
|
||||
EndDistance = item.EndDistance,
|
||||
PreDistance = item.PreDistance,
|
||||
});
|
||||
}
|
||||
//riders.RemoveAll(r => r.IsSelf == false);
|
||||
//var onlineUsers = MapUDPService.GetOnlineUsers(recorderData.CurrentRoute.RouteInstance.Id).Where(d => d.IsSelf == false)
|
||||
// .ToList();
|
||||
//foreach (var item in onlineUsers)
|
||||
//{
|
||||
// riders.Add(new OnlineRiderModel()
|
||||
// {
|
||||
// NickName = item.Name,
|
||||
// UserId = item.Id,
|
||||
// WxHeadImg = item.HeadImage,
|
||||
// Point = new GeoJSON.Net.Geometry.GeographicPosition(item.Point[0], item.Point[1]),
|
||||
// EndDistance = item.EndDistance,
|
||||
// PreDistance = item.PreDistance,
|
||||
// });
|
||||
//}
|
||||
|
||||
base.Run(targetData);
|
||||
}
|
||||
|
||||
@@ -48,23 +48,23 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
recorderData.PreDistance = recorderData.EndDistance;
|
||||
|
||||
riders = new List<BaseRider>();
|
||||
var rider = new OnlineRiderModel()
|
||||
{
|
||||
NickName = App.CurrentUser.Nickname,
|
||||
UserId = App.CurrentUser.Id,
|
||||
WxHeadImg = App.CurrentUser.WxHeadImg + "?t=1",
|
||||
//Point = new GeoJSON.Net.Geometry.GeographicPosition(this.route.RouteInstance.Point[0], this.route.RouteInstance.Point[1]),
|
||||
EndDistance = recorderData.EndDistance
|
||||
};
|
||||
rider.Point = _turfHelper.Along(rider.EndDistance);
|
||||
//var rider = new OnlineRiderModel()
|
||||
//{
|
||||
// NickName = App.CurrentUser.Nickname,
|
||||
// UserId = App.CurrentUser.Id,
|
||||
// WxHeadImg = App.CurrentUser.WxHeadImg + "?t=1",
|
||||
// //Point = new GeoJSON.Net.Geometry.GeographicPosition(this.route.RouteInstance.Point[0], this.route.RouteInstance.Point[1]),
|
||||
// EndDistance = recorderData.EndDistance
|
||||
//};
|
||||
//rider.Point = _turfHelper.Along(rider.EndDistance);
|
||||
|
||||
riders.Add(rider);
|
||||
//riders.Add(rider);
|
||||
|
||||
}
|
||||
|
||||
public override void Run(TargetData targetData)
|
||||
{
|
||||
#region 获取在线用户
|
||||
#region 获取当前路线在线用户
|
||||
riders.RemoveAll(r => r.IsSelf == false);
|
||||
var onlineUsers = MapUDPService.GetOnlineUsers(recorderData.CurrentRoute.RouteInstance.Id).Where(d => d.IsSelf == false)
|
||||
.ToList();
|
||||
@@ -80,6 +80,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
PreDistance = item.PreDistance,
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
base.Run(targetData);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
using Assets.Scenes.Ride.Scripts.Model;
|
||||
using Assets.Scripts;
|
||||
using DG.Tweening;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Assets.Scenes.Ride.Scripts
|
||||
{
|
||||
public class OnlinePlayerController : AbstractPlayer
|
||||
{
|
||||
public PlayerController _playerController;
|
||||
RawImage head;
|
||||
GameObject headPanel;
|
||||
|
||||
protected override void Init()
|
||||
{
|
||||
base.Init();
|
||||
_playerController = FindObjectOfType<PlayerController>();
|
||||
}
|
||||
|
||||
protected override void Compute()
|
||||
{
|
||||
currentlatlong = mainController.Along(totalDistance);//下一个坐标
|
||||
}
|
||||
|
||||
public void SetDistance(double _distance)
|
||||
{
|
||||
distance = _distance;
|
||||
}
|
||||
|
||||
public void SetTotalDistance(double _totalDistance)
|
||||
{
|
||||
totalDistance = _totalDistance;
|
||||
}
|
||||
private string headUrl;
|
||||
public void SetHead(string url )
|
||||
{
|
||||
headUrl = url;
|
||||
}
|
||||
public void MoveHead(Transform parent,Vector3 nextPosition)
|
||||
{
|
||||
if (headPanel == null)
|
||||
{
|
||||
headPanel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Ride/HeadPanel"));
|
||||
headPanel.transform.parent = parent;
|
||||
headPanel.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
|
||||
}
|
||||
if (head == null)
|
||||
{
|
||||
head = headPanel.GetComponentInChildren<RawImage>();
|
||||
if (!string.IsNullOrEmpty(headUrl))
|
||||
{
|
||||
Utils.DisplayImage(head, headUrl, true);
|
||||
}
|
||||
}
|
||||
headPanel.transform.DOMove(new Vector3(nextPosition.x, nextPosition.y, 0), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 281c3f68a13a427499876dec554c3223
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -650,6 +650,21 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
itemPosition.y += 5f;
|
||||
item.MoveHead(graph.transform, itemPosition);
|
||||
}
|
||||
//移动在线的人
|
||||
var onlineUsers = FindObjectsOfType<OnlinePlayerController>();
|
||||
foreach (var item in onlineUsers)
|
||||
{
|
||||
var itemIndex = chartDataSourceScript.GetViewIndex(item.CurrentIndex) + 1;
|
||||
if (!mainController.isStart && !mainController.isPause && !mainController.isQuit || (mainController.isStart && item.TotalDistance == 0))//未开始未暂停未结束
|
||||
{
|
||||
itemIndex = 0;
|
||||
}
|
||||
var m = graph.DataSource.GetPoint("Player 2", itemIndex);
|
||||
graph.PointToWorldSpace(out Vector3 itemPosition, m.x, m.y, "Player 2");
|
||||
itemPosition.x -= 12f;
|
||||
itemPosition.y += 5f;
|
||||
item.MoveHead(graph.transform, itemPosition);
|
||||
}
|
||||
}
|
||||
//移动总海拔图范围
|
||||
private void MoveElevationImage()
|
||||
|
||||
Reference in new issue
Block a user