powerfun-unity/Assets/Scripts/Scenes/VideoRide/ElevationBarDataFeed.cs

99 lines
3.2 KiB
C#
Raw Normal View History

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;
2022-03-30 18:41:06 +08:00
[SerializeField]
Material _heavyColor;
void Start()
{
head = transform.Find("HeadPanel").gameObject;
manager= FindObjectOfType<VideoGameManager>();
2022-03-30 18:41:06 +08:00
BarChart barChart = GetComponent<BarChart>();
2022-03-30 18:41:06 +08:00
barChart.DataSource.ClearCategories();
barChart.DataSource.ClearValues();
if (barChart != null)
{
2022-03-30 18:41:06 +08:00
var list = manager.GetMapData().List;
for (int i = 0; i < list.Count; i++)
{
2022-03-30 18:41:06 +08:00
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)
{
2022-03-30 18:41:06 +08:00
MoveCurrentPlayerHead();
//MoveOnlinePlayerHead(); TODO
timer += 1f;
}
}
2022-03-30 18:41:06 +08:00
//移动当前骑行者头像
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;
}
}
}