powerfun-unity/Assets/Scripts/Scenes/VideoRide/ElevationBarDataFeed.cs
2022-03-30 18:41:06 +08:00

99 lines
3.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}
}