99 lines
3.2 KiB
C#
99 lines
3.2 KiB
C#
using ChartAndGraph;
|
||
using UnityEngine;
|
||
|
||
namespace Assets.Scripts.Scenes.VideoRide
|
||
{
|
||
public class ElevationBarDataFeed : MonoBehaviour
|
||
{
|
||
GameObject head { get; set; }
|
||
VideoGameManager manager { get; set; }
|
||
[SerializeField]
|
||
Material _lightColor;
|
||
[SerializeField]
|
||
Material _mediumColor;
|
||
[SerializeField]
|
||
Material _hardColor;
|
||
[SerializeField]
|
||
Material _heavyColor;
|
||
|
||
void Start()
|
||
{
|
||
head = transform.Find("HeadPanel").gameObject;
|
||
manager= FindObjectOfType<VideoGameManager>();
|
||
|
||
BarChart barChart = GetComponent<BarChart>();
|
||
barChart.DataSource.ClearCategories();
|
||
barChart.DataSource.ClearValues();
|
||
if (barChart != null)
|
||
{
|
||
var list = manager.GetMapData().List;
|
||
for (int i = 0; i < list.Count; i++)
|
||
{
|
||
barChart.DataSource.AddCategory($"Player {i}", getChartMaterial(list[i].Grade));
|
||
barChart.DataSource.SetValue($"Player {i}", "Group 1", list[i].Grade);
|
||
}
|
||
}
|
||
}
|
||
|
||
float timer = 1f;
|
||
private void Update()
|
||
{
|
||
timer -= Time.deltaTime;
|
||
while (timer < 0)
|
||
{
|
||
MoveCurrentPlayerHead();
|
||
//MoveOnlinePlayerHead(); TODO
|
||
timer += 1f;
|
||
}
|
||
}
|
||
//移动当前骑行者头像
|
||
private void MoveCurrentPlayerHead()
|
||
{
|
||
var videoPlayer = manager.CurrentPlayer;
|
||
var index = videoPlayer != null ? videoPlayer.currentIndex : 0;
|
||
BarChart barChart = GetComponent<BarChart>();
|
||
Vector3 vector3 = Vector3.back;
|
||
barChart.GetBarTrackPosition($"Player {index}", "Group 1", out vector3);
|
||
head.transform.position = vector3;
|
||
}
|
||
//移动当前线上其他人头像
|
||
private void MoveOnlinePlayerHead()
|
||
{
|
||
var videoPlayer = manager.CurrentPlayer;
|
||
if (videoPlayer != null)
|
||
{
|
||
BarChart barChart = GetComponent<BarChart>();
|
||
Vector3 vector3 = Vector3.back;
|
||
barChart.GetBarTrackPosition($"Player {videoPlayer.currentIndex}", "Group 1", out vector3);
|
||
head.transform.position = vector3;
|
||
}
|
||
}
|
||
|
||
private ChartDynamicMaterial getChartMaterial(double grade = 0d)
|
||
{
|
||
//1: ≥7°坡 红色
|
||
//2: 3°~7°坡 橙色
|
||
//3: 0°~3°坡 黄色
|
||
//4: ≤0°坡 绿色
|
||
ChartDynamicMaterial chartDynamicMaterial;
|
||
if (grade > 7)
|
||
{
|
||
chartDynamicMaterial = new ChartDynamicMaterial(_heavyColor);
|
||
}
|
||
else if (grade > 3)
|
||
{
|
||
chartDynamicMaterial = new ChartDynamicMaterial(_hardColor);
|
||
}
|
||
else if (grade > 0)
|
||
{
|
||
chartDynamicMaterial = new ChartDynamicMaterial(_mediumColor);
|
||
}
|
||
else
|
||
{
|
||
chartDynamicMaterial = new ChartDynamicMaterial(_lightColor);
|
||
}
|
||
return chartDynamicMaterial;
|
||
}
|
||
}
|
||
}
|